From: jfa Date: Sat, 6 May 2006 08:40:48 +0000 (+0000) Subject: Join modifications from branch OCC_debug_for_3_2_0b1 X-Git-Tag: T3_2_0b1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=aa05f2a1b23a54321ea7248ae9ac3463652c734e;p=modules%2Fgui.git Join modifications from branch OCC_debug_for_3_2_0b1 --- diff --git a/INSTALL b/INSTALL index b1e195f37..537aa3872 100644 --- a/INSTALL +++ b/INSTALL @@ -1,3 +1,3 @@ -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 diff --git a/Makefile.in b/Makefile.in index c1bc6bff4..29e946483 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # # Author : Patrick GOLDBRONN (CEA) @@ -14,13 +32,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top @COMMENCE@ -SUBDIRS = src - -ifeq ($(GUI_DISABLE_CORBA),no) - SUBDIRS+= idl -endif - -SUBDIRS+= doc adm_local +SUBDIRS = src doc adm_local RESOURCES_FILES = \ back.xpm \ @@ -124,10 +136,10 @@ include/salome/sstream: salome_adm/unix/sstream -$(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: @@ -156,10 +168,10 @@ install-bin: $(BIN_SCRIPT) $(INSTALL) -d $(bindir) $(INSTALL_PROGRAM) $^ $(bindir) -uninstall: uninstall-idl - -uninstall-idl: - $(RM) $(idldir)/*.idl +uninstall: +#uninstall: uninstall-idl +#uninstall-idl: +# $(RM) $(idldir)/*.idl distclean: distclean-other diff --git a/adm_local/Makefile.in b/adm_local/Makefile.in index 0c4f46081..50fe36d5e 100644 --- a/adm_local/Makefile.in +++ b/adm_local/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=.. diff --git a/adm_local/unix/config_files/check_GUI.m4 b/adm_local/unix/config_files/check_GUI.m4 index ad022e400..ff090e7b9 100755 --- a/adm_local/unix/config_files/check_GUI.m4 +++ b/adm_local/unix/config_files/check_GUI.m4 @@ -3,51 +3,61 @@ # 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 diff --git a/adm_local/unix/config_files/check_corba_in_GUI.m4 b/adm_local/unix/config_files/check_corba_in_GUI.m4 index 007dfc6c5..20be4514f 100755 --- a/adm_local/unix/config_files/check_corba_in_GUI.m4 +++ b/adm_local/unix/config_files/check_corba_in_GUI.m4 @@ -4,52 +4,9 @@ #------------------------------------------------------------ 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 diff --git a/adm_local/unix/config_files/check_opengl.m4 b/adm_local/unix/config_files/check_opengl.m4 index dd43d25a0..8a56e0f54 100644 --- a/adm_local/unix/config_files/check_opengl.m4 +++ b/adm_local/unix/config_files/check_opengl.m4 @@ -22,122 +22,174 @@ 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 diff --git a/adm_local/unix/config_files/check_pyqt.m4 b/adm_local/unix/config_files/check_pyqt.m4 index ee024efaf..7be124e24 100644 --- a/adm_local/unix/config_files/check_pyqt.m4 +++ b/adm_local/unix/config_files/check_pyqt.m4 @@ -4,6 +4,7 @@ AC_DEFUN([CHECK_PYQT],[ 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 @@ -119,15 +120,15 @@ if test "x${PYQTDIR}" != "x"; then 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 @@ -160,30 +161,30 @@ if test "x$pyqt_lib_ok" == "xno"; then 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 diff --git a/adm_local/unix/config_files/check_qt.m4 b/adm_local/unix/config_files/check_qt.m4 index ab2869c21..ab5348319 100644 --- a/adm_local/unix/config_files/check_qt.m4 +++ b/adm_local/unix/config_files/check_qt.m4 @@ -26,8 +26,14 @@ AC_REQUIRE([AC_PROG_CXX])dnl 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 @@ -117,7 +123,7 @@ then 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 @@ -145,8 +151,8 @@ then 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 @@ -160,13 +166,14 @@ AC_SUBST(UIC) 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 diff --git a/adm_local/unix/config_files/check_qwt.m4 b/adm_local/unix/config_files/check_qwt.m4 index 13bf90914..d9bc23fbf 100644 --- a/adm_local/unix/config_files/check_qwt.m4 +++ b/adm_local/unix/config_files/check_qwt.m4 @@ -2,6 +2,7 @@ dnl Copyright (C) 2003 CEA/DEN, EDF R&D AC_DEFUN([CHECK_QWT],[ AC_REQUIRE([CHECK_QT])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl AC_CHECKING(for qwt) @@ -26,7 +27,7 @@ if test -z $QWTHOME; then 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) @@ -91,7 +92,7 @@ then 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 diff --git a/adm_local/unix/config_files/check_sip.m4 b/adm_local/unix/config_files/check_sip.m4 index 245f2382e..83af9a907 100644 --- a/adm_local/unix/config_files/check_sip.m4 +++ b/adm_local/unix/config_files/check_sip.m4 @@ -3,6 +3,7 @@ dnl Copyright (C) 2003 CEA/DEN, EDF R&D AC_DEFUN([CHECK_SIP],[ AC_REQUIRE([CHECK_PYTHON])dnl AC_REQUIRE([CHECK_QT])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl sip_ok=yes @@ -110,44 +111,44 @@ else 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 diff --git a/adm_local/unix/config_files/check_vtk.m4 b/adm_local/unix/config_files/check_vtk.m4 index df9245b5d..a0733ebc3 100644 --- a/adm_local/unix/config_files/check_vtk.m4 +++ b/adm_local/unix/config_files/check_vtk.m4 @@ -25,6 +25,7 @@ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_CPP])dnl AC_REQUIRE([AC_PROG_CXXCPP])dnl +AC_REQUIRE([AC_LINKER_OPTIONS])dnl AC_CHECKING(for VTK) @@ -41,13 +42,11 @@ VTKPY_MODULES="" 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" @@ -86,8 +85,8 @@ fi 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 @@ -115,10 +114,10 @@ AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no") 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" @@ -128,21 +127,19 @@ fi 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 diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in index 78506b08c..0a5de34a2 100644 --- a/adm_local/unix/make_commence.in +++ b/adm_local/unix/make_commence.in @@ -19,8 +19,8 @@ HAVE_SSTREAM=@HAVE_SSTREAM@ LIBS=@LIBS@ LIBSFORBIN=@LIBS@ -LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome -LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib/salome +LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome +LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome # add libstdc++ to link c++ library with libtool ! LDFLAGS+= -lstdc++ LDFLAGSFORBIN+= -lstdc++ @@ -62,8 +62,8 @@ PYTHONHOME = @PYTHONHOME@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_VERSION = @PYTHON_VERSION@ -PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages -PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome +PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages +PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome # QT QT_ROOT = @QT_ROOT@ @@ -116,12 +116,6 @@ HDF5_MT_LIBS=@HDF5_MT_LIBS@ OCC_INCLUDES=@CAS_CPPFLAGS@ OCC_CXXFLAGS=@CAS_CXXFLAGS@ -#OCC_KERNEL_LIBS=@CAS_KERNEL@ -#OCC_OCAF_LIBS=@CAS_OCAF@ -#OCC_VIEWER_LIBS=@CAS_VIEWER@ -#OCC_MODELER_LIBS=@CAS_MODELER@ -#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ -#OCC_LIBS=@CAS_LDFLAGS@ CAS_KERNEL=@CAS_KERNEL@ CAS_MATH=@CAS_MATH@ CAS_OCAF=@CAS_OCAF@ @@ -131,6 +125,7 @@ CAS_VIEWER=@CAS_VIEWER@ CAS_MODELER=@CAS_MODELER@ CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ CAS_LDPATH=@CAS_LDPATH@ + # MPICH MPICH_INCLUDES=@MPICH_INCLUDES@ @@ -183,11 +178,9 @@ IDL_SRV_OBJ = @IDL_SRV_OBJ@ CPPFLAGS+= $(CORBA_INCLUDES) CXXFLAGS+= $(CORBA_CXXFLAGS) -# add corba libs when link salome application ! -#LDFLAGS+= $(CORBA_LIBS) -#LIBS+=$(CORBA_LIBS) - DOXYGEN = @DOXYGEN@ +DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@ +DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@ ## Shared libraries LT_STATIC_EXEC=@LT_STATIC_EXEC@ @@ -209,16 +202,22 @@ INSTALL_DATA=@INSTALL_DATA@ # create a symbolic link (or a copie ?) LN_S=@LN_S@ +KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@ +KERNEL_SITE_DIR=@KERNEL_SITE_DIR@ + +KERNEL_LDFLAGS=@KERNEL_LDFLAGS@ +KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@ + ## Installation points prefix=@prefix@ exec_prefix=@exec_prefix@ -bindir=@bindir@/salome -libdir=@libdir@/salome +bindir=@exec_prefix@/bin/salome +libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome # warning : if user give this path in configure we could have salome/salome :-( includedir=@includedir@/salome datadir=@datadir@/salome idldir=${prefix}/idl/salome -sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules incmakedir=${prefix}/salome_adm/unix docdir=${prefix}/doc/salome @@ -246,7 +245,13 @@ all: Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in cd $(top_builddir) ; ./config.status -$(top_builddir)/config.status: $(top_srcdir)/configure +LOCAL_MAKE = make_commence make_conclude make_omniorb + +KERNEL_MAKE = make_module depend SALOMEconfig.h F77config.h sstream envScript + +$(top_builddir)/config.status: $(top_srcdir)/configure \ + $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \ + $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in) cd $(top_builddir) ; ./config.status --recheck # VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) @@ -267,4 +272,4 @@ check_sip.m4 check_msg2qm.m4 check_pyqt.m4 \ check_opengl.m4 $(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm_local/unix/config_files/%) - cd $(top_srcdir) ; aclocal --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 diff --git a/adm_local/unix/make_conclude.in b/adm_local/unix/make_conclude.in index c79350747..b10f5dbc0 100644 --- a/adm_local/unix/make_conclude.in +++ b/adm_local/unix/make_conclude.in @@ -48,10 +48,10 @@ LIB_OBJ_F = $(patsubst %.f, %.lo, $(filter %.f, $(LIB_SRC))) # 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) @@ -66,7 +66,7 @@ endif 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, $@) @@ -77,14 +77,14 @@ $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la $(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 @@ -154,7 +154,7 @@ $(DEST_UI_PY_FILES): $(top_builddir)/bin/salome/%: % # 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 $@ @@ -343,10 +343,10 @@ clean: mostlyclean -$(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) diff --git a/bin/VERSION b/bin/VERSION index f31d619c4..45addf10a 100755 --- a/bin/VERSION +++ b/bin/VERSION @@ -1 +1 @@ -THIS IS SALOME - SALOMEGUI VERSION: 3.2.0a2 +THIS IS SALOME - SALOMEGUI VERSION: 3.2.0b1 diff --git a/bin/runLightSalome.sh b/bin/runLightSalome.sh index f99a8125f..ce5b7c4cc 100755 --- a/bin/runLightSalome.sh +++ b/bin/runLightSalome.sh @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# #!/bin/bash -f if [ -z "$SUITRoot" ] ; then diff --git a/build_configure b/build_configure index fad9468f8..b36fde32a 100755 --- a/build_configure +++ b/build_configure @@ -124,10 +124,10 @@ echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1 +echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1 echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 -echo " ./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 diff --git a/configure.in.base b/configure.in.base index f593bc607..86fc9ff5d 100644 --- a/configure.in.base +++ b/configure.in.base @@ -512,9 +512,9 @@ fi # 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 diff --git a/doc/Makefile.in b/doc/Makefile.in index 7295ede75..9bd6e8ef5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in index ca1d6f282..c41b5206d 100644 --- a/doc/salome/Makefile.in +++ b/doc/salome/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # -* Makefile *- # diff --git a/doc/salome/gui/KERNEL/dump_study.htm b/doc/salome/gui/KERNEL/dump_study.htm new file mode 100755 index 000000000..570547cba --- /dev/null +++ b/doc/salome/gui/KERNEL/dump_study.htm @@ -0,0 +1,167 @@ + + + + + +Dump Study + + + + + + + + + + + + +

Working with Python Scripts

+ +

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

+ +

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

+ +

 

+ +

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

+ +

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

+ +

 

+ +

+ +

 

+ + + +

 

+ +

To + confirm your choice click Save.

+ +

 

+ +

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

+ +

 

+ +

+ +

 

+ +

To + confirm your choice click Open.

+ +

 

+ + + + diff --git a/doc/salome/gui/KERNEL/geom_preferences.htm b/doc/salome/gui/KERNEL/geom_preferences.htm index eaca47940..805c29b96 100755 --- a/doc/salome/gui/KERNEL/geom_preferences.htm +++ b/doc/salome/gui/KERNEL/geom_preferences.htm @@ -15,7 +15,7 @@ if (navigator.appName !="Netscape") + + + + + + + + +

Introduction to GUI

+ +

GUI (Graphical User Interface) provides + a common shell for all components, which can be integrated into the SALOME + platform.

+ +

 

+ +

GUI + component in SALOME platform provides:

+ +

 

+ + + +

- + VTK 3d viewer,

+ +

- + OCC 3d viewer,

+ +

- + Gauss Points viewer

+ +

- + Plot 2d viewer,

+ +

- + Supervision viewer.

+ +

 

+ +

Since version 3.0.0 SALOME GUI is based on + SUIT (Salome User Interface Toolkit) that proposes very flexible, powerful + and safe mechanisms of interaction with SALOME tool components (both CORBA + and standalone), resources management, viewers and selection handling, + exception/signals processing, bringing to top multi-desktop dockable-windowed + user interface which improves the usability of SALOME GUI.

+ +

All Graphical User Interfaces of standard + modules have plug-in structure, i.e. each module is placed in a dynamic + library which is loaded on demand. All modules can create their own menu + items, buttons in toolbar, windows etc

+ +

 

+ + + +Related Topics + + + + + + + diff --git a/doc/salome/gui/KERNEL/kernel.log b/doc/salome/gui/KERNEL/kernel.log index 9efe8e59b..db77e9aaf 100755 --- a/doc/salome/gui/KERNEL/kernel.log +++ b/doc/salome/gui/KERNEL/kernel.log @@ -131,17 +131,17 @@ whskin_frmset01.htm kernel_hha.hhk kernel.hhc kernel.hhk +dump_study.htm geom_preferences.htm +introduction_to_gui.htm kernel\about_salome_pro_architecture.htm kernel\about_salome_pro_help_system.htm kernel\creating_a_new_study.htm -kernel\displaying_hiding_toolbars.htm kernel\displaying_studies.htm kernel\editing_studies.htm kernel\getting_properties_of_the_study.htm kernel\getting_started2.htm kernel\introduction.htm -kernel\introduction_to_iapp.htm kernel\introduction_to_salome_pro.htm kernel\navigating_topics.htm kernel\opening_studies.htm @@ -156,82 +156,71 @@ kernel\using_object_browser.htm kernel\using_registry.htm mesh_preferences.htm post-pro_preferences.htm +select_color_and_font.htm setting_preferences.htm -supervisor_preferences.htm -viewers.htm ehelp.xml robohhre.lng texture_horiz_ltbluebubbles.jpg kernel.glo default.css +pics\propp7.png +pics\propm4.png choicepage.png intropage.png +pics\propp8.png pics\registry1.png -pics\pref4.png logo_salome_2005.png pics\open.jpg pics\registry3.png pics\studyproperties.png -image90.gif pics\registry4.png pics\cataloggenerator.png tip1.gif -image91.gif -image80.gif -pics\preferencies10.png readmepage.png pics\save.jpg -pics\plot1.png -image92.gif -image81.gif -pics\preferencies11.png image70.gif image51.jpg pics\newsticn.jpg -image82.gif image71.gif progresspage.png -image83.gif +pics\props1.png +image94.gif closestudy.png image72.gif pics\copy-paste.jpg -pics\neo-view1.png +pics\selectfont.png +pics\props2.png pics\view2.png -image84.gif image54.jpg image73.gif pics\selectcolor.png -pics\selectfont.png pics\exemple.gif +pics\dumpstudy.png +pics\props3.png pics\neo-view2.png -pics\multidesktop.png -image86.gif -pics\viewerspreferences.png +pics\propp1.png +pics\props4.png image75.gif i_blue.jpg -pics\meshpreferences.png -pics\preferencies5.png +pics\propp2.png +pics\props5.png image65.gif pics\undo-redo.jpg note1.gif -image88.gif -image77.gif +pics\propp3.png pics\objectbrowser1.png -image89.gif -image78.gif +pics\propm1.png pics\objectbrowser2.png -pics\preferencies7.png image67.gif productpage.png -image79.gif +pics\loadscript.png +pics\propm2.png pics\geomview-alt.png pics\lockedstudy.png pics\loadstudy2.png -pics\preferencies8.png -pics\pref1.png image68.gif -pics\preferencies9.png -pics\pref2.png +pics\propp6.png +pics\propm3.png image69.gif kernel.ppf ehlpdhtm.js @@ -289,6 +278,7 @@ whgdata\whlstf7.htm whgdata\whlstf8.htm whgdata\whlstf9.htm whgdata\whlstf10.htm +whgdata\whlstf11.htm whgdata\whlstg0.htm kernel.htm kernel_csh.htm diff --git a/doc/salome/gui/KERNEL/kernel/about_salome_pro_architecture.htm b/doc/salome/gui/KERNEL/kernel/about_salome_pro_architecture.htm index 477c3de19..689f79e30 100755 --- a/doc/salome/gui/KERNEL/kernel/about_salome_pro_architecture.htm +++ b/doc/salome/gui/KERNEL/kernel/about_salome_pro_architecture.htm @@ -104,7 +104,7 @@ else dramatically without affecting other components.

All - software components (VISU, GEOM, SMESH...) integrated into SALOME + software components (Post-Pro, Geometry, Mesh...) integrated into SALOME platform  implement predefined interfaces. Each component provides data for the SALOME study in a form of links (stored in the @@ -118,16 +118,15 @@ else

 

-

Actually, starting with SALOME 3.0.0 - version, it is possible to create engine-independent modules. These modules - may not use CORBA at all, and can have internal data structure which can - be written in pure C++ (or python). Such modules are located inside SALOME - GUI process and from the point of view of the end user have no difference - with standard components. Such modules not using the standard tools of - SALOME platform are defined on a special separated level named CAM. CAM - component is the basis for new SALOME GUI and contains all basic functionality - for working with modules (loading; saving, closing, customization of toolbar - and menu).

+

It is equally possible to create engine-independent + modules. These modules may not use CORBA at all, and can have internal + data structure which can be written in pure C++ (or python). Such modules + are located inside SALOME GUI process and from the point of view of the + end user have no difference with standard components. Such modules not + using the standard tools of SALOME platform are defined on a special separated + level named CAM. CAM component is the basis for new SALOME GUI and contains + all basic functionality for working with modules (loading; saving, closing, + customization of toolbar and menu).

Another fundamental piece of the SALOME architecture is the use of the @@ -147,7 +146,7 @@ else

 In SALOME there is a possibility to run definite components in the so-called batch mode - without GUI provided by IAPP component. In this case you can work with + without GUI provided by GUI component. In this case you can work with these components with the help of Python commands and scripts.  

 

diff --git a/doc/salome/gui/KERNEL/kernel/about_salome_pro_help_system.htm b/doc/salome/gui/KERNEL/kernel/about_salome_pro_help_system.htm index 8c99af3bc..5b1eeaff6 100755 --- a/doc/salome/gui/KERNEL/kernel/about_salome_pro_help_system.htm +++ b/doc/salome/gui/KERNEL/kernel/about_salome_pro_help_system.htm @@ -78,7 +78,7 @@ else to SALOME help system. This on-line help has been created in the HTML format with the help of Java applets. It can be launched in any WEB browser (Internet Explorer, Netscape Navigator and others) and on any platform - (Windows, Macintosh, Linux, and UNIX).

+ (Windows, Macintosh, Linux and UNIX).

 

@@ -93,7 +93,7 @@ else

 

  -Related Topics +Related Topics

diff --git a/doc/salome/gui/KERNEL/kernel/creating_a_new_study.htm b/doc/salome/gui/KERNEL/kernel/creating_a_new_study.htm index dd88fb668..6fd0f55fd 100755 --- a/doc/salome/gui/KERNEL/kernel/creating_a_new_study.htm +++ b/doc/salome/gui/KERNEL/kernel/creating_a_new_study.htm @@ -98,7 +98,7 @@ else

Study is a document within GUI, an abstraction layer between actual document data (probably, remote data available through CORBA) and data presentation (in the Object Browser). It contains a tree of Data Object - instances (see Figure 2)

+ instances.

 

@@ -115,8 +115,8 @@ else

 

Your study will be created - with default name Study1#1. In - SALOME you can create several studies.

+ with default name Study1. In SALOME + you can create several studies.

 

@@ -134,25 +134,25 @@ else

1.  Make your study active: maximize it (if it minimized) or  click - on the top control zone of the study window

+ on the top control zone of the study window.

 

2.  From the main menu select Window > New Window and from the submenu choose the viewer, which will be activated - in your new window

+ in a new window.

 

The window for your study - will be created with a default name Study1#2.Study1.

 

-Related Topics +Related Topics

diff --git a/doc/salome/gui/KERNEL/kernel/displaying_hiding_toolbars.htm b/doc/salome/gui/KERNEL/kernel/displaying_hiding_toolbars.htm deleted file mode 100755 index 574c04af1..000000000 --- a/doc/salome/gui/KERNEL/kernel/displaying_hiding_toolbars.htm +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Displaying/hiding toolbars - - - - - - - - - - - - -

Displaying/hiding toolbars

- -

All toolbars in the SALOME Platform are context-sensitive. - Uploading of a definite component (GEOM, VISU, SMESH etc.) will automatically - add some additional toolbars specific to this component.

- -

 

- -

To display/hide a - definite toolbar:

- -

 

- -

In the main menu choose - View > Toolbars, and from this - submenu mark or unmark the toolbar, you would like to display/hide.

- -

 

- -

By default all toolbars - are located on the top of the SALOME desktop. But you can relocate toolbars - by dragging with the mouse and dropping it in any place of the window. -

- -

 

- -

  -Related Topics - - -

- - - - diff --git a/doc/salome/gui/KERNEL/kernel/displaying_studies.htm b/doc/salome/gui/KERNEL/kernel/displaying_studies.htm index a170a0d94..51eb5ccb7 100755 --- a/doc/salome/gui/KERNEL/kernel/displaying_studies.htm +++ b/doc/salome/gui/KERNEL/kernel/displaying_studies.htm @@ -15,17 +15,16 @@ if (navigator.appName !="Netscape") -

Getting and setting study properties

+

Setting study properties

To view the properties of the current study:

@@ -157,7 +157,7 @@ else

 

-Related Topics +Related Topics

diff --git a/doc/salome/gui/KERNEL/kernel/getting_started2.htm b/doc/salome/gui/KERNEL/kernel/getting_started2.htm index 305387bd4..84d7b29cf 100755 --- a/doc/salome/gui/KERNEL/kernel/getting_started2.htm +++ b/doc/salome/gui/KERNEL/kernel/getting_started2.htm @@ -17,7 +17,7 @@ if (navigator.appName !="Netscape") h1.whs1 { text-align:justify; } p.whs2 { text-align:justify; } p.whs3 { margin-left:40px; text-align:justify; } -img_whs4 { border:none; border-style:none; width:604px; height:376px; float:none; } +img_whs4 { border:none; width:604px; height:376px; float:none; border-style:none; } img_whs5 { border:none; width:30px; height:30px; float:none; border-style:none; } p.whs6 { text-align:justify; background-image:url('../texture_horiz_ltbluebubbles.jpg'); } img_whs7 { border:none; width:36px; height:38px; float:none; border-style:none; } @@ -105,12 +105,8 @@ else

 

-

 

- -

 

-

-Related Topics +Related Topics

diff --git a/doc/salome/gui/KERNEL/kernel/introduction.htm b/doc/salome/gui/KERNEL/kernel/introduction.htm index d1773fbca..7f746b753 100755 --- a/doc/salome/gui/KERNEL/kernel/introduction.htm +++ b/doc/salome/gui/KERNEL/kernel/introduction.htm @@ -184,7 +184,7 @@ else which has been based on this platform

  • All - functionnalities are accessible through the programmatic integrated Python + functionalities are accessible through the programmatic integrated Python console

  • @@ -204,8 +204,8 @@ else
  • Define geometrical models - (create/modify geometrical items), import and export them using the IGES - and STEP formats;

  • + (create/modify geometrical items), import and export them using the BREP, + IGES and STEP formats;

  • Define meshing of these geometrical items, import and export them;

  • diff --git a/doc/salome/gui/KERNEL/kernel/introduction_to_iapp.htm b/doc/salome/gui/KERNEL/kernel/introduction_to_iapp.htm deleted file mode 100755 index f0c0a36f8..000000000 --- a/doc/salome/gui/KERNEL/kernel/introduction_to_iapp.htm +++ /dev/null @@ -1,195 +0,0 @@ - - - - - -Introduction to IAPP - - - - - - - - - - - - -

    Introduction to GUI

    - -

    GUI - (Graphical User Interface) provides a common shell for all components, - which can be integrated into the SALOME platform.

    - -

     

    - -

    GUI - component in SALOME platform provides:

    - -

     

    - - - -

    - - VTK 3d viewer,

    - -

    - - OCC 3d viewer,

    - -

    - - Plot 2d viewer,

    - -

    - - Supervision viewer.

    - -

     

    - -

    Since version 3.0.0 SALOME GUI is based on - SUIT (Salome User Interface Toolkit) that proposes very flexible, powerful - and safe mechanisms of interaction with SALOME tool components (both CORBA - and standalone), resources management, viewers and selection handling, - exception/signals processing, bringing to top multi-desktop dockable-windowed - user interface which improves the usability of SALOME GUI.

    - -

    All Graphical User Interfaces of standard - modules have plug-in structure, i.e. each module is placed in a dynamic - library which is loaded on demand. All modules can create their own menu - items, buttons in toolbar, windows etc

    - -

     

    - - -Related Topics - - - - -
      - - -
      - - -
      - - -

     

    - - - - diff --git a/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm b/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm index 40cd183c5..80ccf5ab3 100755 --- a/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm +++ b/doc/salome/gui/KERNEL/kernel/introduction_to_salome_pro.htm @@ -110,8 +110,8 @@ else

     

    -

    By - default SALOME platform five modules each having its own function:

    +

    SALOME + platform integrates a number of modules each having its own function:

     

    @@ -140,7 +140,7 @@ else -

     

    +

     

    + +

    Object + Browser Preferences

    + +

     

    + +

    + +

     

    + +

    Display or Hide Value, Entry, IOR and Reference entry + columns in the Object Browser.

    + +

    Disable + or Enable Auto size for first column or Auto size for other columns + in the Object Browser.

    + +

     

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm b/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm index 2d1cfd024..937d6715c 100755 --- a/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm +++ b/doc/salome/gui/KERNEL/kernel/using_catalog_generator.htm @@ -22,7 +22,7 @@ p.whs5 { text-align:justify; } p.whs6 { font-family:'Times New Roman' , serif; } p.whs7 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; } p.whs8 { font-family:'Times New Roman' , serif; margin-left:40px; } -img_whs9 { border:none; border-style:none; width:475px; height:289px; float:none; } +img_whs9 { border:none; width:475px; height:289px; float:none; border-style:none; } p.whs10 { font-family:'Times New Roman' , serif; margin-left:0px; } ul.whs11 { list-style:disc; } p.whs12 { font-family:'Times New Roman' , serif; margin-left:0px; background-image:url('../texture_horiz_ltbluebubbles.jpg'); } @@ -111,7 +111,7 @@ else interface its xml description.  The component xml description allows SALOME application to know about the component and its services and provides the possibility to call the component - services, for example, inside SUPERVISION module.

    + services, for example, inside Supervisor module.

    If you have a look at runSalome, runSalomeWithPort scripts running SALOME application, which are stored in build/bin directory @@ -206,7 +206,7 @@ else

     

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_object_browser.htm b/doc/salome/gui/KERNEL/kernel/using_object_browser.htm index a1680135f..a62e55c5d 100755 --- a/doc/salome/gui/KERNEL/kernel/using_object_browser.htm +++ b/doc/salome/gui/KERNEL/kernel/using_object_browser.htm @@ -18,10 +18,10 @@ h1.whs1 { text-align:justify; } p.whs2 { text-align:justify; } img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; } ul.whs4 { list-style:disc; } -img_whs5 { border:none; width:294px; height:280px; float:none; } +img_whs5 { border:none; width:294px; height:280px; float:none; border-style:none; } p.whs6 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); text-align:justify; } img_whs7 { border:none; float:none; width:36px; height:38px; border-style:none; } -img_whs8 { border:none; width:354px; height:280px; float:none; } +img_whs8 { border:none; width:354px; height:280px; float:none; border-style:none; } p.whs9 { font-style:italic; color:#ff0000; text-align:justify; } p.whs10 { margin-left:40px; text-align:justify; } p.whs11 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; } @@ -107,8 +107,8 @@ else
  • components, loaded during the current session

  • -
  • objects with the - help of different components  (The +

  • objects created with + the help of different components  (The objects created with the help of a definite component are located in the folder having the name of this component.)

  • @@ -171,11 +171,8 @@ else the value of the first object attribute

    -

     

    - -

                       

    - -

     

    +

                      

    In the Object Browser you can apply to the objects an ascending or  

    -Related Topics +Related Topics

    diff --git a/doc/salome/gui/KERNEL/kernel/using_registry.htm b/doc/salome/gui/KERNEL/kernel/using_registry.htm index c88a7eaac..8028cfce5 100755 --- a/doc/salome/gui/KERNEL/kernel/using_registry.htm +++ b/doc/salome/gui/KERNEL/kernel/using_registry.htm @@ -18,11 +18,11 @@ h1.whs1 { text-align:justify; } p.whs2 { text-align:justify; } p.whs3 { margin-left:40px; text-align:justify; } p.whs4 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; } -img_whs5 { border:none; border-style:none; width:604px; height:201px; float:none; } +img_whs5 { border:none; width:604px; height:201px; float:none; border-style:none; } p.whs6 { margin-left:0px; text-align:justify; } p.whs7 { text-align:justify; margin-left:80px; } -img_whs8 { border:none; width:327px; height:128px; float:none; } -img_whs9 { border:none; border-style:none; width:460px; height:283px; float:none; } +img_whs8 { border:none; width:327px; height:128px; float:none; border-style:none; } +img_whs9 { border:none; width:460px; height:283px; float:none; border-style:none; } p.whs10 { margin-left:0px; font-weight:bold; text-align:justify; } --> -

    MESH preferences

    +

    Mesh preferences

    -

    In the MESH module you can set mesh preferences, default settings, which - can be used in later sessions with this module.

    +

    In the Mesh module you can set mesh preferences, which can be used in + later sessions with this module.

     

    @@ -104,7 +105,7 @@ else

     

    -

    +

     

    @@ -132,49 +133,76 @@ else numbers in Quality Control diagrams at the necessary level of precision.

    -
  • Precision.

  • - -
  • By default,  numbers - in Quality Control diagrams - are presented as integers. However, it is possible to set the Number - of digits after point in the corresponding - field.

  • - -
  • Display - mode

  • - -
  • In the Display mode dialog - box you can set Wireframe, Shading, Nodes or Shrink presentation mode - as default.  This - functionality is described in full detail in other chapter.

  • +
  • Precision + - can be defined by the + Number of digits after point + in the corresponding field. By default, numbers in Quality Control diagrams are presented as integers. +

  • + +
  • Display + mode - allows to set Wireframe, Shading, + Nodes or Shrink presentation mode as default.

  • + + + +

     

    +

     

    -

    Mesh Preferences

    +

    Mesh Preferences

    -

     

    +

     

    -

    +

     

     

    @@ -183,31 +211,56 @@ else

     

    -

    +

     

     

    Scalar Bar Preferences

    -

     

    +

     

    -

    +

     

    @@ -226,10 +279,19 @@ else style="font-weight: normal;">here you can choose between vertical and horizontal orientation of the Scalar Bar.

    -
  • Origin & - Size Vertical & Horizontal - - in this menu you can set representation parameters for the Scalar - Bar.

  • +
  • Origin + & Size Vertical & Horizontal - allows + to define placement (X and + Y) and lookout (Width and Height) + of Scalar Bars

  • + +
  • X: + abscissa of the point of origin (from + the left side)

  • + +
  • Y: + ordinate of the origin of the bar (from + the bottom)

  • + + + + + + + + +

    Select Color and Font

    + +

    Select Color and Select + Font menus are used in many Preferences.

    + +

    Select color

    + +

    + +

     

    + +

    This menu  allows + to choose from either predefined Basic + Colors grouped in the upper left corner of the window or Custom Colors, which you can define + yourselves. To define a Custom Color, click on one of the Custom Color + cells, select the color you need in the field of colors or by typing in + its numeric parameters in the lower right corner of the window, then click + Add to Custom Colors button. The + chosen color will be added to Custom + Colors table.  

    + +

    Select Font

    + +

    + +

     

    + +

    This menu provides a wide choice of Fonts, + Font Styles and Sizes. Characters can be underlined or struck out. + It is possible to preview them in the Sample window. + Script dialog-box + gives the possibility to use not only Latin and Latin Extended but also + Cyrillic, Greek, Arabic, Runic and many other subsets.  

    + +

     

    + + + + diff --git a/doc/salome/gui/KERNEL/setting_preferences.htm b/doc/salome/gui/KERNEL/setting_preferences.htm index 69f2168e0..35dfc8f28 100755 --- a/doc/salome/gui/KERNEL/setting_preferences.htm +++ b/doc/salome/gui/KERNEL/setting_preferences.htm @@ -15,8 +15,22 @@ if (navigator.appName !="Netscape") + - - - - - - - - -

    Supervisor Preferences

    -

    Type topic text here.

    - - - \ No newline at end of file diff --git a/doc/salome/gui/KERNEL/viewers.htm b/doc/salome/gui/KERNEL/viewers.htm deleted file mode 100755 index 277437987..000000000 --- a/doc/salome/gui/KERNEL/viewers.htm +++ /dev/null @@ -1,212 +0,0 @@ - - - - - -Viewers - - - - - - - - - - - -

    Viewers

    - -

    Salome gives you a choice of four different viewers. This wide choice - of instruments providing both common and unique possibilities aims to - give the users of SALOME Platform maximum convenience and ease in their - work.

    - -

    Customizing the viewers you can define settings to be used in them by - default in the Preferences menu.

    - -

    Salome Platform also provides you with Viewer - Toolbars, which make it possible to promptly operate your viewer - scene. Some of the functions are common for all viewers.

    - - - - - -

     

    - -

    VTK 3d  viewer - (Visualization ToolKit Viewer) and OCC - 3d viewer (Open CasCade Viewer) are both useful for creation of - geometrical models in the GEOM module, however, there some differences, - which specialize the use of the modules.

    - -

    OCC 3d viewer is the default - viewer for GEOM Module. Only this viewer gives you the possibility to - select sub-shapes (described in full detail in the help for the GEOM Module). - Unfortunately, you can't visualize meshes in this viewer, for this, use - VTK 3d viewer.   

    - -

    VTK 3d  viewer - is the default viewer for SMESH Module. Using this viewer you'll be able - to visualize and work with meshes.  

    - -

    Most of functions in Viewer Toolbars of these modules are common for - both viewers, they are:

    - - - -

    One more function is available in OCC - 3d viewer only.

    - - - -

     

    - -

    Plot 2d viewer is destined to - the representation of  2d - plots and graphs obtained via Post-Pro module.

    - -

    Its viewer toolbar gives you fast access to the following operations:

    - - - -

     

    - -

    - -

     

    - -

    GL Viewer is used by exterior - modules built-in in the SALOME Platform.

    - - - - diff --git a/doc/salome/gui/KERNEL/whdata/whftdata0.htm b/doc/salome/gui/KERNEL/whdata/whftdata0.htm index abbeed833..ec80b7254 100755 --- a/doc/salome/gui/KERNEL/whdata/whftdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whftdata0.htm @@ -12,17 +12,17 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whfts.htm b/doc/salome/gui/KERNEL/whdata/whfts.htm index f030d8658..7a1060e4a 100755 --- a/doc/salome/gui/KERNEL/whdata/whfts.htm +++ b/doc/salome/gui/KERNEL/whdata/whfts.htm @@ -8,9 +8,9 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whfwdata0.htm b/doc/salome/gui/KERNEL/whdata/whfwdata0.htm index 8b506782c..f73ba00c2 100755 --- a/doc/salome/gui/KERNEL/whdata/whfwdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whfwdata0.htm @@ -14,333 +14,371 @@ diff --git a/doc/salome/gui/KERNEL/whdata/whtdata0.htm b/doc/salome/gui/KERNEL/whdata/whtdata0.htm index d41a28b3d..a037edb04 100755 --- a/doc/salome/gui/KERNEL/whdata/whtdata0.htm +++ b/doc/salome/gui/KERNEL/whdata/whtdata0.htm @@ -19,26 +19,26 @@ aTE(2,0,"Installing SALOME","kernel/readme.html"); aTE(2,0,"Running SALOME","kernel/running_salome_pro.htm"); aTE(1,21,"GUI module"); - aTE(2,0,"Introduction to GUI","kernel/introduction_to_iapp.htm"); + aTE(2,0,"Introduction to GUI","introduction_to_gui.htm"); aTE(2,0,"Getting started","kernel/getting_started2.htm"); aTE(2,0,"SALOME desktop","kernel/salome_pro_desktop.htm"); - aTE(2,0,"Viewers","viewers.htm"); - aTE(2,0,"Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm"); - aTE(1,6,"Study management"); + aTE(1,7,"Study management"); aTE(2,0,"Creating a new study","kernel/creating_a_new_study.htm"); aTE(2,0,"Opening studies","kernel/opening_studies.htm"); aTE(2,0,"Saving and closing studies","kernel/saving_a_study.htm"); aTE(2,0,"Editing studies","kernel/editing_studies.htm"); aTE(2,0,"Displaying studies","kernel/displaying_studies.htm"); - aTE(2,0,"Getting and setting study properties","kernel/getting_properties_of_the_study.htm"); + aTE(2,0,"Working with Python Scripts","dump_study.htm"); + aTE(2,0,"Setting study properties","kernel/getting_properties_of_the_study.htm"); aTE(2,0,"Using Object Browser","kernel/using_object_browser.htm"); aTE(2,0,"Using Registry tool","kernel/using_registry.htm"); aTE(2,0,"Using Catalog Generator","kernel/using_catalog_generator.htm"); - aTE(1,5,"Setting Preferences"); + aTE(1,6,"Setting Preferences"); aTE(2,0,"Setting Preferences","setting_preferences.htm"); + aTE(2,0,"Select Color and Font","select_color_and_font.htm"); aTE(2,0,"SALOME preferences","kernel/setting_preferences.htm"); - aTE(2,0,"GEOM preferences","geom_preferences.htm"); - aTE(2,0,"MESH preferences","mesh_preferences.htm"); + aTE(2,0,"Geometry preferences","geom_preferences.htm"); + aTE(2,0,"Mesh preferences","mesh_preferences.htm"); aTE(2,0,"Post-Pro Preferences","post-pro_preferences.htm"); //--> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf0.htm b/doc/salome/gui/KERNEL/whgdata/whlstf0.htm index d4ef2afa3..9f66cfaae 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf0.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf0.htm @@ -34,13 +34,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    -__version__
    _omnipymodule
    2d 1 2 3 4
    3d 1 2 3 4
    +__version__
    _omnipymodule
    16x16
    2d 1 2 3 4
    3d 1 2 3 4


    -able 1 2 3 4 5
    abort
    above 1 2
    abstraction
    access 1 2 3 4 5
    accessible 1 2
    accidentally
    according 1 2 3 4
    account
    achieved
    achieves
    acquainted
    actions
    activated 1 2 3
    active 1 2 3 4
    actual
    actually 1 2
    adapted
    add 1 2 3 4 5
    added
    adding
    addition 1 2
    additional 1 2 3 4 5 6
    adjust
    advanced 1 2 3
    affecting
    again 1 2 3
    aims
    algorithm
    algorithms 1 2
    allow 1 2
    allowing 1 2 3
    allows 1 2 3 4 5 6 7
    along 1 2
    alongside
    already
    always
    amount
    animation
    annoying
    another 1 2
    answer
    any 1 2 3 4 5 6 7 8 9
    anything
    appear 1 2 3 4 5
    appears 1 2
    applets
    application 1 2 3 4 5 6 7 8 9 10 11
    applications 1 2
    applies
    apply 1 2
    approach 1 2 3
    appropriate 1 2
    approximate
    arabic
    architecture 1 2
    architectures
    area 1 2
    areas 1 2
    argument
    arguments
    arrow
    ascending
    ascii 1 2
    ask
    associated 1 2
    attached
    attribute
    attributes
    author 1 2
    auto 1 2
    automatic
    automatically 1 2 3 4 5 6 7
    availability
    available 1 2 3 4 5 6
    avoid
    aware
    awk
    axes 1 2
    axis 1 2
    +able 1 2 3 4
    abort
    above 1 2
    abscissa 1 2
    absolute
    abstraction
    acceptable
    access 1 2 3 4 5 6 7
    accessible 1 2
    accidentally
    according 1 2 3 4 5
    account
    achieved
    achieves
    acquainted
    actions 1 2
    activated 1 2 3
    active 1 2 3 4 5
    activity
    actual
    actually
    adapted
    add 1 2 3 4 5 6
    added
    adding
    addition 1 2
    additional 1 2 3 4 5 6 7
    addressing
    adds
    adjust
    advanced 1 2
    affecting
    again 1 2 3 4
    algorithm
    algorithms 1 2
    allow 1 2
    allowing 1 2 3 4 5
    allows 1 2 3 4 5 6 7 8 9 10 11
    almost
    along 1 2
    alongside
    alpha
    already
    always
    amount
    animation
    annoying
    another 1 2
    answer
    any 1 2 3 4 5 6 7 8 9 10 11 12
    anything
    api 1 2
    appear 1 2 3 4 5 6
    appearance
    appears 1 2
    applets
    application 1 2 3 4 5 6 7 8 9 10 11 12
    applications 1 2
    apply 1 2
    approach 1 2 3
    appropriate 1 2
    approximate
    arabic
    architecture 1 2 3
    architectures
    area 1 2
    areas 1 2
    argument
    arguments
    arrange
    arrow
    ascending
    ascii 1 2
    ask
    assigned
    associated 1 2 3
    attached
    attribute
    attributes
    author 1 2
    auto 1 2
    automatic
    automatically 1 2 3 4 5 6 7 8 9
    availability
    available 1 2 3 4 5
    average
    avi
    avoid
    avoiding
    aware
    awk
    axes
    axis


    -b
    back 1 2
    background
    bar 1 2 3
    base
    based 1 2 3
    bash
    basic 1 2 3 4 5
    basis
    batch 1 2 3
    becomes
    before
    begin
    begins
    behave
    behavior
    being
    below 1 2
    bin 1 2 3
    binaries
    binary 1 2
    blue
    blur
    bmp
    bold
    book
    books
    boost
    boost_version
    boostdir
    borders
    both 1 2 3
    bottom 1 2
    box 1 2 3 4 5 6 7 8 9
    boxes
    brackets
    brief 1 2 3
    bringing
    browse 1 2 3
    browser 1 2 3 4 5 6 7
    bug
    build 1 2
    building
    built 1 2 3
    button 1 2 3 4 5 6 7 8 9
    buttons 1 2 3 4
    -

    -c 1 2 3
    cad 1 2
    cae
    calculation
    calculations 1 2
    call 1 2 3 4
    called 1 2
    calling
    calls
    cam
    cancel
    capability
    caption
    care
    carefully
    carrying
    cars
    cascade 1 2
    case 1 2 3 4 5 6 7
    casroot
    cat
    catalog
    catalogmodulegeneral
    catalogmodulepersonnel
    catalogue 1 2
    categories


    >> +b
    back 1 2
    background 1 2
    bar 1 2 3
    bars 1 2
    base
    based 1 2 3
    bash
    basic 1 2 3 4 5
    basis
    batch 1 2 3 4
    becomes 1 2
    before
    begin
    begins
    behave
    behavior
    behaviour
    being
    below 1 2 3
    better
    bicolor
    big
    bin 1 2 3
    binaries
    binary 1 2
    blue
    blur
    bold
    book
    books
    boost
    boost_version
    boostdir
    borders 1 2
    both 1 2 3
    bottom 1 2 3 4
    box 1 2 3 4 5 6 7 8 9 10 11 12
    boxes


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf1.htm b/doc/salome/gui/KERNEL/whgdata/whlstf1.htm index b7eb501dc..aee38666e 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf1.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf1.htm @@ -33,7 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -cd
    cells
    change 1 2 3 4 5 6 7
    changed
    changes 1 2 3 4
    changing
    chapter
    chapters
    charge
    check
    check_version
    checkbox 1 2 3
    checkboxes
    checked
    checking
    checks
    choice 1 2
    choose 1 2 3 4 5 6 7 8 9 10 11
    chosen 1 2 3
    classic
    clear
    clearall
    click 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    clickable
    clicked
    clicking 1 2
    client
    clone
    close 1 2 3
    closed
    closes 1 2
    closing 1 2 3
    clusters
    code 1 2
    coefficient
    coincide
    collect
    collected
    collects
    color 1 2 3 4 5
    colored
    colors 1 2 3
    column
    columns 1 2 3
    combines
    comfortable
    comma
    command 1 2
    commands
    common 1 2 3 4 5 6 7
    compared
    compatible
    compilation
    compiled
    compiling
    complete 1 2
    completed 1 2
    complex 1 2
    component 1 2 3 4 5 6 7 8 9 10 11 12 13
    components 1 2 3 4 5 6 7 8 9 10 11 12
    compose
    computation 1 2
    computational
    computations
    computer 1 2
    concept 1 2
    concerning
    concerns
    conclusion
    config
    config_files
    config_mandrake10_1
    configurable
    configuration
    configure 1 2
    confirm
    connect
    connected 1 2 3 4
    consists
    console 1 2 3 4 5
    constant
    constantly
    construction 1 2
    contain 1 2 3 4
    container
    containers
    containing 1 2 3
    contains 1 2 3 4 5 6 7 8 9
    content 1 2
    contents
    context 1 2 3 4
    continue
    control 1 2 3
    controls
    convenience 1 2
    convert
    cooperate
    coordinate
    coordinates
    copy 1 2 3 4
    copying
    copyright
    corba 1 2 3
    corner 1 2
    correcting
    corresponding 1 2 3 4 5
    correspondingly
    corresponds
    costs
    coupling 1 2
    cpp
    create 1 2 3 4 5 6 7 8 9 10 11
    created 1 2 3 4 5 6 7 8 9 10 11
    creates
    creating 1 2
    creation 1 2 3 4
    cross 1 2
    csh 1 2
    cshell
    current 1 2 3 4 5 6 7 8
    currently 1 2 3 4 5
    curve
    custom 1 2 3
    customer
    customization
    customizing
    cycles
    cyrillic


    >> +brackets
    brep
    brief 1 2 3
    bringing
    browse 1 2 3 4
    browser 1 2 3 4 5 6 7 8 9
    bug
    build 1 2 3
    building
    built 1 2 3
    button 1 2 3 4 5 6 7 8 9 10
    buttons 1 2 3 4 5
    +

    +c 1 2 3
    cad 1 2
    cae
    calculation
    calculations 1 2
    call 1 2 3 4
    called 1 2
    calling
    calls
    cam
    camera
    cancel
    capability
    caption
    care
    carefully
    carried
    carrying
    cars
    cascade
    case 1 2 3 4 5 6 7
    casroot
    cat
    catalog
    catalogmodulegeneral
    catalogmodulepersonnel
    catalogue 1 2
    categories
    cd
    cells 1 2
    centered
    central
    centred
    change 1 2 3 4 5 6 7 8
    changed
    changes 1 2 3 4
    changing
    channel
    chapters
    characters
    charge
    check 1 2
    check_version
    checkbox 1 2 3
    checkboxes
    checked 1 2 3 4
    checking
    checks
    choice 1 2 3 4
    choose 1 2 3 4 5 6 7 8 9 10 11 12
    chosen 1 2 3
    clamp
    classic
    clear
    clearall
    click 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    clickable
    clicked
    clicking 1 2 3
    client
    clip
    close 1 2 3 4 5
    closed 1 2
    closes 1 2
    closing 1 2 3
    clusters
    code 1 2
    coef
    coincide
    collect
    collected
    collects
    color 1 2 3 4 5 6
    colored 1 2 3 4
    colors 1 2 3
    column 1 2
    columns 1 2 3
    combined
    combines
    comfortable
    comma
    command 1 2
    commands 1 2
    common 1 2 3 4 5 6
    compared 1 2
    compatible
    compilation
    compiled
    compiling
    complete 1 2
    completed 1 2
    complex 1 2
    component 1 2 3 4 5 6 7 8 9 10 11 12 13
    components 1 2 3 4 5 6 7 8 9 10 11 12 13
    compose
    computation 1 2
    computational
    computations
    computer 1 2
    concept 1 2
    concerning
    concerns
    conclusion
    config
    config_files
    config_mandrake10_1
    configurable
    configuration
    configure 1 2
    confirm 1 2
    connect
    connected 1 2 3 4
    consists
    console 1 2 3 4 5 6
    constant
    constantly
    construction 1 2
    consuming
    contain 1 2 3 4
    container
    containers
    containing 1 2 3 4
    contains 1 2 3 4 5 6 7 8 9
    content 1 2 3
    contents 1 2
    context 1 2 3
    continue
    control 1 2 3 4
    controls 1 2
    convert 1 2
    cooperate
    coordinate
    coordinates
    copies
    copy 1 2 3 4
    copying
    copyright
    corba 1 2 3
    corner 1 2 3
    correcting
    corresponding 1 2 3 4 5
    correspondingly
    corresponds 1 2
    costs
    coupling 1 2


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf10.htm b/doc/salome/gui/KERNEL/whgdata/whlstf10.htm index aef9a7b7f..63683dcd1 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf10.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf10.htm @@ -33,13 +33,12 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -won 1 2 3
    word
    words
    work 1 2 3 4 5
    working 1 2 3 4
    would 1 2 3 4
    write 1 2
    written 1 2
    wrong
    www
    +technological
    technologies
    technology
    temp
    temp_directory
    temp_folder
    tempdir
    temporary
    temporarydiskspace
    tensor
    term 1 2
    terminal 1 2
    terms
    test 1 2 3
    tests
    text 1 2 3
    texture
    them 1 2 3 4 5 6 7 8 9
    therefore
    third
    those 1 2 3
    three
    threshold
    thus 1 2
    time 1 2 3 4 5 6 7 8 9 10 11 12
    times
    title 1 2 3 4
    tk
    tmp
    tmp_disk_space
    together
    toggle
    toggles
    toggling
    tolerance
    tool 1 2 3 4
    toolbar 1 2 3 4 5 6 7
    toolbars 1 2
    toolkit
    tools 1 2 3 4 5 6
    top 1 2 3 4 5 6
    topic 1 2
    topics 1 2 3
    topmost
    total
    totality
    touching
    tr
    training
    translate
    translation
    transparency
    transparent
    tree 1 2 3 4 5
    tries
    trihedron
    trolltech
    true
    try 1 2 3 4
    try_existing
    try_native
    try_preinstalled
    twice
    two 1 2 3 4 5 6
    type 1 2 3 4 5 6
    typical
    typing 1 2


    -x
    xml 1 2 3
    xterm
    xxxxx
    +u
    ultimate
    uncheck
    unchecked
    underlined
    undo 1 2
    undone
    unfortunately
    unique
    units
    unix
    unload
    unloaded 1 2
    unnecessary
    unselect
    unselecting
    unused
    up 1 2 3 4 5 6
    update 1 2
    updated 1 2 3 4 5
    uploading 1 2
    upper 1 2
    usability
    usage 1 2
    used 1 2 3 4 5 6 7 8 9 10 11
    user 1 2 3 4 5 6 7 8 9 10 11
    users 1 2
    uses 1 2
    using 1 2 3 4 5 6 7 8 9 10 11
    usr
    usually
    utilities


    -y
    year
    yes 1 2
    yet 1 2
    your 1 2 3 4 5 6 7 8 9 10 11 12 13
    yourselves
    -

    -zone 1 2


    +v 1 2
    valid
    validation
    value 1 2 3 4 5 6
    values 1 2 3
    variable
    variables 1 2
    varible
    variety 1 2
    various 1 2
    ve 1 2
    vector
    ver
    ver_major
    ver_minor
    version 1 2 3 4 5
    versions
    vertical 1 2 3 4
    vertically
    very 1 2 3 4 5
    view 1 2 3 4 5 6 7 8
    viewer 1 2 3 4 5 6 7
    viewers 1 2 3 4 5 6 7
    viewing 1 2
    visual
    visualisation 1 2
    visualization 1 2 3 4 5
    visualize 1 2


    >> + diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf11.htm b/doc/salome/gui/KERNEL/whgdata/whlstf11.htm new file mode 100755 index 000000000..2cbc447aa --- /dev/null +++ b/doc/salome/gui/KERNEL/whgdata/whlstf11.htm @@ -0,0 +1,48 @@ + + +Search Words List + + + + + + + +

    <<

    +

    +vtk 1 2 3 4 5
    vtkhome
    +

    +wait
    waiting
    want 1 2 3
    warned
    warning 1 2
    way 1 2 3
    web
    welcome 1 2
    what 1 2 3 4 5 6
    whenever 1 2
    wherever
    whether
    while
    whole 1 2 3
    whose
    wide 1 2 3
    widgets
    width 1 2
    will 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    window 1 2 3 4 5 6 7 8 9 10 11 12
    windowed
    windows 1 2 3 4 5 6 7 8
    wireframe 1 2
    wish
    wish8
    within 1 2 3 4
    without 1 2 3 4 5 6
    wizard
    wizards
    won 1 2 3
    word
    words
    work 1 2 3 4 5 6
    working 1 2 3 4 5 6
    would 1 2 3 4
    write 1 2
    written 1 2
    wrong
    www
    +

    +x 1 2 3
    xml 1 2 3
    xterm
    xxxxx
    +

    +y 1 2 3
    year
    yes 1 2
    yet 1 2
    your 1 2 3 4 5 6 7 8 9 10 11 12
    yourselves
    +

    +zone 1 2
    zones
    zoom
    zoomed
    zooming


    + + + + diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf2.htm b/doc/salome/gui/KERNEL/whgdata/whlstf2.htm index f933f9ce1..5c35d3302 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf2.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf2.htm @@ -33,11 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -d
    data 1 2 3 4 5 6 7 8 9 10
    database
    date 1 2
    debugging
    default 1 2 3 4 5 6 7 8 9 10 11 12 13
    define 1 2 3 4 5
    defined 1 2
    definite 1 2 3 4 5 6 7 8 9
    definition 1 2 3
    definitions
    delays
    demand
    demands
    dependancies
    dependencies
    depending
    depends 1 2
    derived
    descending
    described 1 2 3 4
    describes
    describing 1 2
    description 1 2 3
    descriptions 1 2
    design
    desired
    desktop 1 2 3 4 5 6 7
    destination
    destined 1 2 3 4 5
    detail 1 2
    detailed 1 2
    details
    dev
    developer
    development 1 2
    developments
    diagrams
    dialog 1 2 3 4 5 6 7 8 9
    dialogs
    differ
    difference 1 2 3 4
    differences
    different 1 2 3 4 5 6 7 8 9 10 11
    differs
    digital
    digits
    dir
    direction
    directories 1 2
    directory 1 2 3 4 5
    disable 1 2
    disable_flag
    disk 1 2
    display 1 2 3 4 5 6 7
    displayed 1 2 3 4 5 6 7 8 9
    displaying 1 2 3
    displays 1 2 3 4 5
    distinction
    distribute
    distributed
    distribution
    divided 1 2
    dockable 1 2 3
    document 1 2 3 4
    does 1 2
    doing
    domain 1 2
    don 1 2
    done
    dot
    double
    down 1 2 3
    doxygen
    doxytag
    doxywizard
    drag
    dragging
    dramatically
    draw
    drive
    drop
    dropping
    dump
    dumpversion
    duplicate
    dynamic
    dynamically
    +cpp
    create 1 2 3 4 5 6 7 8 9 10 11 12 13
    created 1 2 3 4 5 6 7 8 9 10 11 12
    creates 1 2
    creating 1 2
    creation 1 2 3
    cross 1 2
    csh 1 2
    cshell
    ctrl
    current 1 2 3 4 5 6 7 8 9 10 11
    currently 1 2 3 4
    cursor
    curve
    custom 1 2 3 4
    customer
    customization
    cycles
    cyrillic
    +

    +d
    data 1 2 3 4 5 6 7 8 9 10 11
    database
    date 1 2
    debugging
    decrease
    decreases
    default 1 2 3 4 5 6 7 8 9 10 11
    defaults
    define 1 2 3 4 5 6 7 8
    defined 1 2 3
    defines
    definite 1 2 3 4 5 6 7
    definition 1 2 3
    definitions
    delays
    deleted
    demand 1 2
    demands
    dependancies
    dependencies
    depending
    depends 1 2
    derived
    descending
    described 1 2
    describes
    describing 1 2
    description 1 2 3
    descriptions 1 2
    design
    designed
    desired
    desktop 1 2 3 4 5 6
    destination
    destined 1 2 3 4
    detailed
    details
    dev
    developer
    development 1 2
    developments
    device
    diagrams
    dialog 1 2 3 4 5 6 7 8 9 10 11 12
    dialogs
    differ
    difference 1 2 3 4
    different 1 2 3 4 5 6 7 8 9 10
    differently
    differs
    digital
    digits
    dir
    direction 1 2
    directories 1 2
    directory 1 2 3 4 5
    disable 1 2
    disable_flag
    disabled
    disk 1 2
    display 1 2 3 4 5 6 7 8
    displayed 1 2 3 4 5 6 7 8 9 10
    displaying 1 2
    displays 1 2 3 4 5
    distance
    distinction
    distribute
    distributed
    distribution
    divided 1 2 3
    divides
    dockable 1 2 3 4
    document 1 2 3 4 5
    does 1 2
    doing
    domain 1 2
    dominant
    don
    done 1 2
    dot
    double
    down 1 2 3
    doxygen
    doxytag
    doxywizard
    dragging
    dramatically
    drive
    drop
    dropping
    dump
    dumpversion
    dynamic
    dynamically 1 2


    -e 1 2 3 4
    ease
    easier
    easily
    easy
    economically
    edges
    edit 1 2 3 4
    editing 1 2
    editor
    efficient
    egrep
    either 1 2 3
    electrical
    electronic
    element
    elements
    empty 1 2
    enable
    enables
    encouraging
    end 1 2 3
    enforcing
    engine
    enough
    ensure
    ensuring
    enter 1 2 3 4
    entered
    entity
    entry 1 2
    env
    env_
    env_for_launch
    env_products
    env_vtk
    environment 1 2 3 4 5 6
    environments 1 2
    equal
    equipment
    error
    etc 1 2 3 4 5 6
    even 1 2
    ever
    every 1 2
    everything
    evolutions
    evolve
    ex
    exact
    exactly
    examle
    example 1 2 3 4 5 6
    exception
    exchanges
    execution 1 2
    exist
    existence
    existing 1 2 3 4 5 6
    exists
    expandability
    expanding
    expectations
    exploits
    explorer
    export
    exports
    exposes
    extended
    extensions
    exterior
    external
    extracting
    extremely


    >> +e 1 2 3 4
    easier
    easily
    easy
    economically
    edges
    edit 1 2 3 4
    editable
    editing 1 2
    edition
    editor
    efficient


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf3.htm b/doc/salome/gui/KERNEL/whgdata/whlstf3.htm index e3288fafe..b552245d4 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf3.htm @@ -33,15 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -f
    face 1 2 3
    faces
    facilitated
    facilitates
    fact 1 2
    factory
    fail
    fails
    false
    fast
    feature
    features 1 2
    field 1 2 3 4 5
    fields
    fig
    figure 1 2
    file 1 2 3 4 5 6 7 8 9 10
    files 1 2 3 4 5
    fill
    find 1 2 3
    find_in_path
    finds
    finely
    finish 1 2
    finishes
    finite
    first 1 2
    fit
    five
    flag
    flexibility
    flexible 1 2 3
    focus
    folder 1 2
    follow 1 2 3
    following 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    font 1 2 3
    forget
    format 1 2 3 4 5
    formats
    four 1 2
    frame
    framework 1 2
    free
    friendly
    front
    full 1 2 3 4
    function 1 2 3
    function_name
    functional
    functionality 1 2 3 4 5 6 7 8
    functioning
    functionnalities
    functions 1 2 3 4 5
    fundamental
    further
    -

    -g 1 2
    gcc
    general 1 2 3 4 5
    generate
    generated 1 2
    generates 1 2
    generator 1 2
    generators
    generic 1 2
    geom 1 2 3 4 5 6 7
    geometrical 1 2 3
    geometry
    get 1 2
    getting 1 2 3 4
    give 1 2
    given 1 2
    gives 1 2 3 4 5
    gl
    glossary
    go 1 2
    graph 1 2
    graphical 1 2
    graphs 1 2 3 4
    graphviz
    greater
    greek
    grep
    grouped
    gui 1 2 3 4 5 6 7 8
    +egrep
    either 1 2 3 4
    electrical
    electronic
    element 1 2 3
    elements
    empty 1 2
    enable
    enables
    encouraging
    end 1 2 3 4 5
    enforcing
    engine
    enough
    ensure
    ensuring
    enter 1 2 3 4
    entered
    entity
    entry 1 2
    env
    env_
    env_for_launch
    env_products
    env_vtk
    environment 1 2 3 4 5 6
    environments 1 2
    equal
    equally
    equipment
    error 1 2
    etc 1 2 3 4 5 6
    even 1 2
    ever
    every 1 2
    everything
    evolutions
    evolve
    ex
    exact
    exactly 1 2
    examle
    example 1 2 3 4 5 6
    exceeds
    exception
    exchanges
    execution 1 2
    exist
    existence
    existing 1 2 3 4 5 6
    exists
    expandability
    expanding
    expectations
    expert
    exploits
    explorer
    export 1 2
    exposes
    extended
    extensions
    external
    extracting
    extremely


    -h 1 2
    hand 1 2 3
    handle
    handled
    handler
    handling
    happydoc
    hard 1 2
    hasn
    haven
    having 1 2 3
    hdf 1 2 3 4
    hdf5
    hdf5home
    healing
    hello
    help 1 2 3 4 5 6 7 8 9 10 11
    helpful
    helps 1 2
    here 1 2 3 4 5
    heterogeneous
    hide 1 2 3 4
    hides
    hiding 1 2
    high
    higher
    highlighted 1 2
    hints
    history
    home
    horizontal 1 2 3 4 5
    horizontally
    host
    hotspot
    hotspots
    how 1 2
    hpp
    html 1 2
    hxx
    +f
    face 1 2 3
    faces 1 2
    facilitated
    facilitates
    fact 1 2
    factory
    fail
    fails
    false
    families
    feature 1 2
    features 1 2
    field 1 2 3 4 5
    fields 1 2
    fig
    figure
    figures
    file 1 2 3 4 5 6 7 8 9 10 11 12
    files 1 2 3 4 5 6
    fill
    find 1 2 3
    find_in_path
    finds
    finely
    finish 1 2 3
    finishes
    finite
    first 1 2 3 4 5
    fit
    flag
    flexibility 1 2
    flexible 1 2 3
    focal
    focus
    folder 1 2 3
    follow 1 2
    following 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    font 1 2 3 4
    fonts
    forget
    format 1 2 3 4
    formats
    forth
    fps
    frame
    frames
    framework 1 2
    free 1 2
    friendly
    fulfill
    full 1 2
    fully
    function 1 2 3
    function_name
    functional
    functionalities
    functionality 1 2 3 4 5 6
    functioning
    functions 1 2 3 4
    fundamental
    further


    -i 1 2 3 4
    iapp
    icon 1 2
    icons 1 2
    idea
    identification 1 2
    identify
    idl 1 2
    ie


    >> +g 1 2
    gaps
    gauss 1 2
    gcc
    general 1 2 3 4 5
    generate 1 2
    generated 1 2 3
    generates 1 2
    generator 1 2
    generators
    generic 1 2
    geom 1 2
    geometrical 1 2 3 4
    geometry 1 2 3 4 5
    get 1 2
    getting 1 2 3


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf4.htm b/doc/salome/gui/KERNEL/whgdata/whlstf4.htm index 2e5e1f3ab..081f5910b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf4.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf4.htm @@ -33,13 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -if 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    iges
    ignored
    image
    images
    immediately
    implement 1 2
    implementation 1 2
    implementing
    implied
    import 1 2 3
    important
    imported 1 2 3
    imposed
    impossible
    improves
    inc
    included
    includes 1 2
    including 1 2
    inclusive
    increasingly
    incrementally
    independence
    independent
    index
    indicate 1 2
    information 1 2 3 4 5 6 7 8 9
    initial 1 2
    input 1 2
    insert
    inside 1 2 3 4
    inspect
    instalation
    install 1 2
    install_binary
    install_disk_space
    install_source
    install_wizard_caption
    install_wizard_copyright
    install_wizard_license_info
    install_wizard_root_directory
    install_wizard_version
    installation 1 2
    installation_mode
    installation_script_name
    installdiskspace
    installed 1 2
    installing
    installwizard_root_directory
    installworkxxxxx
    instances
    instead
    instrumental
    instruments
    integer
    integers
    integrate
    integrated 1 2 3 4
    integration 1 2 3 4
    intend
    interaction
    interface 1 2 3 4 5 6
    interfaces 1 2 3 4
    internal 1 2
    internet
    interoperability
    interoperable
    interpreter 1 2
    interval
    introduced
    introduction 1 2 3 4
    invalid
    invoke
    invoked
    ior 1 2
    isolines
    ispython
    item
    items 1 2
    itself
    +give
    given 1 2 3
    gives 1 2 3 4 5
    gl
    global
    glossary
    go 1 2
    graph
    graphic
    graphical 1 2 3
    graphs 1 2 3
    graphviz
    great
    greater
    greatly
    greek
    grep
    grouped
    groups 1 2
    gui 1 2 3 4 5 6 7 8 9 10


    -java
    jpeg
    jpg
    just 1 2
    +h 1 2
    half
    hand 1 2 3
    handle
    handled
    handler
    handling
    happydoc
    hard 1 2
    hasn
    haven
    having 1 2 3
    hdf 1 2 3 4
    hdf5
    hdf5home
    healing
    height 1 2
    hello
    help 1 2 3 4 5 6 7 8 9
    helpful
    helps 1 2
    here 1 2 3 4
    heterogeneous
    hide 1 2 3
    hiding
    high
    higher
    highlight
    highlighted 1 2
    hints
    history
    home
    horizontal 1 2 3 4
    horizontally
    host
    hotspot
    hotspots
    how 1 2
    hpp
    html 1 2
    hxx


    -k
    kbytes
    kernel 1 2 3
    key
    kill
    killall
    kind 1 2
    know
    -

    -l
    labels 1 2
    language
    larger
    last 1 2
    latin
    launch 1 2 3 4 5
    launched 1 2 3 4
    launches
    launching 1 2 3 4
    layer
    layout
    ld_library_path
    lead
    learn
    learning
    left 1 2 3
    legend 1 2
    level 1 2 3
    lib
    libcosnotify4
    libhdf5
    libmed
    libomniorb4
    libqwt
    libraries
    library 1 2
    libstdplugin
    libtcl8
    libtk8
    libvtkcommon
    license
    like 1 2 3 4 5 6 7 8 9
    likely
    limits
    line 1 2 3 4
    linear
    lines 1 2
    link 1 2 3
    links 1 2
    linux 1 2
    list 1 2 3 4 5 6 7
    list_of_prerequisites
    ll 1 2
    load 1 2
    loaded 1 2 3 4 5
    loading 1 2 3
    locate
    located 1 2 3 4 5
    location
    lock
    locked
    log
    logarithmic 1 2 3
    logger
    long
    look
    looks 1 2
    lost
    lot
    lower 1 2 3


    >> +i 1 2 3 4
    icon 1 2
    icons 1 2
    idea
    identification 1 2
    identify
    idl 1 2
    ie
    if 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    iges
    ignored
    image
    images 1 2
    immediately
    implement 1 2
    implementation 1 2
    implementing
    implied
    import 1 2 3
    important
    imported 1 2 3 4
    imposed
    impossible
    improves
    inc
    included
    includes 1 2
    including 1 2 3
    inclusive
    increase
    increases 1 2
    increasingly
    increment 1 2
    incrementally
    independence
    independent
    index
    indexing
    indicate 1 2
    information 1 2 3 4 5 6 7 8
    initial
    input 1 2
    insert
    inside 1 2 3 4 5
    inspect
    inspected
    instalation
    install 1 2
    install_binary
    install_disk_space
    install_source
    install_wizard_caption
    install_wizard_copyright
    install_wizard_license_info
    install_wizard_root_directory
    install_wizard_version
    installation 1 2
    installation_mode
    installation_script_name
    installdiskspace
    installed 1 2
    installing
    installwizard_root_directory
    installworkxxxxx
    instances
    instead
    instrumental
    integer
    integers
    integrate
    integrated 1 2 3 4
    integrates
    integration 1 2 3 4
    intend
    interaction
    interface 1 2 3 4 5 6 7
    interfaces 1 2 3 4
    interior
    internal 1 2
    internet
    interoperability
    interoperable
    interpreter 1 2
    interval 1 2
    introduced
    introduction 1 2 3 4
    invalid
    invoke
    invoked


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf5.htm b/doc/salome/gui/KERNEL/whgdata/whlstf5.htm index 0626de045..a128c7826 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf5.htm @@ -33,13 +33,15 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    - - -m
    machine 1 2
    machines
    macintosh
    macro
    main 1 2 3 4 5 6 7 8 9 10 11 12
    major
    make 1 2 3 4
    make_dir
    make_env
    makes
    manage 1 2
    management 1 2 3
    mandrake
    mandrake10
    manual
    manually
    manuals
    mapped
    mark 1 2
    marked 1 2
    marker
    markers
    market
    massively
    master
    matches
    max
    maximize
    maximized
    maximum
    means 1 2 3 4 5
    mechanisms
    med2home
    meet
    memorize
    mentioned
    menu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    menubar
    menus 1 2 3
    mesh 1 2 3 4
    meshes 1 2
    meshing 1 2
    message 1 2 3
    messages 1 2
    middle
    min
    minimized 1 2
    minor
    missed
    mistakes
    mix
    mode 1 2 3 4 5 6
    model 1 2
    modeling 1 2
    models 1 2 3
    modern
    modes
    modification 1 2
    modifications
    modify 1 2
    modifying
    module 1 2 3 4 5 6 7 8 9 10 11 12 13
    module_root_dir
    module_src_dir
    module1
    module2
    modules 1 2 3 4 5 6 7 8 9 10 11
    modulus
    moment
    mouse 1 2
    move
    mozilla
    msg2qm
    msg2qm_root
    much
    multi 1 2 3 4 5 6
    multifile 1 2
    multiple
    multitier
    must 1 2 3
    +ior 1 2
    isolines
    ispython
    item
    items 1 2
    iterations
    itself
    +

    +java
    just 1 2
    +

    +k
    kbytes
    kernel 1 2 3
    key 1 2
    keyboard
    kill
    killall
    kind 1 2
    know
    knowledge


    -n
    name 1 2 3 4 5 6 7
    named 1 2
    names
    native
    natural
    nature
    navigate 1 2
    navigating
    navigation 1 2
    navigator
    necessary 1 2 3 4 5 6
    need 1 2 3 4
    netgen
    netgenroot
    netscape 1 2
    new 1 2 3 4 5 6 7 8 9 10
    newer
    next 1 2 3 4 5 6
    nf
    nodes 1 2
    normal
    note 1 2
    notes
    noticeably
    notifd
    notification
    notion
    now
    null
    number 1 2 3 4 5
    numbers 1 2
    numeric 1 2 3 4
    numerical 1 2 3 4
    numerous
    +l
    labels 1 2
    language
    larger
    largest
    last 1 2
    latest
    latin
    launch 1 2 3 4 5
    launched 1 2 3 4 5
    launches
    launching 1 2 3 4
    layer
    layout 1 2
    ld_library_path
    lead
    learn
    learning
    left 1 2 3 4 5 6
    legend
    length
    less
    level 1 2 3 4
    lib
    libcosnotify4
    libhdf5
    libmed
    libomniorb4
    libqwt
    libraries
    library 1 2
    libstdplugin
    libtcl8
    libtk8
    libvtkcommon
    license
    like 1 2 3 4 5 6 7 8 9
    likely
    limitation
    limits
    line 1 2 3 4 5 6 7
    linear
    lines 1 2
    link 1 2
    links 1 2
    linux 1 2
    list 1 2 3 4 5 6 7
    list_of_prerequisites
    listed
    ll
    load 1 2 3
    loaded 1 2 3 4 5 6
    loading 1 2 3 4
    local
    locate
    located 1 2 3 4 5 6
    location 1 2
    lock
    locked 1 2
    locking
    log
    logarithmic 1 2
    logger
    long
    look
    lookout 1 2
    looks 1 2
    lost
    lot
    lower 1 2 3 4


    -object 1 2 3 4 5 6 7 8 9
    objectives
    objects 1 2 3 4 5 6 7 8
    obligatory
    obtained
    occ 1 2 3 4 5
    occ_version_major
    occ_version_minor
    occupies
    off
    offered
    often
    ok 1 2 3
    omg
    omit
    omni
    omninotify
    omniorb
    omniorbdir
    omniorbpy


    >> +m
    machine 1 2
    machines
    macintosh
    macro
    magnification
    main 1 2 3 4 5 6 7 8 9 10 11 12 13
    major
    make 1 2 3
    make_dir
    make_env
    makes
    manage 1 2
    management 1 2 3
    mandrake
    mandrake10
    manipulate
    manipulator
    manual 1 2
    manually
    manuals
    mapped
    mark
    marked
    marker
    markers
    market
    massively
    master
    matches
    matrix
    max
    maximize
    maximum
    mean
    means 1 2 3 4 5 6
    mechanism
    mechanisms
    med2home
    meet
    memory
    mentioned
    menu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    menubar
    menus 1 2 3
    mesh 1 2 3 4 5 6
    meshes 1 2
    meshing 1 2
    message 1 2
    messages 1 2
    middle
    min
    minimized
    minimum
    minor
    missed
    mistakes
    mix


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf6.htm b/doc/salome/gui/KERNEL/whgdata/whlstf6.htm index d5e75b264..82729334b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf6.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf6.htm @@ -33,9 +33,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -one 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    ones 1 2
    online
    open 1 2 3 4 5 6 7 8 9 10 11 12
    opencascade
    opening 1 2
    opens 1 2 3
    operate
    operation 1 2
    operations 1 2 3
    optimization
    optimize
    optimized
    option 1 2 3 4 5 6 7
    optional
    optionally 1 2
    options 1 2 3 4 5
    order
    org
    orientation 1 2
    origin 1 2
    originality
    os
    os_version
    others 1 2
    otherwise 1 2
    out
    outline
    output 1 2
    outside
    overloads
    own 1 2 3 4
    +mode 1 2 3 4 5 6 7
    model 1 2
    modeling 1 2
    models 1 2
    modern
    modes 1 2
    modification 1 2 3
    modifications
    modify 1 2 3
    modifying
    module 1 2 3 4 5 6 7 8 9 10 11 12
    module_root_dir
    module_src_dir
    module1
    module2
    modules 1 2 3 4 5 6 7 8 9 10
    modulus
    moment 1 2
    momentarily
    mouse 1 2 3
    move
    movement
    movements
    mozilla
    msg2qm
    msg2qm_root
    much
    multi 1 2 3 4 5 6
    multifile 1 2
    multiple
    multiplied
    multiplies
    multitier
    must 1 2 3


    -p
    package 1 2 3
    packages
    page 1 2
    pages 1 2
    pane 1 2
    panning
    parallel
    parameter 1 2
    parameters 1 2 3 4 5 6 7
    part
    particular
    particularly
    parts 1 2 3
    party
    pass
    paste 1 2
    pasting
    path
    pc
    perform 1 2
    performance 1 2 3
    performed
    permission
    phenomena
    phrases
    physical 1 2 3
    physics
    pick
    picks
    pickup
    pickup_env
    pickup_env_flag
    pickupenv
    picture
    pid
    piece
    place 1 2 3 4 5
    placed 1 2 3
    platform 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    platforms
    please 1 2
    plot 1 2 3
    plot2d 1 2
    plots
    plug
    png
    po
    point 1 2
    points 1 2 3
    pop 1 2 3 4
    popup
    popups
    port
    portkill
    position 1 2 3 4
    positions 1 2
    positively
    possibilities
    possibility 1 2 3 4 5 6
    possible 1 2 3 4 5 6 7
    post 1 2 3 4
    powerful
    pre 1 2
    precision
    precompiled
    predefined 1 2 3
    preferable
    preferences 1 2 3 4 5 6 7 8
    prefix
    preinstalled
    preliminary
    prerequisite
    prerequisites
    preselection
    presentation 1 2
    presentations 1 2
    presented
    press 1 2
    pressing
    previous 1 2
    previously 1 2 3 4
    print 1 2
    print_env
    prints
    priority
    pro 1 2
    probably
    problem 1 2
    problems
    procedure 1 2 3
    proceed 1 2
    process 1 2 3 4
    processes
    processing 1 2 3 4
    processors 1 2
    product
    product_context
    product_description
    product_name
    product_script_name
    product_version
    productivity
    products 1 2 3
    products_directory
    profile
    program
    programmatic
    programming
    progress
    prompted
    prompting
    promptly
    proper
    properly
    properties 1 2 3 4
    proposed
    proposes
    provide 1 2
    provided 1 2 3 4 5
    provides 1 2 3 4 5 6 7 8
    providing 1 2 3


    >> +n 1 2
    name 1 2 3 4 5 6 7 8
    named 1 2
    names 1 2
    native
    natural
    nature
    navigate 1 2
    navigating
    navigation 1 2 3
    navigator
    necessary 1 2 3 4 5 6 7
    need 1 2 3 4 5
    needed
    negative
    netgen
    netgenroot
    netscape 1 2
    new 1 2 3 4 5 6 7 8 9 10
    newer
    next 1 2 3 4 5
    nf
    nodes 1 2
    normal
    note
    notes
    noticeably
    notifd
    notification
    notify
    notion
    now
    nth
    null 1 2
    number 1 2 3 4 5 6
    numbers 1 2 3
    numeric 1 2 3 4
    numerical 1 2 3
    numerous
    +

    +object 1 2 3 4 5 6 7 8 9 10 11
    objectives
    objects 1 2 3 4 5 6 7 8 9
    obligatory
    occ 1 2 3 4
    occ_version_major
    occ_version_minor
    occupies
    off
    offered
    often
    ok 1 2 3
    omg
    omit
    omni
    omninotify
    omniorb
    omniorbdir
    omniorbpy
    once
    one 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    ones
    online
    opaque
    open 1 2 3 4 5 6 7 8 9 10 11 12 13
    opencascade
    opening 1 2
    opens 1 2
    operated
    operation 1 2 3
    operations 1 2 3
    optimization
    optimize 1 2
    optimized
    option 1 2 3 4 5 6 7
    optional
    optionally 1 2
    options 1 2 3 4 5 6
    order
    ordinate 1 2
    org
    orientation 1 2
    origin 1 2
    original
    originality
    os
    os_version
    others 1 2
    otherwise 1 2 3 4
    out 1 2 3
    outline
    output 1 2
    outside 1 2


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf7.htm b/doc/salome/gui/KERNEL/whgdata/whlstf7.htm index 9d419a53d..33b9749b9 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf7.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf7.htm @@ -33,13 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -pure
    purpose
    purposes
    py
    pyqt
    pyqtdir
    python 1 2 3 4 5 6 7 8
    pythonhome
    +overloads
    own 1 2 3 4


    -qglobal
    qm
    qt
    qt_version_str
    qtdir
    quality 1 2
    quantities
    question
    quick 1 2 3
    quickly 1 2
    quit
    quits
    quoted
    qwt
    qwthome
    -

    -radio
    range 1 2
    ranges
    rapidly
    re
    reactivity
    read 1 2 3
    reading
    readme
    realize
    receives
    recommended
    record
    red
    redirection
    redo
    reduce
    reduces
    refer 1 2
    reference 1 2 3 4
    references
    refers
    refined
    refresh
    refreshment
    registry 1 2
    reinstall
    reinstallation
    reinstalling
    related 1 2
    relative
    release
    relevant
    reliability
    reload
    relocate
    remains
    remote 1 2
    remove
    removed
    removing
    repeated
    represent 1 2
    representation 1 2 3 4 5 6
    represented
    represents 1 2 3 4
    required 1 2
    requirements 1 2 3
    requires 1 2
    reset 1 2
    resized
    resizes
    resource
    resources
    respective
    responds
    responsible
    restore
    restored
    result 1 2
    resulting
    results 1 2
    retroactive
    returns
    reusable
    reuse
    reveals
    right 1 2 3 4 5 6 7 8
    risks
    robustness
    roles
    root
    rotate
    rotation
    rules
    run 1 2 3
    runic
    runinstall
    running 1 2 3
    runs
    runsalome 1 2
    runsalomewithport
    -

    -s 1 2 3
    safe
    salome 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    salome_modulecatalog_server
    same 1 2 3 4 5 6 7
    save 1 2 3 4
    saved 1 2 3
    saves 1 2
    saving 1 2 3 4
    scalar 1 2
    scale 1 2
    scaling 1 2
    scene
    schemas
    scheme
    schemes 1 2
    scientific
    screen
    script 1 2 3 4
    scripts 1 2 3
    scroll
    search 1 2 3 4 5
    searching
    second
    seconds
    section 1 2
    sections 1 2
    sectionthis
    sed
    see 1 2 3 4 5 6 7 8 9 10 11
    select 1 2 3 4 5 6 7 8 9 10
    selectall
    selected 1 2 3 4
    selecting
    selection 1 2 3
    sends
    sensitive 1 2 3
    separate
    separated 1 2
    server
    servers 1 2
    serves
    service
    services 1 2
    session 1 2 3 4 5 6
    sessions 1 2 3
    set 1 2 3 4 5 6 7 8 9 10
    sets 1 2
    setting 1 2 3 4 5 6
    settings 1 2 3 4 5 6 7 8 9
    severe


    >> +p
    package 1 2 3
    packages
    page
    pages 1 2
    pane 1 2
    panning
    parallel
    parameter 1 2
    parameters 1 2 3 4 5 6
    parent
    part 1 2
    particular
    particularly
    parts 1 2
    party
    pass
    paste 1 2
    pasting
    patent
    path 1 2
    pc
    per
    perform 1 2 3
    performance 1 2 3
    performed 1 2 3
    permission
    phenomena
    phrases
    physical 1 2 3
    physics
    pick
    picking
    picks
    pickup
    pickup_env
    pickup_env_flag
    pickupenv
    picture
    pid
    piece
    pixels
    place 1 2 3
    placed 1 2 3
    placement 1 2
    platform 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    platforms
    played
    please
    plot 1 2
    plot2d 1 2
    plug
    po
    point 1 2 3
    points 1 2 3 4
    pop 1 2 3 4
    popup
    popups
    port
    portkill
    position 1 2 3 4
    positions 1 2 3 4
    positively
    possibility 1 2 3 4 5 6
    possible 1 2 3 4 5 6 7
    post 1 2 3 4 5 6
    powerful
    pre 1 2
    precision
    precompiled
    predefined 1 2 3
    preferable
    preferences 1 2 3 4 5 6 7
    prefix
    preinstalled
    preliminary
    prerequisite
    prerequisites
    preselected
    preselection
    present
    presentation 1 2 3
    presentations 1 2 3
    presented
    press 1 2
    pressed
    pressing 1 2
    prevents
    preview
    previous 1 2
    previously 1 2 3 4
    primitive
    primitives
    print 1 2
    print_env
    prints
    priority
    pro 1 2 3 4 5
    probably
    problem 1 2 3
    problems
    procedure 1 2
    proceed 1 2
    process 1 2 3 4 5
    processed
    processes
    processing 1 2 3 4
    processors 1 2
    produces
    product
    product_context
    product_description
    product_name
    product_script_name
    product_version
    productivity 1 2
    products 1 2 3
    products_directory
    profile
    program
    programmatic
    programming
    progress 1 2
    progressive
    prompted
    prompting
    prone
    proper
    properly
    properties 1 2 3 4 5
    proposed
    proposes
    provide 1 2
    provided 1 2 3 4 5
    provides 1 2 3 4 5 6 7 8
    providing 1 2
    publish
    published 1 2
    pure
    purpose
    purposes


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf8.htm b/doc/salome/gui/KERNEL/whgdata/whlstf8.htm index 8fe023ad9..830511800 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf8.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf8.htm @@ -33,9 +33,13 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -sh
    shading 1 2
    shapes
    shell 1 2 3 4
    short 1 2
    shot
    should 1 2 3 4
    show
    shown 1 2
    shows 1 2 3
    shrink
    signal
    signals
    signature
    sigterm
    simple
    simplify
    simply
    simulate
    simulation
    simulations 1 2
    simultaneously 1 2 3
    since 1 2
    single
    sip
    sipdir
    situations
    size 1 2 3 4 5 6
    sizes 1 2
    sizing
    skip
    skipped
    slightly
    small
    smesh 1 2 3
    smooth
    so 1 2 3 4 5 6 7
    software 1 2 3
    solution
    solutions
    solver
    solvers 1 2
    something
    sort 1 2
    sort_path
    sorting
    source 1 2 3 4
    sources
    space
    spaces
    special 1 2 3 4 5 6 7
    specialize
    specific 1 2 3 4 5 6 7
    specification
    specifies
    specify 1 2 3 4
    spin
    splines
    split
    standalone
    standard 1 2 3 4 5 6 7 8
    standard_version
    start 1 2
    started 1 2 3 4 5
    starting 1 2 3 4 5
    state
    stations
    status
    step 1 2 3
    steps 1 2
    still
    store 1 2 3
    stored 1 2 3 4 5
    storing
    strict
    string
    strongly
    structural
    structure 1 2 3 4 5
    structures
    studies 1 2 3 4 5 6 7 8 9
    study 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    study1
    style
    sub 1 2 3
    submenu 1 2 3
    subsets
    successfully
    suit
    summarizes
    superv
    supervision 1 2 3 4
    supervisor
    supplementary 1 2
    support 1 2
    supported
    supported_installation_modes
    supports
    supposed
    sure
    sweep
    sweeping
    swig
    switch
    switched
    switching
    system 1 2 3 4 5
    systems 1 2
    +py
    pyqt
    pyqtdir
    pyramids
    python 1 2 3 4 5 6 7 8 9 10
    pythonhome


    -t 1 2 3 4 5 6 7 8
    tab 1 2
    table 1 2
    tabs 1 2
    tag
    tags
    tailored
    take
    taken 1 2
    takes
    target
    target_directory
    target_platform
    targetdir
    tcl
    tclhome
    tclsh8
    technological
    technologies
    technology
    temp
    temp_directory
    temp_folder
    tempdir
    temporary
    temporarydiskspace
    term 1 2
    terminal 1 2
    terms
    test 1 2 3
    tests
    text 1 2 3 4


    >> +qglobal
    qm
    qt
    qt_version_str
    qtdir
    quality 1 2 3
    quantities
    question
    quick 1 2 3
    quickly 1 2
    quit 1 2
    quite
    quits
    quoted
    qwt
    qwthome
    +

    +radio
    rainbow
    range 1 2
    ranges
    ranging
    rapidly
    rate
    rather
    ratio
    re 1 2
    reactivity
    read 1 2 3
    reading
    readme
    real
    realize
    reassign
    receives
    recommended 1 2
    record 1 2
    recorded
    recorder
    recording
    records
    red
    redirection
    redo
    reduce
    reduces
    refer 1 2
    reference 1 2 3 4 5
    references
    refers
    refined
    refining
    refresh
    refreshment
    regimes
    registry 1 2
    reinstall
    reinstallation
    reinstalling
    related 1 2
    relative 1 2 3
    release
    relevant
    reliability
    reload
    relocate
    remains
    remote
    remove
    removed
    removing
    renamed
    rendering
    reopened
    repeated
    represent 1 2
    representation 1 2 3 4
    representative
    represents 1 2 3
    required 1 2
    requirements 1 2 3
    requires 1 2 3
    reset
    resolution
    resolved
    resource
    resources 1 2
    respective 1 2
    respectively
    responds
    responsible
    rest
    restore 1 2 3 4
    restored 1 2 3
    result
    resulting
    results 1 2
    retroactive
    reusable
    reuse
    reversibly 1 2
    right 1 2 3 4 5 6 7 8 9 10 11
    risks
    robustness
    roles
    root
    rotate
    rotation
    rules
    run 1 2 3
    runic
    runinstall
    running 1 2 3
    runs
    runsalome 1 2
    runsalomewithport
    +

    +s 1 2 3
    safe
    salome 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    salome_modulecatalog_server
    salomeds
    same 1 2 3 4 5 6 7
    sample
    save 1 2 3 4 5
    saved 1 2 3 4
    saves 1 2
    saving 1 2 3 4
    scalar 1 2
    scale 1 2 3
    scaling
    schemas
    scheme
    schemes 1 2
    scientific
    screen
    script 1 2 3 4 5
    scripting
    scripts 1 2 3 4
    scroll
    search 1 2 3 4 5
    searching
    second 1 2 3
    seconds
    section 1 2
    sections 1 2
    sectionthis
    sed
    see 1 2 3 4 5 6 7 8
    seen
    select 1 2 3 4 5 6 7 8 9 10 11 12 13
    selectall
    selected 1 2 3 4
    selecting 1 2
    selection 1 2 3
    sends
    sensitive 1 2
    separate 1 2
    separated 1 2
    server
    servers 1 2
    serves
    service
    services 1 2
    session 1 2 3 4 5 6 7
    sessions 1 2 3
    set 1 2 3 4 5 6 7 8 9 10 11
    sets 1 2
    setting 1 2 3 4 5 6
    settings 1 2 3 4 5 6
    severe


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstf9.htm b/doc/salome/gui/KERNEL/whgdata/whlstf9.htm index 1285b2549..bd0c7ca04 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstf9.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstf9.htm @@ -33,13 +33,9 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }

    <<

    -them 1 2 3 4 5 6 7 8
    therefore
    third
    those 1 2 3
    three
    thus
    time 1 2 3 4 5 6 7 8 9 10
    times
    title 1 2 3
    tk
    tmp
    tmp_disk_space
    together
    toggle
    toggles
    toggling
    tool 1 2 3 4
    toolbar 1 2 3 4 5 6 7 8 9
    toolbars 1 2 3 4
    toolkit 1 2
    tools 1 2 3 4 5 6
    top 1 2 3 4 5
    topic 1 2 3
    topics 1 2 3
    topmost
    total
    totality
    tr
    training
    tree 1 2 3 4 5
    tries
    trihedron 1 2
    trolltech
    true
    try 1 2 3 4
    try_existing
    try_native
    try_preinstalled
    two 1 2 3 4 5
    type 1 2 3 4 5 6
    typical
    typing 1 2
    +sh
    shading 1 2 3
    shape
    shell 1 2 3 4
    short 1 2
    shot
    should 1 2 3 4
    shown 1 2
    shows 1 2
    shrink
    side 1 2
    signal
    signals
    signature
    sigterm
    simple
    simplify
    simulate
    simulation
    simulations 1 2
    simultaneously 1 2 3
    since 1 2
    single
    sip
    sipdir
    situations
    size 1 2 3 4 5 6
    sizes 1 2 3
    skip
    skipped
    slightly
    slow
    smallest
    smooth
    smoothness
    so 1 2 3 4 5 6 7 8
    software 1 2 3
    solution
    solutions
    solver
    solvers 1 2
    something
    sort 1 2
    sort_path
    sorting
    source 1 2 3 4
    sources
    space 1 2 3
    spacemouse
    spaces
    spacing
    special 1 2 3 4 5 6 7 8
    specially
    specific 1 2 3 4 5 6 7
    specification
    specified
    specifies
    specify 1 2 3
    speed
    sphere
    spheres
    spin
    splines
    split
    sprite
    sprites
    stamps
    standalone
    standard 1 2 3 4 5 6 7 8 9
    standard_version
    start 1 2
    started 1 2 3 4 5
    starting 1 2 3 4
    state 1 2 3 4
    states
    stations
    status
    step 1 2 3
    steps 1 2
    still
    store 1 2 3 4
    stored 1 2 3 4 5 6
    storing
    strict
    string
    strongly
    struck
    structural
    structure 1 2 3 4 5
    structures
    studies 1 2 3 4 5 6 7 8 9
    study 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    study1
    style
    styles
    sub 1 2
    submenu 1 2 3
    subsets
    substituted
    successfully
    suit
    summarizes
    superposition
    superv
    supervision 1 2 3
    supervisor 1 2 3
    supplementary 1 2
    support 1 2
    supported
    supported_installation_modes
    supports
    supposed
    sure
    surface
    sweep
    sweeping
    swig
    switch 1 2
    switched
    switching
    system 1 2 3 4 5 6
    systems 1 2


    -u
    ultimate
    undo 1 2
    undone
    unfortunately 1 2
    unique 1 2
    unix
    unload
    unloaded 1 2
    unmark
    unnecessary
    unselect
    unselecting
    up 1 2 3 4 5 6
    update 1 2
    updated 1 2 3 4
    uploading 1 2 3
    upper 1 2
    usability
    usage
    usecase
    used 1 2 3 4 5 6 7 8 9 10 11 12
    useful
    user 1 2 3 4 5 6 7 8 9
    users 1 2 3
    uses 1 2
    using 1 2 3 4 5 6 7 8 9 10
    usr
    usually
    utilities
    -

    -v 1 2
    valid
    validation
    value 1 2 3 4 5
    values
    variable
    variables 1 2
    varible
    variety 1 2
    various 1 2
    ve 1 2
    ver
    ver_major
    ver_minor
    verbal
    version 1 2 3 4 5 6
    versions
    vertical 1 2 3 4 5
    vertically
    very 1 2 3 4
    via
    view 1 2 3 4 5 6 7 8
    viewer 1 2 3 4 5 6 7
    viewers 1 2 3 4 5 6 7
    viewing 1 2
    visible
    visu 1 2 3 4
    visual
    visualization 1 2 3 4 5 6
    visualize 1 2
    vtk 1 2 3 4 5 6
    vtkhome
    -

    -wait
    waiting
    want 1 2 3
    warning 1 2
    way 1 2 3
    web
    welcome 1 2
    well
    what 1 2 3 4 5 6
    whenever
    wherever
    whether
    while
    whole 1 2 3 4 5
    wide 1 2 3
    widgets
    width
    will 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    window 1 2 3 4 5 6 7 8 9 10 11 12
    windowed
    windows 1 2 3 4 5 6 7 8
    wireframe 1 2
    wish 1 2
    wish8
    within 1 2 3 4
    without 1 2 3
    wizard
    wizards


    >> +t 1 2 3 4 5 6 7 8
    tab 1 2 3
    table 1 2
    tabs 1 2
    tag
    tags
    tailored
    take
    taken 1 2
    takes
    target
    target_directory
    target_platform
    targetdir
    tasks
    tcl
    tclhome
    tclsh8


    >> diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm index 89ddc445e..3bd7d43e6 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl0.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ { {O {D ^

    +

    ^ { {O { {D ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm index ff8b73500..c4b5ed44c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl1.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ AB AC AD AF AG AI AL AM AN AP AR AS AT AU AV AW AX ^

    +

    ^ AB AC AD AF AG AL AM AN AP AR AS AT AU AV AW AX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm index 6e245471c..471fb7279 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl10.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ JA JP JU ^

    +

    ^ JA JU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm index a3219ba91..972cc927d 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl11.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ K KB KE KI KN ^

    +

    ^ K KB KE KI KN ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm index 338a8c521..f6196d1dc 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl12.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ L LA LD LE LI LL LO ^

    +

    ^ L LA LD LE LI LL LO ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm index 3e61e9ab9..659533376 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl13.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ M MA ME MI MO MS MU ^

    +

    ^ M MA ME MI MO MS MU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm index 59928e570..96981f1d1 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl14.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ N NA NE NF NO NU ^

    +

    ^ N NA NE NF NO NT NU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm index 4c8222cf9..e55426177 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl15.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ OB OC OF OK OM ON OP OR OS OT OU OV OW ^

    +

    ^ OB OC OF OK OM ON OP OR OS OT OU OV OW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm index 77bdfd428..bba503981 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl16.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ P PA PC PE PH PI PL PN PO PR PU PY ^

    +

    ^ P PA PC PE PH PI PL PO PR PU PY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm index af48e6bf2..6c199a6f0 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl17.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ QG QM QT QU QW ^

    +

    ^ QG QM QT QU QW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm index c778328b9..4de463e47 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl18.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ RA RE RI RO RU ^

    +

    ^ RA RE RI RO RU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm index 381ef0c34..36b7d8d58 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl19.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ S SA SC SE SH SI SK SL SM SO SP ST SU SW SY ^

    +

    ^ S SA SC SE SH SI SK SL SM SO SP ST SU SW SY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm index c83dd9bd0..c26cc5c52 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl2.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ B BA BE BI BL BM BO BR BU ^

    +

    ^ B BA BE BI BL BO BR BU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm index 57a4e5124..7c8c764d7 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl20.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ T TA TC TE TH TI TK TM TO TR TW TY ^

    +

    ^ T TA TC TE TH TI TK TM TO TR TW TY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm index 771be3cce..27427bb84 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl21.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ U UL UN UP US UT ^

    +

    ^ U UL UN UP US UT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm index 37c2a5abb..879898dd8 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl22.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ V VA VE VI VT ^

    +

    ^ V VA VE VI VT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm index 9b8f9ed25..dbfc61424 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl23.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ WA WE WH WI WO WR WW ^

    +

    ^ WA WE WH WI WO WR WW ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm index 57f810f58..d94d11c39 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl24.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ X XM XT XX ^

    +

    ^ X XM XT XX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm index 6e9da114e..0d5021f17 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ Y YE YO ^

    +

    ^ Y YE YO ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm index c7f49d69c..63229948c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl3.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ C CA CD CE CH CL CO CP CR CS CU CY ^

    +

    ^ C CA CD CE CH CL CO CP CR CS CT CU CY ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm index 1bafa4511..78a5ee3c5 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl5.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ E EA EC ED EF EG EI EL EM EN EQ ER ET EV EX ^

    +

    ^ E EA EC ED EF EG EI EL EM EN EQ ER ET EV EX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm index a2b80306e..10201d4f0 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl6.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ F FA FE FI FL FO FR FU ^

    +

    ^ F FA FE FI FL FO FP FR FU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm index 7f7712e43..7a00ab29c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl7.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ G GC GE GI GL GO GR GU ^

    +

    ^ G GA GC GE GI GL GO GR GU ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm index e85567742..92d8b978c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl8.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ H HA HD HE HI HO HP HT HX ^

    +

    ^ H HA HD HE HI HO HP HT HX ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm index bbac4d235..e0c218374 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstfl9.htm @@ -37,7 +37,7 @@ body {background-color:White; } -

    ^ I IA IC ID IE IF IG IM IN IO IS IT ^

    +

    ^ I IC ID IE IF IG IM IN IO IS IT ^

    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt3.htm b/doc/salome/gui/KERNEL/whgdata/whlstt3.htm index 7076ae1a3..f96fbc25c 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt3.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt3.htm @@ -41,11 +41,9 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
        Using Object Browser
        Using Registry tool
    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt4.htm b/doc/salome/gui/KERNEL/whgdata/whlstt4.htm index 5ac2bc85c..8087bf265 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt4.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt4.htm @@ -41,18 +41,17 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
           Creating a new study
           Opening studies
           Saving and closing studies
           Editing studies
           Displaying studies
    -       Getting and setting study properties
    +       Working with Python Scripts
    +       Setting study properties
        Using Object Browser
        Using Registry tool
        Using Catalog Generator
    diff --git a/doc/salome/gui/KERNEL/whgdata/whlstt5.htm b/doc/salome/gui/KERNEL/whgdata/whlstt5.htm index e25c8d1c9..60594c762 100755 --- a/doc/salome/gui/KERNEL/whgdata/whlstt5.htm +++ b/doc/salome/gui/KERNEL/whgdata/whlstt5.htm @@ -41,20 +41,19 @@ img {vertial-align:middle;} Using this reference manual
    About SALOME
    GUI module
    -    Introduction to GUI
    +    Introduction to GUI
        Getting started
        SALOME desktop
    -    Viewers
    -    Displaying/hiding toolbars
        Study management
        Using Object Browser
        Using Registry tool
        Using Catalog Generator
        Setting Preferences
           Setting Preferences
    +       Select Color and Font
           SALOME preferences
    -       GEOM preferences
    -       MESH preferences
    +       Geometry preferences
    +       Mesh preferences
           Post-Pro Preferences

    diff --git a/doc/salome/gui/KERNEL/whgdata/whnvl32.htm b/doc/salome/gui/KERNEL/whgdata/whnvl32.htm index 714176de5..b37b8ab8b 100755 --- a/doc/salome/gui/KERNEL/whgdata/whnvl32.htm +++ b/doc/salome/gui/KERNEL/whgdata/whnvl32.htm @@ -64,7 +64,7 @@ body {background-color:White; } W X Y - Z + Z

    diff --git a/doc/salome/gui/KERNEL/whskin_info.htm b/doc/salome/gui/KERNEL/whskin_info.htm index e4bc2c62c..27ebcb52a 100755 --- a/doc/salome/gui/KERNEL/whskin_info.htm +++ b/doc/salome/gui/KERNEL/whskin_info.htm @@ -9,7 +9,7 @@ - + diff --git a/doc/salome/gui/KERNEL/whxdata/whftdata0.xml b/doc/salome/gui/KERNEL/whxdata/whftdata0.xml index 9ae34a3e3..e5729238b 100755 --- a/doc/salome/gui/KERNEL/whxdata/whftdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whftdata0.xml @@ -1,16 +1,16 @@ + + - - @@ -25,8 +25,7 @@ + - - diff --git a/doc/salome/gui/KERNEL/whxdata/whfts.xml b/doc/salome/gui/KERNEL/whxdata/whfts.xml index e1eeb4b71..52af9b44f 100755 --- a/doc/salome/gui/KERNEL/whxdata/whfts.xml +++ b/doc/salome/gui/KERNEL/whxdata/whfts.xml @@ -1,7 +1,7 @@ - + - + diff --git a/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml b/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml index 1f6b1cc3d..26629a347 100755 --- a/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whfwdata0.xml @@ -2,333 +2,371 @@ 14, 14, - 1,5,14,10,16, - 3,14,24,15, - 14, + 6,14,2,24,16, + 24, + 24, + 5,14,24,15, + 14,24, + 24, 14, 14, - 3,14,24,15, + 24, + 24, + 5,14,24,15, + 24, 14, 14, - 5,9,10,27, - 1,5,14,10,24,15,16, + 24, + 6,10,2,24, + 6,14,2,15,16, 14, - 9,10,18,27, + 24, + 10,2,24,18, 14, 14, + 24, + 24, 14, 14, 14, 14, - 1,5,14,18,27, + 3,6,14,18, 14, - 7,14, - 3, - 1,16,18,21,27, - 9,25, + 8,14, + 23,24, + 24, + 5, + 24, + 3,1,23,24,16,18,21, + 10,26, 14, - 14,15,16,21, + 14,24,15,16,21, 14, - 1, - 2, - 18, - 3,5,16,17, - 3,16,17, - 1,3,6, - 18,19, - 1, - 4,14,15,18,19, - 3,14, - 1,4,6,14,10,21, - 18, - 14,19,27, - 1, - 14,12,17, - 27, - 1,14,11, - 1,6,0,14,11,15,16,17,18,19,22, + 3, + 4, + 24,18, + 5,6,24,16,17, + 5,16,17, + 24, + 5,7, + 0,25,19, + 3, + 14,15,16,25,18,19, + 5,14, + 3,7,14,2,24,16,21, + 24, + 24, + 14,19, + 3, + 6,14,12,17, + 3,14,11, + 3,0,7,1,14,11,23,24,15,16,17,25,18,19,22, + 17, 11,18, 19, + 24, 14, 11, 14, 24, 14, - 1,17, + 3,17, 14, - 1,2,5,4,7,14,11,12,15, + 3,4,6,8,14,11,12,24,15,16,17,26, 14, - 25,21, - 7,8,14,18,19,22, - 2, - 18, - 1,5,9,10,15,16,17,18,25,19,21, + 26,21, + 0,24, + 0,8,9,14,18,19,22, + 23, + 4, + 3,6,0,10,2,15,16,17,18,26,19,21, 14,11,16, - 14,9, + 14,10, 14, - 18, - 1,9, - 5,16,27, + 25, + 3,0,10, + 6,16,18, 14, + 24, 21, 21, 17,18, 14, - 13,21, - 9, + 24, + 13,24,21, + 10, 21, - 7,19, + 8,19, 14,18, 23, - 4,14,23,13,15,17,25, - 6, - 1,3,6,14,9,27, - 14, + 0,14,23,13,24,15,16,17,26, + 7, + 3,5,7,14,10, + 24, + 24, + 0,14, 14, 14, - 18,27, - 18,27, + 18, + 18, 14, 14,23, - 18, + 24,18, 23,24,21, - 1,9,10,17, + 3,10,2,17, 14, - 1, - 1,14,11,16,18, - 1,14,15, + 3, + 3,14,11,16,25, + 3,0,14,15, 14, - 5, + 6,24, 14, 18,22, - 1, - 9, - 14,12, + 3, + 10, + 24, + 14,12,24, + 24, + 24, + 24, 14,15,19, 14, 14,17, 14, - 1, - 27, + 3, 14, 20, 14, 14, 14, - 16, - 10,23,27, - 9,18, - 0,7,14,23,13,17,18,19,22, + 23,16, + 2,23,24, + 10,23,24,18, + 0,1,8,14,23,13,24,17,25,18,19,22, 14, - 5,14,12, - 10, - 2,3,14,10,13,16,18,19,21, + 10, + 6,14,12, + 2, + 4,5,6,0,14,2,13,16,17,18,19,21, 14, - 14,19, - 14,11,27, - 14,10,12,13,17,18,25,19,22,27, - 1,14,15, - 9, - 9,11, - 1,14,27, - 8,9,11, + 14,24,19, + 14,11,24, + 14,2,12,13,24,17,25,18,26,19,22, + 3,14,15, + 10, + 10,11, + 3,0,14, + 9,10,11, 14,17,19,22, - 1, + 3, + 24, 14, 19, 14, - 14,9, + 14,10, 14, - 9, - 1,7,14,11,16,17,27, - 14,27, + 23, + 10, + 3,8,14,11,24,16,17, + 14, 14, 14, 19, 19, 19, - 10,15, + 2,15, 20, 14, - 18, - 1,5,7,14,23,16,17,18,25,27, - 23, - 2, + 24,25, + 24, + 24, + 24, + 3,6,8,14,23,24,16,17,18,26, + 24, + 4, + 25, 14, - 14, + 0,14,24,16,18, 14, 14,23,24, - 14,27, - 3,4,6,7,14,23,13,24,18,19,22, - 24,18,19, + 0,14,24,25, + 5,7,1,8,14,23,13,24,16,25,19,22, + 24,25,19, + 24, 16, 14, 16, - 3,6,7,14,12,13,16,17,18,25,19,20,21,22,27, + 5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22, 12, - 1, - 27, - 1,14,12,17,20, - 1, - 1,14, - 23, + 3, + 24, + 3,14,12,24,17,26,20, + 3, + 3,14, + 23, 14, 14, - 0,23,24,18,21, + 1,23,24,25,18,21, 18,21,22, - 11, + 11,24, 16, 14, - 1,14,15, - 14,10,11,16,17,25,27, - 1, + 3,0,14,15, + 14,2,11,16,17,26, + 3,23, 14, 14, 14, - 7,14,20,22, - 1,9, - 1,2,4,6,9,10,11,12,13,24,16,17,18,19,21,22, + 8,14,20,22, + 3,10, + 3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22, 24, 14,18, - 1,9, - 9, - 1,12, - 14,9, - 1, + 3,10, + 10, + 3,12, + 14,10, + 3, 14, 14, 14, - 14,9, + 14,10, 11, 14, - 14, - 8,11,13,16,18, + 0,14, + 9,11,13,16,18, 16, - 9,15,16,17,18, - 1,15, - 9,11, - 1,2,3,7,14,13,15,16,19,20,21,22, + 6,10,15,16,17,18, + 3,15, + 10,11, + 0, + 3,4,5,0,8,14,13,15,16,19,20,21,22, 15, - 14,20, - 4,14,16,21, + 0,14,24,20, + 14,16,21, 14, - 3,14,23, - 16,27, - 14, + 5,14,23,24, + 0,14, 11, - 18,27, - 6,14,16,17, + 18, + 24, + 7,14,16,17, 14, - 1,3,10, - 17,18, + 3,5,2, + 24,17,25, 16, - 14,23,13,15,20, - 9, - 1,9, + 14,23,13,24,15,20, + 10, + 3,10, 15, - 1,2,3,5,8,14,9,10,11,13,15,16,17,18,19,21, - 1,14,10,27, + 3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21, + 3,14,2, 12,17, 14,15, 15, - 5,6,7,14,12,15,17,25,21,22, + 24, + 6,0,8,14,12,24,15,17,18,26,21,22, + 24, 18, - 9,18,19, - 27, - 1, + 10,25,18,19, + 3, 24, - 18, + 25, 14, - 7,22, - 1,3,8,14,9,10,11,17,18,19, - 1, + 8,22, + 3,5,0,9,14,10,2,11,17,18,19, + 3, 21, - 3,4,0,14,11,23,24,15,17,18,25,21,27, - 1,14,9,24,18,27, - 1,3,4,6,15,17,18,21,22, - 1,9,20, - 9, - 9,10, - 6,14,21, + 24, + 5,1,14,23,24,15,16,17,18,26,21, + 3,0,1,14,10,23,24,25,18, + 3,5,7,15,16,21,22, + 3,10,20, + 10, + 17, + 10,2,24, + 7,14,21, 14, 14, - 1, + 3, 21, - 1,2,14,23,19,27, + 3,4,14,19, 14,15,19, - 9, + 10,24, 19, - 5,4,8,14,10,16,17, - 8,16,21,22,27, + 6,9,14,2,16,17, + 9,16,21,22, 12, - 0,14,23,18,27, + 14,18, 14, - 1, - 1,9, + 3, + 3,10, + 24, 23, - 0,7,14,23,13,16,17,18,19,22, + 0,1,8,14,23,13,24,16,17,25,18,19,22, 14, 16, - 1,14,16,17,27, - 1,2,3,8,14,13,15,16,17,21,27, + 3,14,16,17, + 3,4,5,9,14,13,24,15,16,17,21, 23, - 9, + 10, 14, - 5, + 6,24, 14,18, 14,15,17,18,19, - 14,18, + 14,24,18, 14, 14,15, - 5,4,0,14,23,12,15,16,17,18,20,21,22, - 1, - 1,14, + 6,1,14,23,12,24,15,16,17,18,20,21,22, + 24, + 3, + 3,14, 14, - 2,22, - 6,14, - 10,16,17, - 3,8,14,16, - 1,11, - 14,19,27, + 4,24,22, + 7,14, + 6,2,16,17, + 5,0,9,14,16, + 3,11, + 24, + 14,24,19, 14, 22, - 7,12,21, + 8,12,21, 14, 14, 14, - 4,27, - 1, - 27, + 16, + 3, 14, - 4,12, - 27, + 12,16, + 0, 14, - 27, - 10, - 11, - 14,10,16,17, - 27, - 1,9, - 1, - 1, + 2, + 11,24, + 14,2,16,17, + 3,10, + 3, + 3, 23, - 6,7,14,10,15, - 25, - 9, + 7,8,14,2,15, + 24, + 24, + 26, + 10, 14, - 24,18,19, - 9, - 9, - 9,23, - 5,14, + 24,25,18,19, + 10, + 10, + 10,23,24, + 6,14, 18,20, - 1, - 1,14,25, - 1, - 1, + 3, + 3,14,24,18,26, + 3, + 3, 14, - 1,9, - 7,14,15,17, + 3,10, + 8,14,15,17, 14, 23, 18,21, @@ -337,110 +375,118 @@ 14, 14, 14, - 1,5,8,14,9,10,15, - 14, - 9, - 14, - 1,4,14,10,11,16, + 3,6,9,14,10,2,15, + 3,14, + 10, + 0,14, + 3,14,2,11,24,16, 22, - 1,16, - 9,20, + 3,16, + 10,20, 14, - 9, - 1, + 10, + 3, 15, - 14, + 14,24, 14, - 5,14,9,16,17,19, - 10, - 1, - 9,11, - 1,14,11,13,17,25,19, + 6,14,10,16,17,19, + 24, + 2, + 3, + 10,11, + 3,14,11,13,17,26,19, 14, 12, - 1, - 9, - 1, - 2, - 9,27, - 1, - 18, + 3, + 10, + 0, + 3, + 4, + 10,23, + 3, + 25, 17, - 27, 18, 14, - 9, + 10, 14, 23,24,18, - 1,11, + 3,11, 14,16, 19, 14, 14, - 27, - 2,6,14, - 7,14,9,23,24,18, + 24, + 4,7,14,24, + 8,14,10,23,24,25, 14, - 3,14, - 3,7,14,13,24,15,16,17,18,25,19, + 1,14, + 5,0,8,14,11,13,24,15,16,17,18,26,19, 23, 14,19,20, 14, - 1, - 14,12, - 9, - 14,21, - 27, - 11, + 3, + 14,12,24, + 10, + 0,14,24,18,21, + 18, 14, - 1, - 14,9,10, + 3,0, + 14,10,2, + 24, 12, - 14,21, - 1,0,7,8,14,12,13,15,16,17,18,19,20,22,27, - 23,24,18, + 14,17,21, + 3,0,8,9,14,12,13,15,16,17,18,19,20,22, + 23,24,25,18, 19, - 2,9,13,18,27, - 10,27, - 14, - 10,21, - 9, - 9, - 27, - 23,24,20,27, - 14,9,11,16,17,27, + 4,10,13,18, + 24, + 24, + 14,24, + 2,21, + 10,24, + 10, + 24, + 0, + 24,20, + 0,14,10,11,16,17, 14, 16, - 1,2,6,8,23,16,19,27, - 9, - 1, + 10, + 3,4,7,9,16,19, + 3, 14, 14,15, + 23, + 2,24, 14, - 8,14,23,16,18, - 14,11,19, - 9,10,19, - 9,11, - 1,4,6,0,14,11,27, - 9,11,27, - 0, - 2,7,8,14,9,21, - 7,14,16,18,27, - 14,11, - 27, + 9,14,23,16,18, + 0,14,11,19, + 10,2,19, + 10,11, + 14,11, + 1,10,11,24, + 3,1,11,24,16, + 4,9,14,10,21, + 0,8,14,16,25, + 14,11,24, + 24, + 24, 20, 14,12, - 5,11,18,27, - 10,11, + 6,11,18, + 24, + 0,2,11, 14, - 27, - 18, + 0,24, + 25, 14, - 18, - 1,3,14,10,11,15,18,25, + 23,24,25, + 3,5,0,14,2,11,15,17,18,26, 14,15, - 1,12,20, - 14,9,10, + 24, + 3,12,20, + 14,10,2, 14, 14,15, 17, @@ -449,61 +495,62 @@ 14,13,17,18, 14, 14, - 9, + 10, + 23,24, 22, - 1,2,14,9,12,13,15,18,20,21,22,27, + 3,4,14,10,12,13,15,18,20,21, 14, - 14,23,24,18,26, - 9, - 4,16,18,21,27, - 14,9, - 14,21, + 14,23,24,18, + 10, + 24,16,18,21, + 14,10, + 14,23,21, 14, 22, 15, - 5,23,24,18,27, - 1, + 6,23,24,18, + 3, 12, - 1,14, + 3,14, 14, - 2,20, + 4,20, 14, - 14,10,16,17, - 1, - 3,6,16,19, + 14,2,16,17, + 5,7,16,19, 14, 21,22, 14, - 1,19, + 3,19, 18, - 3,5,6,14,23,13,24,15,16,17,18,19,21,27, - 9, + 5,6,0,7,14,23,13,24,15,16,17,18,19,21, + 10, 14, - 9,27, + 10,24, 12, - 1,14, - 1,19, + 3,14, + 3,19, 14, - 14,9,10,11,24,16, + 0,14,10,2,11,24,16, 14, 24, 14, - 10, + 2, 14, - 14,12,20, - 1, - 9, - 1, - 1, - 1, - 21, + 14,12,24,20, + 3, + 0,10,24, + 1,24, + 3, + 3, + 3, + 23,21, 16,17, - 1,0,7,14,12,17,20,22,27, - 8,27, - 9,19, + 3,8,14,12,24,17,20,22, + 9, + 10,19, 14, - 1,5,12,19, - 14, + 3,6,12,24,19, + 14,24, 14,19, 14, 14,15, @@ -521,59 +568,64 @@ 14, 14, 14, - 3, + 5, 14, - 27, - 1, + 3, 14, 23, - 1,9,10,11, - 1,9,10,19, + 3,10,2,11, + 3,10,2,19, 14, - 10, - 1,9,10,11,16,19, - 1,14, - 2, - 9, + 2, + 3,0,10,2,11,16,19, + 23, + 3,14, + 4, + 10, 21, - 10,16, - 22, + 2,16, + 24,22, 14, - 14,9,10,11, + 14,10,2,11, 17, 14,16, 18,21, 18, 14, - 7,9,10, + 8,10,2, + 24, 14, - 2, - 27, - 27, + 4, 14,18, 15, 14, 14,11,15, - 14, + 14,24, + 24, 15, 15, - 7,12, + 8,12, 19, + 0, 15, 23,24, - 1, + 3, 14, - 17,22, - 18, - 2,14,13,15,25,19,22, - 3, - 17, + 24, + 18,22, + 24, + 25, + 4,0,14,13,15,26,19,22, + 5, + 0,17, 14, 17, - 14,9, - 14,18,20, - 18,27, - 1,23,18, + 14,10, + 14,23,24,25,18,20, + 18, + 24, + 24, + 3,23,24,18, 14, 14, 14, @@ -581,623 +633,689 @@ 14, 14, 14, - 14,10, + 14,2, 14, 14, 14, 14, 14, - 1,5,4,14,12,16,17,19,21, + 3,6,14,12,24,16,17,19,21, 14, 24, - 2,14,23,15,18, + 24, + 4,1,14,23,24,15,18, 18, - 1,0,9,12, - 2,14, - 7,14,12,15,18,20,22, + 3,10,12, + 4,14, + 8,14,12,24,15,18,20,22, 14, - 18,27, - 1,10,13,24,15,16,18,25,21, - 1,4,15,18,20,21, - 19, - 7, + 18, + 3,0,2,13,24,15,16,18,26,21, + 24, + 3,24,15,16,18,20,21, + 0,19, + 8,24, 15, - 24,18,27, - 1, + 24,18, + 3, 14,19,20, + 23,24, 17, 16, - 14,18,20, + 14,24,25,20, 15, - 1,17,22, - 2, - 1, - 3,4,6,7,14,9,13,16,17,18,19,22, + 3,17,22, + 4, + 3, + 24, + 5,0,7,8,14,10,13,24,16,17,18,19,22, 14, - 3,14,9,23,27, + 5,14,10,23, 14, 14, - 9,18, - 9,10,16, + 10,18, + 10,2,16, 14, 14, - 2,14,18, - 1, - 4,14,18, + 24, + 24, + 4,0,14,18, + 3, + 14,18, 18, - 9, - 1, + 10, + 3, 14, 20, + 24, 24, - 3,16, - 27, - 5,8,14,16,17, - 10, + 5, + 24, + 6,9,14,24,16,17, + 0,2, 14, - 9, - 27, + 10, + 24, 14, - 1,3,4,6,7,10,23,12,13,24,16,17,18,19,21,22,27, + 3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22, 16, - 0,9,11,23,27, - 7,14,10,15,22, + 3,10,11,23,24,16, + 8,14,2,15, 14, 24, - 3,16, + 5, + 24, 14, 14, 16, 16, - 1,0,14,23,24,15, - 1,9,11,23,27, - 9, - 1,7, - 14,9, - 1,2,6,0,14,10,11,23,24,15,16,17,18,25,19,27, + 3,0,1,14,23,24,15, + 3,10,11,23, + 10, + 3,0,8, + 0,14,10, + 3,4,7,1,14,2,11,23,24,15,16,17,18,26,19, 14, 14, 15, 15, 24, - 14, - 4,27, - 5, + 14,24, + 24, + 23,24,16, + 6, + 24, 18, 14, 14, 14, - 5,8,9,10,16,19, + 6,9,10,2,16,19, 17,18, 17, - 1, - 1,9,11, - 14, - 1,3,7,14,17,19,21,22, + 24, + 3, + 3,10,11, + 14,24, + 3,5,0,8,14,17,19,21,22, 14, - 6, - 1, + 7, + 3, 14,12, - 2,12, - 2, - 5,14,12,18, - 14,23,15,16,17,21, + 4,12,24, + 4, + 6,14,12,25,18, + 0,14,23,15,16,17,21, + 24, + 24, 14, 14, - 2,18, - 1,3,7,8,14,9,17,25,19,27, - 7,14,15,18,25,19, + 4,18, + 3,5,8,9,14,10,17,18,26,19, + 8,14,15,26,19, 14, 23,19, - 5, - 14,18, - 1, + 6, + 14, + 3, 14, - 25, - 8, + 26, + 24, + 9, 16, - 14, - 14,23,24,18,22, - 14,23, - 14,9,11,18, - 1,8,9,27, + 24, + 14,24, + 14,11,23,24,18,22, + 14,23,24, + 14,10,11,25, + 3,9,10, 15, - 1,3,6,10,23,13,16,18,25,21,27, - 1, + 3,5,6,0,7,2,23,13,24,16,17,18,26,21, + 3, 14, - 27, - 3,5,10,18,27, + 5,6,2,18, 14, 14, 14, 14, - 1, - 9, - 14,13,25, - 1, + 3, + 10, + 14,13,26, + 3, 14, 14, 14, 14, 14, 14, - 1,5,6,14,10,12,13,24,15,16,17,18,19,21,27, + 3,6,0,7,14,2,12,13,24,15,16,17,25,18,19,21, + 24, 20, - 5,8,14,9,11,12,13,15,17,19,20,27, + 24, + 6,0,9,14,10,11,12,13,24,15,17,19,20, 14, - 27, - 6,8,17,27, - 14,9, + 0, + 7,9,23,24,17, + 14,10,24, 11, - 6,7,14,13,24,15,16,17,18,21, - 14,9,11, + 7,8,14,13,24,15,16,17,18,21, + 14,10,11, 14, - 1, + 23,24, + 3, 23,24, 23,24, + 0, 11, 14, 14, - 2,25, - 14,17, - 9, + 4,0, + 0,14,24,17, + 10,23,25, 23, - 14,10, - 16, + 14,2, + 24,16, 14, - 14,10,11,16, + 14,2,11,16, 15, 14,15,19, - 14,18,20, - 12,20,27, - 1, + 14,20, + 12,17,20, + 3, 14,19, - 1,0,14,23,24,18,19, - 5,14,16,27, - 9,17, + 3,14,24,25,18,19, + 24, + 6,14,16, + 10,17, 11, 14, - 6,16, - 14, - 1, - 14,9, - 1,8,9, + 7,16, + 24, + 14,24, + 3, + 24, + 14,10,23,24, + 3,9,10, 14, - 1, + 3, 20, - 9, - 1,9,11, - 14, + 10, + 3,10,11, + 14,24, 14, 14, 14, 14, - 7, + 8, 22, - 1, - 5,4,14,10,16,27, - 1,2,5,4,8,14,9,10,11,15,16,17,19,22,27, - 14,18, - 5,10,27, - 3,18, - 10, - 27, + 3, + 24, + 6,14,2,16, + 23,24, + 3,4,6,0,9,14,10,2,11,15,16,17,19,22, + 0, + 14, + 6,2, + 5,18, + 2, 14, - 1,14,23,18,27, + 3,14,2,23,24,18, 12,13,16,21, 12, 15, 15, - 16,17,18,27, + 24,16,17,18, 16, - 27, - 1,14,15,18,19,27, - 1,14,23,16,17,21,27, - 9,11,24,27, - 10, - 9,11, + 3,0,14,15,25,19, + 3,0,14,16,17,25,21, + 3,10,11,24,16,17, + 2, + 10,11, 23, 14, - 1,14,18, + 3,14,25, 15, - 0,23,24,18,25,26,21,27, + 1,23,24,25,18,26,21, 14, 14, 14, 14, - 14,18, + 14,24,18, + 23, 23, - 23, - 3,23,16,18, + 23,24, + 5,23,24,16,18, + 24, + 25, 14,13, 14,11,13,17, + 24, 14,15, 14, - 9, - 24,27, - 3, - 14,9, - 8,14, - 14,15,18, - 1,14,9,10,11,22, - 1,9, - 14,9,15, + 10, + 3,11,24,16,17, + 5, + 0,14,10, + 9,14, + 14,15, + 3,0,14,10,2,11,24,22, + 3,10, + 24, + 14,10,15, 14, 14, 14, 14, 14, - 1, + 3,0, 14, 15, - 1,14, - 9, - 14, - 14,15,27, + 3,14, + 10, + 14,24, + 24, + 14,15, + 0, 14, 14, - 7,9,11,18, - 14,10, - 1,6,14,9,10,11,24,15,19,20,22,27, - 1, - 8,21, + 8,10,11,24,18, + 14,2, + 3,7,14,10,2,11,24,15,25,19,20,22, + 0,17, + 3, + 9,21, 15, 14, 14, - 1,14,9,10,15,16,17,18, + 24, + 3,6,0,14,10,2,15,16,17,18, 14, 14, 14, 14, 14, 14, - 9,23, - 9, + 10,23,24, + 10, 14, 14,18,21, - 14,17, + 0,14,17,26, 14, 14, 14, 14, + 24, 11,24, - 1, - 12, - 9, - 14,9,12, + 3, + 24, + 0, + 24, + 0,12, + 10, + 14,10,12, 14, - 8, - 25, - 14, - 7, + 24, + 9, + 24, + 26, + 14,24, + 8,24, 21, 15, - 6, - 9, - 18,25, + 7, + 10, + 18,26, 14, - 2,12,18,21, - 9, + 4,12,24,18,21, + 10,24, 22, 22, - 10,22, + 24, + 2,22, 14, 14, 14, 12,20, - 14, + 14,23,18, 14, 12, - 9, + 10, 17, - 4, - 1, - 3,27, + 16, + 3, + 5, 14,18, + 17, + 24, + 18, 24, - 1,8,9,11,20,27, - 5,11,23,24,18,27, - 14,9,13,17, - 1,9,15, - 14,27, - 16,27, - 14,10, - 25, - 1, + 3,9,10,11,20, + 6,11,24,18, + 24, + 14,10,13,24,17, + 3,10,15, + 14, + 24, + 0, + 14,2,24, + 24,26, + 24, + 3, 14, - 9,25, - 5,8,9,17, - 25, - 27, - 1, - 9, - 27, - 14,12,13,16,17,18,20,21, - 9, - 9, - 1, + 18, + 10,17,18,26, + 9,10,24, + 26, + 3, + 10, + 0,24, + 6,14,12,13,24,16,17,25,18,20,21, + 10, + 10, + 3, 14, - 27, - 27, + 24, + 24, 14, - 1,14,15,19,22, - 18, + 3,14,15,19,22, + 25, 14, 15,19, 19, - 1,14,12, - 10, - 1,2,3,5,4,6,8,14,9,10,11,12,13,15,16,17,18,25,19,20,21,22,27, + 3,14,12, + 2, + 3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22, 19, - 5,12,16,17,18,19,22, - 1,14,9,10,16,17,18,25,27, - 1,24,18,27, + 0, + 6,12,24,16,17,19,22, + 25, + 3,0,14,10,2,16,17,18,26, + 3,24,18, 23,24, - 27, - 1,14,9, - 9, - 1, - 5, - 1,14,15,18,19, - 7, - 3,5,0,7,14,13,17,18,19,21,27, - 2,14,13,17,20, - 14, + 3,14,10, + 10, + 3, + 6, + 3,0,14,15,25,19, + 8, + 6,8,14,13,17,18,19,21, + 4,14,13,17,20, + 0,14,24, 14,16,18, 14, 14, - 3,5,0,7,14,23,13,17,18,20,27, + 23, + 5,6,0,1,8,14,23,13,24,17,25,18,20, 16, - 10,23,18, + 2,23,24, 14, - 4,16,21, - 1,14,16, - 1,19, - 1,15, - 1,14,19, - 0,23,13,24,17,18,25,21,22, - 2,0,7,14,9,23,24,15,16,17,18,25,21,22, - 0,14,23,24,16,17,18,25,27, - 9, + 16,21, + 3,14,24,16, + 3,19, + 3,15, + 3,14,19, + 1,23,13,24,17,18,26,21,22, + 4,0,1,8,14,10,23,24,15,16,17,18,26,21,22, + 14,24,16,17,18,26, + 10, 14, - 0,23, - 27, - 14,10,11,15, + 1,23,24, + 24, + 14,2,11,15, 14,20, - 5, - 8,14,17,19, - 14,21,27, - 7,14, + 6, + 9,14,17,19, + 14,21, + 8,14, 23, - 14,10, + 23,24, + 14,2, 14, 14, - 18, - 1, + 3, 14, - 1, - 9,11, - 5,8,14, - 14,10, + 3, + 10,11, + 6,9,14, + 14,2, 14, 14, 14, - 1, - 5,23,24,16,17,18, + 3, + 6,23,24,16,17,25,18, 14, 14, - 17, - 1,4,27, + 24, + 24, 18, - 1,6,14,15,25,20,21, - 1,9,11, - 9, - 9, - 9,11, + 24, + 3,7,14,24,15,26,20,21, + 3,10,11, + 10, + 10, + 10,11, 14, 18,21, 14, - 14,9,11,15, - 14, - 1,14,13,15,16,17,25, - 27, - 1, - 1,4,9,15,16,25,20, + 14,10,11,15, + 14,23,24, + 24, + 24, + 3,14,13,24,15,16,17,18,26, + 3,24, + 3,0,10,15,16,26,20, 11, - 17,18,19,27, - 0, + 17,18,19, + 24, + 1, 18, - 5, - 10, - 1,3,14,10,13,16,17,19, + 6, + 24, + 24, + 2, + 3,5,14,2,13,24,16,17,19, 14, - 1,5,8,14,16,18,19,22, - 14, - 1, + 6,9,14,16,18,19,22, + 0,14,17,18, + 3, 14, - 0,14,9,24, + 1,14,10,24, 14, - 1,14,13,17,19, + 3,0,14,13,17,18,19, 14, 14, 14, - 1,14,9,10,13,21, - 9, - 3,5,6,8,9,10,13,16,17, - 1,3,5,6,7,8,9,10,13,16,17,18,25,19,21,22, - 3, - 18, - 14,20,27, - 3,4,18, - 18, + 25, + 3,14,10,2,13,21, + 10, + 5,6,7,9,10,2,13,16,17, + 3,5,6,0,7,8,9,10,2,13,24,16,17,18,26,19,21,22, + 5, + 25,18, + 14,20, + 5,16,18, + 25, + 24, 14, - 10, + 2, 14, + 24, 15, - 10,11,15,19, - 26, + 2,15,19, + 11,18,19, 21,22, - 14,9,19, + 14,10,19, 14, 14, 14, + 23, 24, 14, - 5,14,10, - 1,2,14,9,12,20, - 6,14,15,16,17,18,19,27, - 5,20,22, - 14,18, + 6,14,2,24, + 3,4,14,10,12,24,20, + 7,14,24,15,16,17,18,19, + 6,20,22, + 14,25, 14, - 9, - 1,14, + 10, + 3,14, 14,15, 14, 14, 14, 14, + 0, 14, 14, 14, - 1, - 9, - 1, + 3, + 10, + 3, 14, 14, 14, 14, 14, 14, - 9,12,20, + 24, + 10,12,20, 14,15, - 1,14,19, - 14,12,26,20, - 1,5,14,9,15,16,22,27, + 3,14,19, + 14,12,20, + 24, + 3,6,14,10,23,15,16,25,22, 14, 11, 14,18,20, 14, - 1, - 1,5,7,14,9,24,15,25,19,22, - 14,23,24, + 24, + 3,0, + 3,6,0,8,14,10,24,15,17,26,19,22, + 14,23,24,18, 14, 14, 14, 14, 23,24,21, - 1,14,10,11,16,19,22, - 1,3,4,6,10,13,16,17,27, - 10,27, - 3,4,14,10,18, - 2,12,26,20, + 24, + 3,14,2,11,16,19,22, + 3,5,7,2,13,16,17, + 2, + 5,14,2,24,16,18, + 4,12,20, 14, 14, - 1, + 3, + 0, 14, - 9, - 3,14,18,19,21, + 10, + 24, + 24, + 24, + 24, + 5,14,18,19,21, 14, - 18,27, + 18, 14, 14, - 7,14,17,19, + 8,14,17,19, 14, 14, 14, - 5,14,12,17,19, - 14,23,24,18,26,19, + 24, + 6,14,12,24,17,19, + 0,14,23,24,25,18,19, 19, 18, - 1, - 6,18, + 3, + 24,16, + 25, + 7,18, 18, - 14,27, - 14,27, - 2, + 14, + 14, + 24, + 4, 13,17, - 4, 14, 14, - 14,9,12,13,16,17,18,21, - 23,16,17,19, - 4,10,16, - 1,6,0,7,8,14,9,10,11,23,24,15,16,17,18,25,19,20,21,22,27, - 10, - 14, - 10, - 27, - 7,19,27, + 0, + 14,10,12,13,16,17,25,21, + 23,24,16,17,19, + 2,16, + 3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22, + 2, + 14,24, + 8,19, 14, 14, - 2, + 4, 14,18, 18, - 1, - 0,14,23,18,21, + 3, + 1,14,23,24,18,21, 14,15, 14, - 2,12, + 4,12, 14,11, 14,18, + 24, 14, 14, 14, - 27, - 1,5,14,10,16,19, - 5,23,24,18,27, - 14,9,10,16, - 27, - 1,3,4,7,14,10,23,12,16,18,20,22,27, - 3,5,10,11,16,18,27, - 27, - 1,4,6,11, + 6,14,2,16,19, + 6,23,24,18, + 14,10,2,24,16, + 3,5,8,14,2,23,12,24,16,18,20,22, + 5,6,2,11,16,17,18, 11, - 9,27, - 8,9,10,11,16,27, - 3,5,14,10,18,27, + 1,24, + 10,24, + 9,10,2,11,16, + 5,6,14,2,18, 14, 14, - 5,14,12, - 7,14, + 6,14,12, + 8,14,24, 14,11,19, - 2, - 2,9, - 16, - 1,14,9,12,25,21, - 23, - 5, + 4, + 4,10, + 3,14,10,12,26,21, + 23,18, + 6, 14, - 1, - 24,16,17,18,25, - 2,11,27, + 3, + 24,18,26, + 23, + 4,11,25, 11, - 23, - 2,3,4,7,14,23,13,24,15,16,17,18,25,19,21,22, - 2,3,5,4,8,14,10,12,15,16,17,18,22, - 0,23, - 5,27, + 23,24, + 4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22, + 4,5,6,9,14,2,12,24,15,16,17,25,18,22, + 1,23, + 6, 14, - 1,3,6,22, - 1,14,15, + 3,5,7,22, + 3,0,14,24,15,26, 14, - 6,14,15, + 7,14,15, 20, - 1,5,8,14,16,17,27, - 4,14,17,19, - 9,17, - 1,17, + 3,6,0,9,14,11,24,16,17, + 14,16,17,19, + 10,17, + 3,17, 14, - 1, - 15, + 3, + 23,24,15, 14,15,19, 15, 14, - 14, - 9, - 7,14, + 14,23,24, + 10, + 8,14, 14,18, - 3,5,6,7,14,23,24,15,16,17,18,19,27, - 18, - 3,5, + 5,6,0,7,8,14,23,24,15,17,18,19, + 25, + 5,6,24, + 24,17, diff --git a/doc/salome/gui/KERNEL/whxdata/whtdata0.xml b/doc/salome/gui/KERNEL/whxdata/whtdata0.xml index 0e5228488..6b0205e6a 100755 --- a/doc/salome/gui/KERNEL/whxdata/whtdata0.xml +++ b/doc/salome/gui/KERNEL/whxdata/whtdata0.xml @@ -13,27 +13,27 @@ - + - - - + + + - - + + diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in index ec67d8086..90f563c2a 100644 --- a/doc/salome/gui/Makefile.in +++ b/doc/salome/gui/Makefile.in @@ -16,7 +16,7 @@ VPATH=.:@srcdir@ 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"` @@ -27,7 +27,7 @@ distclean: clean 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 diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in index 0372e6a1f..e2d1123c5 100644 --- a/doc/salome/tui/Makefile.in +++ b/doc/salome/tui/Makefile.in @@ -20,7 +20,24 @@ docs: 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 ; \ diff --git a/doc/salome/tui/SUIT/doxyfile b/doc/salome/tui/SUIT/doxyfile index 8c7e659d4..949d9cd76 100755 --- a/doc/salome/tui/SUIT/doxyfile +++ b/doc/salome/tui/SUIT/doxyfile @@ -1,32 +1,35 @@ -# 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 #--------------------------------------------------------------------------- @@ -56,6 +59,8 @@ GENERATE_DEPRECATEDLIST= 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 @@ -64,6 +69,7 @@ QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = log.txt @@ -71,8 +77,10 @@ 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 @@ -82,6 +90,7 @@ EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = YES IMAGE_PATH = sources/ INPUT_FILTER = +FILTER_PATTERNS = FILTER_SOURCE_FILES = YES #--------------------------------------------------------------------------- @@ -92,13 +101,14 @@ INLINE_SOURCES = NO 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 = #--------------------------------------------------------------------------- @@ -108,8 +118,8 @@ GENERATE_HTML = YES 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 = @@ -117,9 +127,9 @@ HHC_LOCATION = 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 #--------------------------------------------------------------------------- @@ -208,18 +218,22 @@ HIDE_UNDOC_RELATIONS = NO 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 diff --git a/doc/salome/tui/SUIT/sources/doxygen.css b/doc/salome/tui/SUIT/sources/doxygen.css new file mode 100755 index 000000000..bda046724 --- /dev/null +++ b/doc/salome/tui/SUIT/sources/doxygen.css @@ -0,0 +1,149 @@ +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 } diff --git a/doc/salome/tui/SUIT/sources/footer.html b/doc/salome/tui/SUIT/sources/footer.html new file mode 100755 index 000000000..cb55f397a --- /dev/null +++ b/doc/salome/tui/SUIT/sources/footer.html @@ -0,0 +1,5 @@ + + + + diff --git a/doc/salome/tui/SUIT/sources/myheader.html b/doc/salome/tui/SUIT/sources/myheader.html index 83ca543cd..1dc1ce7a4 100755 --- a/doc/salome/tui/SUIT/sources/myheader.html +++ b/doc/salome/tui/SUIT/sources/myheader.html @@ -8,17 +8,5 @@   -
    Start Page kernel.htm
    Skin Name Default
    Generating Time 17:12 09/29/2005
    Generating Time 15:59 04/20/2006
    Language ID 1033
    Compile Script webhelp5_compile_script.xml
    Compile Build Version 13.10.606
    - - - - - - -
    -
    -
    - - diff --git a/idl/Makefile.in b/idl/Makefile.in deleted file mode 100644 index 6954d4bc0..000000000 --- a/idl/Makefile.in +++ /dev/null @@ -1,67 +0,0 @@ -# -# 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 - diff --git a/idl/SALOME_Session.idl b/idl/SALOME_Session.idl deleted file mode 100644 index f067b753a..000000000 --- a/idl/SALOME_Session.idl +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -// -// -// -// 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); - } ; -} ; diff --git a/src/CAF/CAF_Application.cxx b/src/CAF/CAF_Application.cxx index 823d09355..7416f68de 100755 --- a/src/CAF/CAF_Application.cxx +++ b/src/CAF/CAF_Application.cxx @@ -45,31 +45,50 @@ extern "C" CAF_EXPORT SUIT_Application* createApplication() return new CAF_Application(); } +/*! + Default constructor +*/ CAF_Application::CAF_Application() : STD_Application() { } -CAF_Application::CAF_Application( const Handle(TDocStd_Application)& app ) +/*! + Constructor with OCAF application + \param app - OCAF application +*/ +CAF_Application::CAF_Application( const Handle( TDocStd_Application )& app ) : STD_Application(), myStdApp( app ) { } +/*! + Destructor +*/ CAF_Application::~CAF_Application() { } +/*! + \return application name +*/ QString CAF_Application::applicationName() const { return QString( "CAFApplication" ); } -Handle(TDocStd_Application) CAF_Application::stdApp() const +/*! + \return OCAF application +*/ +Handle( TDocStd_Application ) CAF_Application::stdApp() const { return myStdApp; } +/*! + \return file filters for open/save document +*/ QString CAF_Application::getFileFilter() const { if ( stdApp().IsNull() ) @@ -118,6 +137,9 @@ QString CAF_Application::getFileFilter() const return filters.join( ";;" ); } +/*! + Creates actions of application +*/ void CAF_Application::createActions() { STD_Application::createActions(); @@ -255,16 +277,25 @@ void CAF_Application::updateCommandsStatus() redo->setEnabled( cafStudy && cafStudy->canRedo() ); } +/*! + SLOT: called by clicking on Help->About in main menu +*/ void CAF_Application::onHelpAbout() { SUIT_MessageBox::info1( desktop(), tr( "About" ), tr( "ABOUT_INFO" ), "&OK" ); } +/*! + Creates new study +*/ SUIT_Study* CAF_Application::createNewStudy() { return new CAF_Study( this ); } +/*! + Sets OCAF application +*/ void CAF_Application::setStdApp( const Handle(TDocStd_Application)& app ) { myStdApp = app; diff --git a/src/CAF/CAF_Application.h b/src/CAF/CAF_Application.h index 1ec88331d..6777012ef 100755 --- a/src/CAF/CAF_Application.h +++ b/src/CAF/CAF_Application.h @@ -35,6 +35,12 @@ class CAF_Study; #pragma warning ( disable: 4251 ) #endif +/*! + \class CAF_Application + Defines application configuration and behaviour for application with + link to standard OCC OCAF data model. Allows to use OCC OCAF serives + (for example, undo/redo) +*/ class CAF_EXPORT CAF_Application : public STD_Application { Q_OBJECT diff --git a/src/CAF/CAF_Operation.cxx b/src/CAF/CAF_Operation.cxx index 24bc5ecd8..5292a0fbb 100755 --- a/src/CAF/CAF_Operation.cxx +++ b/src/CAF/CAF_Operation.cxx @@ -23,19 +23,24 @@ #include -////////////////////////////////////////////////////////////////////// -// 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; diff --git a/src/CAF/CAF_Operation.h b/src/CAF/CAF_Operation.h index f49e315d7..bc1ff81e2 100755 --- a/src/CAF/CAF_Operation.h +++ b/src/CAF/CAF_Operation.h @@ -29,8 +29,14 @@ #include 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 diff --git a/src/CAF/CAF_Study.cxx b/src/CAF/CAF_Study.cxx index 176023a1f..30362443d 100755 --- a/src/CAF/CAF_Study.cxx +++ b/src/CAF/CAF_Study.cxx @@ -33,16 +33,18 @@ #include -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor +*/ CAF_Study::CAF_Study(SUIT_Application* theApp) : SUIT_Study( theApp ), myModifiedCnt( 0 ) { } +/*! + Constructor +*/ CAF_Study::CAF_Study(SUIT_Application* theApp, Handle (TDocStd_Document)& aStdDoc) : SUIT_Study( theApp ), myStdDoc( aStdDoc ), @@ -50,20 +52,33 @@ myModifiedCnt( 0 ) { } +/*! + Destructor +*/ CAF_Study::~CAF_Study() { } +/*! + \return OCAF document +*/ Handle(TDocStd_Document) CAF_Study::stdDoc() const { return myStdDoc; } +/*! + Sets new OCAF document + \param aStdDoc - new OCAF document +*/ void CAF_Study::setStdDoc( Handle(TDocStd_Document)& aStdDoc ) { myStdDoc = aStdDoc; } +/*! + Custom document initialization +*/ void CAF_Study::createDocument() { SUIT_Study::createDocument(); @@ -82,6 +97,9 @@ void CAF_Study::createDocument() } } +/*! + Close document +*/ void CAF_Study::closeDocument( bool permanent ) { Handle(TDocStd_Application) app = stdApp(); @@ -91,6 +109,10 @@ void CAF_Study::closeDocument( bool permanent ) SUIT_Study::closeDocument( permanent ); } +/*! + Open document + \param fname - name of file +*/ bool CAF_Study::openDocument( const QString& fname ) { Handle(TDocStd_Application) app = stdApp(); @@ -108,6 +130,10 @@ bool CAF_Study::openDocument( const QString& fname ) return status && SUIT_Study::openDocument( fname ); } +/*! + Save document with other name + \param fname - name of file +*/ bool CAF_Study::saveDocumentAs( const QString& fname ) { Handle(TDocStd_Application) app = stdApp(); @@ -149,9 +175,12 @@ bool CAF_Study::saveDocumentAs( const QString& fname ) return status; } +/*! + Open OCAF transaction +*/ bool CAF_Study::openTransaction() { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; @@ -168,13 +197,16 @@ bool CAF_Study::openTransaction() return res; } +/*! + Abort OCAF transaction +*/ bool CAF_Study::abortTransaction() { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; - try { + try { myStdDoc->AbortCommand(); update(); } @@ -184,13 +216,16 @@ bool CAF_Study::abortTransaction() return res; } +/*! + Commit OCAF transaction +*/ bool CAF_Study::commitTransaction( const QString& name ) { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; bool res = true; - try { + try { myStdDoc->CommitCommand(); if ( canUndo() ) @@ -206,31 +241,34 @@ bool CAF_Study::commitTransaction( const QString& name ) return res; } +/*! + \return true, if there is opened OCAF transaction +*/ bool CAF_Study::hasTransaction() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; return myStdDoc->HasOpenCommand(); } /*! - Returns whether the document was saved in file. [ public ] + \return whether the document was saved in file. [ public ] */ bool CAF_Study::isSaved() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; return myStdDoc->IsSaved(); } /*! - Returns whether the document is modified. [ public ] + \return whether the document is modified. [ public ] */ bool CAF_Study::isModified() const { - if ( myStdDoc.IsNull() ) + if ( myStdDoc.IsNull() ) return false; // return myStdDoc->IsModified(); @@ -311,7 +349,7 @@ bool CAF_Study::redo() } /*! - Check if possible to perform 'undo' command. [ public ] + \return true if possible to perform 'undo' command. [ public ] */ bool CAF_Study::canUndo() const { @@ -322,7 +360,7 @@ bool CAF_Study::canUndo() const } /*! - Check if possible to perform 'redo' command. [ public ] + \return true if possible to perform 'redo' command. [ public ] */ bool CAF_Study::canRedo() const { @@ -333,7 +371,7 @@ bool CAF_Study::canRedo() const } /*! - Returns the list of names of 'undo' actions available. [ public ] + \return the list of names of 'undo' actions available. [ public ] */ QStringList CAF_Study::undoNames() const { @@ -347,7 +385,7 @@ QStringList CAF_Study::undoNames() const } /*! - Returns the list of names of 'redo' actions available. [ public ] + \return the list of names of 'redo' actions available. [ public ] */ QStringList CAF_Study::redoNames() const { @@ -361,7 +399,7 @@ QStringList CAF_Study::redoNames() const } /*! - Returns the standard OCAF application from owner application. [ protected ] + \return the standard OCAF application from owner application. [ protected ] */ Handle(TDocStd_Application) CAF_Study::stdApp() const { @@ -373,7 +411,7 @@ Handle(TDocStd_Application) CAF_Study::stdApp() const } /*! - Returns the application casted to type CAF_Application. [ protected ] + \return the application casted to type CAF_Application. [ protected ] */ CAF_Application* CAF_Study::cafApplication() const { diff --git a/src/CAF/CAF_Study.h b/src/CAF/CAF_Study.h index fe47c5b0b..5fbc614e4 100755 --- a/src/CAF/CAF_Study.h +++ b/src/CAF/CAF_Study.h @@ -34,6 +34,12 @@ class CAF_Application; #pragma warning ( disable: 4251 ) #endif +/*! + \class CAF_Study + Represents study for using in CAF, contains reference + to OCAF std document and allows to use OCAF services. + Provides necessary functionality for OCC transactions management. +*/ class CAF_EXPORT CAF_Study : public SUIT_Study { Q_OBJECT diff --git a/src/CAF/CAF_Tools.cxx b/src/CAF/CAF_Tools.cxx index c32d4a27e..b73ffc7c9 100755 --- a/src/CAF/CAF_Tools.cxx +++ b/src/CAF/CAF_Tools.cxx @@ -62,6 +62,9 @@ TCollection_ExtendedString CAF_Tools::toExtString ( const QString& src ) return result; } +/*! + Converts Qt color to OCC color +*/ Quantity_Color CAF_Tools::color( const QColor& c ) { Quantity_Color aColor; @@ -71,6 +74,9 @@ Quantity_Color CAF_Tools::color( const QColor& c ) return aColor; } +/*! + Converts OCC color to Qt color +*/ QColor CAF_Tools::color( const Quantity_Color& c ) { return QColor ( int( c.Red() * 255 ), diff --git a/src/CAF/CAF_Tools.h b/src/CAF/CAF_Tools.h index e04d1c9d8..d305e5b3d 100755 --- a/src/CAF/CAF_Tools.h +++ b/src/CAF/CAF_Tools.h @@ -33,6 +33,10 @@ #include #include +/*! + \class CAF_Tools + Prodives set of auxiliary static methods +*/ class CAF_EXPORT CAF_Tools : public SUIT_Tools { public: diff --git a/src/CAF/Makefile.in b/src/CAF/Makefile.in index 8aae89d85..5dc19c6ff 100755 --- a/src/CAF/Makefile.in +++ b/src/CAF/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : caf diff --git a/src/CAF/resources/CAF_images.po b/src/CAF/resources/CAF_images.po index a624b35c7..000117f61 100755 --- a/src/CAF/resources/CAF_images.po +++ b/src/CAF/resources/CAF_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/CAF/resources/CAF_msg_en.po b/src/CAF/resources/CAF_msg_en.po index 59119c241..2056ac109 100755 --- a/src/CAF/resources/CAF_msg_en.po +++ b/src/CAF/resources/CAF_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/CAM/CAM_Application.cxx b/src/CAM/CAM_Application.cxx index ef7cd09e4..c6a8424c7 100755 --- a/src/CAM/CAM_Application.cxx +++ b/src/CAM/CAM_Application.cxx @@ -256,7 +256,7 @@ CAM_Module* CAM_Application::loadModule( const QString& modName ) return module; } -/**@name Activate module group.*/ +/*! @name Activate module group. */ //@{ /*!Activate module with name \a modName. *\param modName - module name. @@ -485,7 +485,7 @@ void CAM_Application::readModuleList() } 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 ) @@ -503,7 +503,6 @@ void CAM_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopu /*!Create empty study.*/ void CAM_Application::createEmptyStudy() { - SUIT_Study* study = activeStudy(); - + /*SUIT_Study* study = */activeStudy(); STD_Application::createEmptyStudy(); } diff --git a/src/CAM/CAM_Application.h b/src/CAM/CAM_Application.h index d19bde645..b72dc3c39 100755 --- a/src/CAM/CAM_Application.h +++ b/src/CAM/CAM_Application.h @@ -31,6 +31,13 @@ class QPopupMenu; #pragma warning( disable:4251 ) #endif +/*! + \class CAM_Application + Defines application configuration and behaviour for application with modules. + Every module has own data model, necessary windows and viewers, etc. + Application provides all necessary functionality for module management + (loading of modules/activation/deactivation, etc) +*/ class CAM_EXPORT CAM_Application : public STD_Application { Q_OBJECT diff --git a/src/CAM/CAM_DataModel.cxx b/src/CAM/CAM_DataModel.cxx index 187ec6368..36f72afd9 100755 --- a/src/CAM/CAM_DataModel.cxx +++ b/src/CAM/CAM_DataModel.cxx @@ -33,10 +33,12 @@ CAM_DataModel::~CAM_DataModel() { } +/*! + Default implementation, does nothing. + Can be used for creation of root object. +*/ void CAM_DataModel::initialize() { - //! Default implementation, does nothing.\n - //! Can be used for creation of root object. } /*!Get root object. diff --git a/src/CAM/CAM_DataModel.h b/src/CAM/CAM_DataModel.h index 0724916cd..0c4686cbc 100755 --- a/src/CAM/CAM_DataModel.h +++ b/src/CAM/CAM_DataModel.h @@ -29,6 +29,11 @@ class CAM_DataObject; class CAM_Study; class SUIT_DataObject; +/*! + \class CAM_DataModel + Base class for all data models used in CAM-based applications. + Represents data model of CAM module. Provides necessary interface (default implementation is empty) +*/ class CAM_EXPORT CAM_DataModel : public QObject { Q_OBJECT diff --git a/src/CAM/CAM_DataObject.h b/src/CAM/CAM_DataObject.h index 1b89a8e60..70d09994f 100755 --- a/src/CAM/CAM_DataObject.h +++ b/src/CAM/CAM_DataObject.h @@ -26,6 +26,10 @@ 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: diff --git a/src/CAM/CAM_Module.cxx b/src/CAM/CAM_Module.cxx index 264054bdf..85df558d0 100755 --- a/src/CAM/CAM_Module.cxx +++ b/src/CAM/CAM_Module.cxx @@ -254,9 +254,8 @@ int CAM_Module::createTool( QAction* a, const QString& tBar, const int id, const /*! Create tool. * Insert QAction with id \a id from action map(myActionMap) to tool manager. - *\param a - QAction - *\param tBar - integer *\param id - integer + *\param tBar - integer *\param idx - integer *\retval integer id of new action in tool manager. *\retval Return -1 if something wrong. @@ -272,9 +271,8 @@ int CAM_Module::createTool( const int id, const int tBar, const int idx ) /*! Create tool. * Insert QAction with id \a id from action map(myActionMap) to tool manager. - *\param a - QAction - *\param tBar - QString& *\param id - integer + *\param tBar - QString& *\param idx - integer *\retval integer id of new action in tool manager. *\retval Return -1 if something wrong. diff --git a/src/CAM/CAM_Study.h b/src/CAM/CAM_Study.h index 29106776b..06544269e 100755 --- a/src/CAM/CAM_Study.h +++ b/src/CAM/CAM_Study.h @@ -31,6 +31,12 @@ #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 diff --git a/src/CAM/Makefile.in b/src/CAM/Makefile.in index 4473bc99f..fb1a8af5f 100755 --- a/src/CAM/Makefile.in +++ b/src/CAM/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : CAM diff --git a/src/CAM/resources/CAM_msg_en.po b/src/CAM/resources/CAM_msg_en.po index a1b9d0854..9c2b83f08 100755 --- a/src/CAM/resources/CAM_msg_en.po +++ b/src/CAM/resources/CAM_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -14,6 +32,3 @@ msgstr "Error" msgid "ERROR_ACTIVATE_MODULE_MSG" msgstr "Failed to activate module %1" - -msgid "BUT_OK" -msgstr "Ok" diff --git a/src/DDS/DDS.h b/src/DDS/DDS.h index 35c38aaf4..ae0fe63b7 100644 --- a/src/DDS/DDS.h +++ b/src/DDS/DDS.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_H #define DDS_H diff --git a/src/DDS/DDS_DicGroup.cxx b/src/DDS/DDS_DicGroup.cxx index 6655e4fb7..b6a04dac2 100644 --- a/src/DDS/DDS_DicGroup.cxx +++ b/src/DDS/DDS_DicGroup.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_DicGroup.h" #include "DDS_Dictionary.h" diff --git a/src/DDS/DDS_DicGroup.h b/src/DDS/DDS_DicGroup.h index d1c633fab..77cde5ee6 100644 --- a/src/DDS/DDS_DicGroup.h +++ b/src/DDS/DDS_DicGroup.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICGROUP_H #define DDS_DICGROUP_H diff --git a/src/DDS/DDS_DicItem.cxx b/src/DDS/DDS_DicItem.cxx index d20408b4c..62fafb9ca 100644 --- a/src/DDS/DDS_DicItem.cxx +++ b/src/DDS/DDS_DicItem.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_DicItem.h" #include "DDS_Dictionary.h" diff --git a/src/DDS/DDS_DicItem.h b/src/DDS/DDS_DicItem.h index dbbedc0a7..0e9423515 100644 --- a/src/DDS/DDS_DicItem.h +++ b/src/DDS/DDS_DicItem.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICITEM_H #define DDS_DICITEM_H diff --git a/src/DDS/DDS_Dictionary.cxx b/src/DDS/DDS_Dictionary.cxx index 3656a3949..cc43bb7d0 100644 --- a/src/DDS/DDS_Dictionary.cxx +++ b/src/DDS/DDS_Dictionary.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_Dictionary.h" #include "DDS_KeyWords.h" diff --git a/src/DDS/DDS_Dictionary.h b/src/DDS/DDS_Dictionary.h index d58a15f76..69e653c28 100644 --- a/src/DDS/DDS_Dictionary.h +++ b/src/DDS/DDS_Dictionary.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_DICTIONARY_H #define DDS_DICTIONARY_H diff --git a/src/DDS/DDS_KeyWords.cxx b/src/DDS/DDS_KeyWords.cxx index 2f53d2a92..42ffad97d 100644 --- a/src/DDS/DDS_KeyWords.cxx +++ b/src/DDS/DDS_KeyWords.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "DDS_KeyWords.h" IMPLEMENT_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared) diff --git a/src/DDS/DDS_KeyWords.h b/src/DDS/DDS_KeyWords.h index 2c1faf914..53d3e17d7 100644 --- a/src/DDS/DDS_KeyWords.h +++ b/src/DDS/DDS_KeyWords.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef DDS_KEYWORDS_H #define DDS_KEYWORDS_H diff --git a/src/DDS/Makefile.in b/src/DDS/Makefile.in index a3b9eb89f..22d6b4143 100755 --- a/src/DDS/Makefile.in +++ b/src/DDS/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : DDS diff --git a/src/Event/Makefile.in b/src/Event/Makefile.in index b9fde9c86..4fb782f57 100755 --- a/src/Event/Makefile.in +++ b/src/Event/Makefile.in @@ -45,7 +45,7 @@ EXPORT_PYSCRIPTS = LIB = libEvent.la LIB_SRC = SALOME_Event.cxx -CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS) LDFLAGS+=$(QT_MT_LIBS) @CONCLUDE@ diff --git a/src/Event/SALOME_Event.cxx b/src/Event/SALOME_Event.cxx index 84928f623..d34dfc01a 100755 --- a/src/Event/SALOME_Event.cxx +++ b/src/Event/SALOME_Event.cxx @@ -51,6 +51,9 @@ static DWORD myThread; static pthread_t myThread; #endif +/*! + \return thread id +*/ void SALOME_Event::GetSessionThread(){ #ifdef WIN32 myThread = ::GetCurrentThreadId(); @@ -59,6 +62,9 @@ void SALOME_Event::GetSessionThread(){ #endif } +/*! + \return true if it is session thread +*/ bool SALOME_Event::IsSessionThread(){ bool aResult = false; #ifdef WIN32 @@ -71,12 +77,9 @@ bool SALOME_Event::IsSessionThread(){ } -//=========================================================== /*! - * SALOME_Event::SALOME_Event - * Constructor - */ -//=========================================================== + Constructor +*/ SALOME_Event::SALOME_Event(){ // if(MYDEBUG) MESSAGE( "SALOME_Event::SALOME_Event(): this = "< 0 ) @@ -106,10 +103,12 @@ int GLViewer_AspectLine::setLineWidth( const float width ) return 1; } -//======================================================================= -// Function: getLineColors -// Purpose : -//======================================================================= +/*! + \return colors of line + \param nc - variable for normal color + \param hc - variable for hilighting color + \param sc - variable for selection color +*/ void GLViewer_AspectLine::getLineColors( QColor& nc, QColor& hc, QColor& sc ) const { nc = myNColor; @@ -117,10 +116,9 @@ void GLViewer_AspectLine::getLineColors( QColor& nc, QColor& hc, QColor& sc ) co sc = mySColor; } -//======================================================================= -// Function: getByteCopy -// Purpose : -//======================================================================= +/*! + \return binary representation of line aspect +*/ QByteArray GLViewer_AspectLine::getByteCopy() const { int anISize = sizeof( int ); @@ -174,10 +172,9 @@ QByteArray GLViewer_AspectLine::getByteCopy() const return aResult; } -//======================================================================= -// Function: fromByteCopy -// Purpose : -//======================================================================= +/*! + Sets line aspect from binary representation +*/ GLViewer_AspectLine* GLViewer_AspectLine::fromByteCopy( QByteArray theBytes ) { diff --git a/src/GLViewer/GLViewer_AspectLine.h b/src/GLViewer/GLViewer_AspectLine.h index 800b166bb..23320b46f 100644 --- a/src/GLViewer/GLViewer_AspectLine.h +++ b/src/GLViewer/GLViewer_AspectLine.h @@ -34,9 +34,9 @@ #endif /*! - * Class GLViewer_AspectLine - * Substitution of Prs2d_AspectLine for OpenGL - */ + \Class GLViewer_AspectLine + Substitution of Prs2d_AspectLine for OpenGL +*/ class GLVIEWER_API GLViewer_AspectLine { diff --git a/src/GLViewer/GLViewer_BaseDrawers.cxx b/src/GLViewer/GLViewer_BaseDrawers.cxx index a43a5930e..5a8b6030e 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.cxx +++ b/src/GLViewer/GLViewer_BaseDrawers.cxx @@ -33,16 +33,12 @@ #include #endif -/*************************************************************************** -** Class: GLViewer_MarkerDrawer -** Descr: Drawer for GLViewer_MarkerSet -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ - GLfloat sin_table[SEGMENTS]; GLfloat cos_table[SEGMENTS]; +/*! + Default constructor +*/ GLViewer_MarkerDrawer::GLViewer_MarkerDrawer() : GLViewer_Drawer() { @@ -56,10 +52,18 @@ GLViewer_MarkerDrawer::GLViewer_MarkerDrawer() myObjectType = "GLViewer_MarkerSet"; } +/*! + Destructor +*/ GLViewer_MarkerDrawer::~GLViewer_MarkerDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_MarkerDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator it; @@ -134,6 +138,13 @@ void GLViewer_MarkerDrawer::create( float xScale, float yScale, bool onlyUpdate } } +/*! Draws marker + \param theXCoord - X position + \param theYCoord - Y position + \param theRadius - radius + \param theColor - color + \param theAspectLine - line aspect +*/ void GLViewer_MarkerDrawer::drawMarker( float& theXCoord, float& theYCoord, float& theRadius, QColor& theColor, GLViewer_AspectLine* theAspectLine ) { @@ -154,23 +165,28 @@ void GLViewer_MarkerDrawer::drawMarker( float& theXCoord, float& theYCoord, glEnd(); } -/*************************************************************************** -** Class: GLViewer_PolylineDrawer -** Descr: Drawer for GLViewer_Polyline -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ +/*! + Default constructor +*/ GLViewer_PolylineDrawer::GLViewer_PolylineDrawer() :GLViewer_Drawer() { myObjectType = "GLViewer_Polyline"; } +/*! + Destructor +*/ GLViewer_PolylineDrawer::~GLViewer_PolylineDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_PolylineDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator aObjectIt = myObjects.begin(); @@ -239,23 +255,27 @@ void GLViewer_PolylineDrawer::create( float xScale, float yScale, bool onlyUpdat } } -/*************************************************************************** -** Class: GLViewer_TextDrawer -** Descr: -** Module: GLViewer -** Created: UI team, 27.02.04 -****************************************************************************/ - +/*! + Default constructor +*/ GLViewer_TextDrawer::GLViewer_TextDrawer() : GLViewer_Drawer() { myObjectType = "GLViewer_TextObject"; } +/*! + Destructor +*/ GLViewer_TextDrawer::~GLViewer_TextDrawer() { } +/*! Draws object in GLViewer + \param xScale - current scale along X-direction + \param yScale - current scale along Y-direction + \param onlyUpdate - = true if only update highlight-select information +*/ void GLViewer_TextDrawer::create( float xScale, float yScale, bool onlyUpdate ) { QValueList::Iterator aObjectIt = myObjects.begin(); @@ -297,6 +317,9 @@ void GLViewer_TextDrawer::create( float xScale, float yScale, bool onlyUpdate ) } } +/*! + Updates objects after updating font +*/ void GLViewer_TextDrawer::updateObjects() { QValueList::Iterator aObjectIt = myObjects.begin(); diff --git a/src/GLViewer/GLViewer_BaseDrawers.h b/src/GLViewer/GLViewer_BaseDrawers.h index ce98aa867..2d475f47d 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.h +++ b/src/GLViewer/GLViewer_BaseDrawers.h @@ -40,9 +40,10 @@ class GLViewer_AspectLine; #pragma warning( disable:4251 ) #endif -/*! Class GLViewer_MarkerDrawer -* Drawer for GLViewer_MarkerSet - */ +/*! + \class GLViewer_MarkerDrawer + Drawer for GLViewer_MarkerSet +*/ class GLVIEWER_API GLViewer_MarkerDrawer : public GLViewer_Drawer { @@ -58,8 +59,9 @@ private: void drawMarker( float& x, float& y, float& radius, QColor& color, GLViewer_AspectLine* aspect ); }; -/*! Class GLViewer_PolylineDrawer -* Drawer for GLViewer_Polyline +/*! + \class GLViewer_PolylineDrawer + Drawer for GLViewer_Polyline */ class GLVIEWER_API GLViewer_PolylineDrawer : public GLViewer_Drawer @@ -71,8 +73,9 @@ public: virtual void create( float, float, bool ); }; -/* Class GLViewer_TextDrawer -* Drawer for GLViewer_Text +/*! + \class GLViewer_TextDrawer + Drawer for GLViewer_Text */ class GLVIEWER_API GLViewer_TextDrawer: public GLViewer_Drawer diff --git a/src/GLViewer/GLViewer_BaseObjects.cxx b/src/GLViewer/GLViewer_BaseObjects.cxx index 79c32e3f8..c35c664db 100644 --- a/src/GLViewer/GLViewer_BaseObjects.cxx +++ b/src/GLViewer/GLViewer_BaseObjects.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_BaseObjects -** Descr: Internal OpenGL Objects -** Module: GLViewer -** Created: UI team, 02.09.02 -****************************************************************************/ - //#include #include "GLViewer_BaseObjects.h" #include "GLViewer_BaseDrawers.h" @@ -39,13 +32,9 @@ //#include //using namespace std; -/*************************************************************************** -** Class: GLViewer_MarkerSet -** Descr: OpenGL MarkerSet -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ - +/*! + Constructor +*/ GLViewer_MarkerSet::GLViewer_MarkerSet( int number, float size, const QString& toolTip ) : GLViewer_Object(), myNumber( 0 ), @@ -67,6 +56,9 @@ GLViewer_MarkerSet::GLViewer_MarkerSet( int number, float size, const QString& t setNumMarkers( number ); } +/*! + Destructor +*/ GLViewer_MarkerSet::~GLViewer_MarkerSet() { if ( myXCoord ) @@ -75,6 +67,16 @@ GLViewer_MarkerSet::~GLViewer_MarkerSet() delete[] myYCoord; } +/*! + Adds coords to text buffer in HPGL format + \param buffer - text buffer + \param command - command to be added with coords + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system + \param x - x co-ordinate + \param y - y co-ordinate + \param NewLine - adds new line to buffer +*/ void AddCoordsToHPGL( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true ) { @@ -87,6 +89,16 @@ void AddCoordsToHPGL( QString& buffer, QString command, GLViewer_CoordSystem* aV buffer += ";\n"; } +/*! + Adds coords to text buffer in PostScript format + \param buffer - text buffer + \param command - command to be added with coords + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system + \param x - x co-ordinate + \param y - y co-ordinate + \param NewLine - adds new line to buffer +*/ void AddCoordsToPS( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true ) { @@ -99,6 +111,13 @@ void AddCoordsToPS( QString& buffer, QString command, GLViewer_CoordSystem* aVie buffer += "\n"; } +/*! + Adds line aspect description to text buffer in PostScript format + \param buffer - text buffer + \param anAspect - line aspect + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system +*/ void AddLineAspectToPS( QString& buffer, GLViewer_AspectLine* anAspect, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS ) { @@ -129,6 +148,13 @@ void AddLineAspectToPS( QString& buffer, GLViewer_AspectLine* anAspect, } #ifdef WIN32 +/*! + Adds line aspect description EMF image + \param hDC - descriptor of EMF + \param anAspect - line aspect + \param aViewerCS - viewer co-ordinates system + \param aPaperCS - paper co-ordinates system +*/ HPEN AddLineAspectToEMF( HDC hDC, GLViewer_AspectLine* anAspect, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS ) { @@ -150,6 +176,12 @@ HPEN AddLineAspectToEMF( HDC hDC, GLViewer_AspectLine* anAspect, } #endif +/*! + Saves to file PostScript set of markers + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { int noPoints = 20; @@ -187,6 +219,12 @@ bool GLViewer_MarkerSet::translateToPS( QFile& hFile, GLViewer_CoordSystem* aVie return true; } +/*! + Saves to file HPGL set of markers + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { @@ -221,6 +259,12 @@ bool GLViewer_MarkerSet::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aV } #ifdef WIN32 +/*! + Saves to EMF image set of markers + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_MarkerSet::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { int noPoints = 20; @@ -256,7 +300,9 @@ bool GLViewer_MarkerSet::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS } #endif - +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_MarkerSet::compute() { // cout << "GLViewer_MarkerSet::compute" << endl; @@ -282,13 +328,23 @@ void GLViewer_MarkerSet::compute() myRect->setBottom( ya - myYGap ); } +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_MarkerSet::createDrawer() { // cout << "GLViewer_MarkerSet::createDrawer" << endl; return myDrawer = new GLViewer_MarkerDrawer(); } - +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_MarkerSet::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle ) { if( !myIsVisible ) @@ -342,6 +398,9 @@ GLboolean GLViewer_MarkerSet::highlight( GLfloat x, GLfloat y, GLfloat tol, GLbo return update; } +/*! + Unhilights object +*/ GLboolean GLViewer_MarkerSet::unhighlight() { if( !myHNumbers.isEmpty() ) @@ -356,6 +415,15 @@ GLboolean GLViewer_MarkerSet::unhighlight() return GL_FALSE; } +/*! + Selects marker set + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_MarkerSet::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -480,6 +548,9 @@ GLboolean GLViewer_MarkerSet::select( GLfloat x, GLfloat y, GLfloat tol, GLViewe return myIsSel; } +/*! + Unselects marker set +*/ GLboolean GLViewer_MarkerSet::unselect() { if( !mySelNumbers.isEmpty() ) @@ -493,6 +564,10 @@ GLboolean GLViewer_MarkerSet::unselect() return GL_FALSE; } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_MarkerSet::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -510,7 +585,11 @@ GLViewer_Rect* GLViewer_MarkerSet::getUpdateRect() return rect; } - +/*! + Sets array of x coords of points + \param xCoord - array of co-ordinates + \param size - array size +*/ void GLViewer_MarkerSet::setXCoord( GLfloat* xCoord, int size ) { myXCoord = new GLfloat[ size ]; @@ -518,6 +597,11 @@ void GLViewer_MarkerSet::setXCoord( GLfloat* xCoord, int size ) myXCoord[i] = xCoord[i]; } +/*! + Sets array of y coords of points + \param yCoord - array of co-ordinates + \param size - array size +*/ void GLViewer_MarkerSet::setYCoord( GLfloat* yCoord, int size ) { myYCoord = new GLfloat[ size ]; @@ -525,6 +609,10 @@ void GLViewer_MarkerSet::setYCoord( GLfloat* yCoord, int size ) myYCoord[i] = yCoord[i]; } +/*! + Sets number of markers + \param number - new number of markers +*/ void GLViewer_MarkerSet::setNumMarkers( GLint number ) { if ( myNumber == number ) @@ -540,22 +628,10 @@ void GLViewer_MarkerSet::setNumMarkers( GLint number ) myXCoord = new GLfloat[ myNumber ]; myYCoord = new GLfloat[ myNumber ]; } -/* -void GLViewer_MarkerSet::onSelectionDone( bool append) -{ - mySelectedIndexes.Clear(); - QValueList::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& highlight, QValueList& unhighlight, @@ -570,6 +646,10 @@ void GLViewer_MarkerSet::exportNumbers( QValueList& highlight, myUHNumbers = myHNumbers; } +/*! + Adds or remove selected number + \param index - selected index +*/ bool GLViewer_MarkerSet::addOrRemoveSelected( int index ) { if( index < 0 || index > myNumber ) @@ -588,6 +668,10 @@ bool GLViewer_MarkerSet::addOrRemoveSelected( int index ) return TRUE; } +/*! + Adds some selected numbers + \param seq - sequence of indices +*/ void GLViewer_MarkerSet::addSelected( const TColStd_SequenceOfInteger& seq ) { for ( int i = 1; i <= seq.Length(); i++ ) @@ -595,6 +679,10 @@ void GLViewer_MarkerSet::addSelected( const TColStd_SequenceOfInteger& seq ) mySelNumbers.append( seq.Value( i ) - 1 ); } +/*! + Sets some numbers as selected + \param seq - sequence of indices +*/ void GLViewer_MarkerSet::setSelected( const TColStd_SequenceOfInteger& seq ) { // for( QValueList::Iterator it = mySelNumbers.begin(); it != mySelNumbers.end(); ++it ) @@ -608,6 +696,11 @@ void GLViewer_MarkerSet::setSelected( const TColStd_SequenceOfInteger& seq ) mySelNumbers.append( seq.Value( i ) - 1 ); } +/*! Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_MarkerSet::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -623,6 +716,10 @@ void GLViewer_MarkerSet::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes marker set as byte copy + \return byte array +*/ QByteArray GLViewer_MarkerSet::getByteCopy() { int i = 0; @@ -655,6 +752,10 @@ QByteArray GLViewer_MarkerSet::getByteCopy() return aResult; } +/*! + Initialize marker set by byte array + \param theArray - byte array +*/ bool GLViewer_MarkerSet::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -701,16 +802,20 @@ bool GLViewer_MarkerSet::initializeFromByteCopy( QByteArray theArray ) return true; } -/*************************************************************************** -** Class: GLViewer_Polyline -** Descr: OpenGL Polyline -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ +/*! + \class GLViewer_Polyline + OpenGL Polyline +*/ #define SECTIONS 100 #define DISTANTION 5 +/*! + Constructor + \param number - number of segments + \param size - size of polyline + \param toolTip - tool tip of polyline +*/ GLViewer_Polyline::GLViewer_Polyline( int number, float size, const QString& toolTip ): GLViewer_Object(), myNumber( 0 ), @@ -732,6 +837,9 @@ GLViewer_Polyline::GLViewer_Polyline( int number, float size, const QString& too myToolTipText = toolTip; } +/*! + Destructor, destroys internal arrays of co-ordinates +*/ GLViewer_Polyline::~GLViewer_Polyline() { if ( myXCoord ) @@ -740,6 +848,12 @@ GLViewer_Polyline::~GLViewer_Polyline() delete[] myYCoord; } +/*! + Saves polyline to file PostScript + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QString aBuffer = "newpath\n"; @@ -762,6 +876,12 @@ bool GLViewer_Polyline::translateToPS( QFile& hFile, GLViewer_CoordSystem* aView return true; } +/*! + Saves polyline to file HPGL + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { QString aBuffer = ""; @@ -783,6 +903,12 @@ bool GLViewer_Polyline::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aVi } #ifdef WIN32 +/*! + Saves polyline to EMF image + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_Polyline::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { if( !aViewerCS || !aEMFCS ) @@ -819,6 +945,9 @@ bool GLViewer_Polyline::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, } #endif +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_Polyline::compute() { // cout << "GLViewer_MarkerSet::compute" << endl; @@ -844,6 +973,10 @@ void GLViewer_Polyline::compute() myRect->setBottom( ya - yGap ); } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_Polyline::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -856,12 +989,23 @@ GLViewer_Rect* GLViewer_Polyline::getUpdateRect() return rect; } +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_Polyline::createDrawer() { // cout << "GLViewer_MarkerSet::createDrawer" << endl; return myDrawer = new GLViewer_PolylineDrawer(); } +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_Polyline::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle ) { if( !myIsVisible ) @@ -916,6 +1060,9 @@ GLboolean GLViewer_Polyline::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboo return update; } +/*! + Unhilights object +*/ GLboolean GLViewer_Polyline::unhighlight() { // if( !myHNumbers.isEmpty() ) @@ -934,6 +1081,15 @@ GLboolean GLViewer_Polyline::unhighlight() return GL_FALSE; } +/*! + Selects polyline + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_Polyline::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -994,6 +1150,9 @@ GLboolean GLViewer_Polyline::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer return myIsSel; } +/*! + Unselects polyline +*/ GLboolean GLViewer_Polyline::unselect() { // if( !mySelNumbers.isEmpty() ) @@ -1013,6 +1172,11 @@ GLboolean GLViewer_Polyline::unselect() return GL_FALSE; } +/*! + Sets array of abscisses for points of polyline + \param xCoord - array of of abscisses + \param size - size of array +*/ void GLViewer_Polyline::setXCoord( GLfloat* xCoord, int size ) { myXCoord = new GLfloat[ size ]; @@ -1020,6 +1184,11 @@ void GLViewer_Polyline::setXCoord( GLfloat* xCoord, int size ) myXCoord[i] = xCoord[i]; } +/*! + Sets array of ordinates for points of polyline + \param xCoord - array of of ordinates + \param size - size of array +*/ void GLViewer_Polyline::setYCoord( GLfloat* yCoord, int size ) { myYCoord = new GLfloat[ size ]; @@ -1027,6 +1196,10 @@ void GLViewer_Polyline::setYCoord( GLfloat* yCoord, int size ) myYCoord[i] = yCoord[i]; } +/*! + Sets number of points + \param number - new number of points +*/ void GLViewer_Polyline::setNumber( GLint number ) { if ( myNumber == number ) @@ -1042,19 +1215,9 @@ void GLViewer_Polyline::setNumber( GLint number ) myXCoord = new GLfloat[ myNumber ]; myYCoord = new GLfloat[ myNumber ]; } -/* -void GLViewer_Polyline::onSelectionDone( bool append) -{ - mySelectedIndexes.Clear(); - QValueList::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& highlight, QValueList& unhighlight, @@ -1067,6 +1230,12 @@ void GLViewer_Polyline::exportNumbers( QValueList& highlight, unselect = myUSelNumbers; } +/*! + Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_Polyline::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -1082,6 +1251,10 @@ void GLViewer_Polyline::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes polyline as byte copy + \return byte array +*/ QByteArray GLViewer_Polyline::getByteCopy() { int i = 0; @@ -1118,6 +1291,10 @@ QByteArray GLViewer_Polyline::getByteCopy() } +/*! + Initialize polyline by byte array + \param theArray - byte array +*/ bool GLViewer_Polyline::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -1167,13 +1344,16 @@ bool GLViewer_Polyline::initializeFromByteCopy( QByteArray theArray ) return true; } -/*************************************************************************** -** Class: GLViewer_TextObject -** Descr: Text as Object for OpenGL -** Module: GLViewer -** Created: UI team, 12.02.04 -****************************************************************************/ + +/*! + Constructor + \param theStr - text string + \param xPos - x position + \param yPos - y position + \param color - color of text + \param toolTip - tooltip of text object +*/ GLViewer_TextObject::GLViewer_TextObject( const QString& theStr, float xPos, float yPos, const QColor& color, const QString& toolTip ) : GLViewer_Object() @@ -1186,12 +1366,22 @@ GLViewer_TextObject::GLViewer_TextObject( const QString& theStr, float xPos, flo myToolTipText = toolTip; } + +/*! + Destructor +*/ GLViewer_TextObject::~GLViewer_TextObject() { if ( myGLText ) delete myGLText; } +/*! + Saves text object to file PostScript + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aPSCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QString aText = myGLText->getText(); @@ -1209,6 +1399,12 @@ bool GLViewer_TextObject::translateToPS( QFile& hFile, GLViewer_CoordSystem* aVi return true; } +/*! + Saves text object to file HPGL + \param hFile - file instance + \param aViewerCS - viewer co-ordinates system + \param aHPGLCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { QString aText = myGLText->getText(); @@ -1226,6 +1422,12 @@ bool GLViewer_TextObject::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* a } #ifdef WIN32 +/*! + Saves text object to EMF image + \param dc - EMF image descriptor + \param aViewerCS - viewer co-ordinates system + \param aEMFCS - paper co-ordinates system +*/ bool GLViewer_TextObject::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { QString aText = myGLText->getText(); @@ -1276,6 +1478,9 @@ bool GLViewer_TextObject::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerC } #endif +/*! + Creates corresponding drawer +*/ GLViewer_Drawer* GLViewer_TextObject::createDrawer() { myDrawer = new GLViewer_TextDrawer(); @@ -1283,6 +1488,9 @@ GLViewer_Drawer* GLViewer_TextObject::createDrawer() return myDrawer; } +/*! + Computes all necessary information about object for presentation in drawer +*/ void GLViewer_TextObject::compute() { float xPos, yPos; @@ -1297,12 +1505,20 @@ void GLViewer_TextObject::compute() myRect->setBottom( yPos ); } +/*! + Installing already exist drawer with same type + \param theDrawer - new drawer +*/ void GLViewer_TextObject::setDrawer( GLViewer_Drawer* theDrawer ) { myDrawer = theDrawer; //compute(); } +/*! + \return update object rectangle + Does not equal getRect() if object have a persistence to some viewer transformations +*/ GLViewer_Rect* GLViewer_TextObject::getUpdateRect() { GLViewer_Rect* rect = new GLViewer_Rect(); @@ -1319,6 +1535,14 @@ GLViewer_Rect* GLViewer_TextObject::getUpdateRect() return rect; } +/*! + Computes highlight presentation + \param x - x coord + \param y - y coord + \param tol - tolerance of detecting + \param isCircle - true if sensitive area of detection is round + \return true if highlight status is changed +*/ GLboolean GLViewer_TextObject::highlight( GLfloat theX, GLfloat theY, GLfloat theTol, GLboolean isCircle ) { if( !myIsVisible ) @@ -1366,6 +1590,9 @@ GLboolean GLViewer_TextObject::highlight( GLfloat theX, GLfloat theY, GLfloat th return myIsHigh; } +/*! + Unhilights object +*/ GLboolean GLViewer_TextObject::unhighlight() { if( myIsHigh ) @@ -1377,6 +1604,15 @@ GLboolean GLViewer_TextObject::unhighlight() return GL_FALSE; } +/*! + Selects text object + /param x, y - co-ordinates of mouse + /param tol - tolerance + /param rect - rectangle (in case of rectangular selection) + /param isFull - if it is true, then object may selected only if it lays whole in selection zone + \param isCircle - true if sensitive area of detection is round + \param isShift - true if selection exec with append option +*/ GLboolean GLViewer_TextObject::select( GLfloat theX, GLfloat theY, GLfloat theTol, GLViewer_Rect rect, GLboolean isFull, GLboolean isCircle, GLboolean isShift ) { @@ -1415,6 +1651,9 @@ GLboolean GLViewer_TextObject::select( GLfloat theX, GLfloat theY, GLfloat theTo return myIsSel; } +/*! + Unselects text object +*/ GLboolean GLViewer_TextObject::unselect() { if( myIsSel ) @@ -1426,6 +1665,12 @@ GLboolean GLViewer_TextObject::unselect() return GL_FALSE; } +/*! + Moves object by recomputing + \param dx - moving along X coord + \param dy - moving along Y coord + \param fromGroup - is true if this method called from group +*/ void GLViewer_TextObject::moveObject( float theX, float theY, bool fromGroup ) { if( !fromGroup && myGroup) @@ -1441,6 +1686,10 @@ void GLViewer_TextObject::moveObject( float theX, float theY, bool fromGroup ) compute(); } +/*! + Codes text object as byte copy + \return byte array +*/ QByteArray GLViewer_TextObject::getByteCopy() { QByteArray aObject = GLViewer_Object::getByteCopy(); @@ -1448,6 +1697,10 @@ QByteArray GLViewer_TextObject::getByteCopy() return aObject; } +/*! + Initialize text object by byte array + \param theArray - byte array +*/ bool GLViewer_TextObject::initializeFromByteCopy( QByteArray theArray ) { if( !GLViewer_Object::initializeFromByteCopy( theArray ) || myType != "GLViewer_TextObject" ) diff --git a/src/GLViewer/GLViewer_BaseObjects.h b/src/GLViewer/GLViewer_BaseObjects.h index 6e464ef04..c5dea1285 100644 --- a/src/GLViewer/GLViewer_BaseObjects.h +++ b/src/GLViewer/GLViewer_BaseObjects.h @@ -38,10 +38,9 @@ #endif /*! - * Class GLViewer_MarkerSet - * OpenGL MarkerSet - */ - + \class GLViewer_MarkerSet + OpenGL MarkerSet +*/ class GLVIEWER_API GLViewer_MarkerSet : public GLViewer_Object { public: @@ -120,10 +119,9 @@ protected: }; /*! - * Class GLViewer_Polyline - * OpenGL Polyline - */ - + \class GLViewer_Polyline + OpenGL Polyline +*/ class GLVIEWER_API GLViewer_Polyline: public GLViewer_Object { public: @@ -178,7 +176,7 @@ public: //! Checks highlight as whole object status GLboolean isHighSelAll() const { return myHighSelAll; } - //! Export numbers of heghlighted/selected lines + //! Export numbers of highlighted/selected lines void exportNumbers( QValueList& high, QValueList& unhigh, QValueList& sel, QValueList& unsel ); @@ -203,9 +201,10 @@ protected: GLboolean myHighFlag; }; -// Class: GLViewer_TextObject -// Descr: Text as Object for OpenGL - +/*! + \class GLViewer_TextObject + Text as Object for OpenGL +*/ class GLVIEWER_API GLViewer_TextObject : public GLViewer_Object { public: diff --git a/src/GLViewer/GLViewer_Compass.cxx b/src/GLViewer/GLViewer_Compass.cxx index 919641e7c..99c3f463a 100644 --- a/src/GLViewer/GLViewer_Compass.cxx +++ b/src/GLViewer/GLViewer_Compass.cxx @@ -22,18 +22,19 @@ // File: GLViewer_Compass.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_Compass -// Description : Class implement representatiof of compass in one of corner in GLViewer -//================================================================ - #include "GLViewer_Compass.h" #include "GLViewer_Drawer.h" -//======================================================================= -// Function: GLViewer_Compass -// Purpose : -//======================================================================= +/*! + Constructor + \param color - a color of compass + \param size - a diameter of compass + \param pos - a position + \param WidthTop - width of wide part of arrow + \param WidthBottom - width of base part of arrow + \param HeightTop - height of arrow header + \param HeightBottom - height of arrow cut on bottom +*/ GLViewer_Compass::GLViewer_Compass ( const QColor& color, const int size, const Position pos, const int WidthTop, const int WidthBottom, const int HeightTop, const int HeightBottom ) @@ -52,19 +53,20 @@ GLViewer_Compass::GLViewer_Compass ( const QColor& color, const int size, const //myFont->generateTexture(); } -//======================================================================= -// Function: ~GLViewer_Compass -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Compass::~GLViewer_Compass() { delete myFont; } -//======================================================================= -// Function: setCompass -// Purpose : -//======================================================================= +/*! + Sets parameters of compass + \param color - a color of compass + \param size - a diameter of compass + \param pos - a position +*/ void GLViewer_Compass::setCompass( const QColor& color, const int size, const Position pos ) { myCol = color; @@ -72,29 +74,29 @@ void GLViewer_Compass::setCompass( const QColor& color, const int size, const Po myPos = pos; } -//======================================================================= -// Function: setVisible -// Purpose : -//======================================================================= +/*! + Sets visibility of compass + \param vis - new visibility state +*/ void GLViewer_Compass::setVisible( const bool vis ) { myIsVisible = vis; } -//======================================================================= -// Function: setSize -// Purpose : -//======================================================================= +/*! + Sets size of compass + \param size - new size +*/ void GLViewer_Compass::setSize( const int size ) { if( size > 0 ) mySize=size; } -//======================================================================= -// Function: setArrowWidthTop -// Purpose : -//======================================================================= +/*! + Sets arrow width top + \param WidthTop - new arrow width top +*/ void GLViewer_Compass::setArrowWidthTop( const int WidthTop ) { if( WidthTop < myArrowWidthBottom || WidthTop > mySize ) @@ -102,10 +104,10 @@ void GLViewer_Compass::setArrowWidthTop( const int WidthTop ) myArrowWidthTop=WidthTop; } -//======================================================================= -// Function: setArrowWidthBottom -// Purpose : -//======================================================================= +/*! + Sets arrow width bottom + \param WidthBot - new arrow width bottom +*/ void GLViewer_Compass::setArrowWidthBottom( const int WidthBot ) { if( WidthBot > myArrowWidthTop || WidthBot < 1 ) @@ -113,10 +115,10 @@ void GLViewer_Compass::setArrowWidthBottom( const int WidthBot ) myArrowWidthBottom=WidthBot; } -//======================================================================= -// Function: setArrowHeightTop -// Purpose : -//======================================================================= +/*! + Sets arrow height top + \param HeightTop - new arrow height top +*/ void GLViewer_Compass::setArrowHeightTop( const int HeightTop ) { if( HeightTop > (2*mySize-myArrowHeightBottom ) || HeightTop < 1 ) @@ -124,10 +126,10 @@ void GLViewer_Compass::setArrowHeightTop( const int HeightTop ) myArrowHeightTop=HeightTop; } -//======================================================================= -// Function: setArrowHeightBottom -// Purpose : -//======================================================================= +/*! + Sets arrow height bottom + \param HeightBot - new arrow height bottom +*/ void GLViewer_Compass::setArrowHeightBottom( const int HeightBot ) { if( HeightBot > ( 2*mySize-myArrowHeightTop ) || HeightBot < 1) @@ -135,10 +137,9 @@ void GLViewer_Compass::setArrowHeightBottom( const int HeightBot ) myArrowHeightBottom=HeightBot; } -//======================================================================= -// Function: getFont -// Purpose : -//======================================================================= +/*! + \return font of compass +*/ GLViewer_TexFont* GLViewer_Compass::getFont() { if(!isGenereted) @@ -149,10 +150,10 @@ GLViewer_TexFont* GLViewer_Compass::getFont() return myFont; } -//======================================================================= -// Function: setFont -// Purpose : -//======================================================================= +/*! + Sets font of compass + \param theFont - new font +*/ void GLViewer_Compass::setFont( QFont theFont ) { delete myFont; diff --git a/src/GLViewer/GLViewer_Compass.h b/src/GLViewer/GLViewer_Compass.h index abdec0e01..bb3b98913 100644 --- a/src/GLViewer/GLViewer_Compass.h +++ b/src/GLViewer/GLViewer_Compass.h @@ -33,14 +33,13 @@ #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: diff --git a/src/GLViewer/GLViewer_Context.cxx b/src/GLViewer/GLViewer_Context.cxx index 7fc5fcf20..9b3842a48 100644 --- a/src/GLViewer/GLViewer_Context.cxx +++ b/src/GLViewer/GLViewer_Context.cxx @@ -22,10 +22,10 @@ // 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" @@ -38,10 +38,9 @@ #define TOLERANCE 12 -//======================================================================= -// Function: GLViewer_Context -// Purpose : -//======================================================================= +/*! + Constructor +*/ GLViewer_Context::GLViewer_Context( GLViewer_Viewer2d* v ) : myGLViewer2d( v ), myHighlightColor( Quantity_NOC_CYAN1 ), @@ -59,10 +58,9 @@ GLViewer_Context::GLViewer_Context( GLViewer_Viewer2d* v ) : mySelCurIndex = 0; } -//======================================================================= -// Function: ~GLViewer_Context -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Context::~GLViewer_Context() { myActiveObjects.clear(); @@ -70,10 +68,13 @@ GLViewer_Context::~GLViewer_Context() mySelectedObjects.clear(); } -//======================================================================= -// Function: MoveTo -// Purpose : -//======================================================================= +/*! + Hiilights objects under cursor + \param x - X coord of mouse cursor + \param y - Y coord of mouse cursor + \param byCircle - true if needs round sensitive area around mouse cursor, else rectangle + function search object rectangle which intersect with sensitive area and call object highlight method +*/ int GLViewer_Context::MoveTo( int xi, int yi, bool byCircle ) { GLfloat x = (GLfloat)xi; @@ -180,10 +181,10 @@ int GLViewer_Context::MoveTo( int xi, int yi, bool byCircle ) return 0; } -//======================================================================= -// Function: Select -// Purpose : -//======================================================================= +/*! Selects already highlighting object by calling object method select + \param Append - true if new selection will be append to existing selection, false - another + \param byCircle - true if needs round selection area in complex object +*/ int GLViewer_Context::Select( bool Append, bool byCircle ) { ObjList::Iterator it, itEnd, oit, oitEnd; @@ -322,10 +323,11 @@ int GLViewer_Context::Select( bool Append, bool byCircle ) return SS_NoChanged; } -//======================================================================= -// Function: SelectByRect -// Purpose : -//======================================================================= +/*! Selects objects on scene by rectangle + \param theRect - rectangle of selection + \param Append - true if new selection will be append to existing selection, false - another + function search object rectangle which intersect with theRect and call object select method +*/ int GLViewer_Context::SelectByRect( const QRect& theRect, bool Append ) { GLfloat aXScale; @@ -384,10 +386,10 @@ int GLViewer_Context::SelectByRect( const QRect& theRect, bool Append ) return status; } -//======================================================================= -// Function: SetHighlightColor -// Purpose : -//======================================================================= +/*! + Sets color of hilighting + \param aCol - new color of highlighting +*/ void GLViewer_Context::SetHighlightColor( Quantity_NameOfColor aCol ) { myHighlightColor = aCol; @@ -407,10 +409,10 @@ void GLViewer_Context::SetHighlightColor( Quantity_NameOfColor aCol ) myGLViewer2d->updateColors( colH, colS); } -//======================================================================= -// Function: SetSelectionColor -// Purpose : -//======================================================================= +/*! + Sets color of selection + \param aCol - new color of selection +*/ void GLViewer_Context::SetSelectionColor( Quantity_NameOfColor aCol ) { mySelectionColor = aCol; @@ -430,37 +432,33 @@ void GLViewer_Context::SetSelectionColor( Quantity_NameOfColor aCol ) myGLViewer2d->updateColors( colH, colS); } -//======================================================================= -// Function: NbSelected -// Purpose : -//======================================================================= +/*! + \return number of selected objects +*/ int GLViewer_Context::NbSelected() { return mySelectedObjects.count(); } -//======================================================================= -// Function: InitSelected -// Purpose : -//======================================================================= +/*! + Inits iteration through selected objects +*/ void GLViewer_Context::InitSelected() { mySelCurIndex = 0; } -//======================================================================= -// Function: MoreSelected -// Purpose : -//======================================================================= +/*! + Checks if iteration through selected objects may be continued +*/ bool GLViewer_Context::MoreSelected() { return ( mySelCurIndex < NbSelected() ); } -//======================================================================= -// Function: NextSelected -// Purpose : -//======================================================================= +/*! + Iterates to next selected object +*/ bool GLViewer_Context::NextSelected() { if ( mySelCurIndex >= 0 && mySelCurIndex < NbSelected() ) @@ -472,28 +470,28 @@ bool GLViewer_Context::NextSelected() return FALSE; } -//======================================================================= -// Function: SelectedObject -// Purpose : -//======================================================================= +/*! + \return current selected object (must be used only in cycle as "for( InitSelected(); MoreSelected(); NextSelected() ) {...}" ) +*/ GLViewer_Object* GLViewer_Context::SelectedObject() { return mySelectedObjects[ mySelCurIndex ]; } -//======================================================================= -// Function: isSelected -// Purpose : -//======================================================================= +/*! + \return true if object is selected + \param theObj - object to be checked +*/ bool GLViewer_Context::isSelected( GLViewer_Object* theObj ) { return mySelectedObjects.contains( theObj ); } -//======================================================================= -// Function: insertObject -// Purpose : -//======================================================================= +/*! Inserts new object in context + \param theObject - object to be inserted + \param display - true if needs display object immediatly after inserting, else false + \param isActive - true if needs inserting object in active list +*/ int GLViewer_Context::insertObject( GLViewer_Object* object, bool display, bool isActive ) { // cout << "GLViewer_Context::insertObject" << endl; @@ -517,10 +515,11 @@ int GLViewer_Context::insertObject( GLViewer_Object* object, bool display, bool return myActiveObjects.count() + myInactiveObjects.count(); } -//======================================================================= -// Function: replaceObject -// Purpose : -//======================================================================= +/*! + Replaces object in context + \param oldObject - object to be replaced + \param newObject - object for replacing +*/ bool GLViewer_Context::replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject ) { if( !oldObject || !newObject ) @@ -543,10 +542,9 @@ bool GLViewer_Context::replaceObject( GLViewer_Object* oldObject, GLViewer_Objec return false; } -//======================================================================= -// Function: updateScales -// Purpose : -//======================================================================= +/*! + Updates scales of all objects in context +*/ void GLViewer_Context::updateScales( GLfloat scX, GLfloat scY ) { if( scX <= 0 || scY <= 0 ) @@ -561,10 +559,10 @@ void GLViewer_Context::updateScales( GLfloat scX, GLfloat scY ) (*it)->setScale( scX, scY ); } -//======================================================================= -// Function: clearHighlighted -// Purpose : -//======================================================================= +/*! + Clears hilighting of objects + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::clearHighlighted( bool updateViewer ) { if( myHFlag && myLastPicked ) @@ -577,10 +575,10 @@ void GLViewer_Context::clearHighlighted( bool updateViewer ) } } -//======================================================================= -// Function: clearSelected -// Purpose : -//======================================================================= +/*! + Clears selection of objects + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::clearSelected( bool updateViewer ) { if( !mySFlag ) @@ -600,10 +598,10 @@ void GLViewer_Context::clearSelected( bool updateViewer ) mySelectedObjects.clear(); } -//======================================================================= -// Function: setSelected -// Purpose : -//======================================================================= +/*! + Selects object, other selected objects are left as selected + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::setSelected( GLViewer_Object* object, bool updateViewer ) { if( !object ) @@ -619,10 +617,10 @@ void GLViewer_Context::setSelected( GLViewer_Object* object, bool updateViewer ) myGLViewer2d->activateDrawer( object, TRUE, TRUE ); } -//======================================================================= -// Function: remSelected -// Purpose : -//======================================================================= +/*! + Unselects object, other selected objects are left as selected + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::remSelected( GLViewer_Object* object, bool updateViewer ) { if( !object || !mySelectedObjects.contains( object ) ) @@ -635,10 +633,10 @@ void GLViewer_Context::remSelected( GLViewer_Object* object, bool updateViewer ) myGLViewer2d->activateDrawer( object, TRUE, TRUE ); } -//======================================================================= -// Function: eraseObject -// Purpose : -//======================================================================= +/*! + Erases object in viewer + \param theUpdateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::eraseObject( GLViewer_Object* theObject, bool theUpdateViewer ) { if( !theObject || !myActiveObjects.contains( theObject ) ) @@ -652,10 +650,10 @@ void GLViewer_Context::eraseObject( GLViewer_Object* theObject, bool theUpdateVi myGLViewer2d->updateAll(); } -//======================================================================= -// Function: deleteObject -// Purpose : -//======================================================================= +/*! + Deletes object in + \param updateViewer - if it is true, viewer must be updated +*/ void GLViewer_Context::deleteObject( GLViewer_Object* theObject, bool updateViewer ) { if( !theObject || @@ -683,10 +681,10 @@ void GLViewer_Context::deleteObject( GLViewer_Object* theObject, bool updateView myGLViewer2d->updateAll(); } -//======================================================================= -// Function: setActive -// Purpose : -//======================================================================= +/*! + Installs active status to object + \param theObject +*/ bool GLViewer_Context::setActive( GLViewer_Object* theObject ) { if( !theObject || !myInactiveObjects.contains( theObject ) ) @@ -697,10 +695,10 @@ bool GLViewer_Context::setActive( GLViewer_Object* theObject ) return true; } -//======================================================================= -// Function: setInactive -// Purpose : -//======================================================================= +/*! + Installs inactive status to object + \param theObject +*/ bool GLViewer_Context::setInactive( GLViewer_Object* theObject ) { if( !theObject || !myActiveObjects.contains( theObject ) ) diff --git a/src/GLViewer/GLViewer_Context.h b/src/GLViewer/GLViewer_Context.h index f8c76eb50..d339782f6 100644 --- a/src/GLViewer/GLViewer_Context.h +++ b/src/GLViewer/GLViewer_Context.h @@ -23,10 +23,6 @@ // Created: November, 2004 -/*! Class GLViewer_Context - * Class for manage of presentations in GLViewer - */ - #ifndef GLVIEWER_CONTEXT_H #define GLVIEWER_CONTEXT_H @@ -52,6 +48,9 @@ class GLViewer_Viewer2d; #pragma warning( disable:4251 ) #endif +/*! \class GLViewer_Context + * Class for manage of presentations in GLViewer + */ class GLVIEWER_API GLViewer_Context { public: @@ -73,14 +72,12 @@ public: *function search object rectangle which intersect with sensitive area and call object highlight method */ int MoveTo( int x, int y, bool byCircle = FALSE ); - //! A function selecting already highlighting object by calling object method select - /*! + /*! A function selecting already highlighting object by calling object method select *\param Append - true if new selection will be append to existing selection, false - another *\param byCircle - true if needs round selection area in complex object */ int Select( bool Append = FALSE, bool byCircle = FALSE ); - //! A function selecting objects on scene by rectangle - /*! + /*! A function selecting objects on scene by rectangle *\param theRect - rectangle of selection *\param Append - true if new selection will be append to existing selection, false - another *function search object rectangle which intersect with theRect and call object select method @@ -119,7 +116,7 @@ public: int insertObject( GLViewer_Object* theObject, bool display = false, bool isActive = true ); //! Replacing objects in context /*! - * Function search activ and incative objects + * Function search active and incative objects */ bool replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject ); //! A function updating scales of all objects in context @@ -129,7 +126,7 @@ public: //! Returns list of context objects /*! - * Returns active objects if isActive = true, else inactive objects + * \return active objects if isActive = true, else inactive objects */ const ObjList& getObjects( bool isActive = true ) { return isActive ? myActiveObjects : myInactiveObjects; } diff --git a/src/GLViewer/GLViewer_CoordSystem.cxx b/src/GLViewer/GLViewer_CoordSystem.cxx index 947ac6036..405c22b96 100644 --- a/src/GLViewer/GLViewer_CoordSystem.cxx +++ b/src/GLViewer/GLViewer_CoordSystem.cxx @@ -22,17 +22,18 @@ // File: GLViewer_Context.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_CoordSystem -// Description : Class implementing mathematical model of 2D coordinate system -//================================================================ #include "GLViewer_CoordSystem.h" #include -//======================================================================= -// Function: GLViewer_CoordSystem -// Purpose : -//======================================================================= +/*! + Constructor + \param aType - type of CS + \param X0 - X of origin in reference CS + \param Y0 - Y of origin in reference CS + \param XUnit - X unit in reference CS + \param YUnit - Y unit in reference CS + \param Rotation - rotation relative reference CS +*/ GLViewer_CoordSystem::GLViewer_CoordSystem( CSType aType, double X0, double Y0, double XUnit, double YUnit, double Rotation ) { @@ -42,40 +43,36 @@ GLViewer_CoordSystem::GLViewer_CoordSystem( CSType aType, double X0, double Y0, setRotation( Rotation ); } -//======================================================================= -// Function: getOrigin -// Purpose : -//======================================================================= +/*! + \return origin in reference CS +*/ void GLViewer_CoordSystem::getOrigin( double& x, double& y ) const { x = myX0; y = myY0; } -//======================================================================= -// Function: setOrigin -// Purpose : -//======================================================================= +/*! + Sets origin in reference CS +*/ void GLViewer_CoordSystem::setOrigin( double x, double y ) { myX0 = x; myY0 = y; } -//======================================================================= -// Function: getUnits -// Purpose : -//======================================================================= +/*! + \return units +*/ void GLViewer_CoordSystem::getUnits( double& x, double& y ) const { x = myXUnit; y = myYUnit; } -//======================================================================= -// Function: setUnits -// Purpose : -//======================================================================= +/*! + Sets units +*/ void GLViewer_CoordSystem::setUnits( double x, double y ) { if( x>0 ) @@ -88,46 +85,43 @@ void GLViewer_CoordSystem::setUnits( double x, double y ) else myYUnit = 1.0; } -//======================================================================= -// Function: getRotation -// Purpose : -//======================================================================= + +/*! + \return rotation +*/ double GLViewer_CoordSystem::getRotation() const { return myRotation; } -//======================================================================= -// Function: setRotation -// Purpose : -//======================================================================= +/*! + Sets rotation +*/ void GLViewer_CoordSystem::setRotation( double rotation ) { myRotation = rotation; } -//======================================================================= -// Function: getType -// Purpose : -//======================================================================= +/*! + \return type +*/ GLViewer_CoordSystem::CSType GLViewer_CoordSystem::getType() const { return myType; } -//======================================================================= -// Function: setType -// Purpose : -//======================================================================= +/*! + Sets type +*/ void GLViewer_CoordSystem::setType( CSType type ) { myType = type; } -//======================================================================= -// Function: toReference -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates to reference co-ordinates + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::toReference( double& x, double& y ) { if( myType==Cartesian ) @@ -145,10 +139,10 @@ void GLViewer_CoordSystem::toReference( double& x, double& y ) } } -//======================================================================= -// Function: fromReference -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates from reference co-ordinates + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::fromReference( double& x, double& y ) { x = (x - myX0) / myXUnit; @@ -185,20 +179,20 @@ void GLViewer_CoordSystem::fromReference( double& x, double& y ) } } -//======================================================================= -// Function: transform -// Purpose : -//======================================================================= +/*! + Recalculate co-ordinates to co-ordinates of other CS + \param aSystem - other CS + \param x, y - co-ordinates +*/ void GLViewer_CoordSystem::transform( GLViewer_CoordSystem& aSystem, double& x, double& y ) { toReference( x, y ); aSystem.fromReference( x, y ); } -//======================================================================= -// Function: getStretching -// Purpose : -//======================================================================= +/*! + \return stretching of CS along X and Y axis +*/ void GLViewer_CoordSystem::getStretching( GLViewer_CoordSystem& aSystem, double& theX, double& theY ) { theX = myXUnit / aSystem.myXUnit; diff --git a/src/GLViewer/GLViewer_CoordSystem.h b/src/GLViewer/GLViewer_CoordSystem.h index ca571daab..4ea7795b1 100644 --- a/src/GLViewer/GLViewer_CoordSystem.h +++ b/src/GLViewer/GLViewer_CoordSystem.h @@ -35,6 +35,10 @@ #pragma warning( disable:4251 ) #endif +/*! + \class GLViewer_CoordSystem + \brief Class implementing mathematical model of 2D coordinate system +*/ class GLVIEWER_API GLViewer_CoordSystem { public: diff --git a/src/GLViewer/GLViewer_Drawer.cxx b/src/GLViewer/GLViewer_Drawer.cxx index 9a0f3ef6b..1b6912b81 100644 --- a/src/GLViewer/GLViewer_Drawer.cxx +++ b/src/GLViewer/GLViewer_Drawer.cxx @@ -48,10 +48,7 @@ GLfloat modelMatrix[16]; -//================================================================ -// Class : GLViewer_TexFont -// Description : -//================================================================ + //! code of first font symbol static int FirstSymbolNumber = 32; //! code of last font symbol @@ -60,10 +57,9 @@ static int LastSymbolNumber = 127; QMap GLViewer_TexFont::TexFontBase; QMap GLViewer_TexFont::BitmapFontCache; -//======================================================================= -// Function: clearTextBases -// Purpose : -//======================================================================= +/*! + Clears all generated fonts +*/ void GLViewer_TexFont::clearTextBases() { //cout << "Clear font map" << endl; @@ -71,10 +67,9 @@ void GLViewer_TexFont::clearTextBases() BitmapFontCache.clear(); } -//====================================================================== -// Function: GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Default constructor +*/ GLViewer_TexFont::GLViewer_TexFont() : myMaxRowWidth( 0 ), myFontHeight( 0 ) { @@ -86,10 +81,13 @@ GLViewer_TexFont::GLViewer_TexFont() init(); } -//====================================================================== -// Function: GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Constructor + \param theFont - a base font + \param theSeparator - separator between letters + \param theIsResizeable - specifies whether text drawn by this object can be scaled along with the scene + \param theMinMagFilter - min/mag filter, affects text sharpness +*/ GLViewer_TexFont::GLViewer_TexFont( QFont* theFont, int theSeparator, bool theIsResizeable, GLuint theMinMagFilter ) : myMaxRowWidth( 0 ), myFontHeight( 0 ) { @@ -101,20 +99,18 @@ GLViewer_TexFont::GLViewer_TexFont( QFont* theFont, int theSeparator, bool theIs init(); } -//====================================================================== -// Function: ~GLViewer_TexFont -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_TexFont::~GLViewer_TexFont() { delete[] myWidths; delete[] myPositions; } -//====================================================================== -// Function: init -// Purpose : -//======================================================================= +/*! + Initializes font parameters +*/ void GLViewer_TexFont::init() { myNbSymbols = LastSymbolNumber - FirstSymbolNumber + 1; @@ -148,10 +144,9 @@ void GLViewer_TexFont::init() myTexFontHeight = 0; } -//====================================================================== -// Function: generateTexture -// Purpose : -//======================================================================= +/*! + Generating font texture +*/ bool GLViewer_TexFont::generateTexture() { GLViewer_TexFindId aFindFont; @@ -160,7 +155,7 @@ bool GLViewer_TexFont::generateTexture() aFindFont.myIsItal = myQFont.italic(); aFindFont.myIsUndl = myQFont.underline(); aFindFont.myPointSize = myQFont.pointSize(); - aFindFont.myViewPortId = (int)QGLContext::currentContext(); + aFindFont.myViewPortId = size_t(QGLContext::currentContext()); if( TexFontBase.contains( aFindFont ) ) { @@ -265,10 +260,13 @@ bool GLViewer_TexFont::generateTexture() return true; } -//====================================================================== -// Function: drawString -// Purpose : -//======================================================================= +/*! + Drawing string in viewer + \param theStr - string to be drawn + \param theX - X position + \param theY - Y position + \param theScale - scale coefficient +*/ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY, GLfloat theScale ) { // Adding some pixels to have a gap between rows @@ -334,10 +332,9 @@ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY glPopAttrib(); } -//====================================================================== -// Function: getStringWidth -// Purpose : -//======================================================================= +/*! + \return width of string in pixels +*/ int GLViewer_TexFont::getStringWidth( QString theStr ) { int aWidth = 0; @@ -351,17 +348,18 @@ int GLViewer_TexFont::getStringWidth( QString theStr ) return aWidth; } -//====================================================================== -// Function: getStringHeight -// Purpose : -//======================================================================= +/*! + \return height of string in pixels +*/ int GLViewer_TexFont::getStringHeight() { QFontMetrics aFM( myQFont ); return aFM.height(); } -//! function for generation list base for bitmap fonts +/*! + Generates list base for bitmap fonts +*/ static GLuint displayListBase( QFont* theFont ) { if ( !theFont ) @@ -421,7 +419,7 @@ static GLuint displayListBase( QFont* theFont ) return aList; } - aFindFont.myViewPortId = (int)aCont; + aFindFont.myViewPortId = size_t(aCont); if ( GLViewer_TexFont::BitmapFontCache.contains( aFindFont ) ) aList = GLViewer_TexFont::BitmapFontCache[aFindFont]; @@ -431,7 +429,7 @@ static GLuint displayListBase( QFont* theFont ) QMap::iterator it = GLViewer_TexFont::BitmapFontCache.begin(); for ( ; it != GLViewer_TexFont::BitmapFontCache.end(); ++it ) { - if ( it.key().myViewPortId == (int)aCont && it.data() > listBase ) + if ( it.key().myViewPortId == size_t(aCont) && it.data() > listBase ) listBase = it.data(); } listBase += 256; @@ -473,16 +471,9 @@ static GLuint displayListBase( QFont* theFont ) return aList; } -/*************************************************************************** -** Class: GLViewer_Drawer -** Descr: Drawer for GLViewer_Object -** Module: GLViewer -** Created: UI team, 01.10.01 -****************************************************************************/ -//====================================================================== -// Function: GLViewer_Drawer -// Purpose : -//======================================================================= +/*! + Default constructor +*/ GLViewer_Drawer::GLViewer_Drawer() : myFont( "Helvetica", 10, QFont::Bold ) { @@ -495,20 +486,18 @@ GLViewer_Drawer::GLViewer_Drawer() myTextScale = 0.125; } -//====================================================================== -// Function: ~GLViewer_Drawer -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Drawer::~GLViewer_Drawer() { myObjects.clear(); glDeleteLists( myTextList, 1 ); } -//====================================================================== -// Function: destroyAllTextures -// Purpose : -//======================================================================= +/*! + Clears all generated textures +*/ void GLViewer_Drawer::destroyAllTextures() { QMap::Iterator anIt= GLViewer_TexFont::TexFontBase.begin(); @@ -518,10 +507,10 @@ void GLViewer_Drawer::destroyAllTextures() glDeleteTextures( 1, &(anIt.data().myTexFontId) ); } -//======================================================================= -// Function: setAntialiasing -// Purpose : The function enables and disables antialiasing in Open GL (for points, lines and polygons). -//======================================================================= +/*! + Enables and disables antialiasing in Open GL (for points, lines and polygons). + \param on - if it is true, antialiasing is enabled +*/ void GLViewer_Drawer::setAntialiasing(const bool on) { if (on) @@ -545,10 +534,12 @@ void GLViewer_Drawer::setAntialiasing(const bool on) } } -//====================================================================== -// Function: loadTexture -// Purpose : -//======================================================================= +/*! Loads texture from file + \param fileName - the name of texture file + \param x_size - the horizontal size of picture ( less or equal texture horizontal size ) + \param y_size - the vertical size of picture ( less or equal texture vertical size ) + \param t_size - the size of texture ( texture vertical size equals texture horizontal size ) +*/ GLuint GLViewer_Drawer::loadTexture( const QString& fileName, GLint* x_size, GLint* y_size, @@ -620,10 +611,12 @@ GLuint GLViewer_Drawer::loadTexture( const QString& fileName, return texture; } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw square texture + \param texture - the texture ID + \param size - the size of square texture + \param x - x coord + \param y - y coord +*/ void GLViewer_Drawer::drawTexture( GLuint texture, GLint size, GLfloat x, GLfloat y ) { /*float xScale = myXScale; @@ -660,10 +653,13 @@ void GLViewer_Drawer::drawTexture( GLuint texture, GLint size, GLfloat x, GLfloa drawTexture( texture, size, size, x, y ); } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw texture + \param texture - the texture ID + \param x_size - the horizontal size of texture + \param y_size - the vertical size of texture + \param x - x coord + \param y - y coord +*/ void GLViewer_Drawer::drawTexture( GLuint texture, GLint x_size, GLint y_size, GLfloat x, GLfloat y ) { /*float xScale = myXScale; @@ -699,10 +695,16 @@ void GLViewer_Drawer::drawTexture( GLuint texture, GLint x_size, GLint y_size, G drawTexturePart( texture, 1.0, 1.0, x_size, y_size, x, y ); } -//====================================================================== -// Function: drawTexture -// Purpose : -//======================================================================= +/*! Draw texture part + \param texture - the texture ID + \param x_ratio - the horizontal ratio of texture part + \param y_ratio - the vertical ratio of texture part + \param x_size - the horizontal size of texture + \param y_size - the vertical size of texture + \param x - x coord + \param y - y coord + \param scale - common scale factor ( if = 0, use drawer scales ) +*/ void GLViewer_Drawer::drawTexturePart( GLuint texture, GLfloat x_ratio, GLfloat y_ratio, @@ -750,10 +752,16 @@ void GLViewer_Drawer::drawTexturePart( GLuint texture, glDisable( GL_TEXTURE_2D ); } -//====================================================================== -// Function: drawText -// Purpose : -//======================================================================= +/*! + Draw text + \param text - text to be drawn + \param xPos - x position + \param yPos - y position + \param color - color of text + \param theFont - font of text + \param theSeparator - letter separator + \param theFormat - text format (by default DTF_BITMAP) +*/ void GLViewer_Drawer::drawText( const QString& text, GLfloat xPos, GLfloat yPos, const QColor& color, QFont* theFont, int theSeparator, DisplayTextFormat theFormat ) { @@ -781,10 +789,9 @@ void GLViewer_Drawer::drawText( const QString& text, GLfloat xPos, GLfloat yPos, } } -//====================================================================== -// Function: drawText -// Purpose : -//======================================================================= +/*! + Draws object-text +*/ void GLViewer_Drawer::drawText( GLViewer_Object* theObject ) { if( !theObject ) @@ -801,16 +808,21 @@ void GLViewer_Drawer::drawText( GLViewer_Object* theObject ) drawText( aText->getText(), aPosX, aPosY, aText->getColor(), &aTmpVarFont, aText->getSeparator(), aText->getDisplayTextFormat() ); } -//====================================================================== -// Function: drawGLText -// Purpose : -//======================================================================= +/*! Draw text + \param text - the text string + \param x - x coord + \param y - y coord + \param hPosition - horizontal alignment + \param vPosition - vertical alignment + \param color - text color + \param smallFont - font format +*/ void GLViewer_Drawer::drawGLText( QString text, float x, float y, int hPosition, int vPosition, QColor color, bool smallFont ) { QFont aFont( myFont ); if( smallFont ) - aFont.setPointSize( aFont.pointSize() * 0.8 ); + aFont.setPointSize( int(aFont.pointSize() * 0.8) ); GLfloat scale = textScale() > 0. ? textScale() : 1.; @@ -838,10 +850,9 @@ void GLViewer_Drawer::drawGLText( QString text, float x, float y, drawText( text, x, y, color, &aFont, 2, myTextFormat ); } -//====================================================================== -// Function: textRect -// Purpose : -//======================================================================= +/*! + \return a rectangle of text (without viewer scale) +*/ GLViewer_Rect GLViewer_Drawer::textRect( const QString& text ) const { GLfloat scale = textScale() > 0. ? textScale() : 1.; @@ -853,10 +864,11 @@ GLViewer_Rect GLViewer_Drawer::textRect( const QString& text ) const return GLViewer_Rect( 0, width, height, 0 ); } -//====================================================================== -// Function: drawRectangle -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of primitive + \param color - color of primitive +*/ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, QColor color ) { if( !rect ) @@ -880,10 +892,12 @@ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, QColor color ) glEnd(); } -//====================================================================== -// Function: translateToHPGL -// Purpose : -//======================================================================= +/*! + Saves object to file with format of HPGL + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aHPGLCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS ) { bool result = true; @@ -892,10 +906,12 @@ bool GLViewer_Drawer::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aView return result; } -//====================================================================== -// Function: translateToPS -// Purpose : -//======================================================================= +/*! + Saves object to file with format of PostScript + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { bool result = true; @@ -905,10 +921,12 @@ bool GLViewer_Drawer::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewer } #ifdef WIN32 -//====================================================================== -// Function: translateToEMF -// Purpose : -//======================================================================= +/*! + Saves object to file with format of EMF + \param hFile - file + \param aViewerCS - viewer co-ordinate system + \param aEMFCS - paper co-ordinate system +*/ bool GLViewer_Drawer::translateToEMF( HDC hDC, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { bool result = true; @@ -918,10 +936,15 @@ bool GLViewer_Drawer::translateToEMF( HDC hDC, GLViewer_CoordSystem* aViewerCS, } #endif -//====================================================================== -// Function: drawRectangle -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of primitive + \param lineWidth - width of line + \param gap - gap of rectangle + \param color - color of primitive + \param filled - if it is true, then rectangle will be drawn filled with color "fillingColor" + \param fillingColor - color of filling +*/ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, GLfloat lineWidth, GLfloat gap, QColor color, bool filled, QColor fillingColor ) { @@ -959,10 +982,12 @@ void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, GLfloat lineWidth, GLf glEnd(); } -//====================================================================== -// Function: drawContour -// Purpose : -//======================================================================= +/*! + Draws contour + \param pntList - list of points + \param color - color of contour + \param lineWidth - width of line +*/ void GLViewer_Drawer::drawContour( const GLViewer_PntList& pntList, QColor color, GLfloat lineWidth ) { glColor3f( ( GLfloat )color.red() / 255, @@ -977,10 +1002,14 @@ void GLViewer_Drawer::drawContour( const GLViewer_PntList& pntList, QColor color glEnd(); } -//====================================================================== -// Function: drawContour -// Purpose : -//======================================================================= +/*! + Draws rectangular contour + \param rect - instance of rectangle + \param color - color of primitive + \param lineWidth - width of line + \param pattern - pattern of line + \param isStripe - enables line stipple +*/ void GLViewer_Drawer::drawContour( GLViewer_Rect* rect, QColor color, GLfloat lineWidth, GLushort pattern, bool isStripe ) { @@ -1011,10 +1040,11 @@ void GLViewer_Drawer::drawContour( GLViewer_Rect* rect, QColor color, GLfloat li glDisable( GL_LINE_STIPPLE ); } -//====================================================================== -// Function: drawPolygon -// Purpose : -//======================================================================= +/*! + Draws polygon + \param pntList - list of points + \param color - color of polygon +*/ void GLViewer_Drawer::drawPolygon( const GLViewer_PntList& pntList, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, @@ -1027,10 +1057,13 @@ void GLViewer_Drawer::drawPolygon( const GLViewer_PntList& pntList, QColor color glEnd(); } -//====================================================================== -// Function: drawPolygon -// Purpose : -//======================================================================= +/*! + Draws rectangle + \param rect - instance of rectangle + \param color - color of polygon + \param pattern - pattern of line + \param isStripe - enables line stipple +*/ void GLViewer_Drawer::drawPolygon( GLViewer_Rect* rect, QColor color, GLushort pattern, bool isStripe ) { @@ -1058,11 +1091,14 @@ void GLViewer_Drawer::drawPolygon( GLViewer_Rect* rect, QColor color, glDisable( GL_LINE_STIPPLE ); } -//====================================================================== -// Function: drawVertex -// Purpose : -//======================================================================= GLubyte rasterVertex[5] = { 0x70, 0xf8, 0xf8, 0xf8, 0x70 }; + +/*! + Draws vertex + \param x - x position + \param y - y position + \param color - color of vertex +*/ void GLViewer_Drawer::drawVertex( GLfloat x, GLfloat y, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 ); @@ -1070,11 +1106,14 @@ void GLViewer_Drawer::drawVertex( GLfloat x, GLfloat y, QColor color ) glBitmap( 5, 5, 2, 2, 0, 0, rasterVertex ); } -//====================================================================== -// Function: drawCross -// Purpose : -//======================================================================= GLubyte rasterCross[7] = { 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82 }; + +/*! + Draws cross + \param x - x position + \param y - y position + \param color - color of cross +*/ void GLViewer_Drawer::drawCross( GLfloat x, GLfloat y, QColor color ) { glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 ); @@ -1082,10 +1121,18 @@ void GLViewer_Drawer::drawCross( GLfloat x, GLfloat y, QColor color ) glBitmap( 7, 7, 3, 3, 0, 0, rasterCross ); } -//====================================================================== -// Function: drawArrow -// Purpose : -//======================================================================= +/*! + Draws arrow + \param red, green, blue - components of color + \param lineWidth - width of line + \param staff - + \param length - length of arrow + \param width - width of arrow + \param x - x position + \param y - y position + \param angle - angle of arrow + \param filled - drawn as filled +*/ void GLViewer_Drawer::drawArrow( const GLfloat red, const GLfloat green, const GLfloat blue, GLfloat lineWidth, GLfloat staff, GLfloat length, GLfloat width, diff --git a/src/GLViewer/GLViewer_Drawer.h b/src/GLViewer/GLViewer_Drawer.h index 4b66e7b20..189560e0b 100644 --- a/src/GLViewer/GLViewer_Drawer.h +++ b/src/GLViewer/GLViewer_Drawer.h @@ -98,17 +98,11 @@ struct GLVIEWER_API GLViewer_TexFindId } }; -/*************************************************************************** -** Class: GLViewer_TexFont -** Descr: Font for GLViewer_Drawer -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ +/*! + \class GLViewer_TexFont + Font for GLViewer_Drawer, Drawing bitmap and texture fonts in GLViewer +*/ -/*! - * Class GLViewer_TexFont - * Drawing bitmap and texture fonts in GLViewer - */ class GLVIEWER_API GLViewer_TexFont { public: @@ -185,17 +179,11 @@ private: int myMaxRowWidth; }; -/*************************************************************************** -** Class: GLViewer_Drawer -** Descr: Drawer for GLObject -** Module: GLViewer -** Created: UI team, 03.10.01 -****************************************************************************/ /*! - * Class GLViewer_Drawer - * Drawer for GLViewer_Objects. - * Drawer creates only one times per one type of object - */ + \class GLViewer_Drawer + Drawer for GLViewer_Objects. + Drawer creates only one times per one type of object +*/ class GLVIEWER_API GLViewer_Drawer { public: diff --git a/src/GLViewer/GLViewer_Geom.cxx b/src/GLViewer/GLViewer_Geom.cxx index cd0ef5cae..b5b1852cd 100644 --- a/src/GLViewer/GLViewer_Geom.cxx +++ b/src/GLViewer/GLViewer_Geom.cxx @@ -19,23 +19,15 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Geom -** Descr: -** Module: GLViewer -** Created: UI team, 16.11.04 -****************************************************************************/ - //#include #include #define FAR_POINT 1e10 // Value used as a "very distant" co-ordinate #define TOLERANCE 1e-3 -//================================================================ -// Function : GLViewer_Segment -// Purpose : constructs a real segment bounded by two points -//================================================================ +/*! + constructs a real segment bounded by two points +*/ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt1, const GLViewer_Pnt& thePnt2 ) : myPnt1( thePnt1 ), @@ -46,11 +38,9 @@ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt1, myC = myPnt1.x() * myPnt2.y() - myPnt2.x() * myPnt1.y(); } -//================================================================ -// Function : GLViewer_Segment -// Purpose : constructs a ray starting at and directed -// along positive X axis direction (or Y axis if vertical ) -//================================================================ +/*! + constructs a ray starting at and directed along positive X axis direction (or Y axis if vertical ) +*/ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt, const GLfloat theA, const GLfloat theB, @@ -66,18 +56,16 @@ GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt, myPnt2 = GLViewer_Pnt( FAR_POINT, - myA / myB * FAR_POINT - myC / myB ); } -//================================================================ -// Function : GLViewer_Segment -// Purpose : destructor, does nothing -//================================================================ +/*! + destructor, does nothing +*/ GLViewer_Segment::~GLViewer_Segment() { } -//================================================================ -// Function : HasIntersection -// Purpose : detects intersection with segment -//================================================================ +/*! + detects intersection with segment +*/ bool GLViewer_Segment::HasIntersection( const GLViewer_Segment& theOther ) const { bool aRes = false; @@ -113,27 +101,24 @@ bool GLViewer_Segment::HasIntersection( const GLViewer_Segment& theOther ) const return aRes; } -//================================================================ -// Function : GLViewer_Poly -// Purpose : constructs a closed polygon from the given ordered list of points -//================================================================ +/*! + constructs a closed polygon from the given ordered list of points +*/ GLViewer_Poly::GLViewer_Poly( const GLViewer_PntList* thePoints ) : myPoints( (GLViewer_PntList*)thePoints ) { } -//================================================================ -// Function : ~GLViewer_Poly -// Purpose : destructor, mustn't be deleted here! -//================================================================ +/*! + destructor, mustn't be deleted here! +*/ GLViewer_Poly::~GLViewer_Poly() { } -//================================================================ -// Function : IsIn -// Purpose : returns true if lies within this polygon -//================================================================ +/*! + \return true if lies within this polygon +*/ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt ) const { if ( !myPoints ) @@ -159,11 +144,10 @@ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt ) const return ( aNbInter % 2 == 1 ); } +/*! + \return true if lies within this polygon +*/ /* -//================================================================ -// Function : IsIn -// Purpose : returns true if lies within this polygon -//================================================================ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt, const float tolerance ) const { if ( !myPoints ) @@ -184,10 +168,9 @@ bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt, const float tolerance ) co return res; } */ -//================================================================ -// Function : IsCovers -// Purpose : returns true if covers this polygon -//================================================================ +/*! + \return true if covers this polygon +*/ bool GLViewer_Poly::IsCovers( const GLViewer_Poly& thePoly ) const { if ( !myPoints || !thePoly.Count() ) @@ -204,10 +187,9 @@ bool GLViewer_Poly::IsCovers( const GLViewer_Poly& thePoly ) const return true; } -//================================================================ -// Function : IsCovers -// Purpose : returns true if covers this polygon -//================================================================ +/*! + \return true if covers this polygon +*/ bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const { if ( !myPoints ) //needs check for @@ -224,10 +206,10 @@ bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const return IsCovers( GLViewer_Poly( &aList ) ); } -//================================================================ -// Function : HasIntersection -// Purpose : looks for any -//================================================================ +/*! + \return true if polygon has intersection with segment or ray + \param theSegment - segment to check intersection +*/ bool GLViewer_Poly::HasIntersection( const GLViewer_Segment& theSegment ) const { if ( !myPoints ) diff --git a/src/GLViewer/GLViewer_Grid.cxx b/src/GLViewer/GLViewer_Grid.cxx index 85dfac4ba..cf483c965 100644 --- a/src/GLViewer/GLViewer_Grid.cxx +++ b/src/GLViewer/GLViewer_Grid.cxx @@ -29,6 +29,9 @@ #include #include +/*! + Default constructor +*/ GLViewer_Grid::GLViewer_Grid() : myGridList( 0 ), myGridHeight( (GLfloat)0.0 ), myGridWidth( (GLfloat)0.0 ), myWinW( (GLfloat)0.0 ), myWinH( (GLfloat)0.0 ), myXSize( (GLfloat)0.0 ), myYSize( (GLfloat)0.0 ), @@ -44,6 +47,14 @@ GLViewer_Grid::GLViewer_Grid() : myAxisColor[2] = 0.75; } +/*! + Constructor + \param width and \param height - width and height of grid + \param winW and \param winH - width and height of window + \param xSize and \param ySize - steps along x and y direction + \param xPan and \param yPan - offsets along x and y direction + \param xScale and \param yScal - scale factors along x and y direction +*/ GLViewer_Grid::GLViewer_Grid( GLfloat width, GLfloat height, GLfloat winW, GLfloat winH, GLfloat xSize, GLfloat ySize, @@ -63,10 +74,16 @@ GLViewer_Grid::GLViewer_Grid( GLfloat width, GLfloat height, myAxisColor[2] = 0.75; } +/*! + Destructor +*/ GLViewer_Grid::~GLViewer_Grid() { } +/*! + Performs OpenGL drawing +*/ void GLViewer_Grid::draw() { if ( myGridList == 0 || myIsUpdate ) @@ -75,6 +92,10 @@ void GLViewer_Grid::draw() glCallList( myGridList ); } +/*! + Changes color of grid + \param r, g, b - components of color +*/ void GLViewer_Grid::setGridColor( GLfloat r, GLfloat g, GLfloat b ) { if( myGridColor[0] == r && myGridColor[1] == g && myGridColor[2] == b ) @@ -86,6 +107,10 @@ void GLViewer_Grid::setGridColor( GLfloat r, GLfloat g, GLfloat b ) myIsUpdate = GL_TRUE; } +/*! + Changes color of axis + \param r, g, b - components of color +*/ void GLViewer_Grid::setAxisColor( GLfloat r, GLfloat g, GLfloat b ) { if( myAxisColor[0] == r && myAxisColor[1] == g && myAxisColor[2] == b ) @@ -97,6 +122,10 @@ void GLViewer_Grid::setAxisColor( GLfloat r, GLfloat g, GLfloat b ) myIsUpdate = GL_TRUE; } +/*! + Changes grid width + \param w - new grid width +*/ void GLViewer_Grid::setGridWidth( float w ) { if( myGridWidth == w ) @@ -106,6 +135,10 @@ void GLViewer_Grid::setGridWidth( float w ) myIsUpdate = GL_TRUE; } +/*! + Sets Radius of center point( begin coords ) + \param r - new radius +*/ void GLViewer_Grid::setCenterRadius( int r ) { if( myCenterRadius == r ) @@ -115,6 +148,11 @@ void GLViewer_Grid::setCenterRadius( int r ) myIsUpdate = GL_TRUE; } +/*! + Sets grid size along X and Y axis + \param xSize - size along X axis + \param ySize - size along Y axis +*/ void GLViewer_Grid::setSize( float xSize, float ySize ) { if( myXSize == xSize && myYSize == ySize ) @@ -125,6 +163,11 @@ void GLViewer_Grid::setSize( float xSize, float ySize ) myIsUpdate = GL_TRUE; } +/*! + Sets panning of grid + \param xPan - panning along X axis + \param yPan - panning along Y axis +*/ void GLViewer_Grid::setPan( float xPan, float yPan ) { if( myXPan == xPan && myYPan == yPan ) @@ -135,6 +178,10 @@ void GLViewer_Grid::setPan( float xPan, float yPan ) myIsUpdate = GL_TRUE; } +/*! + Sets zoom + \param zoom - new coefficient of zooming +*/ bool GLViewer_Grid::setZoom( float zoom ) { if( zoom == 1.0 ) @@ -160,6 +207,12 @@ bool GLViewer_Grid::setZoom( float zoom ) return true; } +/*! + Sets parameters of grid by zoom coefficient and window size + \param WinW - window width + \param WinH - window height + \param zoom - zoom coefficient +*/ void GLViewer_Grid::setResize( float WinW, float WinH, float zoom ) { if( myWinW == WinW && myWinH == WinH && zoom == 1.0 ) @@ -173,24 +226,42 @@ void GLViewer_Grid::setResize( float WinW, float WinH, float zoom ) myIsUpdate = GL_TRUE; } +/*! + \return grid size along x and y axis + \param xSize - for size along x axis + \param ySize - for size along y axis +*/ void GLViewer_Grid::getSize( float& xSize, float& ySize ) const { xSize = myXSize; ySize = myYSize; } +/*! + \return panning along x and y axis + \param xPan - for panning along x axis + \param yPan - for panning along y axis +*/ void GLViewer_Grid::getPan( float& xPan, float& yPan ) const { xPan = myXPan; yPan = myYPan; } +/*! + \return scaling along x and y axis + \param xScale - for scaling along x axis + \param yScale - for scaling along y axis +*/ void GLViewer_Grid::getScale( float& xScale, float& yScale ) const { xScale = myXScale; yScale = myYScale; } +/*! + Initialize grid display list +*/ bool GLViewer_Grid::initList() { myIsUpdate = GL_FALSE; diff --git a/src/GLViewer/GLViewer_Group.cxx b/src/GLViewer/GLViewer_Group.cxx index 6377e9ecd..ab32135c1 100644 --- a/src/GLViewer/GLViewer_Group.cxx +++ b/src/GLViewer/GLViewer_Group.cxx @@ -26,52 +26,40 @@ #include "GLViewer_Group.h" #include "GLViewer_Object.h" -/*************************************************************************** -** Class: GLViewer_Group -** Descr: Group of GLViewer_Objects -** Module: GLViewer -** Created: UI team, 25.03.05 -****************************************************************************/ - -//-------------------------------------------------------------------------- -//Function: GLViewer_Group() -//Description: constructor -//-------------------------------------------------------------------------- +/*! + constructor +*/ GLViewer_Group::GLViewer_Group() { mySelObjNum = 0; } -//-------------------------------------------------------------------------- -//Function: GLViewer_Group() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + destructor +*/ GLViewer_Group::~GLViewer_Group() { } -//-------------------------------------------------------------------------- -//Function: isEmpty -//Description: detection of empty group -//-------------------------------------------------------------------------- +/*! + detection of empty group +*/ bool GLViewer_Group::isEmpty() { return myList.empty(); } -//-------------------------------------------------------------------------- -//Function: count -//Description: number of elements -//-------------------------------------------------------------------------- +/*! + \return number of elements +*/ int GLViewer_Group::count() { return myList.size(); } -//-------------------------------------------------------------------------- -//Function: contains -//Description: return the position of object, else -1 -//-------------------------------------------------------------------------- +/*! + \return the position of object if group contains it, else -1 +*/ int GLViewer_Group::contains( GLViewer_Object* theObject ) { if( !theObject ) @@ -86,10 +74,9 @@ int GLViewer_Group::contains( GLViewer_Object* theObject ) return -1; } -//-------------------------------------------------------------------------- -//Function: addObject -//Description: adding object to group -//-------------------------------------------------------------------------- +/*! + adding object to group +*/ int GLViewer_Group::addObject( GLViewer_Object* theObject ) { if( theObject && contains( theObject ) == -1 ) @@ -100,10 +87,9 @@ int GLViewer_Group::addObject( GLViewer_Object* theObject ) return count(); } -//-------------------------------------------------------------------------- -//Function: removeObject -//Description: removing object from group -//-------------------------------------------------------------------------- +/*! + removing object from group +*/ int GLViewer_Group::removeObject( GLViewer_Object* theObject ) { if( theObject ) @@ -122,10 +108,11 @@ int GLViewer_Group::removeObject( GLViewer_Object* theObject ) return count(); } -//-------------------------------------------------------------------------- -//Function: dragingObjects -//Description: -//-------------------------------------------------------------------------- +/*! + Dragging operation + \param Once is true, if this operation calls only one time for all object + \param x, y - dragging position +*/ void GLViewer_Group::dragingObjects( float x, float y, bool once ) { if( !once ) @@ -154,10 +141,11 @@ void GLViewer_Group::dragingObjects( float x, float y, bool once ) (*it)->moveObject( x, y, true ); } -//-------------------------------------------------------------------------- -//Function: updateZoom -//Description: -//-------------------------------------------------------------------------- +/*! + Updates zoom of object + \param sender - object to be updated + \param zoom - zoom coefficient +*/ void GLViewer_Group::updateZoom( GLViewer_Object* sender, float zoom ) { OGIterator it = myList.begin(); diff --git a/src/GLViewer/GLViewer_MimeSource.cxx b/src/GLViewer/GLViewer_MimeSource.cxx index e43ee5f51..5338ca7dd 100644 --- a/src/GLViewer/GLViewer_MimeSource.cxx +++ b/src/GLViewer/GLViewer_MimeSource.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_MimeSource -** Descr: Needs for a work with QClipboard -** Module: GLViewer -** Created: UI team, 22.03.04 -****************************************************************************/ - //#include #include "GLViewer_MimeSource.h" #include "GLViewer_BaseObjects.h" @@ -33,10 +26,17 @@ //#include //using namespace std; +/*! + Destructor +*/ GLViewer_MimeSource::~GLViewer_MimeSource() { } +/*! + Translate objects to byte array + \param theObjects - list of objects +*/ bool GLViewer_MimeSource::setObjects( QValueList theObjects ) { if( !theObjects.empty() ) @@ -109,9 +109,12 @@ bool GLViewer_MimeSource::setObjects( QValueList theObjects ) return false; } -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -//If you want to use new class, following two method must be redefined -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +/*! + Creates object by it's representation (byte array) + \param theArray - byte array + \param theType - type of object +*/ GLViewer_Object* GLViewer_MimeSource::getObject( QByteArray theArray, QString theType ) { if( !theArray.isEmpty() ) @@ -139,6 +142,11 @@ GLViewer_Object* GLViewer_MimeSource::getObject( QByteArray theArray, QString th return NULL; } +/*! + Creates list of objects by its representation (byte array) + \param theArray - byte array + \param theType - type of object +*/ QValueList GLViewer_MimeSource::getObjects( QByteArray theArray, QString theType ) { if( !theArray.isEmpty() ) @@ -210,6 +218,10 @@ QValueList GLViewer_MimeSource::getObjects( QByteArray theArra return QValueList(); } +/*! + \return format by index + \param theIndex - index +*/ const char* GLViewer_MimeSource::format( int theIndex ) const { switch( theIndex ) @@ -223,6 +235,9 @@ const char* GLViewer_MimeSource::format( int theIndex ) const } +/*! + \return internal byte array +*/ QByteArray GLViewer_MimeSource::encodedData( const char* theObjectType ) const { if( theObjectType == "GLViewer_Objects" ) diff --git a/src/GLViewer/GLViewer_MimeSource.h b/src/GLViewer/GLViewer_MimeSource.h index 4fca3c9d7..01e59b508 100644 --- a/src/GLViewer/GLViewer_MimeSource.h +++ b/src/GLViewer/GLViewer_MimeSource.h @@ -40,10 +40,10 @@ 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: diff --git a/src/GLViewer/GLViewer_Object.cxx b/src/GLViewer/GLViewer_Object.cxx index f5972674b..37fdca053 100644 --- a/src/GLViewer/GLViewer_Object.cxx +++ b/src/GLViewer/GLViewer_Object.cxx @@ -19,13 +19,6 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Object -** Descr: OpenGL Object -** Module: GLViewer -** Created: UI team, 03.09.02 -****************************************************************************/ - //#include #include "GLViewer_Object.h" #include "GLViewer_Drawer.h" @@ -37,6 +30,9 @@ //#include //using namespace std; +/*! + Default constructor +*/ GLViewer_Object::GLViewer_Object() { myXScale = 1.0; @@ -65,6 +61,9 @@ GLViewer_Object::GLViewer_Object() myGroup = NULL; } +/*! + Destructor +*/ GLViewer_Object::~GLViewer_Object() { if( myRect ) @@ -80,16 +79,27 @@ GLViewer_Object::~GLViewer_Object() delete myAspectLine; } +/*! + \return priority of object +*/ int GLViewer_Object::getPriority() const { return myDrawer ? myDrawer->getPriority() : 0; } +/*! + \return true if object is inside rectangle + \param theRect - rectangle +*/ GLboolean GLViewer_Object::isInside( GLViewer_Rect theRect ) { return theRect.toQRect().contains( myRect->toQRect() ); } +/*! + Sets zoom factor + \param zoom - zoom factor +*/ GLboolean GLViewer_Object::setZoom( GLfloat zoom, bool, bool ) { if( myZoom == zoom ) @@ -99,6 +109,10 @@ GLboolean GLViewer_Object::setZoom( GLfloat zoom, bool, bool ) return GL_TRUE; } +/*! + Performs zoom change by step + \param zoomIn - to increase to decrease zoom +*/ GLboolean GLViewer_Object::updateZoom( bool zoomIn ) { float newZoom; @@ -118,6 +132,10 @@ GLboolean GLViewer_Object::updateZoom( bool zoomIn ) return setZoom( newZoom, true ); } +/*! + Codes object as byte copy + \return byte array +*/ QByteArray GLViewer_Object::getByteCopy() { int i = 0; @@ -185,6 +203,10 @@ QByteArray GLViewer_Object::getByteCopy() return aResult; } +/*! + Initialize object by byte array + \param theArray - byte array +*/ bool GLViewer_Object::initializeFromByteCopy( QByteArray theArray ) { int i = 0; @@ -281,6 +303,10 @@ bool GLViewer_Object::initializeFromByteCopy( QByteArray theArray ) return true; } +/*! + Sets object's group + \param theGroup - group +*/ void GLViewer_Object::setGroup( GLViewer_Group* theGroup ) { if ( myGroup == theGroup ) @@ -294,6 +320,9 @@ void GLViewer_Object::setGroup( GLViewer_Group* theGroup ) myGroup->addObject( this ); } +/*! + \return object's group +*/ GLViewer_Group* GLViewer_Object::getGroup() const { return myGroup; diff --git a/src/GLViewer/GLViewer_Object.h b/src/GLViewer/GLViewer_Object.h index 6cd21b294..d6abc6ea9 100644 --- a/src/GLViewer/GLViewer_Object.h +++ b/src/GLViewer/GLViewer_Object.h @@ -45,10 +45,6 @@ #pragma warning( disable:4251 ) #endif -/*! - * Class GLViewer_Object - * Base Object for GLViewer - */ class GLViewer_Drawer; class GLViewer_AspectLine; class GLViewer_Group; @@ -56,6 +52,10 @@ class GLViewer_CoordSystem; class GLViewer_Text; class GLViewer_Owner; +/*! + * Class GLViewer_Object + * Base Object for all GLViewer objects + */ class GLVIEWER_API GLViewer_Object { public: diff --git a/src/GLViewer/GLViewer_Selector.cxx b/src/GLViewer/GLViewer_Selector.cxx index 5df29eb89..2bf702e18 100644 --- a/src/GLViewer/GLViewer_Selector.cxx +++ b/src/GLViewer/GLViewer_Selector.cxx @@ -22,13 +22,6 @@ // 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 #include "GLViewer_Selector.h" diff --git a/src/GLViewer/GLViewer_Selector.h b/src/GLViewer/GLViewer_Selector.h index ad40ab124..3458451f0 100644 --- a/src/GLViewer/GLViewer_Selector.h +++ b/src/GLViewer/GLViewer_Selector.h @@ -22,12 +22,6 @@ // 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 @@ -41,10 +35,10 @@ 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 diff --git a/src/GLViewer/GLViewer_Selector2d.cxx b/src/GLViewer/GLViewer_Selector2d.cxx index e8a414d46..d2037d272 100644 --- a/src/GLViewer/GLViewer_Selector2d.cxx +++ b/src/GLViewer/GLViewer_Selector2d.cxx @@ -22,19 +22,15 @@ // File: GLViewer_Selector2d.cxx // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector2d -** Descr: OpenGL Selector 2D -** Module: GLViewer -** Created: UI team, 20.09.02 -*****************************************************************************/ - //#include #include "GLViewer_Selector2d.h" #include "GLViewer_Viewer2d.h" #include "GLViewer_Context.h" #include "GLViewer_ViewPort2d.h" +/*! + Constructor +*/ GLViewer_Selector2d::GLViewer_Selector2d( GLViewer_Viewer2d* v2d, GLViewer_Context* glc ) : GLViewer_Selector( v2d ), myGLContext( glc ) @@ -43,20 +39,35 @@ myGLContext( glc ) // myGLContext->SetSelectionColor( Quantity_NOC_RED ); } +/*! + Destructor +*/ GLViewer_Selector2d::~GLViewer_Selector2d() { } +/*! + Changes hilight color of context + \param color - new hilight color +*/ void GLViewer_Selector2d::setHilightColor( Quantity_NameOfColor color ) { myGLContext->SetHighlightColor( color ); } +/*! + Changes selection color of context + \param color - new selection color +*/ void GLViewer_Selector2d::setSelectColor( Quantity_NameOfColor color ) { myGLContext->SetSelectionColor( color ); } +/*! + Detects object at point + \param x, y - point co-ordinates +*/ void GLViewer_Selector2d::detect( int x, int y ) { //cout << "GLViewer_Selector2d : detect ( " << x << " , " << y << " )" << endl; @@ -71,6 +82,9 @@ void GLViewer_Selector2d::detect( int x, int y ) myGLContext->MoveTo( x, y ); } +/*! + Undetects all objects +*/ void GLViewer_Selector2d::undetectAll() { if ( myLocked || !myGLContext || !myViewer || !myViewer->getActiveView() || @@ -84,6 +98,10 @@ void GLViewer_Selector2d::undetectAll() myGLContext->clearHighlighted( true ); } +/*! + Selects previously hilighted objects + \param append - append objects to selection +*/ void GLViewer_Selector2d::select( bool append ) { //cout << "GLViewer_Selector2d : select ( " << (int)append << " )" << endl; @@ -104,6 +122,11 @@ void GLViewer_Selector2d::select( bool append ) checkSelection( selBefore, append, status ); } +/*! + Selects objects in rectangle + \param selRect - selection rectangle + \param append - append objects to selection +*/ void GLViewer_Selector2d::select( const QRect& selRect, bool append ) { GLViewer_Viewer::SelectionMode selMode = myViewer->getSelectionMode(); @@ -123,6 +146,9 @@ void GLViewer_Selector2d::select( const QRect& selRect, bool append ) checkSelection( selBefore, append, aStatus ); } +/*! + Unselects all objects +*/ void GLViewer_Selector2d::unselectAll() { if ( myLocked || !myViewer ) @@ -137,8 +163,10 @@ void GLViewer_Selector2d::unselectAll() if ( hadSelection ) emit selSelectionCancel(); } -/* Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel' - Should be called by after non-interactive selection. */ +/*! + Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel' + Should be called by after non-interactive selection. +*/ void GLViewer_Selector2d::checkSelection( int selBefore, bool append, int aStatus ) { int selAfter = numSelected(); @@ -158,6 +186,9 @@ void GLViewer_Selector2d::checkSelection( int selBefore, bool append, int aStatu } } +/*! + \return number of selected objects +*/ int GLViewer_Selector2d::numSelected() const { return myGLContext->NbSelected(); diff --git a/src/GLViewer/GLViewer_Selector2d.h b/src/GLViewer/GLViewer_Selector2d.h index cce3cc37e..2f21920ae 100644 --- a/src/GLViewer/GLViewer_Selector2d.h +++ b/src/GLViewer/GLViewer_Selector2d.h @@ -22,12 +22,6 @@ // File: GLViewer_Selector2d.h // Created: November, 2004 -/**************************************************************************** -** Class: GLViewer_Selector2d -** Descr: OpenGL Selector 2D -** Module: GLViewer -** Created: UI team, 20.09.02 -*****************************************************************************/ #ifndef GLVIEWER_SELECTOR2D_H #define GLVIEWER_SELECTOR2D_H @@ -42,8 +36,9 @@ class GLViewer_Viewer2d; class GLViewer_Context; -/*! Class GLViewer_Selector2d -* 2D select manager for GLViewer +/*! + \class GLViewer_Selector2d + 2D select manager for GLViewer */ class GLVIEWER_API GLViewer_Selector2d : public GLViewer_Selector { diff --git a/src/GLViewer/GLViewer_Text.cxx b/src/GLViewer/GLViewer_Text.cxx index bafa33ec1..63a00fd00 100644 --- a/src/GLViewer/GLViewer_Text.cxx +++ b/src/GLViewer/GLViewer_Text.cxx @@ -19,16 +19,12 @@ // Author : OPEN CASCADE // -/*************************************************************************** -** Class: GLViewer_Text -** Descr: Substitution of Prs3d_Text for OpenGL -** Module: GLViewer -** Created: UI team, 10.07.03 -****************************************************************************/ - //#include #include "GLViewer_Text.h" +/*! + Constructor +*/ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color ) { myText = text; @@ -40,6 +36,9 @@ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const myDTF = DTF_BITMAP; } +/*! + Constructor +*/ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color, QFont theFont, int theSeparator ) { myText = text; @@ -51,10 +50,16 @@ GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const myDTF = DTF_BITMAP; } +/*! + Destructor +*/ GLViewer_Text::~GLViewer_Text() { } +/*! + \return width of text +*/ int GLViewer_Text::getWidth() { int aResult = 0; @@ -64,12 +69,19 @@ int GLViewer_Text::getWidth() return aResult; } +/*! + \return height of text +*/ int GLViewer_Text::getHeight() { QFontMetrics aFM( myQFont ); return aFM.height(); } +/*! + Codes object as byte copy + \return byte array +*/ QByteArray GLViewer_Text::getByteCopy() const { int i; @@ -121,6 +133,10 @@ QByteArray GLViewer_Text::getByteCopy() const return aResult; } +/*! + Initialize text from binary representation + \param theBuf - byte array +*/ GLViewer_Text* GLViewer_Text::fromByteCopy( QByteArray theBuf ) { int i = 0; diff --git a/src/GLViewer/GLViewer_Text.h b/src/GLViewer/GLViewer_Text.h index ef3512ca9..41f2869c8 100644 --- a/src/GLViewer/GLViewer_Text.h +++ b/src/GLViewer/GLViewer_Text.h @@ -43,9 +43,10 @@ #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: diff --git a/src/GLViewer/GLViewer_ToolTip.cxx b/src/GLViewer/GLViewer_ToolTip.cxx index 0521ff19f..e43eede36 100644 --- a/src/GLViewer/GLViewer_ToolTip.cxx +++ b/src/GLViewer/GLViewer_ToolTip.cxx @@ -34,17 +34,9 @@ #include #include -/*************************************************************************** -** Class: GLViewer_ToolTip -** Descr: ToolTip of GLViewer_Objects -** Module: GLViewer -** Created: UI team, 25.03.05 -****************************************************************************/ - -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: constructor -//-------------------------------------------------------------------------- +/*! + constructor +*/ GLViewer_ObjectTip::GLViewer_ObjectTip( GLViewer_ViewPort2d* theParent ) :QObject(), myText(), @@ -69,10 +61,9 @@ GLViewer_ObjectTip::GLViewer_ObjectTip( GLViewer_ViewPort2d* theParent ) connect( mypTimer, SIGNAL( timeout() ), this, SLOT( showTip() ) ); } -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + destructor +*/ GLViewer_ObjectTip::~GLViewer_ObjectTip() { // delete mypRect; @@ -87,10 +78,10 @@ GLViewer_ObjectTip::~GLViewer_ObjectTip() } -//-------------------------------------------------------------------------- -//Function: GLViewer_ToolTip() -//Description: destructor -//-------------------------------------------------------------------------- +/*! + It is called when there is a possibility that a tool tip should be shown + \param p - position of tooltip +*/ bool GLViewer_ObjectTip::maybeTip( const QPoint &p ) { @@ -138,6 +129,9 @@ bool GLViewer_ObjectTip::maybeTip( const QPoint &p ) */ } +/*! + Custom event filter +*/ bool GLViewer_ObjectTip::eventFilter( QObject* theObj, QEvent* e ) { hideTipAndSleep(); @@ -175,7 +169,9 @@ bool GLViewer_ObjectTip::eventFilter( QObject* theObj, QEvent* e ) return false; } - +/*! + Hides tooltip and stops timer +*/ void GLViewer_ObjectTip::hideTipAndSleep() { //if( mypPoint ) @@ -191,6 +187,9 @@ void GLViewer_ObjectTip::hideTipAndSleep() mypTimer->stop(); } +/*! + Shows tooltip +*/ void GLViewer_ObjectTip::showTip() { if( maybeTip( myPoint ) ) @@ -218,6 +217,9 @@ void GLViewer_ObjectTip::showTip() } } +/*! + Restarts timer +*/ void GLViewer_ObjectTip::wakeup( int theTime ) { if( mypTimer->isActive() ) diff --git a/src/GLViewer/GLViewer_ToolTip.h b/src/GLViewer/GLViewer_ToolTip.h index 9dcb71f68..7700b61b1 100644 --- a/src/GLViewer/GLViewer_ToolTip.h +++ b/src/GLViewer/GLViewer_ToolTip.h @@ -35,12 +35,10 @@ 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 diff --git a/src/GLViewer/GLViewer_Tools.cxx b/src/GLViewer/GLViewer_Tools.cxx index a54ad837f..9d8739175 100644 --- a/src/GLViewer/GLViewer_Tools.cxx +++ b/src/GLViewer/GLViewer_Tools.cxx @@ -29,12 +29,10 @@ #include -/**************************************************************************** -** 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; @@ -52,11 +50,18 @@ GLViewer_LineList::GLViewer_LineList( int size ) memset( myArray, 0, myRealSize*sizeof(double) ); } +/*! + Destructor +*/ GLViewer_LineList::~GLViewer_LineList() { delete myArray; } +/*! + Adds new line segment to list + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::addSegment( double coord1, double coord2 ) { if( coord1 > coord2 ) @@ -158,6 +163,11 @@ bool GLViewer_LineList::addSegment( double coord1, double coord2 ) return true; } +/*! + Gets info about segment + \param theIndex - index of segment + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::readSegment( int theIndex, double& coord1, double& coord2 ) { if( theIndex > mySegmentNumber || !myArray) @@ -169,6 +179,10 @@ bool GLViewer_LineList::readSegment( int theIndex, double& coord1, double& coord return true; } +/*! + \return true if line list covers point + \param thePoint - point co-ordinate +*/ int GLViewer_LineList::contains( double thePoint ) const { if( !myArray || mySegmentNumber == 0 ) @@ -182,6 +196,10 @@ int GLViewer_LineList::contains( double thePoint ) const } +/*! + Removes segment + \param theIndex - segment index +*/ bool GLViewer_LineList::removeSegment( int theIndex ) { if( theIndex > mySegmentNumber || !myArray) @@ -198,6 +216,10 @@ bool GLViewer_LineList::removeSegment( int theIndex ) return true; } +/*! + Removes segment from line list + \param coord1, coord2 - co-ordinates of points +*/ bool GLViewer_LineList::removeSegment( double coord1, double coord2 ) { if( coord1 > coord2 ) @@ -350,12 +372,18 @@ bool GLViewer_LineList::removeSegment( double coord1, double coord2 ) return true; } +/*! + Clears line list +*/ void GLViewer_LineList::clear() { if( myArray ) memset( myArray, 0, myRealSize*sizeof(double) ); } +/*! + Prints debug info about line list +*/ void GLViewer_LineList::print() { cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::"; @@ -365,6 +393,10 @@ void GLViewer_LineList::print() cout << endl; } +/*! + Draws line list with help of OpenGL + \param theDim - dimension +*/ void GLViewer_LineList::show( FieldDim theDim ) { if( !myArray ) @@ -393,12 +425,10 @@ void GLViewer_LineList::show( FieldDim theDim ) } } -/**************************************************************************** -** Class: GLViewer_LineField -** Descr: Tools for solving -** Module: GLViewer -** Created: UI team, 27.10.05 -*****************************************************************************/ + +/*! + Constructor +*/ GLViewer_LineField::GLViewer_LineField() { myCurArrayIndex = 0; @@ -412,6 +442,10 @@ GLViewer_LineField::GLViewer_LineField() myXLineArray = NULL; myYLineArray = NULL; } + +/*! + Constructor +*/ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, const int theYN ) { myCurArrayIndex = 0; @@ -443,6 +477,9 @@ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, c } } +/*! + Destructor +*/ GLViewer_LineField::~GLViewer_LineField() { if( myXLineArray ) @@ -468,11 +505,21 @@ GLViewer_LineField::~GLViewer_LineField() delete myGraphArray2; } +/*! + Adds line +*/ void GLViewer_LineField::addLine( FieldDim theDim, GLViewer_LineList* ) { //not implemented } +/*! + Adds line + \param theDim - dimension + \param theMC - main co-ordinate + \param theBegin - start co-ordinate + \param theEnd - end co-ordinate +*/ void GLViewer_LineField:: addLine( FieldDim theDim, double theMC, double theBegin, double theEnd ) { GLViewer_LineList* aLL = new GLViewer_LineList( 1 ); @@ -481,7 +528,12 @@ void GLViewer_LineField:: addLine( FieldDim theDim, double theMC, double theBegi addLine( theDim, aLL ); } - +/*! + Adds line + \param theDim - dimension + \param theLL - main co-ordinate + \param thePosition - index in list +*/ int GLViewer_LineField::insertLine( FieldDim theDim, GLViewer_LineList* theLL, int thePosition ) { if( !myXLineArray || !myYLineArray ) @@ -533,6 +585,14 @@ int GLViewer_LineField::insertLine( FieldDim theDim, GLViewer_LineList* theLL, i return -1; } +/*! + Adds line + \param theDim - dimension + \param theMainCoord - main co-ordinate + \param theBegin - start co-ordinate + \param theEnd - end co-ordinate + \param thePosition - index in list +*/ int GLViewer_LineField::insertLine( FieldDim theDim, double theMainCoord, double theBegin, double theEnd, int thePosition ) { GLViewer_LineList* aLL = new GLViewer_LineList( 1 ); @@ -541,7 +601,9 @@ int GLViewer_LineField::insertLine( FieldDim theDim, double theMainCoord, double return insertLine( theDim, aLL, thePosition ); } - +/*! + \return other dimension +*/ FieldDim GLViewer_LineField::invertDim( FieldDim theFD ) { if( theFD == FD_X ) @@ -550,6 +612,11 @@ FieldDim GLViewer_LineField::invertDim( FieldDim theFD ) return FD_X; } +/*! + \return line list + \param theIndex - index in list + \param tehFD - dimension +*/ GLViewer_LineList* GLViewer_LineField::getLine( int theIndex, FieldDim theFD ) { if( !myXLineArray || !myYLineArray ) @@ -573,6 +640,11 @@ GLViewer_LineList* GLViewer_LineField::getLine( int theIndex, FieldDim theFD ) return NULL; } +/*! + Sets borders of field + \param X1, X2 - minimal and maximal abscisses + \param Y1, Y2 - minimal and maximal ordinates +*/ void GLViewer_LineField::setBorders( double X1, double X2, double Y1, double Y2 ) { if( !myXLineArray || !myYLineArray ) @@ -593,6 +665,11 @@ void GLViewer_LineField::setBorders( double X1, double X2, double Y1, double Y2 } } +/*! + Adds rectangle + \param top, right - a corner of rectangle + \param bottom, left - other corner of rectangle +*/ void GLViewer_LineField::addRectangle( double top, double right, double bottom, double left ) { if( !myXLineArray || !myYLineArray ) @@ -612,6 +689,9 @@ void GLViewer_LineField::addRectangle( double top, double right, double bottom, } } +/*! + Prints debug info about line field +*/ void GLViewer_LineField::print() { cout << "My X matrix Number: " << myXSize << endl; @@ -623,6 +703,9 @@ void GLViewer_LineField::print() myYLineArray[j]->print(); } +/*! + Draws field with help of OpenGL +*/ void GLViewer_LineField::show() { for( int i = 0; i < myXSize; i++ ) @@ -644,6 +727,10 @@ void GLViewer_LineField::show() cout << "Show function" << endl; } +/*! + \return size + \param theDim - dimension +*/ int GLViewer_LineField::getDimSize( FieldDim theDim ) { if( theDim == FD_X ) @@ -654,6 +741,13 @@ int GLViewer_LineField::getDimSize( FieldDim theDim ) return -1; } +/*! + \return array of intersected indexes + \param theDim - dimension + \param theIndex - index + \param theLL - line with that intersection is checked + \param theSize - to return value of array size +*/ int* GLViewer_LineField::intersectIndexes( FieldDim theDim, int theIndex, const GLViewer_LineList* theLL, int& theSize ) { theSize = 0; @@ -678,7 +772,11 @@ int* GLViewer_LineField::intersectIndexes( FieldDim theDim, int theIndex, const return anArray; } - +/*! + Sets start/end search point + \param thePoint - type of point (start: FP_Start; end: FP_End ) + \param theX, theY - point co-ordinates +*/ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY ) { if( !myXLineArray || !myYLineArray ) @@ -730,6 +828,9 @@ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY return false; } +/*! + \return number of segments +*/ int GLViewer_LineField::segmentNumber() { if( !(myXLineArray || myYLineArray) ) @@ -743,6 +844,9 @@ int GLViewer_LineField::segmentNumber() return aNumber; } +/*! + Removes all multiple segments +*/ void GLViewer_LineField::optimize() { if( !myXLineArray || !myYLineArray ) @@ -790,6 +894,10 @@ void GLViewer_LineField::optimize() } } +/*! + Some prepare actions + Needs call setPoint before +*/ void GLViewer_LineField::initialize() { if( !myXLineArray || !myYLineArray ) @@ -843,6 +951,9 @@ void GLViewer_LineField::initialize() } } +/*! + One iteration of algorithm +*/ void GLViewer_LineField::iteration() { int aParam = myCurCount; @@ -874,6 +985,9 @@ void GLViewer_LineField::iteration() delete[] aNodes; } +/*! + Checks for complete status +*/ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete() { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -924,6 +1038,9 @@ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete() return IS_NOT_SOLVED; } +/*! + Finds LineList by counts and returns indexes +*/ int* GLViewer_LineField::findByCount( int& theParam ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -948,6 +1065,9 @@ int* GLViewer_LineField::findByCount( int& theParam ) return anArray; } +/*! + Finds LineList by segment and dimension +*/ int GLViewer_LineField::findBySegment( FieldDim theDim, int theLineIndex, int theSegment, bool inCurArray ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 || getDimSize( theDim ) <= theLineIndex ) @@ -969,6 +1089,9 @@ int GLViewer_LineField::findBySegment( FieldDim theDim, int theLineIndex, int th return -1; } +/*! + Main method, performs algorithm execution +*/ GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm() { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -990,6 +1113,9 @@ GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm() return ES_SOLVED; } +/*! + \return solution and size of solution +*/ double* GLViewer_LineField::solution( int& theSize ) { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -1033,6 +1159,9 @@ double* GLViewer_LineField::solution( int& theSize ) return anArray; } +/*! + \return current solution array +*/ GraphNode* GLViewer_LineField::getCurArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1044,6 +1173,9 @@ GraphNode* GLViewer_LineField::getCurArray() return myGraphArray2; } +/*! + \return other solution array +*/ GraphNode* GLViewer_LineField::getSecArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1055,6 +1187,9 @@ GraphNode* GLViewer_LineField::getSecArray() return myGraphArray1; } +/*! + \return maximum segment number +*/ int GLViewer_LineField::maxSegmentNum() { if( !myXLineArray || !myYLineArray ) @@ -1074,6 +1209,10 @@ int GLViewer_LineField::maxSegmentNum() return max_num; } +/*! + \return list of LileList by dimension + \param theDim - dimension +*/ GLViewer_LineList** GLViewer_LineField::getLLArray( FieldDim theDim ) { if( theDim == FD_X ) diff --git a/src/GLViewer/GLViewer_Tools.h b/src/GLViewer/GLViewer_Tools.h index 3acdd879b..65a640f0e 100644 --- a/src/GLViewer/GLViewer_Tools.h +++ b/src/GLViewer/GLViewer_Tools.h @@ -34,12 +34,10 @@ class GLViewer_LineField; -/**************************************************************************** -** Class: GLViewer_Tools -** Descr: Tools for Viewer -** Module: GLViewer -** Created: UI team, 27.10.05 -*****************************************************************************/ +/*! + \class GLViewer_Tools + Tools for Viewer +*/ class GLVIEWER_API GLViewer_Tools { public: @@ -57,7 +55,7 @@ enum FieldDim }; /*! - Class GLViewer_LineList + \class GLViewer_LineList Tools for distinct line This class implmented interface for segment operations: add, cut, remove and etc. @@ -122,9 +120,10 @@ struct SearchPoint int mySolveIndex; }; -/*! Class GLViewer_LineField -* Tools for solving algorithm of finding shortest path on rare grid with minimum of -* line turns number +/*! + \class GLViewer_LineField + Tools for solving algorithm of finding shortest path on rare grid with minimum of + line turns number */ class GLViewer_LineField { @@ -212,9 +211,9 @@ protected: //! Checks for complete status IterationStatus checkComplete(); - //! Finds LileList by counts and returns indexes + //! Finds LineList by counts and returns indexes int* findByCount( int& theParam ); - //! Finds LileList by segment and dimension + //! Finds LineList by segment and dimension int findBySegment( FieldDim, int coord1, int coord2, bool inCurArray = true ); //! Returns current solution array diff --git a/src/GLViewer/GLViewer_ViewFrame.cxx b/src/GLViewer/GLViewer_ViewFrame.cxx index a466d7b2f..7cc29afba 100644 --- a/src/GLViewer/GLViewer_ViewFrame.cxx +++ b/src/GLViewer/GLViewer_ViewFrame.cxx @@ -22,13 +22,6 @@ // 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 #include "GLViewer_ViewFrame.h" #include "GLViewer_Viewer.h" @@ -82,10 +75,9 @@ GLViewer_ViewFrame::~GLViewer_ViewFrame() { } -//================================================================ -// Function : createActions -// Purpose : -//================================================================ +/*! + Creates actions of GL view frame +*/ void GLViewer_ViewFrame::createActions() { if (!myActionsMap.isEmpty()) return; @@ -148,10 +140,9 @@ void GLViewer_ViewFrame::createActions() myActionsMap[ ResetId ] = aAction; } -//================================================================ -// Function : createToolBar -// Purpose : -//================================================================ +/*! + Creates toolbar of GL view frame +*/ void GLViewer_ViewFrame::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -248,7 +239,7 @@ QSize GLViewer_ViewFrame::sizeHint() const { QWidget* p = parentWidget(); if ( p && p->inherits( "QWorkspaceChild" ) ) - p = p->parentWidget(); /* QWorkspaceChild: internal impl class in QWorkspace */ + p = p->parentWidget(); if ( !p ) return QMainWindow::sizeHint(); return QSize( 9 * p->width() / 10 , 9 * p->height() / 10 ); @@ -263,6 +254,9 @@ void GLViewer_ViewFrame::onUpdate( int ) //#include +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void GLViewer_ViewFrame::onViewDump() { GLViewer_Widget* aWidget = ((GLViewer_ViewPort2d*)myVP)->getGLWidget(); @@ -448,50 +442,73 @@ void GLViewer_ViewFrame::onViewDump() } } +/*! + Start panning +*/ void GLViewer_ViewFrame::onViewPan() { myViewer->activateTransform( GLViewer_Viewer::Pan ); } +/*! + Start zooming +*/ void GLViewer_ViewFrame::onViewZoom() { myViewer->activateTransform( GLViewer_Viewer::Zoom ); } +/*! + Start fit all +*/ void GLViewer_ViewFrame::onViewFitAll() { myViewer->activateTransform( GLViewer_Viewer::FitAll ); } +/*! + Start fit area +*/ void GLViewer_ViewFrame::onViewFitArea() { myViewer->activateTransform( GLViewer_Viewer::FitRect ); } +/*! + Start fit selected +*/ void GLViewer_ViewFrame::onViewFitSelect() { myViewer->activateTransform( GLViewer_Viewer::FitSelect ); } +/*! + Start global panning +*/ void GLViewer_ViewFrame::onViewGlobalPan() { myViewer->activateTransform( GLViewer_Viewer::PanGlobal ); } +/*! + Start rotating +*/ void GLViewer_ViewFrame::onViewRotate() { //myViewer->activateTransform( GLViewer_Viewer::Rotate ); } +/*! + Start reset default view aspects +*/ void GLViewer_ViewFrame::onViewReset() { myViewer->activateTransform( GLViewer_Viewer::Reset ); } - -//================================================================ -// Function : mouseEvent -// Purpose : dispatches mouse events -//================================================================ + +/*! + Dispatches mouse events +*/ void GLViewer_ViewFrame::mouseEvent( QMouseEvent* e ) { switch ( e->type() ) @@ -513,10 +530,9 @@ void GLViewer_ViewFrame::mouseEvent( QMouseEvent* e ) } } -//================================================================ -// Function : keyEvent -// Purpose : dispatches key events -//================================================================ +/*! + Dispatches key events +*/ void GLViewer_ViewFrame::keyEvent( QKeyEvent* e ) { switch ( e->type() ) @@ -532,10 +548,9 @@ void GLViewer_ViewFrame::keyEvent( QKeyEvent* e ) } } -//================================================================ -// Function : wheelEvent -// Purpose : dispatches wheel events -//================================================================ +/*! + Dispatches wheel events +*/ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e ) { switch ( e->type() ) @@ -548,8 +563,9 @@ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e ) } } -/*! 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; @@ -563,8 +579,9 @@ QString GLViewer_ViewFrame::getVisualParameters() 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 ); diff --git a/src/GLViewer/GLViewer_ViewFrame.h b/src/GLViewer/GLViewer_ViewFrame.h index 8b9267a42..d2686dfc6 100644 --- a/src/GLViewer/GLViewer_ViewFrame.h +++ b/src/GLViewer/GLViewer_ViewFrame.h @@ -22,12 +22,6 @@ // File: GLViewer_ViewFrame.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewFrame -** Descr: Frame window for viewport in QAD-based application -** Module: QAD -** Created: UI team, 05.09.00 -****************************************************************************/ #ifndef GLVIEWER_VIEWFRAME_H #define GLVIEWER_VIEWFRAME_H @@ -47,8 +41,9 @@ class GLViewer_ViewPort; #pragma warning( disable:4251 ) #endif -/*! Class GLViewer_ViewFrame -* Frame window for viewport in GLViewer +/*! + \class GLViewer_ViewFrame + Frame window for viewport in QAD-based application */ class GLVIEWER_API GLViewer_ViewFrame: public SUIT_ViewWindow diff --git a/src/GLViewer/GLViewer_ViewManager.cxx b/src/GLViewer/GLViewer_ViewManager.cxx index 91150147a..2083ff4d5 100644 --- a/src/GLViewer/GLViewer_ViewManager.cxx +++ b/src/GLViewer/GLViewer_ViewManager.cxx @@ -30,7 +30,7 @@ int GLViewer_ViewManager::myMaxId = 0; -//*************************************************************** +/*!Constructor.*/ GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop ) : SUIT_ViewManager( theStudy, theDesktop ) { @@ -38,19 +38,19 @@ GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* setViewModel( new GLViewer_Viewer2d( "GLViewer" ) ); } -//*************************************************************** +/*!Destructor.*/ GLViewer_ViewManager::~GLViewer_ViewManager() { } -//*************************************************************** +/*!Sets view name for view window \a theView.*/ void GLViewer_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( QString( "GL scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1)); } -//*************************************************************** +/*!Context menu popup for \a popup.*/ void GLViewer_ViewManager::contextMenuPopup( QPopupMenu* popup ) { SUIT_ViewManager::contextMenuPopup( popup ); diff --git a/src/GLViewer/GLViewer_ViewPort.cxx b/src/GLViewer/GLViewer_ViewPort.cxx index 78767afa1..b6416e9c6 100644 --- a/src/GLViewer/GLViewer_ViewPort.cxx +++ b/src/GLViewer/GLViewer_ViewPort.cxx @@ -22,13 +22,6 @@ // 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 #if !(defined WNT) && !(defined QT_CLEAN_NAMESPACE) @@ -60,6 +53,11 @@ #include #include +/*! + \struct CMapEntry + Map of indexed colors + For internal purposes +*/ struct CMapEntry { CMapEntry(); @@ -69,6 +67,9 @@ struct CMapEntry XStandardColormap scmap; }; +/*! + Constructor +*/ CMapEntry::CMapEntry() { cmap = 0; @@ -76,6 +77,9 @@ CMapEntry::CMapEntry() scmap.colormap = 0; } +/*! + Destructor +*/ CMapEntry::~CMapEntry() { if ( alloc ) @@ -587,6 +591,9 @@ void GLViewer_ViewPort::onChangeBgColor() setBackgroundColor( selColor ); } +/*! + Custom context menu event handler +*/ void GLViewer_ViewPort::contextMenuEvent( QContextMenuEvent* e ) { //if ( e->reason() != QContextMenuEvent::Mouse ) diff --git a/src/GLViewer/GLViewer_ViewPort.h b/src/GLViewer/GLViewer_ViewPort.h index 02ef4edaf..3174121d1 100644 --- a/src/GLViewer/GLViewer_ViewPort.h +++ b/src/GLViewer/GLViewer_ViewPort.h @@ -22,11 +22,6 @@ // File: GLViewer_ViewPort.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_ViewPort -** Descr: Visualisation canvas of GLViewer -** Created: UI team, 05.09.04 -****************************************************************************/ #ifndef GLVIEWER_VIEWPORT_H #define GLVIEWER_VIEWPORT_H @@ -57,10 +52,10 @@ enum BlockStatus BS_Dragging = 0x0004 }; -/*! - * Class GLViewer_ViewPort - * Visualisation canvas of GLViewer - */ +/*! + \class GLViewer_ViewPort + Visualisation canvas of GLViewer +*/ class GLVIEWER_API GLViewer_ViewPort: public QWidget { Q_OBJECT diff --git a/src/GLViewer/GLViewer_ViewPort2d.cxx b/src/GLViewer/GLViewer_ViewPort2d.cxx index 17d9d68da..a81bc0763 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.cxx +++ b/src/GLViewer/GLViewer_ViewPort2d.cxx @@ -63,6 +63,9 @@ void rotate_point( float& theX, float& theY, float theAngle ) theY = aTempY; } +/*! + Constructor +*/ GLViewer_ViewPort2d::GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* theViewFrame ) : GLViewer_ViewPort( parent ), myMargin( MARGIN ), myWidth( WIDTH ), myHeight( HEIGHT ), @@ -105,6 +108,9 @@ GLViewer_ViewPort2d::GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* t // myGLWidget->installEventFilter( myObjectTip ); } +/*! + Destructor +*/ GLViewer_ViewPort2d::~GLViewer_ViewPort2d() { if( myCompass ) @@ -117,6 +123,9 @@ GLViewer_ViewPort2d::~GLViewer_ViewPort2d() delete myGLWidget; } +/*! + SLOT: initializes drag process +*/ void GLViewer_ViewPort2d::onStartDragObject( ) { if( myIsDragProcess == noDrag ) @@ -132,6 +141,9 @@ void GLViewer_ViewPort2d::onStartDragObject( ) } } +/*! + SLOT: cuts object to clipboard +*/ void GLViewer_ViewPort2d::onCutObject() { /*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject(); @@ -167,6 +179,9 @@ void GLViewer_ViewPort2d::onCutObject() } } +/*! + SLOT: copies object to clipboard +*/ void GLViewer_ViewPort2d::onCopyObject() { /*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject(); @@ -198,6 +213,9 @@ void GLViewer_ViewPort2d::onCopyObject() } } +/*! + SLOT: pastes object from clipboard +*/ void GLViewer_ViewPort2d::onPasteObject() { /*QClipboard *aClipboard = QApplication::clipboard(); @@ -243,6 +261,9 @@ void GLViewer_ViewPort2d::onPasteObject() */ } +/*! + SLOT: called when object is being dragged +*/ void GLViewer_ViewPort2d::onDragObject( QMouseEvent* e ) { //cout << "---GLViewer_ViewPort2d::onDragObject()---" << endl; @@ -401,6 +422,9 @@ void GLViewer_ViewPort2d::mouseReleaseEvent( QMouseEvent* e ) } } +/*! + Custom mouse double click event handler +*/ void GLViewer_ViewPort2d::mouseDoubleClickEvent( QMouseEvent * e ) { //redefined to block mouse release after mouse double click @@ -409,6 +433,10 @@ void GLViewer_ViewPort2d::mouseDoubleClickEvent( QMouseEvent * e ) GLViewer_ViewPort::mouseDoubleClickEvent( e ); } +/*! + Creates or deletes compass + \param on - if it is true, then to create +*/ void GLViewer_ViewPort2d::turnCompass( GLboolean on ) { if( on ) @@ -417,6 +445,10 @@ void GLViewer_ViewPort2d::turnCompass( GLboolean on ) delete myCompass; } +/*! + Creates or deletes grid + \param on - if it is true, then to create +*/ void GLViewer_ViewPort2d::turnGrid( GLboolean on ) { if( on ) @@ -431,6 +463,11 @@ void GLViewer_ViewPort2d::turnGrid( GLboolean on ) delete myGrid; } +/*! + Changes grid color + \param gridColor - new grid color + \param axisColor - new axis color +*/ void GLViewer_ViewPort2d::setGridColor( const QColor gridColor, const QColor axisColor ) { if( myGrid ) @@ -444,6 +481,10 @@ void GLViewer_ViewPort2d::setGridColor( const QColor gridColor, const QColor axi } } +/*! + Changes background color + \param color - new background color +*/ void GLViewer_ViewPort2d::setBackgroundColor( const QColor& color ) { GLViewer_ViewPort::setBackgroundColor( color ); @@ -454,11 +495,17 @@ void GLViewer_ViewPort2d::setBackgroundColor( const QColor& color ) myGLWidget->repaint(); } +/*! + \return background color +*/ QColor GLViewer_ViewPort2d::backgroundColor() const { return GLViewer_ViewPort::backgroundColor(); } +/*! + Resize view +*/ void GLViewer_ViewPort2d::initResize( int x, int y ) { float xa, xb, ya, yb; @@ -509,6 +556,9 @@ void GLViewer_ViewPort2d::initResize( int x, int y ) myGLWidget->setScale( myXScale, myYScale, 1.0 ); } +/*! + Custom paint event handler +*/ void GLViewer_ViewPort2d::paintEvent( QPaintEvent* e ) { //cout << "GLViewer_ViewPort2d::paintEvent" << endl; @@ -516,12 +566,18 @@ void GLViewer_ViewPort2d::paintEvent( QPaintEvent* e ) GLViewer_ViewPort::paintEvent( e ); } +/*! + Custom resize event handler +*/ void GLViewer_ViewPort2d::resizeEvent( QResizeEvent* e ) { //cout << "GLViewer_ViewPort2d::resizeEvent" << endl; GLViewer_ViewPort::resizeEvent( e ); } +/*! + Resets view to start state +*/ void GLViewer_ViewPort2d::reset() { //cout << "GLViewer_ViewPort2d::reset" << endl; @@ -557,6 +613,11 @@ void GLViewer_ViewPort2d::reset() myGLWidget->updateGL(); } +/*! + Sets offset to view + \param dx - X offset + \param dy - Y offset +*/ void GLViewer_ViewPort2d::pan( int dx, int dy ) { //cout << "GLViewer_ViewPort2d::pan " << dx << " " << dy << endl; @@ -588,6 +649,10 @@ void GLViewer_ViewPort2d::pan( int dx, int dy ) myGLWidget->updateGL(); } +/*! + Sets view center in global coords + \param x, y - global co-ordinates of center +*/ void GLViewer_ViewPort2d::setCenter( int x, int y ) { //cout << "GLViewer_ViewPort2d::setCenter" << endl; @@ -617,6 +682,9 @@ void GLViewer_ViewPort2d::setCenter( int x, int y ) myGLWidget->updateGL(); } +/*! + Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 ) +*/ void GLViewer_ViewPort2d::zoom( int x0, int y0, int x, int y ) { //cout << "GLViewer_ViewPort2d::zoom" << endl; @@ -659,6 +727,10 @@ void GLViewer_ViewPort2d::zoom( int x0, int y0, int x, int y ) } } +/*! + Transforms view by rectangle + \param rect - rectangle +*/ void GLViewer_ViewPort2d::fitRect( const QRect& rect ) { float x0, x1, y0, y1; @@ -711,6 +783,9 @@ void GLViewer_ViewPort2d::fitRect( const QRect& rect ) myGLWidget->updateGL(); } +/*! + Transforms view by selection +*/ void GLViewer_ViewPort2d::fitSelect() { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -732,6 +807,10 @@ void GLViewer_ViewPort2d::fitSelect() } } +/*! + Transform view by view borders + \param keepScale - if it is true, zoom does not change +*/ void GLViewer_ViewPort2d::fitAll( bool keepScale, bool withZ ) { //cout << "GLViewer_ViewPort2d::fitAll" << endl; @@ -820,11 +899,19 @@ void GLViewer_ViewPort2d::fitAll( bool keepScale, bool withZ ) emit vpUpdateValues(); } +/*! + Begins rotation + \param x, y - start point +*/ void GLViewer_ViewPort2d::startRotation( int x, int y ) { myGLWidget->setRotationStart( x, y, 1.0 ); } +/*! + Performs rotation + \param intX, intY - current point +*/ void GLViewer_ViewPort2d::rotate( int intX, int intY ) { GLint val[4]; @@ -871,6 +958,9 @@ void GLViewer_ViewPort2d::rotate( int intX, int intY ) myGLWidget->updateGL(); } +/*! + Finishes rotation +*/ void GLViewer_ViewPort2d::endRotation() { float ra, rx, ry, rz; @@ -878,6 +968,9 @@ void GLViewer_ViewPort2d::endRotation() myGLWidget->setRotationAngle( ra ); } +/*! + Draws compass +*/ void GLViewer_ViewPort2d::drawCompass() { if( !myCompass->getVisible() ) @@ -1038,6 +1131,9 @@ void GLViewer_ViewPort2d::drawCompass() glCallList( aTextList ); } +/*! + \return blocking status for current started operations +*/ BlockStatus GLViewer_ViewPort2d::currentBlock() { if( myIsDragProcess == inDrag && myCurDragPosX != NULL && myCurDragPosY != NULL) @@ -1049,6 +1145,10 @@ BlockStatus GLViewer_ViewPort2d::currentBlock() return BS_NoBlock; } +/*! + Initializes rectangle selection + \param x, y - start point +*/ void GLViewer_ViewPort2d::startSelectByRect( int x, int y ) { if( !mypFirstPoint && !mypLastPoint ) @@ -1057,6 +1157,11 @@ void GLViewer_ViewPort2d::startSelectByRect( int x, int y ) mypLastPoint = new QPoint( x, y ); } } + +/*! + Draws rectangle selection + \param x, y - current point +*/ void GLViewer_ViewPort2d::drawSelectByRect( int x, int y ) { if( mypFirstPoint && mypLastPoint ) @@ -1075,6 +1180,10 @@ void GLViewer_ViewPort2d::drawSelectByRect( int x, int y ) } } + +/*! + Finishes rectangle selection +*/ void GLViewer_ViewPort2d::finishSelectByRect() { if( mypFirstPoint && mypLastPoint ) @@ -1094,6 +1203,9 @@ void GLViewer_ViewPort2d::finishSelectByRect() } } +/*! + \return rectangle selection +*/ QRect GLViewer_ViewPort2d::selectionRect() { QRect aRect; @@ -1108,6 +1220,8 @@ QRect GLViewer_ViewPort2d::selectionRect() return aRect; } +/*! +*/ bool GLViewer_ViewPort2d::startPulling( GLViewer_Pnt point ) { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -1131,6 +1245,8 @@ bool GLViewer_ViewPort2d::startPulling( GLViewer_Pnt point ) return false; } +/*! +*/ void GLViewer_ViewPort2d::drawPulling( GLViewer_Pnt point ) { GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer(); @@ -1156,6 +1272,8 @@ void GLViewer_ViewPort2d::drawPulling( GLViewer_Pnt point ) myPullingObject->pull( point, aLockedObject ); } +/*! +*/ void GLViewer_ViewPort2d::finishPulling() { myIsPulling = false; @@ -1163,6 +1281,10 @@ void GLViewer_ViewPort2d::finishPulling() setCursor( *getDefaultCursor() ); } +/*! + Convert rectangle in window co-ordinates to GL co-ordinates + \return converted rectangle +*/ GLViewer_Rect GLViewer_ViewPort2d::win2GLV( const QRect& theRect ) const { GLViewer_Rect aRect; @@ -1189,6 +1311,10 @@ GLViewer_Rect GLViewer_ViewPort2d::win2GLV( const QRect& theRect ) const return aRect; } +/*! + Convert rectangle in GL co-ordinates to window co-ordinates + \return converted rectangle +*/ QRect GLViewer_ViewPort2d::GLV2win( const GLViewer_Rect& theRect ) const { QRect aRect; @@ -1215,6 +1341,9 @@ QRect GLViewer_ViewPort2d::GLV2win( const GLViewer_Rect& theRect ) const return aRect; } +/*! + SLOT: called when tooltip should be shown +*/ void GLViewer_ViewPort2d::onMaybeTip( QPoint thePoint, QString& theText, QFont& theFont, QRect& theTextReg, QRect& theRegion ) { GLViewer_Context* aContext = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext(); diff --git a/src/GLViewer/GLViewer_ViewPort2d.h b/src/GLViewer/GLViewer_ViewPort2d.h index 128cdbe06..4c39051ce 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.h +++ b/src/GLViewer/GLViewer_ViewPort2d.h @@ -178,7 +178,7 @@ protected: virtual void setCenter( int x, int y ); //! Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 ) virtual void zoom( int x0, int y0, int x1, int y1 ); - //! Transforms view by certangle + //! Transforms view by rectangle virtual void fitRect( const QRect& ); //! Transforms view by selection virtual void fitSelect(); diff --git a/src/GLViewer/GLViewer_Viewer.cxx b/src/GLViewer/GLViewer_Viewer.cxx index 9ca9ed73e..78a16398f 100644 --- a/src/GLViewer/GLViewer_Viewer.cxx +++ b/src/GLViewer/GLViewer_Viewer.cxx @@ -22,13 +22,6 @@ // 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 #include "GLViewer_Viewer.h" #include "GLViewer_Selector.h" @@ -66,10 +59,10 @@ GLViewer_Viewer::~GLViewer_Viewer() delete mySelector; } -//================================================================ -// Function : setViewManager -// Purpose : -//================================================================ +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void GLViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -89,10 +82,9 @@ void GLViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) } } -//================================================================ -// Function : contextMenuPopup -// Purpose : -//================================================================ +/*! + Builds popup for GL viewer +*/ void GLViewer_Viewer::contextMenuPopup( QPopupMenu* thePopup ) { if( thePopup->count() > 0 ) @@ -530,10 +522,6 @@ void GLViewer_Viewer::handleWheel( QWheelEvent* e ) startOperations( e ); } -/**************************************************************** -** Class: GLViewer_ViewTransformer -** Level: Public -*****************************************************************/ int GLViewer_ViewTransformer::panBtn = Qt::MidButton; int GLViewer_ViewTransformer::zoomBtn = Qt::LeftButton; int GLViewer_ViewTransformer::fitRectBtn = Qt::LeftButton; @@ -758,10 +746,6 @@ int GLViewer_ViewTransformer::type() const } -/**************************************************************** -** Class: GLViewer_ViewSketcher -** Level: Public -*****************************************************************/ int GLViewer_ViewSketcher::sketchBtn = LeftButton; /*! diff --git a/src/GLViewer/GLViewer_Viewer.h b/src/GLViewer/GLViewer_Viewer.h index dfd16c2fa..fa6a36f35 100644 --- a/src/GLViewer/GLViewer_Viewer.h +++ b/src/GLViewer/GLViewer_Viewer.h @@ -46,9 +46,9 @@ class SUIT_ViewWindow; #endif /*! - * Class GLViewer_Object - * Base Viewer for GLViewer - */ + \class GLViewer_Object + Base Viewer for GLViewer +*/ class GLVIEWER_API GLViewer_Viewer: public SUIT_ViewModel { Q_OBJECT @@ -128,10 +128,6 @@ protected: GLViewer_ViewTransformer* myTransformer; /* transform manipulator */ }; -/**************************************************************** -** Class: GLViewer_ViewTransformer -** -*****************************************************************/ class GLVIEWER_API GLViewer_ViewTransformer : public QObject { public: @@ -188,10 +184,6 @@ protected: int myMajorBtn; }; -/**************************************************************** -** Class: GLViewer_ViewSketcher -** -*****************************************************************/ class GLVIEWER_API GLViewer_ViewSketcher : public QObject { public: diff --git a/src/GLViewer/GLViewer_Viewer2d.cxx b/src/GLViewer/GLViewer_Viewer2d.cxx index f98f5e2ae..77fdf4972 100644 --- a/src/GLViewer/GLViewer_Viewer2d.cxx +++ b/src/GLViewer/GLViewer_Viewer2d.cxx @@ -22,13 +22,6 @@ // File: GLViewer_Viewer2d.cxx // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_Viewer2d -** Descr: OpenGL Viewer 2D -** Module: GLViewer -** Created: UI team, 04.09.02 -****************************************************************************/ - //#include #include "GLViewer_Viewer2d.h" #include "GLViewer_Object.h" @@ -50,6 +43,10 @@ #include #include +/*! + Constructor + \param title - viewer title +*/ GLViewer_Viewer2d::GLViewer_Viewer2d( const QString& title) : GLViewer_Viewer( title ) { @@ -64,6 +61,9 @@ GLViewer_Viewer( title ) myDrawers.clear(); } +/*! + Destructor +*/ GLViewer_Viewer2d::~GLViewer_Viewer2d() { //myGLSketcher = 0; @@ -71,11 +71,18 @@ GLViewer_Viewer2d::~GLViewer_Viewer2d() GLViewer_TexFont::clearTextBases(); } +/*!Create new instance of view window on desktop \a theDesktop. + *\retval SUIT_ViewWindow* - created view window pointer. + */ SUIT_ViewWindow* GLViewer_Viewer2d::createView( SUIT_Desktop* theDesktop ) { return new GLViewer_ViewFrame( theDesktop, this ); } +/*! + Adds item for change background color + \param thePopup - menu +*/ void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup ) { // CTH8434. "Change background color" menu item is available if there are no selected objects @@ -87,6 +94,9 @@ void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup ) } } +/*! + Changes background color +*/ void GLViewer_Viewer2d::onChangeBgColor() { if( !getActiveView() ) @@ -99,6 +109,9 @@ void GLViewer_Viewer2d::onChangeBgColor() } } +/*! + Updates colors for all drawers (does not work) +*/ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) { // cout << "GLViewer_Viewer2d::updateColors" << endl; @@ -126,6 +139,10 @@ void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS ) activateAllDrawers( TRUE ); } +/*! + Updates rect of global scene by adding new rectangle + \param theRect - rectangle +*/ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) { QPtrVector views = getViewManager()->getViews(); @@ -140,6 +157,9 @@ void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect ) } } +/*! + Recomputes global scene rect +*/ void GLViewer_Viewer2d::updateBorders() { QPtrVector views = getViewManager()->getViews(); @@ -178,6 +198,9 @@ void GLViewer_Viewer2d::updateBorders() } } +/*! + Redraws all active objects by updating all drawers in all views +*/ void GLViewer_Viewer2d::updateAll() { if ( !getActiveView() ) @@ -188,6 +211,9 @@ void GLViewer_Viewer2d::updateAll() ( ( GLViewer_ViewPort2d* )( ( GLViewer_ViewFrame* )views[i] )->getViewPort() )->getGLWidget()->updateGL(); } +/*! + \param onlyUpdate is passed to method activateAllDrawers drawers +*/ void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat scY ) { // cout << "GLViewer_Viewer2d::updateDrawers" << endl; @@ -197,6 +223,9 @@ void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat sc activateAllDrawers( update ); } +/*! + Activates drawers for objects from list \param theObjects only +*/ void GLViewer_Viewer2d::activateDrawers( QValueList& theObjects, bool onlyUpdate, GLboolean swap ) { //cout << "GLViewer_Viewer2d::activateDrawers " << (int)onlyUpdate << " " << (int)swap << endl; @@ -282,6 +311,9 @@ void GLViewer_Viewer2d::activateDrawers( QValueList& theObject ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent(); } +/*! + Activates drawer for \param theObject +*/ void GLViewer_Viewer2d::activateDrawer( GLViewer_Object* theObject, bool onlyUpdate, GLboolean swap ) { ObjList aList; @@ -289,6 +321,9 @@ void GLViewer_Viewer2d::activateDrawer( GLViewer_Object* theObject, bool onlyUpd activateDrawers( aList, onlyUpdate, swap ); } +/*! + \param onlyUpdate is passed to drawers +*/ void GLViewer_Viewer2d::activateAllDrawers( bool onlyUpdate, GLboolean swap ) { if ( !getActiveView() ) @@ -306,6 +341,11 @@ void GLViewer_Viewer2d::activateAllDrawers( bool onlyUpdate, GLboolean swap ) activateDrawers( anActiveObjs, onlyUpdate, swap ); } +/*! + Creates set of marker + \param theMarkersNum - number of markers + \param theMarkersRad - radius of markers +*/ void GLViewer_Viewer2d::onCreateGLMarkers( int theMarkersNum, int theMarkersRad ) { if ( !getActiveView() ) @@ -341,6 +381,12 @@ void GLViewer_Viewer2d::onCreateGLMarkers( int theMarkersNum, int theMarkersRad delete[] anYCoord; } +/*! + Creates GL polyline + \param theAnglesNum - number of angles + \param theRadius - radius + \param thePolylineNumber - number +*/ void GLViewer_Viewer2d::onCreateGLPolyline( int theAnglesNum, int theRadius, int thePolylineNumber ) { if ( !getActiveView() ) @@ -384,6 +430,11 @@ void GLViewer_Viewer2d::onCreateGLPolyline( int theAnglesNum, int theRadius, int delete[] anYCoord; } +/*! + Creates text + \param theStr - text string + \param theTextNumber - number +*/ void GLViewer_Viewer2d::onCreateGLText( QString theStr, int theTextNumber ) { if ( !getActiveView() ) @@ -414,6 +465,10 @@ void GLViewer_Viewer2d::onCreateGLText( QString theStr, int theTextNumber ) activateAllDrawers( false ); } +/*! + Translates point from global CS to curreent viewer CS + \param x, y - co-ordinates to be translated +*/ void GLViewer_Viewer2d::transPoint( GLfloat& x, GLfloat& y ) { if ( !getActiveView() ) @@ -442,6 +497,10 @@ void GLViewer_Viewer2d::transPoint( GLfloat& x, GLfloat& y ) y -= yPan; } +/*! + \return object rect in window CS + \param theObject - object +*/ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) { if ( !getActiveView() ) @@ -497,6 +556,11 @@ QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject ) return newRect; } +/*! + Translates rect in window CS to rect in global CS + \param theRect - rectangle to be translated + \return transformed rect +*/ GLViewer_Rect GLViewer_Viewer2d::getGLVRect( const QRect& theRect ) const { if ( !getActiveView() ) @@ -510,6 +574,11 @@ GLViewer_Rect GLViewer_Viewer2d::getGLVRect( const QRect& theRect ) const return vp->win2GLV( theRect ); } +/*! + Translates rect in global CS to rect in window CS + \param theRect - rectangle to be translated + \return transformed rect +*/ QRect GLViewer_Viewer2d::getQRect( const GLViewer_Rect& theRect ) const { if ( !getActiveView() ) @@ -523,87 +592,25 @@ QRect GLViewer_Viewer2d::getQRect( const GLViewer_Rect& theRect ) const return vp->GLV2win( theRect ); } +/*! + \return new selector +*/ GLViewer_Selector* GLViewer_Viewer2d::createSelector() { return new GLViewer_Selector2d( this, getGLContext() ); } +/*! + \return new Transformer + \param type - type of new transformer +*/ GLViewer_ViewTransformer* GLViewer_Viewer2d::createTransformer( int type ) { return new GLViewer_View2dTransformer( this, type ); } -/* -GLViewer_Sketcher* GLViewer_Viewer2d::createGLSketcher( int type ) -{ - return new GLViewer_Sketcher( this, type ); -} -void GLViewer_Viewer2d::activateGLSketching( int type ) -{ - GLViewer_ViewPort2d* vp = 0; - if ( !getActiveView() || !( vp = ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() ) ) - return; - - // Finish current sketching - if ( type == None ) - { - if ( myGLSketcher->getType() != None ) - { - myGLSketcher->setType( None ); - finishSketching(); - } - } - // Activate new sketching - else - { - activateGLSketching( None ); // concurrency not supported - myGLSketcher->setType( type ); - startSketching(); - } -} - -void GLViewer_Viewer2d::startSketching() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getSketchCursor() ); - //avp->enablePopup( false ); - myGLSketcher->startSketching(); -} - -void GLViewer_Viewer2d::finishSketching() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getDefaultCursor() ); - //avp->enablePopup( true ); - myGLSketcher->finishSketching(); -} - -bool GLViewer_Viewer2d::isSketchingActive() -{ - return myGLSketcher->getType() != None; -} - -int GLViewer_Viewer2d::getSketchingType() -{ - return myGLSketcher->getType(); -} - -void GLViewer_Viewer2d::onSketchDelObject() -{ - GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort(); - avp->setCursor( *avp->getDefaultCursor() ); - myGLSketcher->finishSketching( true ); -} - -void GLViewer_Viewer2d::onSketchUndoLast() -{ - -} - -void GLViewer_Viewer2d::onSketchFinish() -{ - finishSketching(); -} +/*! + Custom mouse event handler */ void GLViewer_Viewer2d::onMouseEvent( SUIT_ViewWindow*, QMouseEvent* e ) { @@ -626,6 +633,9 @@ void GLViewer_Viewer2d::onMouseEvent( SUIT_ViewWindow*, QMouseEvent* e ) GLViewer_Viewer::onMouseEvent( 0, e ); } +/*! + Rotation transformation +*/ bool GLViewer_Viewer2d::testRotation( QMouseEvent* e ) { if ( ( e->button() == GLViewer_View2dTransformer::rotateButton() ) && @@ -638,7 +648,11 @@ bool GLViewer_Viewer2d::testRotation( QMouseEvent* e ) return false; } - +/*! + Inserts text lines as header for file + \param aType - file type + \param hFile - file instance +*/ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) { if( aType == POST_SCRIPT ) @@ -671,6 +685,11 @@ void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile ) } } +/*! + Inserts text lines as ending for file + \param aType - file type + \param hFile - file instance +*/ void GLViewer_Viewer2d::insertEnding( VectorFileType aType, QFile& hFile ) { if( aType == POST_SCRIPT ) @@ -698,6 +717,13 @@ inline void mm2custom( GLViewer_Viewer2d::VectorFileType aType, double& value ) #endif } +/*! + Translates current view content to vector file + \param aType - type of file + \param FileName - name of file, + \param aPType - paper size type + \param mmLeft, mmRight, mmTop, mmBottom - margins +*/ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, PaperType aPType, double mmLeft, double mmRight, double mmTop, double mmBottom ) { @@ -821,7 +847,10 @@ bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, Pap return true; } - +/*! + Repaints view + \param theView - view to be repainted. If it is NULL then all views will be repainted +*/ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurrent ) { GLViewer_ViewFrame* aCurView; @@ -897,6 +926,9 @@ void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurre // ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent(); } +/*! + Starts some operation on mouse event +*/ void GLViewer_Viewer2d::startOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -913,6 +945,9 @@ void GLViewer_Viewer2d::startOperations( QMouseEvent* e ) vp->startSelectByRect( e->x(), e->y() ); } +/*! + Updates started operation on mouse event +*/ bool GLViewer_Viewer2d::updateOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -936,6 +971,9 @@ bool GLViewer_Viewer2d::updateOperations( QMouseEvent* e ) return false; } +/*! + Completes started operation on mouse event +*/ void GLViewer_Viewer2d::finishOperations( QMouseEvent* e ) { GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort(); @@ -959,6 +997,9 @@ void GLViewer_Viewer2d::finishOperations( QMouseEvent* e ) } } +/*! + Starts some operation on mouse wheel event +*/ void GLViewer_Viewer2d::startOperations( QWheelEvent* e ) { bool zoomIn = e->delta() > 0; @@ -976,13 +1017,11 @@ void GLViewer_Viewer2d::startOperations( QWheelEvent* e ) } -/**************************************************************** -** Class: GLViewer_View2dTransformer -** -*****************************************************************/ - int GLViewer_View2dTransformer::rotateBtn = RightButton; +/*! + Constructor +*/ GLViewer_View2dTransformer::GLViewer_View2dTransformer( GLViewer_Viewer* viewer, int typ ) : GLViewer_ViewTransformer( viewer, typ ) { @@ -990,6 +1029,9 @@ GLViewer_View2dTransformer::GLViewer_View2dTransformer( GLViewer_Viewer* viewer, initTransform( true ); } +/*! + Destructor +*/ GLViewer_View2dTransformer::~GLViewer_View2dTransformer() { if ( type() == GLViewer_Viewer::Rotate ) diff --git a/src/GLViewer/GLViewer_Viewer2d.h b/src/GLViewer/GLViewer_Viewer2d.h index 21840335f..3682633e1 100644 --- a/src/GLViewer/GLViewer_Viewer2d.h +++ b/src/GLViewer/GLViewer_Viewer2d.h @@ -22,12 +22,6 @@ // File: GLViewer_Viewer2d.h // Created: November, 2004 -/*************************************************************************** -** Class: GLViewer_Viewer2d -** Descr: OpenGL Viewer 2D -** Module: GLViewer -** Created: UI team, 04.09.04 -****************************************************************************/ #ifndef GLVIEWER_VIEWER2D_H #define GLVIEWER_VIEWER2D_H @@ -68,10 +62,11 @@ const double Sizes[2*5] = { #pragma warning( disable:4251 ) #endif -/*! - * Class GLViewer_Object - * 2D viewer for GLViewer - */ +/*! + \class GLViewer_Viewer2d + OpenGL Viewer 2D +*/ + class GLVIEWER_API GLViewer_Viewer2d : public GLViewer_Viewer { Q_OBJECT @@ -234,10 +229,6 @@ protected: //GLViewer_Sketcher* myGLSketcher; }; -/**************************************************************** -** Class: GLViewer_View2dTransformer -** -*****************************************************************/ class GLVIEWER_API GLViewer_View2dTransformer : public GLViewer_ViewTransformer { public: diff --git a/src/GLViewer/GLViewer_Widget.cxx b/src/GLViewer/GLViewer_Widget.cxx index b29a9fb52..616e57546 100644 --- a/src/GLViewer/GLViewer_Widget.cxx +++ b/src/GLViewer/GLViewer_Widget.cxx @@ -22,11 +22,6 @@ // File: GLViewer_Widget.cxx // Created: November, 2004 -//================================================================ -// Class : GLViewer_Widget -// Description : OpenGL QWidget for GLViewer -//================================================================ - #include "GLViewer_Widget.h" #include "GLViewer_ViewPort2d.h" #include "GLViewer_Viewer2d.h" @@ -49,10 +44,10 @@ using namespace std; #include #include -//======================================================================= -// Function: GLViewer_Widget -// Purpose : -//======================================================================= +/*! + A constructor + Parameters using for QOGLWidget as is +*/ GLViewer_Widget::GLViewer_Widget( QWidget* parent, const char* name ): QGLWidget( parent, 0/*, WRepaintNoErase | WResizeNoErase*/ ) { @@ -78,18 +73,16 @@ QGLWidget( parent, 0/*, WRepaintNoErase | WResizeNoErase*/ ) setMouseTracking( true ); } -//======================================================================= -// Function: GLViewer_Widget -// Purpose : -//======================================================================= +/*! + Destructor +*/ GLViewer_Widget::~GLViewer_Widget() { } -//======================================================================= -// Function: ~GLViewer_Widget -// Purpose : -//======================================================================= +/*! + \return offset parameters of Window in OpenGL global scene +*/ void GLViewer_Widget::getPan( GLfloat& xPan, GLfloat& yPan, GLfloat& zPan ) { xPan = myXPan; @@ -97,10 +90,9 @@ void GLViewer_Widget::getPan( GLfloat& xPan, GLfloat& yPan, GLfloat& zPan ) zPan = myZPan; } -//======================================================================= -// Function: setPan -// Purpose : -//======================================================================= +/*! + A function for installing the offset parameters of Window in OpenGL global scene +*/ void GLViewer_Widget::setPan( GLfloat xPan, GLfloat yPan, GLfloat zPan ) { myXPan = xPan; @@ -108,10 +100,9 @@ void GLViewer_Widget::setPan( GLfloat xPan, GLfloat yPan, GLfloat zPan ) myZPan = zPan; } -//======================================================================= -// Function: getScale -// Purpose : -//======================================================================= +/*! + \return scales on OpenGL scene along 3 directions in 2d scene zScale = 1.0 +*/ void GLViewer_Widget::getScale( GLfloat& xScale, GLfloat& yScale, GLfloat& zScale ) { xScale = myXScale; @@ -119,10 +110,9 @@ void GLViewer_Widget::getScale( GLfloat& xScale, GLfloat& yScale, GLfloat& zScal zScale = myZScale; } -//======================================================================= -// Function: setScale -// Purpose : -//======================================================================= +/*! + A function for installing the scales of OpenGL scene +*/ void GLViewer_Widget::setScale( GLfloat xScale, GLfloat yScale, GLfloat zScale ) { if ( xScale > 0 && yScale > 0 && zScale > 0 ) @@ -133,10 +123,9 @@ void GLViewer_Widget::setScale( GLfloat xScale, GLfloat yScale, GLfloat zScale ) } } -//======================================================================= -// Function: getRotationStart -// Purpose : -//======================================================================= +/*! + \return start point of curren rotation of Window in OpenGL global scene +*/ void GLViewer_Widget::getRotationStart( GLfloat& rotationStartX, GLfloat& rotationStartY, GLfloat& rotationStartZ ) @@ -146,10 +135,9 @@ void GLViewer_Widget::getRotationStart( GLfloat& rotationStartX, rotationStartZ = myRotationStartZ; } -//======================================================================= -// Function: setRotationStart -// Purpose : -//======================================================================= +/*! + A function for installing the rotation angle of Window in OpenGL global scene in degree (Only in 2D) +*/ void GLViewer_Widget::setRotationStart( GLfloat rotationStartX, GLfloat rotationStartY, GLfloat rotationStartZ ) @@ -159,10 +147,13 @@ void GLViewer_Widget::setRotationStart( GLfloat rotationStartX, myRotationStartZ = rotationStartZ; } -//======================================================================= -// Function: getRotation -// Purpose : -//======================================================================= +/*! + \return parameters of rotation + \param rotationAngle - angle + \param rotationCenterX - center x + \param rotationCenterY - center y + \param rotationCenterZ - center z +*/ void GLViewer_Widget::getRotation( GLfloat& rotationAngle, GLfloat& rotationCenterX, GLfloat& rotationCenterY, @@ -174,10 +165,13 @@ void GLViewer_Widget::getRotation( GLfloat& rotationAngle, rotationCenterZ = myRotationCenterZ; } -//======================================================================= -// Function: setRotation -// Purpose : -//======================================================================= +/*! + Sets parameters of rotation + \param rotationAngle - angle + \param rotationCenterX - center x + \param rotationCenterY - center y + \param rotationCenterZ - center z +*/ void GLViewer_Widget::setRotation( GLfloat rotationAngle, GLfloat rotationCenterX, GLfloat rotationCenterY, @@ -189,10 +183,11 @@ void GLViewer_Widget::setRotation( GLfloat rotationAngle, myRotationCenterZ = rotationCenterZ; } -//======================================================================= -// Function: setBackground -// Purpose : -//======================================================================= + +/*! + Sets image as background + \param filename - name of file +*/ void GLViewer_Widget::setBackground( QString filename ) { @@ -245,29 +240,28 @@ void GLViewer_Widget::setBackground( QString filename ) } } -//======================================================================= -// Function: addToolTip -// Purpose : -//======================================================================= +/*! + Adds tooltip + \param theString - tooltip text + \param theRect - tooltip rectangle +*/ void GLViewer_Widget::addToolTip( QString theString, QRect theRect ) { myToolTipRect = theRect; QToolTip::add( this, myToolTipRect, theString ); } -//======================================================================= -// Function: removeToolTip -// Purpose : -//======================================================================= +/*! + Removes tooltip +*/ void GLViewer_Widget::removeToolTip() { QToolTip::remove( this, myToolTipRect ); } -//======================================================================= -// Function: initializeGL -// Purpose : -//======================================================================= +/*! + Initialization (redefined virtual from QGLWidget) +*/ void GLViewer_Widget::initializeGL() { setAutoBufferSwap( true ); @@ -289,10 +283,9 @@ void GLViewer_Widget::initializeGL() isLoadBackground = false; } -//======================================================================= -// Function: paintGL -// Purpose : -//======================================================================= +/*! + Paints content +*/ void GLViewer_Widget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -335,10 +328,11 @@ void GLViewer_Widget::paintGL() v->repaintView( getViewPort()->getViewFrame() ); } -//======================================================================= -// Function: resizeGL -// Purpose : -//======================================================================= +/*! + Resets OpenGl parameters after resize + \param w - new width + \param h - new height +*/ void GLViewer_Widget::resizeGL( int w, int h ) { @@ -365,10 +359,9 @@ void GLViewer_Widget::resizeGL( int w, int h ) glLoadIdentity(); } -//======================================================================= -// Function: exportRepaint -// Purpose : -//======================================================================= +/*! + Provides repaint in export mode +*/ void GLViewer_Widget::exportRepaint() { isExportMode = true; @@ -378,65 +371,59 @@ void GLViewer_Widget::exportRepaint() isExportMode = false; } -//======================================================================= -// Function: paintEvent -// Purpose : -//======================================================================= +/*! + Custom paint event handler +*/ void GLViewer_Widget::paintEvent( QPaintEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mouseMoveEvent -// Purpose : -//======================================================================= +/*! + Custom mouse move event handler +*/ void GLViewer_Widget::mouseMoveEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mousePressEvent -// Purpose : -//======================================================================= +/*! + Custom mouse press event handler +*/ void GLViewer_Widget::mousePressEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: mouseReleaseEvent -// Purpose : -//======================================================================= +/*! + Custom mouse release event handler +*/ void GLViewer_Widget::mouseReleaseEvent( QMouseEvent* e ) { QApplication::sendEvent( myViewPort, e ); } -//======================================================================= -// Function: enterEvent -// Purpose : -//======================================================================= +/*! + Custom enter event handler +*/ void GLViewer_Widget::enterEvent( QEvent* e ) { updateGL(); } -//======================================================================= -// Function: leaveEvent -// Purpose : -//======================================================================= +/*! + Custom leave event handler +*/ void GLViewer_Widget::leaveEvent( QEvent* e ) { updateGL(); } -//======================================================================= -//! Function: hex -//! Purpose : Returns the hex code of digit < 16 -//======================================================================= +/*! + \return the hex code of digit < 16 + \param c - digit +*/ inline char hex( uchar c ) { if( c<=9 ) @@ -447,11 +434,23 @@ inline char hex( uchar c ) return ' '; } -//======================================================================= -//! Function: AddImagePart -//! Purpose : Translates path of image to PS format -/*! Image inside rectangle from w1 to w2 and from h2 to h1*/ -//======================================================================= +/*! + Translates part of image inside rectangle from w1 to w2 and from h2 to h1 to PS format + \param hFile - PostScript file + \param image - image to be tarnslated + \param w1 - x start position + \param w2 - x end position + \param h1 - y start position + \param h2 - y end position + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system + \param a + \param b + \param c + \param d + \param dw + \param dh +*/ void AddImagePart( QFile& hFile, QImage& image, int w1, int w2, int h1, int h2, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS, double a, double b, double c, double d, double dw, double dh ) @@ -493,20 +492,21 @@ void AddImagePart( QFile& hFile, QImage& image, int w1, int w2, int h1, int h2, } } -//======================================================================= -// Function: getBackgroundRectInViewerCS -// Purpose : -//======================================================================= +/*! + \return background rectangle in viewer CS +*/ void GLViewer_Widget::getBackgroundRectInViewerCS( double& left, double& top, double& right, double& bottom ) { left = -myIW/2; right = myIW/2; top = myIH/2; bottom = -myIH/2; } -//======================================================================= -// Function: translateBackgroundToPS -// Purpose : -//======================================================================= +/*! + Translates background to PostScript + \param hFile - PostScript file + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ void GLViewer_Widget::translateBackgroundToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS ) { QImage buf; @@ -553,10 +553,9 @@ void GLViewer_Widget::translateBackgroundToPS( QFile& hFile, GLViewer_CoordSyste } } -//======================================================================= -//! Function: DecodeScanLine -//! Purpose : Translate image line with one color depth to line wiht other depth -//======================================================================= +/*! + Translates image line with one color depth to line with other depth +*/ void DecodeScanLine( int width, uchar* dest, int dest_depth, uchar* source, int source_depth ) { #ifndef WIN32 @@ -620,11 +619,13 @@ typedef unsigned int WORD; } } -//======================================================================= -// Function: translateBackgroundToEMF -// Purpose : -//======================================================================= #ifdef WIN32 +/*! + Translates background to EMF + \param dc - descriptor of EMF + \param aViewerCS - viewer co-ordinate system + \param aPSCS - paper co-ordinate system +*/ void GLViewer_Widget::translateBackgroundToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) { QImage buf; diff --git a/src/GLViewer/GLViewer_Widget.h b/src/GLViewer/GLViewer_Widget.h index c580a9a84..3236c1867 100644 --- a/src/GLViewer/GLViewer_Widget.h +++ b/src/GLViewer/GLViewer_Widget.h @@ -22,9 +22,6 @@ // File: GLViewer_Widget.h // Created: November, 2004 -/*! Class GLViewer_Widget - * Class for visualization OpenGL scene (widget) for GLViewer - */ #ifndef GLVIEWER_WIDGET_H #define GLVIEWER_WIDGET_H @@ -36,6 +33,10 @@ class GLViewer_ViewPort2d; class GLViewer_CoordSystem; +/*! + \class GLViewer_Widget + Widget for visualization of OpenGL scene +*/ class GLVIEWER_API GLViewer_Widget : public QGLWidget { Q_OBJECT diff --git a/src/GLViewer/Makefile.in b/src/GLViewer/Makefile.in index d921dd294..dac27c28a 100644 --- a/src/GLViewer/Makefile.in +++ b/src/GLViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : caf @@ -98,6 +116,6 @@ CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL) -LIBS+= -L${GUI_ROOT_DIR}/lib/salome -lsuit -L/usr/X11R6/lib -lGLU +LIBS+= -lsuit -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lGLU @CONCLUDE@ diff --git a/src/GLViewer/resources/GLViewer_msg_en.po b/src/GLViewer/resources/GLViewer_msg_en.po index 32d5f88cb..f4d048280 100644 --- a/src/GLViewer/resources/GLViewer_msg_en.po +++ b/src/GLViewer/resources/GLViewer_msg_en.po @@ -74,9 +74,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "CHANGE_BGCOLOR" msgstr "Change background..." diff --git a/src/LightApp/LightApp_AboutDlg.h b/src/LightApp/LightApp_AboutDlg.h index c59cc938b..869151599 100644 --- a/src/LightApp/LightApp_AboutDlg.h +++ b/src/LightApp/LightApp_AboutDlg.h @@ -10,12 +10,12 @@ #include -/*! - Descr: LightApp help about dialog -*/ - class QLabel; +/*! + \class LightApp_AboutDlg + LightApp help about dialog +*/ class LIGHTAPP_EXPORT LightApp_AboutDlg : public QtxDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index 051b1c314..1c231df2a 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -81,11 +81,11 @@ #include #endif -#ifndef DISABLE_SUPERVGRAPHVIEWER - #include - #include - #include -#endif +//#ifndef DISABLE_SUPERVGRAPHVIEWER +// #include +// #include +// #include +//#endif #include @@ -103,6 +103,7 @@ #include #include #include +#include #define FIRST_HELP_ID 1000000 @@ -137,6 +138,9 @@ static const char* imageEmptyIcon[] = { int LightApp_Application::lastStudyId = 0; +/*! + \return last global id of study +*/ int LightApp_Application::studyId() { return LightApp_Application::lastStudyId; @@ -148,11 +152,12 @@ extern "C" LIGHTAPP_EXPORT SUIT_Application* createApplication() return new LightApp_Application(); } +/*! \var global preferences of LightApp */ LightApp_Preferences* LightApp_Application::_prefs_ = 0; -/* - Class : LightApp_Application - Description : Application containing LightApp module +/*! + \class LightApp_Application + Application containing LightApp module */ /*!Constructor.*/ @@ -210,6 +215,30 @@ myPrefs( 0 ) #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. @@ -333,6 +362,10 @@ bool LightApp_Application::activateModule( const QString& modName ) return true; } +/*! + Opens other study into active Study. If Study is empty - creates it. + \param theName - name of study +*/ bool LightApp_Application::useStudy(const QString& theName) { createEmptyStudy(); @@ -479,7 +512,10 @@ void LightApp_Application::createActions() 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 ) ) @@ -630,10 +666,9 @@ void LightApp_Application::onNewWindow() createViewManager( type ); } -//======================================================================= -// name : onNewDoc -/*! Purpose : SLOT. Create new document*/ -//======================================================================= +/*! + SLOT: Creates new document +*/ void LightApp_Application::onNewDoc() { SUIT_Study* study = activeStudy(); @@ -649,10 +684,9 @@ void LightApp_Application::onNewDoc() } } -//======================================================================= -// name : onOpenDoc -/*! Purpose : SLOT. Open new document*/ -//======================================================================= +/*! + SLOT: Opens new document +*/ void LightApp_Application::onOpenDoc() { SUIT_Study* study = activeStudy(); @@ -668,7 +702,11 @@ void LightApp_Application::onOpenDoc() } #include "SUIT_MessageBox.h" -/*! Purpose : SLOT. Open new document with \a aName.*/ + +/*! + SLOT: Opens new document. + \param aName - name of file +*/ bool LightApp_Application::onOpenDoc( const QString& aName ) { bool isAlreadyOpen = false; @@ -735,10 +773,9 @@ bool LightApp_Application::onOpenDoc( const QString& aName ) return res; } -//======================================================================= -// name : onHelpAbout -/*! Purpose : SLOT. Display "About" message box*/ -//======================================================================= +/*! + SLOT: Displays "About" message box +*/ void LightApp_Application::onHelpAbout() { LightApp_AboutDlg* dlg = new LightApp_AboutDlg( applicationName(), applicationVersion(), desktop() ); @@ -746,7 +783,10 @@ void LightApp_Application::onHelpAbout() delete dlg; } -/*!SLOT. Load document with \a aName.*/ +/*! + SLOT: Loads document + \param aName - name of document +*/ bool LightApp_Application::onLoadDoc( const QString& aName ) { bool res = CAM_Application::onLoadDoc( aName ); @@ -763,7 +803,10 @@ bool LightApp_Application::onLoadDoc( const QString& aName ) return res; } -/*!Private SLOT. Selection.*/ +/*! + Private SLOT: Called on selection is changed + Dispatchs active module that selection is changed +*/ void LightApp_Application::onSelection() { onSelectionChanged(); @@ -772,9 +815,10 @@ void LightApp_Application::onSelection() ((LightApp_Module*)activeModule())->selectionChanged(); } -/*!Set active study. - *\param study - SUIT_Study. - */ +/*! + Sets active study. + \param study - SUIT_Study. +*/ void LightApp_Application::setActiveStudy( SUIT_Study* study ) { CAM_Application::setActiveStudy( study ); @@ -782,10 +826,9 @@ void LightApp_Application::setActiveStudy( SUIT_Study* study ) activateWindows(); } -//======================================================================= -// name : updateCommandsStatus -/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/ -//======================================================================= +/*! + Enables/Disables menu items and toolbar buttons. Rebuild menu +*/ void LightApp_Application::updateCommandsStatus() { CAM_Application::updateCommandsStatus(); @@ -816,18 +859,24 @@ void LightApp_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() { @@ -839,18 +888,12 @@ public: myStatus = system(aCommand); if(myStatus != 0) { - QCustomEvent* ce2000 = new QCustomEvent (2000); - postEvent (qApp, ce2000); + QCustomEvent* ce2000 = new QCustomEvent( 2000 ); + QString* msg = new QString( QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile) ); + ce2000->setData( msg ); + postEvent( myLApp, ce2000 ); } } - if( myStatus != 0) - { - qApp->lock(); - SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile), - QObject::tr("BUT_OK")); - qApp->unlock(); - } } private: @@ -858,13 +901,12 @@ 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(); @@ -881,26 +923,55 @@ void LightApp_Application::onHelpContentsModule() 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; @@ -920,12 +991,13 @@ QWidget* LightApp_Application::window( const int flag, const int studyId ) const return wid; } -/*!Adds window to application. - *\param wid - QWidget - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Adds window to application. + \param wid - QWidget + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int studyId ) { if ( !wid ) @@ -947,6 +1019,8 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st LightApp_WidgetContainer* newWC = new LightApp_WidgetContainer( flag, desktop() ); connect( newWC, SIGNAL( destroyed ( QObject* ) ), this, SLOT( onWCDestroyed( QObject* ) ) ); + // asv: connecting a slot for storing visibility flag of a window + connect( newWC, SIGNAL( visibilityChanged ( bool ) ), SLOT( onVisibilityChanged( bool ) ) ); myWindows.insert( flag, newWC ); if ( winMap.contains( flag ) ) desktop()->moveDockWindow( myWindows[flag], (Dock)winMap[flag] ); @@ -965,10 +1039,10 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st 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 @@ -980,11 +1054,12 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st setWindowShown( flag, !myWindows[flag]->isEmpty() ); } -/*!Remove window from application. - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Removes window from application. + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ void LightApp_Application::removeWindow( const int flag, const int studyId ) { if ( !myWindows.contains( flag ) ) @@ -1006,11 +1081,12 @@ void LightApp_Application::removeWindow( const int flag, const int studyId ) setWindowShown( flag, !myWindows[flag]->isEmpty() ); } -/*!Gets window. - *\param flag - key wor window - *\param studyId - study id - * Flag used how identificator of window in windows list. - */ +/*! + Gets window. + \param flag - key for window + \param studyId - study id + Flag used how identificator of window in windows list. +*/ QWidget* LightApp_Application::getWindow( const int flag, const int studyId ) { QWidget* wid = window( flag, studyId ); @@ -1020,7 +1096,10 @@ QWidget* LightApp_Application::getWindow( const int flag, const int studyId ) return wid; } -/*!Check is window visible?(with identificator \a type)*/ +/*! + \return is window visible + \param type - flag of window +*/ bool LightApp_Application::isWindowVisible( const int type ) const { bool res = false; @@ -1032,10 +1111,11 @@ bool LightApp_Application::isWindowVisible( const int type ) const return res; } -/*!Sets window show or hide. - *\param type - window identificator. - *\param on - true/false (window show/hide) - */ +/*! + Sets window show or hide. + \param type - window identificator. + \param on - true/false (window show/hide) +*/ void LightApp_Application::setWindowShown( const int type, const bool on ) { if ( !desktop() || !myWindows.contains( type ) ) @@ -1043,10 +1123,18 @@ void LightApp_Application::setWindowShown( const int type, const bool on ) QDockWindow* dw = myWindows[type]; desktop()->setAppropriate( dw, on ); - on ? dw->show() : dw->hide(); + if( on ) + dw->show(); + else if( dw->isShown() ) + { + dw->hide(); + myWindowsVisible[ type ] = true; + } } -/*!Gets "ObjectBrowser".*/ +/*! + \return Object Browser +*/ OB_Browser* LightApp_Application::objectBrowser() { OB_Browser* ob = 0; @@ -1056,7 +1144,9 @@ OB_Browser* LightApp_Application::objectBrowser() return ob; } -/*!Gets "LogWindow".*/ +/*! + \return Log Window +*/ LogWindow* LightApp_Application::logWindow() { LogWindow* lw = 0; @@ -1067,7 +1157,9 @@ LogWindow* LightApp_Application::logWindow() } #ifndef DISABLE_PYCONSOLE -/*!Get "PythonConsole"*/ +/*! + \return Python Console +*/ PythonConsole* LightApp_Application::pythonConsole() { PythonConsole* console = 0; @@ -1078,12 +1170,19 @@ PythonConsole* LightApp_Application::pythonConsole() } #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(activeStudy()); if ( study ) { CAM_Study::ModelList dm_list; @@ -1094,6 +1193,9 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) ((LightApp_DataModel*)camDM)->update(); } } + + if( objectBrowser() ) + objectBrowser()->setAutoUpdate( isAutoUpdate ); } if ( objectBrowser() ) { @@ -1102,13 +1204,19 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) } } -/*!Gets preferences.*/ +/*! + \return preferences +*/ LightApp_Preferences* LightApp_Application::preferences() const { return preferences( false ); } -/*!Gets view manager*/ +/*! + \return first view manager of some type + \param vmType - type of view manager + \param create - is it necessary to create view manager in case, when there is no manager of such type +*/ SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, const bool create ) { SUIT_ViewManager* aVM = viewManager( vmType ); @@ -1130,7 +1238,10 @@ SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, c return aVM; } -/*!Create view manager.*/ +/*! + Creates view manager of some type + \param vmType - type of view manager +*/ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType ) { SUIT_ResourceMgr* resMgr = resourceMgr(); @@ -1162,16 +1273,12 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType } } #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( 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() ) { @@ -1228,22 +1335,21 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType if ( viewWin && desktop() ) viewWin->resize( (int)( desktop()->width() * 0.6 ), (int)( desktop()->height() * 0.6 ) ); - connect( viewMgr, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), - this, SLOT( onCloseView( SUIT_ViewManager* ) ) ); - return viewMgr; } -//======================================================================= -// name : onCloseView -/*! Purpose : SLOT. Remove view manager from application*/ -//======================================================================= +/*! + SLOT: Removes view manager from application +*/ void LightApp_Application::onCloseView( SUIT_ViewManager* theVM ) { removeViewManager( theVM ); } -/*!Protected SLOT. On study created.*/ +/*! + Protected SLOT: On study created. + \param theStudy - just created study +*/ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) { SUIT_DataObject* aRoot = 0; @@ -1261,7 +1367,10 @@ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) activateWindows(); } -/*!Protected SLOT. On study opened.*/ +/*! + Protected SLOT: On study opened. + \param theStudy - just opened study +*/ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy ) { SUIT_DataObject* aRoot = 0; @@ -1320,7 +1429,9 @@ QString LightApp_Application::getFileFilter() const 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 ) { @@ -1410,10 +1521,9 @@ void LightApp_Application::updateActions() updateCommandsStatus(); } -//======================================================================= -// name : createNewStudy -/*! Purpose : Create new study*/ -//======================================================================= +/*! + Creates new study +*/ SUIT_Study* LightApp_Application::createNewStudy() { LightApp_Application::lastStudyId++; @@ -1429,7 +1539,10 @@ SUIT_Study* LightApp_Application::createNewStudy() return aStudy; } -/*!Create window.*/ +/*! + Creates window by flag. + \param flag - identificator of window type +*/ QWidget* LightApp_Application::createWindow( const int flag ) { QWidget* wid = 0; @@ -1473,8 +1586,9 @@ QWidget* LightApp_Application::createWindow( const int flag ) return wid; } -/*!Default windows(Object Browser, Python Console). - * Adds to map \a aMap. +/*! + \return default windows( Object Browser, Python Console ) + Adds to map \a aMap. */ void LightApp_Application::defaultWindows( QMap& aMap ) const { @@ -1485,15 +1599,16 @@ void LightApp_Application::defaultWindows( QMap& 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 ) @@ -1550,7 +1665,9 @@ LightApp_Preferences* LightApp_Application::preferences( const bool crt ) const return myPrefs; } -/*!Add new module to application.*/ +/*! + Adds new module to application +*/ void LightApp_Application::moduleAdded( CAM_Module* mod ) { CAM_Application::moduleAdded( mod ); @@ -1567,7 +1684,9 @@ void LightApp_Application::moduleAdded( CAM_Module* mod ) } } -/*!Create preferences.*/ +/*! + Create preferences +*/ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) { if ( !pref ) @@ -1581,9 +1700,6 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) pref->addPreference( tr( "PREF_MULTI_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "multi_file" ); pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "ascii_file" ); - int undoPref = pref->addPreference( tr( "PREF_UNDO_LEVEL" ), studyGroup, LightApp_Preferences::IntSpin, "Study", "undo_level" ); - pref->setItemProperty( undoPref, "min", 1 ); - pref->setItemProperty( undoPref, "max", 100 ); pref->addPreference( tr( "PREF_STORE_POS" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" ); int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab ); @@ -1619,7 +1735,7 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) LightApp_Preferences::Color, "OCCViewer", "background" ); pref->setItemProperty( occTS, "min", 1 ); - pref->setItemProperty( occTS, "max", 150 ); + pref->setItemProperty( occTS, "max", 1000 ); int isoU = pref->addPreference( tr( "PREF_ISOS_U" ), occGroup, LightApp_Preferences::IntSpin, "OCCViewer", "iso_number_u" ); @@ -1726,7 +1842,11 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) "ObjectBrowser", "auto_size" ); } -/*!Changed preferences */ +/*! + Changes appearance of application according to changed preferences + \param sec - section + \param param - name of changed parameter +*/ void LightApp_Application::preferencesChanged( const QString& sec, const QString& param ) { SUIT_ResourceMgr* resMgr = resourceMgr(); @@ -1805,6 +1925,10 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true ); ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual ); ob->listView()->setColumnWidthMode( 0, autoSizeFirst ? QListView::Maximum : QListView::Manual ); + if( autoSize ) + for( int i=1; ilistView()->columns(); i++ ) + if( ob->listView()->columnWidth( i )>0 ) + ob->listView()->adjustColumn( i ); updateObjectBrowser( false ); } } @@ -1825,7 +1949,9 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString #endif } -/*!Save preferences */ +/*! + Saves preferences +*/ void LightApp_Application::savePreferences() { saveWindowsGeometry(); @@ -1838,7 +1964,9 @@ void LightApp_Application::savePreferences() } } -/*!Update desktop title.*/ +/*! + Updates desktop title +*/ void LightApp_Application::updateDesktopTitle() { QString aTitle = applicationName(); QString aVer = applicationVersion(); @@ -1853,7 +1981,9 @@ void LightApp_Application::updateDesktopTitle() { desktop()->setCaption( aTitle ); } -/*!Update windows after close document.*/ +/*! + Updates windows after close document +*/ void LightApp_Application::afterCloseDoc() { updateWindows(); @@ -1861,7 +1991,9 @@ void LightApp_Application::afterCloseDoc() CAM_Application::afterCloseDoc(); } -/*!Update module action.*/ +/*! + Updates actions of active module +*/ void LightApp_Application::updateModuleActions() { QString modName; @@ -1872,9 +2004,10 @@ void LightApp_Application::updateModuleActions() myActions[modName]->setOn( true ); } -/*!Gets current windows. - *\param winMap - output current windows map. - */ +/*! + Gets current windows. + \param winMap - output current windows map. +*/ void LightApp_Application::currentWindows( QMap& winMap ) const { winMap.clear(); @@ -1887,9 +2020,10 @@ void LightApp_Application::currentWindows( QMap& winMap ) const defaultWindows( winMap ); } -/*!Gets current view managers. - *\param lst - output current view managers list. - */ +/*! + Gets current view managers. + \param lst - output current view managers list. +*/ void LightApp_Application::currentViewManagers( QStringList& lst ) const { lst.clear(); @@ -1902,7 +2036,9 @@ void LightApp_Application::currentViewManagers( QStringList& lst ) const defaultViewManagers( lst ); } -/*!Update windows.*/ +/*! + Updates windows +*/ void LightApp_Application::updateWindows() { QMap winMap; @@ -1917,11 +2053,19 @@ void LightApp_Application::updateWindows() // 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; @@ -1931,7 +2075,9 @@ void LightApp_Application::updateViewManagers() getViewManager( *it, true ); } -/*!Load windows geometry.*/ +/*! + Loads windows geometry +*/ void LightApp_Application::loadWindowsGeometry() { bool store = resourceMgr()->booleanValue( "Study", "store_positions", true ); @@ -1959,7 +2105,9 @@ void LightApp_Application::loadWindowsGeometry() dockMgr->restoreGeometry(); } -/*!Save windows geometry.*/ +/*! + Saves windows geometry +*/ void LightApp_Application::saveWindowsGeometry() { bool store = resourceMgr()->booleanValue( "Study", "store_positions", true ); @@ -1987,7 +2135,9 @@ void LightApp_Application::saveWindowsGeometry() dockMgr->saveGeometry( resourceMgr(), section, false ); } -/*!Activate windows.*/ +/*! + Activates windows +*/ void LightApp_Application::activateWindows() { if ( activeStudy() ) @@ -1997,7 +2147,9 @@ void LightApp_Application::activateWindows() } } -/*!Adds icon names for modules.*/ +/*! + Adds icon names for modules +*/ void LightApp_Application::moduleIconNames( QMap& iconMap ) const { iconMap.clear(); @@ -2025,7 +2177,9 @@ void LightApp_Application::moduleIconNames( QMap& iconMap ) co } } -/*!Insert items in popup, which necessary for current application*/ +/*! + Inserts items in popup, which necessary for current application +*/ void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopup, QString& title ) { CAM_Application::contextMenuPopup( type, thePopup, title ); @@ -2038,7 +2192,9 @@ void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* th thePopup->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) ); } -/*!Create empty study.*/ +/*! + Create empty study +*/ void LightApp_Application::createEmptyStudy() { CAM_Application::createEmptyStudy(); @@ -2046,7 +2202,10 @@ void LightApp_Application::createEmptyStudy() objectBrowser()->updateTree(); } -/*!Activate module \a mod.*/ +/*! + Activates module + \param mod - module to be activated +*/ bool LightApp_Application::activateModule( CAM_Module* mod ) { bool res = CAM_Application::activateModule( mod ); @@ -2055,13 +2214,17 @@ bool LightApp_Application::activateModule( CAM_Module* mod ) return res; } -/*!return keyborad accelerators manager object */ +/*! + \return keyborad accelerators manager object +*/ SUIT_Accel* LightApp_Application::accel() const { return myAccel; } -/*! remove dead widget container from map */ +/*! + Removes dead widget container from map +*/ void LightApp_Application::onWCDestroyed( QObject* ob ) { // remove destroyed widget container from windows map @@ -2076,7 +2239,19 @@ void LightApp_Application::onWCDestroyed( QObject* ob ) } } -/*! redefined to remove view manager from memory */ +/*! + Connects just added view manager +*/ +void LightApp_Application::addViewManager( SUIT_ViewManager* vm ) +{ + connect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), + this, SLOT( onCloseView( SUIT_ViewManager* ) ) ); + STD_Application::addViewManager( vm ); +} + +/*! + Remove view manager from memory +*/ void LightApp_Application::removeViewManager( SUIT_ViewManager* vm ) { disconnect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ), @@ -2085,7 +2260,9 @@ void LightApp_Application::removeViewManager( SUIT_ViewManager* vm ) delete vm; } -/*! rename active window of desktop */ +/*! + Renames active window of desktop +*/ void LightApp_Application::onRenameWindow() { if( !desktop() ) @@ -2101,6 +2278,10 @@ void LightApp_Application::onRenameWindow() 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() ) @@ -2124,7 +2305,9 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const return false; } -/*! default name for an active study */ +/*! + \return default name for an active study +*/ void LightApp_Application::setDefaultStudyName( const QString& theName ) { QStringList anInfoList; @@ -2138,3 +2321,36 @@ void LightApp_Application::setDefaultStudyName( const QString& theName ) updateDesktopTitle(); } } + +/*! slot, called on show/hide of a dock window */ +void LightApp_Application::onVisibilityChanged( bool visible ) +{ + const QObject* win = sender(); + + for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) + if ( itr.data() == win ) + { + myWindowsVisible[ itr.key() ] = visible; + return; + } +} + +/*! + Custom event handler +*/ +bool LightApp_Application::event( QEvent* e ) +{ + if( e && e->type()==2000 ) + { + QCustomEvent* ce = ( QCustomEvent* )e; + QString* d = ( QString* )ce->data(); + if( SUIT_MessageBox::warn2(0, tr("WRN_WARNING"), + d ? *d : "", + tr("BUT_OK"), tr("BUT_CANCEL"), 0, 1, 0 )==0 ) + onPreferences(); + if( d ) + delete d; + return true; + } + return CAM_Application::event( e ); +} diff --git a/src/LightApp/LightApp_Application.h b/src/LightApp/LightApp_Application.h index c435188a4..74725dc2a 100644 --- a/src/LightApp/LightApp_Application.h +++ b/src/LightApp/LightApp_Application.h @@ -108,6 +108,7 @@ public: void updateActions(); SUIT_ViewManager* getViewManager( const QString&, const bool ); + virtual void addViewManager( SUIT_ViewManager* ); virtual void removeViewManager( SUIT_ViewManager* ); QWidget* getWindow( const int, const int = -1 ); QWidget* window( const int, const int = -1 ) const; @@ -129,6 +130,8 @@ public: static int studyId(); + virtual bool event( QEvent* ); + signals: void studyOpened(); void studySaved(); @@ -136,6 +139,7 @@ signals: public slots: virtual void onHelpContentsModule(); + virtual void onHelpContextModule( const QString&, const QString& ); virtual void onNewDoc(); virtual void onOpenDoc(); virtual void onHelpAbout(); @@ -189,6 +193,7 @@ private slots: void onMRUActivated( QString ); void onPreferenceChanged( QString&, QString&, QString& ); void onRenameWindow(); + void onVisibilityChanged( bool ); protected: void updateWindows(); @@ -212,12 +217,14 @@ protected: protected: typedef QMap ActionMap; typedef QMap WindowMap; + typedef QMap WindowVisibilityMap; protected: LightApp_Preferences* myPrefs; LightApp_SelectionMgr* mySelMgr; ActionMap myActions; WindowMap myWindows; + WindowVisibilityMap myWindowsVisible; SUIT_Accel* myAccel; diff --git a/src/LightApp/LightApp_DataModel.cxx b/src/LightApp/LightApp_DataModel.cxx index 6ccba618b..6de670118 100644 --- a/src/LightApp/LightApp_DataModel.cxx +++ b/src/LightApp/LightApp_DataModel.cxx @@ -6,95 +6,115 @@ #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 +#include #include #include #include #include -//======================================================================= -// 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( 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( 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( module() ); } -//================================================================ -// Function : getStudy -/*! Purpose : gets study */ -//================================================================ +/*! + \return corresponding study +*/ LightApp_Study* LightApp_DataModel::getStudy() const { LightApp_RootObject* aRoot = dynamic_cast( root()->root() ); @@ -103,19 +123,17 @@ LightApp_Study* LightApp_DataModel::getStudy() const return aRoot->study(); } -//================================================================ -// Function : isModified -/*! Purpose : default implementation, always returns false so as not to mask study's isModified()*/ -//================================================================ +/*! + default implementation, always returns false so as not to mask study's isModified() +*/ bool LightApp_DataModel::isModified() const { return false; } -//================================================================ -// Function : isSaved -/*! Purpose : default implementation, always returns true so as not to mask study's isSaved()*/ -//================================================================ +/*! + default implementation, always returns true so as not to mask study's isSaved() +*/ bool LightApp_DataModel::isSaved() const { return true; diff --git a/src/LightApp/LightApp_DataModel.h b/src/LightApp/LightApp_DataModel.h index 7b1f92d6c..c0504a473 100644 --- a/src/LightApp/LightApp_DataModel.h +++ b/src/LightApp/LightApp_DataModel.h @@ -47,7 +47,8 @@ signals: protected: LightApp_Study* getStudy() const; - + virtual void build(); + virtual void updateWidgets(); }; #endif diff --git a/src/LightApp/LightApp_DataObject.cxx b/src/LightApp/LightApp_DataObject.cxx index 831385908..f0e9de6a5 100644 --- a/src/LightApp/LightApp_DataObject.cxx +++ b/src/LightApp/LightApp_DataObject.cxx @@ -73,10 +73,6 @@ bool LightApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const return myEntry == that->myEntry; } -/* - Class: LightApp_DataObject - Level: Public -*/ /*!Constructor. Initialize by \a parent*/ LightApp_DataObject::LightApp_DataObject( SUIT_DataObject* parent ) : CAM_DataObject( parent ), myCompObject( 0 ), myCompDataType( "" ) @@ -142,10 +138,7 @@ QString LightApp_DataObject::componentDataType() const return myCompDataType; } -/* - Class: LightApp_ModuleObject - Level: Public -*/ + /*!Constructor.Initialize by \a parent.*/ LightApp_ModuleObject::LightApp_ModuleObject( SUIT_DataObject* parent ) diff --git a/src/LightApp/LightApp_Dialog.cxx b/src/LightApp/LightApp_Dialog.cxx index b77f62f01..51d751096 100644 --- a/src/LightApp/LightApp_Dialog.cxx +++ b/src/LightApp/LightApp_Dialog.cxx @@ -26,15 +26,9 @@ #include #include -/* - Class : LightApp_Dialog - Description : Base class for all dialogs +/*! + Constructor */ - -//======================================================================= -// name : LightApp_Dialog -// Purpose : Constructor -//======================================================================= LightApp_Dialog::LightApp_Dialog( QWidget* parent, const char* name, bool modal, bool allowResize, const int f, WFlags wf ) : QtxDialog( parent, name, modal, allowResize, f, wf ), @@ -44,36 +38,33 @@ LightApp_Dialog::LightApp_Dialog( QWidget* parent, const char* name, bool modal, setObjectPixmap( "LightApp", tr( "ICON_SELECT" ) ); } -//======================================================================= -// name : ~LightApp_Dialog -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ LightApp_Dialog::~LightApp_Dialog() { } -//======================================================================= -// name : show -// Purpose : -//======================================================================= +/*! + Show dialog +*/ void LightApp_Dialog::show() { QtxDialog::show(); } -//======================================================================= -// name : isExclusive -// Purpose : -//======================================================================= +/*! + \return isExclusive status of selection buttons +*/ bool LightApp_Dialog::isExclusive() const { return myIsExclusive; } -//======================================================================= -// name : updateButtons -// Purpose : -//======================================================================= +/*! + Updates "on" state of buttons according to special button + \param _id - id of special button (if it is -1, then first selected button will be treated as special) +*/ void LightApp_Dialog::updateButtons( const int _id ) { if( !myIsExclusive ) @@ -97,38 +88,39 @@ void LightApp_Dialog::updateButtons( const int _id ) } } -//======================================================================= -// name : setExclusive -// Purpose : -//======================================================================= +/*! + Sets isExclusive status of selection buttons + \param ex - new value of isExclusive status +*/ void LightApp_Dialog::setExclusive( const bool ex ) { myIsExclusive = ex; updateButtons(); } -//======================================================================= -// name : showObject -// Purpose : -//======================================================================= +/*! + Shows object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::showObject( const int id ) { setObjectShown( id, true ); } -//======================================================================= -// name : hideObject -// Purpose : -//======================================================================= +/*! + Hides object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::hideObject( const int id ) { setObjectShown( id, false ); } -//======================================================================= -// name : setObjectShown -// Purpose : -//======================================================================= +/*! + Shows/hides object selection widget + \param id - identificator of object selection widget + \param shown - if it is true, widget will be shown +*/ void LightApp_Dialog::setObjectShown( const int id, const bool shown ) { if( myObjects.contains( id ) && isObjectShown( id )!=shown ) @@ -142,19 +134,20 @@ void LightApp_Dialog::setObjectShown( const int id, const bool shown ) } } -//======================================================================= -// name : isObjectShown -// Purpose : -//======================================================================= +/*! + \return isShown state of object selection widget + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isObjectShown( const int id ) const { return myObjects.contains( id ) && myObjects[ id ].myEdit->isShown(); } -//======================================================================= -// name : setObjectEnabled -// Purpose : -//======================================================================= +/*! + Change enable state of object selection widget + \param id - identificator of object selection widget + \param en - new value of enable state +*/ void LightApp_Dialog::setObjectEnabled( const int id, const bool en ) { if( myObjects.contains( id ) && isObjectEnabled( id )!=en ) @@ -168,19 +161,22 @@ void LightApp_Dialog::setObjectEnabled( const int id, const bool en ) } } -//======================================================================= -// name : isObjectEnabled -// Purpose : -//======================================================================= +/*! + \return enable state of object selection widget + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isObjectEnabled( const int id ) const { return myObjects.contains( id ) && myObjects[ id ].myEdit->isEnabled(); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to all active widgets name, type and id of selected object + \param name - name of selected object + \param type - type of selected object + \param id - id of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const QString& name, const int type, const QString& id, const bool update ) { QStringList names; names.append( name ); @@ -189,10 +185,13 @@ void LightApp_Dialog::selectObject( const QString& name, const int type, const Q selectObject( names, types, ids, update ); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to all active widgets names, types and ids of selected objects + \param _names - names of selected objects + \param _types - types of selected objects + \param _ids - ids of selected objects + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const QStringList& _names, const TypesList& _types, const QStringList& _ids, @@ -205,19 +204,19 @@ void LightApp_Dialog::selectObject( const QStringList& _names, selectObject( anIt.key(), _names, _types, _ids, update ); } -//======================================================================= -// name : hasSelection -// Purpose : -//======================================================================= +/*! + \return true if widget has selection + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::hasSelection( const int id ) const { return myObjects.contains( id ) && !myObjects[ id ].myIds.isEmpty(); } -//======================================================================= -// name : clearSelection -// Purpose : -//======================================================================= +/*! + Clears selection of widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::clearSelection( const int id ) { if( id==-1 ) @@ -239,10 +238,11 @@ void LightApp_Dialog::clearSelection( const int id ) } } -//======================================================================= -// name : objectWg -// Purpose : -//======================================================================= +/*! + \return object selection widget + \param theId - identificator of object selection widget + \param theWgId may be "Label", "Btn" or "Control" +*/ QWidget* LightApp_Dialog::objectWg( const int theId, const int theWgId ) const { QWidget* aResWg = 0; @@ -258,39 +258,41 @@ QWidget* LightApp_Dialog::objectWg( const int theId, const int theWgId ) const return aResWg; } -//======================================================================= -// name : objectText -// Purpose : -//======================================================================= +/*! + \return object selection widget text + \param theId - identificator of object selection widget +*/ QString LightApp_Dialog::objectText( const int theId ) const { return myObjects.contains( theId ) ? myObjects[ theId ].myEdit->text() : ""; } -//======================================================================= -// name : setObjectText -// Purpose : -//======================================================================= +/*! + Sets object selection widget text + \param theId - identificator of object selection widget + \param theText - new text +*/ void LightApp_Dialog::setObjectText( const int theId, const QString& theText ) { if ( myObjects.contains( theId ) ) myObjects[ theId ].myEdit->setText( theText ); } -//======================================================================= -// name : selectedObject -// Purpose : -//======================================================================= +/*! + \return objects selected by widget + \param id - identificator of object selection widget + \param list - list to be filled by selected objects +*/ void LightApp_Dialog::selectedObject( const int id, QStringList& list ) const { if( myObjects.contains( id ) ) list = myObjects[ id ].myIds; } -//======================================================================= -// name : selectedObject -// Purpose : -//======================================================================= +/*! + \return selected object id + \param id - identificator of object selection widget +*/ QString LightApp_Dialog::selectedObject( const int id ) const { if ( myObjects.contains( id ) && myObjects[ id ].myIds.count() > 0 ) @@ -299,10 +301,10 @@ QString LightApp_Dialog::selectedObject( const int id ) const return ""; } -//======================================================================= -// name : objectSelection -// Purpose : -//======================================================================= +/*! + \return all selected objects + \param objs - map: widget id -> string id to be filled with selected objects +*/ void LightApp_Dialog::objectSelection( SelectedObjects& objs ) const { //objs.clear(); @@ -317,10 +319,13 @@ void LightApp_Dialog::objectSelection( SelectedObjects& objs ) const } } -//======================================================================= -// name : createObject -// Purpose : -//======================================================================= +/*! + Creates object selection widget + \return id + \label - label text + \parent - parent object + \id - proposed id for widget (if it is less than 0, the free id will be used) +*/ int LightApp_Dialog::createObject( const QString& label, QWidget* parent, const int id ) { int nid = id; @@ -351,20 +356,22 @@ int LightApp_Dialog::createObject( const QString& label, QWidget* parent, const return nid; } -//======================================================================= -// name : renameObject -// Purpose : -//======================================================================= +/*! + Changes label of object selection widget + \param id - identificator of object selection widget + \param label - new text of label +*/ void LightApp_Dialog::renameObject( const int id, const QString& label ) { if( myObjects.contains( id ) ) myObjects[ id ].myLabel->setText( label ); } -//======================================================================= -// name : setObjectType -// Purpose : -//======================================================================= +/*! + Sets possible types for widget + \param id - identificator of object selection widget + \param type1,... - type +*/ void LightApp_Dialog::setObjectType( const int id, const int type1, ... ) { TypesList types; @@ -379,10 +386,11 @@ void LightApp_Dialog::setObjectType( const int id, const int type1, ... ) setObjectType( id, types ); } -//======================================================================= -// name : setObjectType -// Purpose : -//======================================================================= +/*! + Sets possible types for widget + \param id - identificator of object selection widget + \param list - list of possible types +*/ void LightApp_Dialog::setObjectType( const int id, const TypesList& list ) { if( !myObjects.contains( id ) ) @@ -406,10 +414,11 @@ void LightApp_Dialog::setObjectType( const int id, const TypesList& list ) updateObject( id ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible types to object selection widget + \param id - identificator of object selection widget + \param type1, ... - new types +*/ void LightApp_Dialog::addObjectType( const int id, const int type1, const int, ... ) { TypesList types; objectTypes( id, types ); @@ -424,20 +433,22 @@ void LightApp_Dialog::addObjectType( const int id, const int type1, const int, . setObjectType( id, types ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible types to object selection widget + \param id - identificator of object selection widget + \param list - new types +*/ void LightApp_Dialog::addObjectType( const int id, const TypesList& list ) { TypesList types = list; objectTypes( id, types ); setObjectType( id, types ); } -//======================================================================= -// name : addObjectType -// Purpose : -//======================================================================= +/*! + Adds new possible type to object selection widget + \param id - identificator of object selection widget + \param type - new type +*/ void LightApp_Dialog::addObjectType( const int id, const int type ) { TypesList types; objectTypes( id, types ); @@ -445,20 +456,21 @@ void LightApp_Dialog::addObjectType( const int id, const int type ) setObjectType( id, types ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Clears list of possibles types for object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::removeObjectType( const int id ) { TypesList types; setObjectType( id, types ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Removes types from list of possibles for object selection widget + \param id - identificator of object selection widget + \param list - list of types to be removed +*/ void LightApp_Dialog::removeObjectType( const int id, const TypesList& list ) { if( !myObjects.contains( id ) ) @@ -485,20 +497,22 @@ void LightApp_Dialog::removeObjectType( const int id, const TypesList& list ) updateObject( id ); } -//======================================================================= -// name : removeObjectType -// Purpose : -//======================================================================= +/*! + Removes type from list of possibles for object selection widget + \param id - identificator of object selection widget + \param type - type to be removed +*/ void LightApp_Dialog::removeObjectType( const int id, const int type ) { TypesList list; list.append( type ); removeObjectType( id, list ); } -//======================================================================= -// name : hasObjectType -// Purpose : -//======================================================================= +/*! + \return true if widget has such type + \param id - identificator of object selection widget + \param type - type to be checked +*/ bool LightApp_Dialog::hasObjectType( const int id, const int type ) const { if( myObjects.contains( id ) ) @@ -507,10 +521,11 @@ bool LightApp_Dialog::hasObjectType( const int id, const int type ) const return false; } -//======================================================================= -// name : objectTypes -// Purpose : -//======================================================================= +/*! + Returns list of possible types for widget + \param id - identificator of object selection widget + \param list - list to be filled with possible types +*/ void LightApp_Dialog::objectTypes( const int id, TypesList& list ) const { if( myObjects.contains( id ) ) @@ -522,10 +537,9 @@ void LightApp_Dialog::objectTypes( const int id, TypesList& list ) const } } -//======================================================================= -// name : onToggled -// Purpose : -//======================================================================= +/*! + SLOT: called if selection button is clicked +*/ void LightApp_Dialog::onToggled( bool on ) { QButton* but = ( QButton* )sender(); @@ -550,10 +564,11 @@ void LightApp_Dialog::onToggled( bool on ) emit objectDeactivated( id ); } -//======================================================================= -// name : updateObject -// Purpose : -//======================================================================= +/*! + Updates selection description of widget + \param id - identificator of object selection widget + \param emit_signal - if it is true, the signal "selection changed" is emitted +*/ void LightApp_Dialog::updateObject( const int id, bool emit_signal ) { if( hasSelection( id ) ) @@ -566,10 +581,13 @@ void LightApp_Dialog::updateObject( const int id, bool emit_signal ) } } -//======================================================================= -// name : filterTypes -// Purpose : -//======================================================================= +/*! + Finds in list possible types + \param id - identificator of object selection widget + \param names - list of selected objects names + \param types - list of selected objects types + \param ids - list of selected objects ids +*/ void LightApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& types, QStringList& ids ) const { if( !myObjects.contains( id ) ) @@ -601,19 +619,18 @@ void LightApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& ids = new_ids; } -//======================================================================= -// name : resMgr -// Purpose : -//======================================================================= +/*! + \return global resource manager +*/ SUIT_ResourceMgr* LightApp_Dialog::resMgr() const { return SUIT_Session::session()->resourceMgr(); } -//======================================================================= -// name : setObjectPixmap -// Purpose : -//======================================================================= +/*! + Sets pixmap for all object selection button + \param p - image +*/ void LightApp_Dialog::setObjectPixmap( const QPixmap& p ) { myPixmap = p; @@ -623,10 +640,11 @@ void LightApp_Dialog::setObjectPixmap( const QPixmap& p ) ( ( QToolButton* )anIt.data().myBtn )->setIconSet( p ); } -//======================================================================= -// name : setObjectPixmap -// Purpose : -//======================================================================= +/*! + Sets pixmap all for object selection button + \param section - name of section of resource manager + \param file - name of file +*/ void LightApp_Dialog::setObjectPixmap( const QString& section, const QString& file ) { SUIT_ResourceMgr* mgr = resMgr(); @@ -634,19 +652,19 @@ void LightApp_Dialog::setObjectPixmap( const QString& section, const QString& fi setObjectPixmap( mgr->loadPixmap( section, file ) ); } -//======================================================================= -// name : multipleSelection -// Purpose : -//======================================================================= +/*! + \return true, if it is enable multiple selection + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::multipleSelection( const int id ) const { return nameIndication( id )!=OneName; } -//======================================================================= -// name : nameIndication -// Purpose : -//======================================================================= +/*! + \return type of name indication + \param id - identificator of object selection widget +*/ LightApp_Dialog::NameIndication LightApp_Dialog::nameIndication( const int id ) const { if( myObjects.contains( id ) ) @@ -655,10 +673,11 @@ LightApp_Dialog::NameIndication LightApp_Dialog::nameIndication( const int id ) return OneNameOrCount; } -//======================================================================= -// name : setNameIndication -// Purpose : -//======================================================================= +/*! + Sets type of name indication + \param id - identificator of object selection widget + \param ni - new type of name indication +*/ void LightApp_Dialog::setNameIndication( const int id, const NameIndication ni ) { if( id==-1 ) @@ -682,10 +701,12 @@ void LightApp_Dialog::setNameIndication( const int id, const NameIndication ni ) } } -//======================================================================= -// name : selectionDescription -// Purpose : -//======================================================================= +/*! + \return string representation of selection by selection data + \param names - list of selected objects names + \param types - list of selected objects types + \param ni - type of name indication +*/ QString LightApp_Dialog::selectionDescription( const QStringList& names, const TypesList& types, const NameIndication ni ) const { if( names.count()!=types.count() ) @@ -718,10 +739,10 @@ QString LightApp_Dialog::selectionDescription( const QStringList& names, const T return QString::null; } -//======================================================================= -// name : countOfTypes -// Purpose : -//======================================================================= +/*! + \return string representation of count of types + \param types - list of types +*/ QString LightApp_Dialog::countOfTypes( const TypesList& types ) const { QMap typesCount; @@ -743,39 +764,38 @@ QString LightApp_Dialog::countOfTypes( const TypesList& types ) const return typeCount.join( ", " ); } -//======================================================================= -// name : typeName -// Purpose : -//======================================================================= +/*! + \return reference to type name + \param type - integer id of type +*/ QString& LightApp_Dialog::typeName( const int type ) { return myTypeNames[ type ]; } -//======================================================================= -// name : typeName -// Purpose : -//======================================================================= +/*! + \return const reference to type name + \param type - integer id of type +*/ const QString& LightApp_Dialog::typeName( const int type ) const { return myTypeNames[ type ]; } -//======================================================================= -// name : activateObject -// Purpose : -//======================================================================= +/*! + Activates object selection widget + \param id - identificator of object selection widget +*/ void LightApp_Dialog::activateObject( const int theId ) { if ( myObjects.contains( theId ) && !myObjects[ theId ].myBtn->isOn() ) myObjects[ theId ].myBtn->toggle(); } -//======================================================================= -// name : deactivateAll -// Purpose : -//======================================================================= +/*! + Deactivates all object selection widgets +*/ void LightApp_Dialog::deactivateAll() { ObjectMap::iterator anIt = myObjects.begin(), @@ -787,10 +807,14 @@ void LightApp_Dialog::deactivateAll() } } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to widget name, type and id of selected object + \param id - identificator of object selection widget + \param name - name of selected object + \param type - type of selected object + \param selid - id of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const int id, const QString& name, const int type, const QString& selid, const bool update ) { QStringList names; names.append( name ); @@ -799,10 +823,14 @@ void LightApp_Dialog::selectObject( const int id, const QString& name, const int selectObject( id, names, types, ids, update ); } -//======================================================================= -// name : selectObject -// Purpose : -//======================================================================= +/*! + Passes to widget names, types and ids of selected objects + \param id - identificator of object selection widget + \param _names - names of selected object + \param _types - types of selected object + \param _ids - ids of selected object + \param update - is need to update selection description string +*/ void LightApp_Dialog::selectObject( const int id, const QStringList& _names, const TypesList& _types, const QStringList& _ids, const bool update ) { @@ -824,20 +852,21 @@ void LightApp_Dialog::selectObject( const int id, const QStringList& _names, con emit selectionChanged( id ); } -//======================================================================= -// name : setReadOnly -// Purpose : -//======================================================================= +/*! + Sets read only state of object selection line edit + \param id - identificator of object selection widget + \param ro - new read only state +*/ void LightApp_Dialog::setReadOnly( const int id, const bool ro ) { if( myObjects.contains( id ) ) myObjects[ id ].myEdit->setReadOnly( nameIndication( id )==ListOfNames || nameIndication( id )==OneName ? ro : true ); } -//======================================================================= -// name : isReadOnly -// Purpose : -//======================================================================= +/*! + \return read only state of object selection line edit + \param id - identificator of object selection widget +*/ bool LightApp_Dialog::isReadOnly( const int id ) const { if( myObjects.contains( id ) ) @@ -845,11 +874,10 @@ bool LightApp_Dialog::isReadOnly( const int id ) const else return true; } - -//======================================================================= -// name : onTextChanged -// Purpose : -//======================================================================= + +/*! + SLOT: called if text of object selection line edit is changed +*/ void LightApp_Dialog::onTextChanged( const QString& text ) { if( myIsBusy ) diff --git a/src/LightApp/LightApp_Dialog.h b/src/LightApp/LightApp_Dialog.h index 12fd50154..51acdc5d0 100644 --- a/src/LightApp/LightApp_Dialog.h +++ b/src/LightApp/LightApp_Dialog.h @@ -35,9 +35,13 @@ class QLabel; class SUIT_ResourceMgr; -/* - Class : LightApp_Dialog - Description : Base class for all LightApp dialogs +/*! + \class LightApp_Dialog + Base class for all LightApp dialogs. + Provides standard widget for object selection: line edit, button; + it is necessary to call corresponding methods on selection change. + Standard dialog provides filtering, selection string representation, + possibility to indicate necessary selection by text with list of ids. */ class LIGHTAPP_EXPORT LightApp_Dialog : public QtxDialog { diff --git a/src/LightApp/LightApp_Displayer.cxx b/src/LightApp/LightApp_Displayer.cxx index f06c8c10b..49a792dc0 100644 --- a/src/LightApp/LightApp_Displayer.cxx +++ b/src/LightApp/LightApp_Displayer.cxx @@ -34,14 +34,26 @@ #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(); @@ -63,6 +75,11 @@ void LightApp_Displayer::Display( const QString& entry, const bool updateViewer, } } +/*! + Redisplays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer +*/ void LightApp_Displayer::Redisplay( const QString& entry, const bool updateViewer ) { // Remove the object permanently ( == true) @@ -93,6 +110,13 @@ void LightApp_Displayer::Redisplay( const QString& entry, const bool updateViewe } } +/*! + Erases object in view + \param entry - object entry + \param forced - deletes object from viewer (otherwise it will be erased, but cached) + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void LightApp_Displayer::Erase( const QString& entry, const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) { @@ -109,6 +133,12 @@ void LightApp_Displayer::Erase( const QString& entry, const bool forced, } } +/*! + Erases all objects in view + \param forced - deletes objects from viewer + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void LightApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -120,6 +150,11 @@ void LightApp_Displayer::EraseAll( const bool forced, const bool updateViewer, S } } +/*! + \return true if object is displayed in viewer + \param entry - object entry + \param theViewFrame - view +*/ bool LightApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -135,6 +170,9 @@ bool LightApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theView return res; } +/*! + Updates active view +*/ void LightApp_Displayer::UpdateViewer() const { SALOME_View* vf = GetActiveView(); @@ -142,6 +180,12 @@ void LightApp_Displayer::UpdateViewer() const vf->Repaint(); } +/*! + \return presentation of object, built with help of CreatePrs method + \param entry - object entry + \param theViewFrame - view + \sa CreatePrs() +*/ SALOME_Prs* LightApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) { SALOME_Prs* prs = 0; @@ -154,6 +198,9 @@ SALOME_Prs* LightApp_Displayer::buildPresentation( const QString& entry, SALOME_ return prs; } +/*! + \return active view +*/ SALOME_View* LightApp_Displayer::GetActiveView() { SUIT_Session* session = SUIT_Session::session(); @@ -168,11 +215,20 @@ SALOME_View* LightApp_Displayer::GetActiveView() return 0; } -bool LightApp_Displayer::canBeDisplayed( const QString&, const QString& ) const +/*! + \return true, if object can be displayed in this type of viewer + \param entry - object entry + \param viewer_type - type of viewer +*/ +bool LightApp_Displayer::canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const { return true; } +/*! + \return true, if object can be displayed in any type of viewer + \param entry - object entry +*/ bool LightApp_Displayer::canBeDisplayed( const QString& entry ) const { QString viewerType; @@ -185,6 +241,11 @@ bool LightApp_Displayer::canBeDisplayed( const QString& entry ) const return !viewerType.isNull() && canBeDisplayed( entry, viewerType ); } +/*! + \return displayer, corresponding to module + \param mod_name - name of module + \param load - is module has to be forced loaded +*/ LightApp_Displayer* LightApp_Displayer::FindDisplayer( const QString& mod_name, const bool load ) { SUIT_Session* session = SUIT_Session::session(); diff --git a/src/LightApp/LightApp_Displayer.h b/src/LightApp/LightApp_Displayer.h index f0896eb8f..cc1eb89d1 100644 --- a/src/LightApp/LightApp_Displayer.h +++ b/src/LightApp/LightApp_Displayer.h @@ -24,6 +24,11 @@ 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: diff --git a/src/LightApp/LightApp_Driver.cxx b/src/LightApp/LightApp_Driver.cxx index 122890390..087f39168 100644 --- a/src/LightApp/LightApp_Driver.cxx +++ b/src/LightApp/LightApp_Driver.cxx @@ -49,10 +49,9 @@ LightApp_Driver::~LightApp_Driver() using namespace std; -//================================================================ -// Function : SaveDatasInFile -/*! Purpose : save in file 'theFileName' datas from this driver*/ -//================================================================ +/*! + Save in file 'theFileName' datas from this driver +*/ bool LightApp_Driver::SaveDatasInFile( const char* theFileName, bool isMultiFile ) { int aNbModules = 0; @@ -133,10 +132,9 @@ bool LightApp_Driver::SaveDatasInFile( const char* theFileName, bool isMultiFile return true; } -//======================================================================= -// name : ReaDatasFromFile -/*! Purpose : filling current driver from file 'theFileName'*/ -//======================================================================= +/*! + Filling current driver from file 'theFileName' +*/ bool LightApp_Driver::ReadDatasFromFile( const char* theFileName, bool isMultiFile ) { #ifdef WNT @@ -193,10 +191,9 @@ bool LightApp_Driver::ReadDatasFromFile( const char* theFileName, bool isMultiFi return true; } -//================================================================ -// Function : GetTmpDir -/*! Purpose : returns temp directory for path 'theURL'*/ -//================================================================ +/*! + \return temp directory for path 'theURL' +*/ std::string LightApp_Driver::GetTmpDir (const char* theURL, const bool isMultiFile) { std::string anURLDir = GetDirFromPath(theURL); @@ -205,10 +202,9 @@ std::string LightApp_Driver::GetTmpDir (const char* theURL, const bool isMultiF return aTmpDir; } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : returns list of files for module with name 'theModuleName'*/ -//================================================================ +/*! + \return list of files for module with name 'theModuleName' +*/ LightApp_Driver::ListOfFiles LightApp_Driver::GetListOfFiles( const char* theModuleName ) { ListOfFiles aListOfFiles; @@ -220,20 +216,18 @@ LightApp_Driver::ListOfFiles LightApp_Driver::GetListOfFiles( const char* theMod return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : sets list of files for module with name 'theModuleName'*/ -//================================================================ +/*! + Sets list of files for module with name 'theModuleName' +*/ void LightApp_Driver::SetListOfFiles( const char* theModuleName, const ListOfFiles theListOfFiles ) { std::string aName (theModuleName); myMap[aName] = theListOfFiles; } -//============================================================================ -// function : PutFilesToStream -/*! Purpose : converts files which was created from module into a byte sequence unsigned char*/ -//============================================================================ +/*! + Converts files which was created from module into a byte sequence unsigned char +*/ void LightApp_Driver::PutFilesToStream( const std::string& theModuleName, unsigned char*& theBuffer, long& theBufferSize, bool theNamesOnly ) { @@ -342,10 +336,9 @@ void LightApp_Driver::PutFilesToStream( const std::string& theModuleName, unsign theBufferSize = aBufferSize; } -//============================================================================ -// function : PutStreamToFile -/*! Purpose : converts a byte sequence to files and return list of them*/ -//============================================================================ +/*! + Converts a byte sequence to files and return list of them +*/ LightApp_Driver::ListOfFiles LightApp_Driver::PutStreamToFiles( const unsigned char* theBuffer, const long theBufferSize, bool theNamesOnly ) { @@ -406,13 +399,11 @@ LightApp_Driver::ListOfFiles LightApp_Driver::PutStreamToFiles( const unsigned c return aFiles; } -//============================================================================ -// function : RemoveFiles -/*! Purpose : Remove files. First item in is a directory with slash at the end. - Other items are names of files. If is true, - then the directory is also deleted. +/*! + Remove files. First item in is a directory with slash at the end. + Other items are names of files. If is true, + then the directory is also deleted. */ -//============================================================================ void LightApp_Driver::RemoveFiles( const ListOfFiles& theFiles, const bool IsDirDeleted) { int i, aLength = theFiles.size() - 1; @@ -449,11 +440,10 @@ void LightApp_Driver::RemoveFiles( const ListOfFiles& theFiles, const bool IsDir } } -//============================================================================ -// function : RemoveTemporaryFiles -/*! Purpose : removes files which was created from module theModuleName if - is true tmp directory is also deleted if it is empty*/ -//============================================================================ +/*! + Removes files which was created from module theModuleName if + is true tmp directory is also deleted if it is empty +*/ void LightApp_Driver::RemoveTemporaryFiles( const char* theModuleName, const bool IsDirDeleted ) { std::string aModuleName(theModuleName); @@ -464,10 +454,9 @@ void LightApp_Driver::RemoveTemporaryFiles( const char* theModuleName, const boo } -//============================================================================ -// function : ClearDriverContents -/*! Purpose : clear map of list files*/ -//============================================================================ +/*! + Clears map of list files +*/ void LightApp_Driver::ClearDriverContents() { std::map::iterator it; @@ -483,10 +472,9 @@ void LightApp_Driver::ClearDriverContents() SetIsTemporary( false ); } -//============================================================================ -// function : GetTempDir -/*! Purpose : return a temp directory to store created files like "/tmp/sub_dir/" */ -//============================================================================ +/*! + \return a temp directory to store created files like "/tmp/sub_dir/" +*/ std::string LightApp_Driver::GetTmpDir() { if ( myTmpDir.length() != 0 ) @@ -553,10 +541,9 @@ std::string LightApp_Driver::GetTmpDir() return aTmpDir.ToCString(); } -//============================================================================ -// function : GetDirFromPath -/*! Purpose : returns the dir by the path*/ -//============================================================================ +/*! + \return the dir by the path +*/ std::string LightApp_Driver::GetDirFromPath( const std::string& thePath ) { if(thePath == "") return ""; diff --git a/src/LightApp/LightApp_GLSelector.cxx b/src/LightApp/LightApp_GLSelector.cxx index c9415eb41..03da41efc 100644 --- a/src/LightApp/LightApp_GLSelector.cxx +++ b/src/LightApp/LightApp_GLSelector.cxx @@ -115,21 +115,35 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList ) } +/*! + 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; diff --git a/src/LightApp/LightApp_GLSelector.h b/src/LightApp/LightApp_GLSelector.h index f58bb761a..7447490ee 100644 --- a/src/LightApp/LightApp_GLSelector.h +++ b/src/LightApp/LightApp_GLSelector.h @@ -28,6 +28,10 @@ #include #include +/*! + \class LightApp_GLSelector + Custom selector to get/set selection from GL viewer +*/ class LIGHTAPP_EXPORT LightApp_GLSelector : public SUIT_Selector { Q_OBJECT diff --git a/src/LightApp/LightApp_HDFDriver.cxx b/src/LightApp/LightApp_HDFDriver.cxx index bf003ae44..7ceca3a62 100644 --- a/src/LightApp/LightApp_HDFDriver.cxx +++ b/src/LightApp/LightApp_HDFDriver.cxx @@ -36,10 +36,9 @@ LightApp_HDFDriver::~LightApp_HDFDriver() 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; @@ -163,10 +162,9 @@ bool LightApp_HDFDriver::SaveDatasInFile( const char* theFileName, bool isMultiF 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; diff --git a/src/LightApp/LightApp_HDFDriver.h b/src/LightApp/LightApp_HDFDriver.h index 5a978eacf..e35987d2e 100644 --- a/src/LightApp/LightApp_HDFDriver.h +++ b/src/LightApp/LightApp_HDFDriver.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef LIGHTAPP_HDFDRIVER_H #define LIGHTAPP_HDFDRIVER_H diff --git a/src/LightApp/LightApp_Module.cxx b/src/LightApp/LightApp_Module.cxx index 691d68b98..65689deed 100644 --- a/src/LightApp/LightApp_Module.cxx +++ b/src/LightApp/LightApp_Module.cxx @@ -117,6 +117,9 @@ void LightApp_Module::contextMenuPopup( const QString& client, QPopupMenu* menu, void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, SUIT_DataObject* theDataObject ) { + bool upd = getApp()->objectBrowser()->isAutoUpdate(); + getApp()->objectBrowser()->setAutoUpdate( false ); + SUIT_DataObject* aDataObject = theDataObject; if( theIsUpdateDataModel ){ if( CAM_DataModel* aDataModel = dataModel() ){ @@ -134,7 +137,8 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, } } } - getApp()->objectBrowser()->updateTree( aDataObject ); + getApp()->objectBrowser()->setAutoUpdate( upd ); + getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ ); } /*!NOT IMPLEMENTED*/ @@ -509,11 +513,18 @@ void LightApp_Module::onOperationDestroyed() } } +/*! + Must be redefined in order to use standard displayer mechanism + \return displayer of module +*/ LightApp_Displayer* LightApp_Module::displayer() { return 0; } +/*! + SLOT: called on activating of standard operations show/hide +*/ void LightApp_Module::onShowHide() { if( !sender()->inherits( "QAction" ) || !popupMgr() ) @@ -525,10 +536,16 @@ void LightApp_Module::onShowHide() 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* ) { } diff --git a/src/LightApp/LightApp_Module.h b/src/LightApp/LightApp_Module.h index afe552d12..ca6a6d852 100644 --- a/src/LightApp/LightApp_Module.h +++ b/src/LightApp/LightApp_Module.h @@ -28,9 +28,9 @@ class QtxPopupMgr; class QString; class QVariant; -/* - Class : LightApp_Module - Description : Base class for all light modules +/*! + \class LightApp_Module + Base class for all light modules */ class LIGHTAPP_EXPORT LightApp_Module : public CAM_Module diff --git a/src/LightApp/LightApp_ModuleDlg.h b/src/LightApp/LightApp_ModuleDlg.h index 526f16f22..135e58c40 100644 --- a/src/LightApp/LightApp_ModuleDlg.h +++ b/src/LightApp/LightApp_ModuleDlg.h @@ -19,6 +19,11 @@ class QFrame; class QLabel; class QPushButton; +/*! + \class LightApp_ModuleDlg + Dialog allows to choose action on module activation when there is no document. + It is possible to create new document, to open existing or to cancel module activation +*/ class LIGHTAPP_EXPORT LightApp_ModuleDlg : public QDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_NameDlg.cxx b/src/LightApp/LightApp_NameDlg.cxx index 609927305..f6eb0543e 100644 --- a/src/LightApp/LightApp_NameDlg.cxx +++ b/src/LightApp/LightApp_NameDlg.cxx @@ -123,6 +123,9 @@ QString LightApp_NameDlg::name() return myLineEdit->text(); } +/*! + Accepts if name isn't empty +*/ void LightApp_NameDlg::accept() { if ( name().stripWhiteSpace().isEmpty() ) diff --git a/src/LightApp/LightApp_NameDlg.h b/src/LightApp/LightApp_NameDlg.h index c0309c0f2..6bc61b9d5 100644 --- a/src/LightApp/LightApp_NameDlg.h +++ b/src/LightApp/LightApp_NameDlg.h @@ -18,10 +18,10 @@ class QLineEdit; class QPushButton; -//================================================================================= -// class : LightApp_NameDlg -/*! purpose : Common dialog box class*/ -//================================================================================= +/*! + \class LightApp_NameDlg + Common dialog box class +*/ class LIGHTAPP_EXPORT LightApp_NameDlg : public QDialog { Q_OBJECT diff --git a/src/LightApp/LightApp_OBFilter.h b/src/LightApp/LightApp_OBFilter.h index 4ea292132..69db84c2c 100644 --- a/src/LightApp/LightApp_OBFilter.h +++ b/src/LightApp/LightApp_OBFilter.h @@ -24,6 +24,10 @@ 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: diff --git a/src/LightApp/LightApp_OBSelector.cxx b/src/LightApp/LightApp_OBSelector.cxx index 22867b5f6..fcd6d1dd6 100644 --- a/src/LightApp/LightApp_OBSelector.cxx +++ b/src/LightApp/LightApp_OBSelector.cxx @@ -104,6 +104,7 @@ void LightApp_OBSelector::setSelection( const SUIT_DataOwnerPtrList& theList ) } myBrowser->setSelected( objList ); + mySelectedList.clear(); } /*!On selection changed.*/ diff --git a/src/LightApp/LightApp_OBSelector.h b/src/LightApp/LightApp_OBSelector.h index e8fc44371..a3928ccd9 100644 --- a/src/LightApp/LightApp_OBSelector.h +++ b/src/LightApp/LightApp_OBSelector.h @@ -27,6 +27,10 @@ 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 diff --git a/src/LightApp/LightApp_OCCSelector.h b/src/LightApp/LightApp_OCCSelector.h index 5a53992e0..619a4739e 100644 --- a/src/LightApp/LightApp_OCCSelector.h +++ b/src/LightApp/LightApp_OCCSelector.h @@ -27,6 +27,10 @@ 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 diff --git a/src/LightApp/LightApp_Operation.cxx b/src/LightApp/LightApp_Operation.cxx index 197eb93ee..f13019d6c 100755 --- a/src/LightApp/LightApp_Operation.cxx +++ b/src/LightApp/LightApp_Operation.cxx @@ -121,10 +121,6 @@ void LightApp_Operation::suspendOperation() setDialogActive( false ); } -//======================================================================= -// name : abortOperation -// Purpose : Hide dialog box (if it is exists) -//======================================================================= /*! * \brief Performs actions needed for aborting operation * diff --git a/src/LightApp/LightApp_Operation.h b/src/LightApp/LightApp_Operation.h index 4b07bd7b2..beac7042c 100755 --- a/src/LightApp/LightApp_Operation.h +++ b/src/LightApp/LightApp_Operation.h @@ -22,15 +22,10 @@ class LightApp_SelectionMgr; class LightApp_Dialog; class SUIT_Desktop; -/* - Class : LightApp_Operation - Description : Base class for all operations -*/ - /*! - * \brief Base class for all operations - * - * Base class for all operations (see SUIT_Operation for more description) + \class LightApp_Operation + \brief Base class for all operations + Base class for all operations (see SUIT_Operation for more description) */ class LIGHTAPP_EXPORT LightApp_Operation : public SUIT_Operation { diff --git a/src/LightApp/LightApp_Preferences.cxx b/src/LightApp/LightApp_Preferences.cxx index 96d6abcb2..36ba84c96 100644 --- a/src/LightApp/LightApp_Preferences.cxx +++ b/src/LightApp/LightApp_Preferences.cxx @@ -61,7 +61,7 @@ int LightApp_Preferences::addPreference( const QString& mod, const QString& labe return id; } -/* +/*! Checks: is preferences has module with name \a mod. */ bool LightApp_Preferences::hasModule( const QString& mod ) const diff --git a/src/LightApp/LightApp_Preferences.h b/src/LightApp/LightApp_Preferences.h index 2aa97f143..bcd39127b 100644 --- a/src/LightApp/LightApp_Preferences.h +++ b/src/LightApp/LightApp_Preferences.h @@ -31,6 +31,11 @@ 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 diff --git a/src/LightApp/LightApp_PreferencesDlg.cxx b/src/LightApp/LightApp_PreferencesDlg.cxx index af26451f7..bbd81314e 100644 --- a/src/LightApp/LightApp_PreferencesDlg.cxx +++ b/src/LightApp/LightApp_PreferencesDlg.cxx @@ -20,7 +20,6 @@ // Author: Sergey TELKOV #include "LightApp_PreferencesDlg.h" - #include "LightApp_Preferences.h" #include "QtxResourceMgr.h" @@ -29,12 +28,13 @@ #include #include #include +#include /*! Constructor. */ LightApp_PreferencesDlg::LightApp_PreferencesDlg( LightApp_Preferences* prefs, QWidget* parent ) -: QtxDialog( parent, 0, true, false, OK | Close | Apply ), +: QtxDialog( parent, 0, true, true, OK | Close | Apply ), myPrefs( prefs ), mySaved ( false ) { setCaption( tr( "CAPTION" ) ); @@ -58,6 +58,9 @@ myPrefs( prefs ), mySaved ( false ) QButton* defBtn = userButton( insertButton( tr( "DEFAULT_BTN_TEXT" ) ) ); if ( defBtn ) connect( defBtn, SIGNAL( clicked() ), this, SLOT( onDefault() ) ); + QButton* impBtn = userButton( insertButton( tr( "IMPORT_BTN_TEXT" ) ) ); + if( impBtn ) + connect( impBtn, SIGNAL( clicked() ), this, SLOT( onImportPref() ) ); } /*! @@ -132,3 +135,24 @@ void LightApp_PreferencesDlg::onDefault() } } } + +/*! Import preferences from some file */ +void LightApp_PreferencesDlg::onImportPref() +{ + QtxResourceMgr* mgr = myPrefs->resourceMgr(); + if( !mgr ) + return; + + QFileDialog dlg( ".", "*", this, "", tr( "IMPORT_PREFERENCES" ) ); + dlg.setShowHiddenFiles( true ); + dlg.exec(); + QString fname = dlg.selectedFile(); + if( fname.isEmpty() ) + return; + + if( mgr->import( fname ) ) + { + myPrefs->retrieve(); + myPrefs->toBackup(); + } +} diff --git a/src/LightApp/LightApp_PreferencesDlg.h b/src/LightApp/LightApp_PreferencesDlg.h index 771714519..3a89ac82c 100644 --- a/src/LightApp/LightApp_PreferencesDlg.h +++ b/src/LightApp/LightApp_PreferencesDlg.h @@ -28,6 +28,10 @@ class LightApp_Preferences; +/*! + \class LightApp_PreferencesDlg + Dialog for preferences edition +*/ class LIGHTAPP_EXPORT LightApp_PreferencesDlg : public QtxDialog { Q_OBJECT @@ -47,6 +51,7 @@ private slots: void onHelp(); void onApply(); void onDefault(); + void onImportPref(); private: LightApp_Preferences* myPrefs; diff --git a/src/LightApp/LightApp_Selection.cxx b/src/LightApp/LightApp_Selection.cxx index 454ee5320..dc592f522 100644 --- a/src/LightApp/LightApp_Selection.cxx +++ b/src/LightApp/LightApp_Selection.cxx @@ -86,13 +86,13 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr LightApp_DataOwner* sowner = dynamic_cast( (*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++; } diff --git a/src/LightApp/LightApp_Selection.h b/src/LightApp/LightApp_Selection.h index 79cc0fac6..606f4c27a 100644 --- a/src/LightApp/LightApp_Selection.h +++ b/src/LightApp/LightApp_Selection.h @@ -37,7 +37,13 @@ class LightApp_DataOwner; class LightApp_Study; class SUIT_ViewWindow; - +/*! + \class LightApp_Selection + Custom selection class, allowing to build popup with rules on the base + of owners selected in all selectors (popup client has more priority). + It is able to return values of standard object properties + (isVisible,isComponent,canBeDisplayed,isReference, etc) +*/ class LIGHTAPP_EXPORT LightApp_Selection : public QtxPopupMgr::Selection { public: diff --git a/src/LightApp/LightApp_SelectionMgr.h b/src/LightApp/LightApp_SelectionMgr.h index 8546dadfe..20d03efa6 100644 --- a/src/LightApp/LightApp_SelectionMgr.h +++ b/src/LightApp/LightApp_SelectionMgr.h @@ -36,6 +36,10 @@ 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 diff --git a/src/LightApp/LightApp_ShowHideOp.cxx b/src/LightApp/LightApp_ShowHideOp.cxx index 76827c053..0d64875f7 100644 --- a/src/LightApp/LightApp_ShowHideOp.cxx +++ b/src/LightApp/LightApp_ShowHideOp.cxx @@ -33,16 +33,25 @@ #include #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( application() ); diff --git a/src/LightApp/LightApp_ShowHideOp.h b/src/LightApp/LightApp_ShowHideOp.h index cac7b918d..d84ef52c8 100644 --- a/src/LightApp/LightApp_ShowHideOp.h +++ b/src/LightApp/LightApp_ShowHideOp.h @@ -23,6 +23,12 @@ #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 diff --git a/src/LightApp/LightApp_Study.cxx b/src/LightApp/LightApp_Study.cxx index 0b8b9005e..09eb3c3a0 100644 --- a/src/LightApp/LightApp_Study.cxx +++ b/src/LightApp/LightApp_Study.cxx @@ -77,10 +77,9 @@ void LightApp_Study::createDocument() emit created( this ); } -//======================================================================= -// name : openDocument -/*! Purpose : Open document*/ -//======================================================================= +/*! + Opens document +*/ bool LightApp_Study::openDocument( const QString& theFileName ) { myDriver->ClearDriverContents(); @@ -106,10 +105,9 @@ bool LightApp_Study::openDocument( const QString& theFileName ) return res; } -//======================================================================= -// name : loadDocument -/*! Purpose : Load document */ -//======================================================================= +/*! + Loads document +*/ bool LightApp_Study::loadDocument( const QString& theStudyName ) { myDriver->ClearDriverContents(); @@ -138,10 +136,9 @@ bool LightApp_Study::loadDocument( const QString& theStudyName ) return res; } -//======================================================================= -// name : saveDocumentAs -/*! Purpose : Save document */ -//======================================================================= +/*! + Saves document +*/ bool LightApp_Study::saveDocumentAs( const QString& theFileName ) { SUIT_ResourceMgr* resMgr = application()->resourceMgr(); @@ -201,10 +198,9 @@ bool LightApp_Study::saveDocumentAs( const QString& theFileName ) return res; } -//======================================================================= -// name : saveDocument -/*! Purpose : Save document */ -//======================================================================= +/*! + Saves document +*/ bool LightApp_Study::saveDocument() { ModelList list; dataModels( list ); @@ -227,10 +223,9 @@ bool LightApp_Study::saveDocument() return res; } -//================================================================ -// Function : closeDocument -/*! Purpose : Close document */ -//================================================================ +/*! + Closes document +*/ void LightApp_Study::closeDocument(bool permanently) { // Inform everybody that this study is going to close when it's most safe to, @@ -243,27 +238,25 @@ void LightApp_Study::closeDocument(bool permanently) myDriver->ClearDriverContents(); } -//================================================================ -// Function : referencedToEntry -/*! Purpose : Return current entry*/ -//================================================================ +/*! + \return real entry by entry of reference + \param entry - entry of reference object +*/ QString LightApp_Study::referencedToEntry( const QString& entry ) const { return entry; } -//================================================================ -// Function : children -/*! Purpose : Return entries of children of object*/ -//================================================================ +/*! + \return entries of object children +*/ void LightApp_Study::children( const QString&, QStringList& ) const { } -//================================================================ -// Function : isComponent -/*! Purpose : Return true if entry corresponds to component*/ -//================================================================ +/*! + \return true if entry corresponds to component +*/ bool LightApp_Study::isComponent( const QString& entry ) const { if( !root() ) @@ -281,10 +274,9 @@ bool LightApp_Study::isComponent( const QString& entry ) const return false; } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return component data type for entry +*/ QString LightApp_Study::componentDataType( const QString& entry ) const { LightApp_DataObject* aCurObj; @@ -297,10 +289,9 @@ QString LightApp_Study::componentDataType( const QString& entry ) const return ""; } -//================================================================ -// Function : isModified -// Purpose : -//================================================================ +/*! + \return true if study is modified +*/ bool LightApp_Study::isModified() const { bool isAnyChanged = CAM_Study::isModified(); @@ -315,27 +306,24 @@ bool LightApp_Study::isModified() const return isAnyChanged; } -//================================================================ -// Function : isSaved -/*! Purpose : Check: data model is saved?*/ -//================================================================ +/*! + \return true if data model is saved +*/ bool LightApp_Study::isSaved() const { return CAM_Study::isSaved(); } -//======================================================================= -// name : addComponent -/*! Purpose : Create SComponent for module, necessary for SalomeApp study */ -//======================================================================= +/*! + Creates SComponent for module, necessary for SalomeApp study +*/ void LightApp_Study::addComponent(const CAM_DataModel* dm) { } -//======================================================================= -// name : saveModuleData -/*! Purpose : save list file for module 'theModuleName' */ -//======================================================================= +/*! + Saves list file for module 'theModuleName' +*/ void LightApp_Study::saveModuleData(QString theModuleName, QStringList theListOfFiles) { int aNb = theListOfFiles.count(); @@ -353,10 +341,9 @@ void LightApp_Study::saveModuleData(QString theModuleName, QStringList theListOf myDriver->SetListOfFiles(theModuleName, aListOfFiles); } -//======================================================================= -// name : openModuleData -/*! Purpose : gets list of file for module 'theModuleNam' */ -//======================================================================= +/*! + Gets list of file for module 'theModuleNam' +*/ void LightApp_Study::openModuleData(QString theModuleName, QStringList& theListOfFiles) { std::vector aListOfFiles = myDriver->GetListOfFiles(theModuleName); @@ -370,10 +357,9 @@ void LightApp_Study::openModuleData(QString theModuleName, QStringList& theListO theListOfFiles.append(aListOfFiles[i+1].c_str()); } -//======================================================================= -// name : saveStudyData -/*! Purpose : save data from study */ -//======================================================================= +/*! + Saves data from study +*/ bool LightApp_Study::saveStudyData( const QString& theFileName ) { ModelList list; dataModels( list ); @@ -386,10 +372,9 @@ bool LightApp_Study::saveStudyData( const QString& theFileName ) return aRes; } -//======================================================================= -// name : openStudyData -/*! Purpose : open data for study */ -//======================================================================= +/*! + Opens data for study +*/ bool LightApp_Study::openStudyData( const QString& theFileName ) { SUIT_ResourceMgr* resMgr = application()->resourceMgr(); @@ -401,10 +386,9 @@ bool LightApp_Study::openStudyData( const QString& theFileName ) return aRes; } -//================================================================ -// Function : openDataModel -/*! Purpose : Open data model */ -//================================================================ +/*! + Opens data model +*/ bool LightApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm ) { if (!dm) @@ -422,20 +406,19 @@ bool LightApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm return false; } -//================================================================ -// Function : GetTmpDir -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + \return temporary directory for saving files of modules +*/ std::string LightApp_Study::GetTmpDir (const char* theURL, const bool isMultiFile) { return myDriver->GetTmpDir(theURL, isMultiFile); } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + \return list of files necessary for module + \param theModuleName - name of module +*/ std::vector LightApp_Study::GetListOfFiles(const char* theModuleName) const { std::vector aListOfFiles; @@ -443,19 +426,19 @@ std::vector LightApp_Study::GetListOfFiles(const char* theModuleNam return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + Sets list of files necessary for module + \param theModuleName - name of module + \param theListOfFiles - list of files +*/ void LightApp_Study::SetListOfFiles (const char* theModuleName, const std::vector 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) @@ -464,10 +447,10 @@ void LightApp_Study::RemoveTemporaryFiles (const char* theModuleName, const bool myDriver->RemoveTemporaryFiles(theModuleName, isDirDeleted); } -//================================================================ -// Function : components -/*! Purpose : to be used by modules*/ -//================================================================ +/*! + Fills list with components names + \param comp - list to be filled +*/ void LightApp_Study::components( QStringList& comp ) const { DataObjectList children = root()->children(); diff --git a/src/LightApp/LightApp_Study.h b/src/LightApp/LightApp_Study.h index 2e0ac3226..2b8cf30c4 100644 --- a/src/LightApp/LightApp_Study.h +++ b/src/LightApp/LightApp_Study.h @@ -32,6 +32,11 @@ 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 diff --git a/src/LightApp/LightApp_SwitchOp.cxx b/src/LightApp/LightApp_SwitchOp.cxx index 14feeaa6d..820bf1e5f 100755 --- a/src/LightApp/LightApp_SwitchOp.cxx +++ b/src/LightApp/LightApp_SwitchOp.cxx @@ -16,17 +16,6 @@ // // 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" diff --git a/src/LightApp/LightApp_SwitchOp.h b/src/LightApp/LightApp_SwitchOp.h index dad93261d..2fdb302e4 100755 --- a/src/LightApp/LightApp_SwitchOp.h +++ b/src/LightApp/LightApp_SwitchOp.h @@ -16,19 +16,6 @@ // // 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 diff --git a/src/LightApp/LightApp_UpdateFlags.h b/src/LightApp/LightApp_UpdateFlags.h index 2fc7fa780..6dc90343a 100755 --- a/src/LightApp/LightApp_UpdateFlags.h +++ b/src/LightApp/LightApp_UpdateFlags.h @@ -12,11 +12,11 @@ #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 diff --git a/src/LightApp/LightApp_VTKSelector.cxx b/src/LightApp/LightApp_VTKSelector.cxx index a81891b59..bed74c357 100644 --- a/src/LightApp/LightApp_VTKSelector.cxx +++ b/src/LightApp/LightApp_VTKSelector.cxx @@ -21,6 +21,7 @@ #ifndef DISABLE_VTKVIEWER #include "SVTK_ViewModelBase.h" + #include "SVTK_ViewManager.h" #include "SVTK_Selector.h" #include "SVTK_ViewWindow.h" #include "SVTK_Functor.h" @@ -42,15 +43,10 @@ */ 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 /*! @@ -61,6 +57,51 @@ LightApp_SVTKDataOwner { } +/*! + \return active SVTK view window +*/ +SVTK_ViewWindow* +LightApp_SVTKDataOwner +::GetActiveViewWindow() const +{ + if(SUIT_ViewWindow* aViewWindow = myDesktop->activeWindow()) + return dynamic_cast(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. */ @@ -68,7 +109,12 @@ SALOME_Actor* LightApp_SVTKDataOwner ::GetActor() const { - return myActor.GetPointer(); + if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){ + using namespace SVTK; + return Find(aViewWindow->getRenderer()->GetActors(),TIsSameIObject(IO())); + } + + return NULL; } #endif @@ -137,23 +183,16 @@ LightApp_VTKSelector ::getSelection( SUIT_DataOwnerPtrList& aList ) const { if(myViewer){ - if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){ - if(SVTK_ViewWindow* aView = dynamic_cast(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(aView->getRenderer()->GetActors(),TIsSameIObject(anIO)); - } - aList.append(new LightApp_SVTKDataOwner(anIO,anIds,aMode,anActor)); + if(SUIT_ViewManager* aViewManager = myViewer->getViewManager()){ + if(SVTK_ViewManager* aViewMgr = dynamic_cast(aViewManager)){ + if(SVTK_ViewWindow* aView = dynamic_cast(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())); } } } @@ -182,10 +221,7 @@ LightApp_VTKSelector aSelector->SetSelectionMode(anOwner->GetMode()); Handle(SALOME_InteractiveObject) anIO = anOwner->IO(); - if( anOwner->GetActor() ) - aSelector->AddIObject( anOwner->GetActor() ); - else - aSelector->AddIObject(anIO); + aSelector->AddIObject(anIO); anAppendList.Append(anIO); aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false); diff --git a/src/LightApp/LightApp_VTKSelector.h b/src/LightApp/LightApp_VTKSelector.h index 7c5dca73f..96582d555 100644 --- a/src/LightApp/LightApp_VTKSelector.h +++ b/src/LightApp/LightApp_VTKSelector.h @@ -23,6 +23,8 @@ #include "LightApp.h" #include "LightApp_DataOwner.h" +class SUIT_Desktop; + #ifndef DISABLE_VTKVIEWER #include #include @@ -31,6 +33,7 @@ #include "SALOME_InteractiveObject.hxx" #endif class SALOME_Actor; + class SVTK_ViewWindow; class SVTK_ViewModelBase; #endif @@ -43,30 +46,25 @@ class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner #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 myActor; + mutable TColStd_IndexedMapOfInteger myIds; + + SVTK_ViewWindow* GetActiveViewWindow() const; + SUIT_Desktop* myDesktop; + #else LightApp_SVTKDataOwner( const QString& ); #endif @@ -74,7 +72,8 @@ class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner /*! - 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 { diff --git a/src/LightApp/Makefile.in b/src/LightApp/Makefile.in index c26adb882..89e3cc8d6 100755 --- a/src/LightApp/Makefile.in +++ b/src/LightApp/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : OCC team (OCN) # Module : LightApp @@ -135,7 +153,7 @@ RESOURCES_FILES = icon_about.png \ 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) @@ -171,7 +189,7 @@ ifneq ($(DISABLE_PYCONSOLE),yes) 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 diff --git a/src/LightApp/resources/LightApp.xml b/src/LightApp/resources/LightApp.xml index cab85581e..2190a3cff 100644 --- a/src/LightApp/resources/LightApp.xml +++ b/src/LightApp/resources/LightApp.xml @@ -1,12 +1,6 @@ -
    - - - - - -
    + @@ -15,10 +9,18 @@
    +
    +
    + + + + +
    + @@ -31,48 +33,60 @@ - + +
    +
    + + + + + +
    +
    - - -
    +
    + + + +
    +
    + -
    - + +
    - - - - + + + + +
    - - + + +
    - - - - - - - + + + + + + + +
    - - -
    - -
    - - + + +
    diff --git a/src/LightApp/resources/LightApp_msg_en.po b/src/LightApp/resources/LightApp_msg_en.po index 09f901332..7971407b4 100644 --- a/src/LightApp/resources/LightApp_msg_en.po +++ b/src/LightApp/resources/LightApp_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". @@ -81,10 +99,10 @@ msgid "LightApp_Application::INF_CANCELLED" msgstr "Module activation cancelled" msgid "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" -msgstr "External browser \"%1\" can not show help page \"%2\"" +msgstr "External browser \"%1\" can not show help page \"%2\". Do you want to change it in preferences?" msgid "LightApp_Application::DEFINE_EXTERNAL_BROWSER" -msgstr "Define external browser in preferences" +msgstr "External browser is not found. Do you want to define it in preferences?" msgid "LightApp_Application::DATA_MODELS" msgstr "Data models" @@ -123,9 +141,6 @@ msgstr "Multi file save" msgid "LightApp_Application::PREF_ASCII_FILE" msgstr "ASCII save" -msgid "LightApp_Application::PREF_UNDO_LEVEL" -msgstr "Undo level" - msgid "LightApp_Application::PREF_STORE_POS" msgstr "Store positions of windows" @@ -263,7 +278,13 @@ msgid "LightApp_PreferencesDlg::WARNING" msgstr "Warning" msgid "LightApp_PreferencesDlg::DEFAULT_QUESTION" -msgstr "Do you want to retrieve default preferences?" +msgstr "Do you want to retrieve default preferences?" + +msgid "LightApp_PreferencesDlg::IMPORT_PREFERENCES" +msgstr "Import preferences" + +msgid "LightApp_PreferencesDlg::IMPORT_BTN_TEXT" +msgstr "Import" //======================================================================================= @@ -328,3 +349,4 @@ msgstr "Rename" msgid "LightApp_NameDlg::NAME_LBL" msgstr "Name: " + diff --git a/src/LogWindow/LogWindow.cxx b/src/LogWindow/LogWindow.cxx index 0b846b720..e0de7b355 100755 --- a/src/LogWindow/LogWindow.cxx +++ b/src/LogWindow/LogWindow.cxx @@ -36,7 +36,9 @@ #define DEFAULT_SEPARATOR "***" -//**************************************************************** +/*! + Converts rich text to plain text +*/ static QString plainText( const QString& richText ) { QString aText = richText; @@ -53,8 +55,9 @@ static QString plainText( const QString& richText ) return aText; } -//**************************************************************** - +/*! + Default constructor +*/ LogWindow::LogWindow( QWidget* parent ) : QFrame( parent ), SUIT_PopupClient() @@ -83,10 +86,16 @@ SUIT_PopupClient() createActions(); } +/*! + Destructor +*/ LogWindow::~LogWindow() { } +/*! + Custom event handler +*/ bool LogWindow::eventFilter( QObject* o, QEvent* e ) { if ( o == myView->viewport() && e->type() == QEvent::ContextMenu ) @@ -97,6 +106,10 @@ bool LogWindow::eventFilter( QObject* o, QEvent* e ) return QFrame::eventFilter( o, e ); } +/*! + Sets banner (title of message log) + \param banner - new title +*/ void LogWindow::setBanner( const QString& banner ) { myBanner = banner; @@ -104,6 +117,10 @@ void LogWindow::setBanner( const QString& banner ) clear( false ); } +/*! + Set separator (line printing between messages) + \param separator - new separator +*/ void LogWindow::setSeparator( const QString& separator ) { mySeparator = separator; @@ -111,6 +128,11 @@ void LogWindow::setSeparator( const QString& separator ) clear( false ); } +/*! + Puts message to log window + \param message - text of message + \addSeparator - if it is true, then separator is added to tail of message log +*/ void LogWindow::putMessage( const QString& message, bool addSeparator ) { myView->append( message ); @@ -124,6 +146,10 @@ void LogWindow::putMessage( const QString& message, bool addSeparator ) myView->scrollToBottom(); } +/*! + Clears message log + \param clearHistory - if it is true, then also history is cleared +*/ void LogWindow::clear( bool clearHistory ) { myView->clear(); @@ -139,6 +165,10 @@ void LogWindow::clear( bool clearHistory ) myBannerSize = 0; } +/*! + Saves log to file + \param fileName - name of file +*/ bool LogWindow::saveLog( const QString& fileName ) { QFile file( fileName ); @@ -160,6 +190,9 @@ bool LogWindow::saveLog( const QString& fileName ) return true; } +/*! + Creates actions +*/ void LogWindow::createActions() { QAction* a = new QAction( "", tr( "&Copy" ), 0, this ); @@ -183,6 +216,9 @@ void LogWindow::createActions() myActions.insert( SaveToFileId, a ); } +/*! + Redefined virtual method for popup filling +*/ void LogWindow::contextMenuPopup( QPopupMenu* popup ) { myActions[ CopyId ]->addTo( popup ); @@ -199,6 +235,9 @@ void LogWindow::contextMenuPopup( QPopupMenu* popup ) updateActions(); } +/*! + Updates enable status of actions +*/ void LogWindow::updateActions() { int paraFrom, paraTo, indexFrom, indexTo; @@ -212,6 +251,9 @@ void LogWindow::updateActions() myActions[ SaveToFileId ]->setEnabled( myHistory.count() > 0 ); } +/*! + SLOT: called if user click "Save" in popup +*/ void LogWindow::onSaveToFile() { SUIT_Application* app = SUIT_Session::session()->activeApplication(); @@ -233,17 +275,26 @@ void LogWindow::onSaveToFile() SUIT_MessageBox::error1( this, tr( "Error" ), tr( "Can't save file" ), tr( "OK" ) ); } +/*! + SLOT: called if user click "Select all" in popup +*/ void LogWindow::onSelectAll() { if ( myView ) myView->selectAll(); } +/*! + SLOT: called if user click "Clear" in popup +*/ void LogWindow::onClear() { clear( false ); } +/*! + SLOT: called if user click "Copy" in popup +*/ void LogWindow::onCopy() { if ( myView ) diff --git a/src/LogWindow/LogWindow.h b/src/LogWindow/LogWindow.h index 44001e068..c6aeeecc6 100755 --- a/src/LogWindow/LogWindow.h +++ b/src/LogWindow/LogWindow.h @@ -52,6 +52,10 @@ 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 diff --git a/src/LogWindow/Makefile.in b/src/LogWindow/Makefile.in index f4590c4c6..0d0c931f7 100755 --- a/src/LogWindow/Makefile.in +++ b/src/LogWindow/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : LogWindow diff --git a/src/OBJECT/Handle_SALOME_AISObject.hxx b/src/OBJECT/Handle_SALOME_AISObject.hxx index 98dede911..1fd37e08b 100755 --- a/src/OBJECT/Handle_SALOME_AISObject.hxx +++ b/src/OBJECT/Handle_SALOME_AISObject.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Handle_SALOME_AISShape.hxx b/src/OBJECT/Handle_SALOME_AISShape.hxx index 65a1bc6d9..525fbada5 100755 --- a/src/OBJECT/Handle_SALOME_AISShape.hxx +++ b/src/OBJECT/Handle_SALOME_AISShape.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Handle_SALOME_Filter.hxx b/src/OBJECT/Handle_SALOME_Filter.hxx index 49eb7b877..dc169db53 100644 --- a/src/OBJECT/Handle_SALOME_Filter.hxx +++ b/src/OBJECT/Handle_SALOME_Filter.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx index 767dfec3f..e4f3622fb 100755 --- a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx +++ b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx b/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx index 0df5e98be..986a4da6e 100644 --- a/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Handle_SALOME_TypeFilter.hxx b/src/OBJECT/Handle_SALOME_TypeFilter.hxx index 4fdd91368..b41dc2bac 100644 --- a/src/OBJECT/Handle_SALOME_TypeFilter.hxx +++ b/src/OBJECT/Handle_SALOME_TypeFilter.hxx @@ -40,10 +40,18 @@ 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) diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in index 9171c05f6..f992a298e 100755 --- a/src/OBJECT/Makefile.in +++ b/src/OBJECT/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. diff --git a/src/OBJECT/SALOME_AISShape.cxx b/src/OBJECT/SALOME_AISShape.cxx index dcd76be06..1bd77e3ba 100755 --- a/src/OBJECT/SALOME_AISShape.cxx +++ b/src/OBJECT/SALOME_AISShape.cxx @@ -29,6 +29,12 @@ //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) +{ } diff --git a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx index 4cab4c88e..8af01576f 100644 --- a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx +++ b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx @@ -46,10 +46,17 @@ #include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx" #endif using namespace std; + +/*! + Destructor +*/ SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} +/*! + \return OCC Handle Type +*/ Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_() { @@ -72,9 +79,9 @@ Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfIntege } -// DownCast method -// allow safe downcasting -// +/*! + DownCast method: allows safe downcasting +*/ const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject) { Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) _anOtherObject; @@ -87,14 +94,26 @@ const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapN return _anOtherObject ; } + +/*! + \return OCC Handle dynamic Type +*/ const Handle(Standard_Type)& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::DynamicType() const { return STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) ; } + +/*! + \return true if other type is the same + \param AType - type to be checked +*/ Standard_Boolean SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) == AType || TCollection_MapNode::IsKind(AType)); } +/*! + Destructor +*/ Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {} #define TheKey Handle_SALOME_InteractiveObject #define TheKey_hxx "SALOME_InteractiveObject.hxx" diff --git a/src/OBJECT/SALOME_InteractiveObject.cxx b/src/OBJECT/SALOME_InteractiveObject.cxx index 7d60d59e6..bd7f5c4f8 100755 --- a/src/OBJECT/SALOME_InteractiveObject.cxx +++ b/src/OBJECT/SALOME_InteractiveObject.cxx @@ -34,6 +34,9 @@ #include "SALOME_InteractiveObject.ixx" +/*! + Default constructor +*/ SALOME_InteractiveObject::SALOME_InteractiveObject() { myEntry = ""; @@ -42,6 +45,12 @@ SALOME_InteractiveObject::SALOME_InteractiveObject() myReference = ""; } +/*! + Constructor + \param anEntry - entry of object + \param aComponentDataType - component data type name + \param aName - name of object +*/ SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry, const char* aComponentDataType, const char* aName): @@ -51,34 +60,62 @@ SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry, myReference("") {} +/*! + Sets entry + \param anEntry - new entry of object +*/ void SALOME_InteractiveObject::setEntry(const char* anEntry){ myEntry = anEntry; } +/*! + \return entry +*/ const char* SALOME_InteractiveObject::getEntry(){ return myEntry.c_str(); } +/*! + Sets component data type + \param aComponentDataType - component data type name +*/ void SALOME_InteractiveObject::setComponentDataType(const char* aComponentDataType){ myComponentDataType = aComponentDataType; } +/*! + \return component data type +*/ const char* SALOME_InteractiveObject::getComponentDataType(){ return myComponentDataType.c_str(); } +/*! + Sets name + \param aName - new name of object +*/ void SALOME_InteractiveObject::setName(const char* aName){ myName = aName; } +/*! + \return name +*/ const char* SALOME_InteractiveObject::getName(){ return myName.c_str(); } +/*! + \return true if entry isn't empty +*/ Standard_Boolean SALOME_InteractiveObject::hasEntry(){ return myEntry != ""; } +/*! + \return true if objects have same entries + \param anIO - other object +*/ Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_InteractiveObject)& anIO ){ if ( anIO->hasEntry() && this->hasEntry() ) { if ( myEntry == anIO->getEntry() ) @@ -88,6 +125,10 @@ Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_Interactiv return Standard_False; } +/*! + \return true if component data types are same + \param ComponentDataType - component data type to be checked +*/ Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* ComponentDataType){ if ( myComponentDataType == ComponentDataType ) return Standard_True; @@ -95,16 +136,26 @@ Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* Component return Standard_False; } +/*! + \return true if object has reference +*/ Standard_Boolean SALOME_InteractiveObject::hasReference() { return myReference != ""; } +/*! + \return reference +*/ const char* SALOME_InteractiveObject::getReference() { return myReference.c_str(); } +/*! + Sets reference + \param aReference - new reference +*/ void SALOME_InteractiveObject::setReference(const char* aReference) { myReference = aReference; diff --git a/src/OBJECT/SALOME_ListIO.hxx b/src/OBJECT/SALOME_ListIO.hxx index e028e243f..43cc9f8ff 100644 --- a/src/OBJECT/SALOME_ListIO.hxx +++ b/src/OBJECT/SALOME_ListIO.hxx @@ -55,6 +55,10 @@ class SALOME_ListNodeOfListIO; #include #endif +/*! + \class SALOME_ListIO + List of SALOME interactive objects +*/ class SALOME_ListIO { public: diff --git a/src/OBJECT/SALOME_ListNodeOfListIO.hxx b/src/OBJECT/SALOME_ListNodeOfListIO.hxx index 9aed956f8..7734399e4 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO.hxx @@ -47,7 +47,10 @@ class SALOME_InteractiveObject; class SALOME_ListIO; class SALOME_ListIteratorOfListIO; - +/*! + \class SALOME_ListNodeOfListIO + Auxiliary class, represents list node for SALOME_ListIO +*/ class SALOME_ListNodeOfListIO : public TCollection_MapNode { public: diff --git a/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx b/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx index 35f04d576..ba678a212 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx @@ -40,10 +40,16 @@ #include "SALOME_ListIteratorOfListIO.hxx" #endif using namespace std; + +/*! + Destructor +*/ SALOME_ListNodeOfListIO::~SALOME_ListNodeOfListIO() {} - +/*! + \return OCC Handle Type +*/ Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_() { @@ -66,9 +72,9 @@ Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_() } -// DownCast method -// allow safe downcasting -// +/*! + DownCast method, allows safe downcasting +*/ const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast(const Handle(Standard_Transient)& AnObject) { Handle(SALOME_ListNodeOfListIO) _anOtherObject; @@ -81,14 +87,26 @@ const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast( return _anOtherObject ; } + +/*! + \return OCC Handle dynamic Type +*/ const Handle(Standard_Type)& SALOME_ListNodeOfListIO::DynamicType() const { return STANDARD_TYPE(SALOME_ListNodeOfListIO) ; } + +/*! + \return true if other type is the same + \param AType - type to be checked +*/ Standard_Boolean SALOME_ListNodeOfListIO::IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(SALOME_ListNodeOfListIO) == AType || TCollection_MapNode::IsKind(AType)); } +/*! + Destructor +*/ Handle_SALOME_ListNodeOfListIO::~Handle_SALOME_ListNodeOfListIO() {} #define Item Handle_SALOME_InteractiveObject #define Item_hxx "SALOME_InteractiveObject.hxx" diff --git a/src/OBJECT/SALOME_TypeFilter.cxx b/src/OBJECT/SALOME_TypeFilter.cxx index 83f1d71ec..65b2cf9c6 100644 --- a/src/OBJECT/SALOME_TypeFilter.cxx +++ b/src/OBJECT/SALOME_TypeFilter.cxx @@ -30,9 +30,17 @@ #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 ); diff --git a/src/OCCViewer/Makefile.in b/src/OCCViewer/Makefile.in index 6eb3077b8..3e796c0a6 100755 --- a/src/OCCViewer/Makefile.in +++ b/src/OCCViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : OCCViewer diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.cxx b/src/OCCViewer/OCCViewer_ClippingDlg.cxx index c17bfd33d..b8b49e673 100644 --- a/src/OCCViewer/OCCViewer_ClippingDlg.cxx +++ b/src/OCCViewer/OCCViewer_ClippingDlg.cxx @@ -1,17 +1,33 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "OCCViewer_ClippingDlg.h" #include +#include #include "SUIT_Session.h" #include "SUIT_ViewWindow.h" #include "OCCViewer_ViewWindow.h" #include "OCCViewer_ViewPort3d.h" -//#include "utilities.h" - #include -#include -#include +//#include #include #include #include @@ -31,12 +47,17 @@ #include #include -//================================================================================= -// class : OCCViewer_ClippingDlg() -// purpose : -//================================================================================= +/*! + Constructor + \param view - view window + \param parent - parent widget + \param name - dialog name + \param modal - is this dialog modal + \param fl - flags +*/ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), myView( view ) +: QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), + myView( view ) { setCaption( tr( "Clipping" ) ); @@ -193,42 +214,50 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge myBusy = false; } -//================================================================================= -// function : ~ OCCViewer_ClippingDlg() -// purpose : Destroys the object and frees any allocated resources -//================================================================================= +/*! + Destructor + Destroys the object and frees any allocated resources +*/ OCCViewer_ClippingDlg::~ OCCViewer_ClippingDlg() { // no need to delete child widgets, Qt does it all for us } -//================================================================================= -// function : closeEvent -// purpose : -//================================================================================= +/*! + Custom handling of close event: erases preview +*/ void OCCViewer_ClippingDlg::closeEvent( QCloseEvent* e ) { erasePreview(); + + // Set the clipping plane back + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() && !myClippingPlane.IsNull() ) + aView3d->SetPlaneOn( myClippingPlane ); + + if (!myView->isCuttingPlane()) + myAction->setOn( false ); + QDialog::closeEvent( e ); } -//================================================================================= -// function : showEvent -// purpose : -//================================================================================= +/*! + Custom handling of show event: displays preview +*/ void OCCViewer_ClippingDlg::showEvent( QShowEvent* e ) { + ReserveClippingPlane(); + QDialog::showEvent( e ); onPreview( PreviewChB->isChecked() ); } -//================================================================================= -// function : hideEvent -// purpose : -//================================================================================= +/*! + Custom handling of hide event: erases preview +*/ void OCCViewer_ClippingDlg::hideEvent( QHideEvent* e ) { erasePreview(); @@ -236,21 +265,28 @@ void OCCViewer_ClippingDlg::hideEvent( QHideEvent* e ) } -//================================================================================= -// function : ClickOnClose() -// purpose : -//================================================================================= +/*! + SLOT on close button click: erases preview and rejects dialog +*/ void OCCViewer_ClippingDlg::ClickOnClose() { erasePreview(); + + // Set the clipping plane back + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() && !myClippingPlane.IsNull() ) + aView3d->SetPlaneOn( myClippingPlane ); + + if (!myView->isCuttingPlane()) + myAction->setOn( false ); + reject(); } -//================================================================================= -// function : ClickOnApply() -// purpose : -//================================================================================= +/*! + SLOT on apply button click: sets cutting plane +*/ void OCCViewer_ClippingDlg::ClickOnApply() { qApp->processEvents(); @@ -261,15 +297,15 @@ void OCCViewer_ClippingDlg::ClickOnApply() SpinBox_Dx->value(), SpinBox_Dy->value(), SpinBox_Dz->value() ); QApplication::restoreOverrideCursor(); - + erasePreview(); + + ReserveClippingPlane(); } - -//================================================================================= -// function : onReset() -// purpose : -//================================================================================= +/*! + SLOT on reset button click: sets default values +*/ void OCCViewer_ClippingDlg::onReset() { myBusy = true; @@ -285,11 +321,9 @@ void OCCViewer_ClippingDlg::onReset() } } - -//================================================================================= -// function : onInvert() -// purpose : -//================================================================================= +/*! + SLOT on invert button click: inverts normal of cutting plane +*/ void OCCViewer_ClippingDlg::onInvert() { double Dx = SpinBox_Dx->value(); @@ -309,11 +343,9 @@ void OCCViewer_ClippingDlg::onInvert() } } - -//================================================================================= -// function : onModeChanged() -// purpose : -//================================================================================= +/*! + SLOT: called on mode changed +*/ void OCCViewer_ClippingDlg::onModeChanged( int mode ) { bool isUserMode = (mode==0); @@ -375,10 +407,9 @@ void OCCViewer_ClippingDlg::onModeChanged( int mode ) } -//================================================================ -// Function : displayPreview -// Purpose : -//================================================================ +/*! + Displays preview of clipping plane +*/ void OCCViewer_ClippingDlg::displayPreview() { if ( myBusy || !isValid() ) @@ -440,6 +471,9 @@ void OCCViewer_ClippingDlg::displayPreview() myPreviewPlane = new AIS_Plane( new Geom_Plane( aBasePnt, aNormal ) ); myPreviewPlane->SetSize( aSize, aSize ); + // Deactivate clipping planes + myView->getViewPort()->getView()->SetPlaneOff(); + ic->Display( myPreviewPlane, 1, -1, false ); ic->SetWidth( myPreviewPlane, 10, false ); ic->SetMaterial( myPreviewPlane, Graphic3d_NOM_PLASTIC, false ); @@ -450,10 +484,9 @@ void OCCViewer_ClippingDlg::displayPreview() } -//================================================================ -// Function : erasePreview -// Purpose : -//================================================================ +/*! + Erases preview of clipping plane +*/ void OCCViewer_ClippingDlg::erasePreview () { OCCViewer_Viewer* anOCCViewer = (OCCViewer_Viewer*)myView->getViewManager()->getViewModel(); @@ -473,10 +506,9 @@ void OCCViewer_ClippingDlg::erasePreview () } -//================================================================ -// Function : onValueChanged -// Purpose : -//================================================================ +/*! + SLOT: called on value changes (co-ordinates of point or normal) +*/ void OCCViewer_ClippingDlg::onValueChanged() { if ( PreviewChB->isChecked() ) @@ -487,10 +519,9 @@ void OCCViewer_ClippingDlg::onValueChanged() } -//================================================================ -// Function : onPreview -// Purpose : -//================================================================ +/*! + SLOT: called on preview check box toggled +*/ void OCCViewer_ClippingDlg::onPreview( bool on ) { erasePreview(); @@ -499,11 +530,24 @@ void OCCViewer_ClippingDlg::onPreview( bool on ) displayPreview(); } -//================================================================ -// Function : onPreview -// Purpose : -//================================================================ +/*! + \return true if plane parameters are valid +*/ bool OCCViewer_ClippingDlg::isValid() { return ( SpinBox_Dx->value()!=0 || SpinBox_Dy->value()!=0 || SpinBox_Dz->value()!=0 ); } + +/*! + Remember the current clipping plane +*/ +void OCCViewer_ClippingDlg::ReserveClippingPlane() +{ + Handle(V3d_View) aView3d = myView->getViewPort()->getView(); + if ( !aView3d.IsNull() ) + { + aView3d->InitActivePlanes(); + if ( aView3d->MoreActivePlanes() ) + myClippingPlane = aView3d->ActivePlane(); + } +} diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.h b/src/OCCViewer/OCCViewer_ClippingDlg.h index e46903a05..192668cdd 100644 --- a/src/OCCViewer/OCCViewer_ClippingDlg.h +++ b/src/OCCViewer/OCCViewer_ClippingDlg.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef OCCVIEWER_CLIPPINGDLG_H #define OCCVIEWER_CLIPPINGDLG_H @@ -6,6 +24,7 @@ #include #include +#include class QGroupBox; class QLabel; @@ -13,14 +32,15 @@ class QPushButton; class QComboBox; class QCheckBox; class QtxDblSpinBox; +class QtxAction; class OCCViewer_ViewWindow; -//================================================================================= -// class : OCCViewer_ClippingDlg -// purpose : -//================================================================================= +/*! + \class OCCViewer_ClippingDlg + \brief Dialog allowing to assign parameters of clipping plane +*/ class OCCViewer_ClippingDlg : public QDialog { Q_OBJECT @@ -28,6 +48,8 @@ class OCCViewer_ClippingDlg : public QDialog public: OCCViewer_ClippingDlg(OCCViewer_ViewWindow* , QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0); ~OCCViewer_ClippingDlg(); + + void SetAction( QtxAction* theAction ) { myAction = theAction; } private : @@ -36,6 +58,7 @@ private : virtual void hideEvent ( QHideEvent * ); void displayPreview(); void erasePreview(); + void ReserveClippingPlane(); bool isValid(); @@ -67,8 +90,11 @@ private : OCCViewer_ViewWindow* myView; Handle(AIS_Plane) myPreviewPlane; + Handle(V3d_Plane) myClippingPlane; bool myBusy; + + QtxAction* myAction; private slots: void ClickOnApply(); diff --git a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx index a79d5f2c7..8092b1b6d 100755 --- a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx +++ b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ OCCViewer_CreateRestoreViewDlg::OCCViewer_CreateRestoreViewDlg( QWidget* aWin, OCCViewer_Viewer* curModel ) : QDialog( aWin ) { @@ -95,10 +98,17 @@ OCCViewer_CreateRestoreViewDlg::OCCViewer_CreateRestoreViewDlg( QWidget* aWin, O connect( theClearAll, SIGNAL( clicked() ), this, SLOT( clearList() ) ); } +/*! + Destructor +*/ OCCViewer_CreateRestoreViewDlg::~OCCViewer_CreateRestoreViewDlg() { } +/*! + Changes image in accordance with item + \param curItem - item contains info about view parameters +*/ void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem ) { if( curItem && myListBox->isEditEnabled() ) @@ -146,11 +156,17 @@ void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem ) } } +/*! + \return current view parameters (corresponding to current item) +*/ viewAspect OCCViewer_CreateRestoreViewDlg::currentItem() const { return myCurrentItem; } +/*! + Deletes selected items from list view +*/ void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems() { if( myListBox->count() && myListBox->isEditEnabled() ) @@ -185,6 +201,9 @@ void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems() } } +/*! + Clears list of view aspects +*/ void OCCViewer_CreateRestoreViewDlg::clearList() { myListBox->clear(); @@ -194,17 +213,27 @@ void OCCViewer_CreateRestoreViewDlg::clearList() myParametersMap.clear(); } +/*! + \return const reference to all view aspects +*/ const viewAspectList& OCCViewer_CreateRestoreViewDlg::parameters() const { return myParametersMap; } +/*! + Renames key of view aspect map in accordance with item name + \param anItem - item +*/ void OCCViewer_CreateRestoreViewDlg::editItemText( QListBoxItem* anItem ) { int index = anItem->listBox()->index( anItem ); myParametersMap[ index ].name = anItem->text().latin1(); } +/*! + Custom event filter +*/ bool OCCViewer_CreateRestoreViewDlg::eventFilter( QObject* anObj, QEvent* anEv ) { if( anEv->type() == QEvent::KeyPress ) @@ -234,6 +263,9 @@ bool OCCViewer_CreateRestoreViewDlg::eventFilter( QObject* anObj, QEvent* anEv ) return QWidget::eventFilter( anObj, anEv ); } +/*! + SLOT: called on OK click, emits dlgOk() and closes dialog +*/ void OCCViewer_CreateRestoreViewDlg::OKpressed() { emit dlgOk(); diff --git a/src/OCCViewer/OCCViewer_VService.cxx b/src/OCCViewer/OCCViewer_VService.cxx index 0c3deacf2..299dd6bcd 100755 --- a/src/OCCViewer/OCCViewer_VService.cxx +++ b/src/OCCViewer/OCCViewer_VService.cxx @@ -16,28 +16,6 @@ // // 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 #include "OCCViewer_VService.h" #include diff --git a/src/OCCViewer/OCCViewer_ViewManager.cxx b/src/OCCViewer/OCCViewer_ViewManager.cxx index dedfc4a0d..7db1cc8a3 100755 --- a/src/OCCViewer/OCCViewer_ViewManager.cxx +++ b/src/OCCViewer/OCCViewer_ViewManager.cxx @@ -22,7 +22,9 @@ int OCCViewer_ViewManager::myMaxId = 0; -//***************************************************************/ +/*! + Constructor +*/ OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop, bool DisplayTrihedron ) : SUIT_ViewManager( study, theDesktop ) { @@ -30,19 +32,27 @@ OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* t setViewModel( new OCCViewer_Viewer( DisplayTrihedron ) ); } -//***************************************************************/ +/*! + Destructor +*/ OCCViewer_ViewManager::~OCCViewer_ViewManager() { } -//***************************************************************/ +/*! + Sets view name + \param theView - view to assign name +*/ void OCCViewer_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( tr( "OCC_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) ); } -//***************************************************************/ +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void OCCViewer_ViewManager::contextMenuPopup( QPopupMenu* popup ) { SUIT_ViewManager::contextMenuPopup( popup ); diff --git a/src/OCCViewer/OCCViewer_ViewModel.cxx b/src/OCCViewer/OCCViewer_ViewModel.cxx index 216c9ec84..d40b80568 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.cxx +++ b/src/OCCViewer/OCCViewer_ViewModel.cxx @@ -40,6 +40,10 @@ #include #include +/*! + Constructor + \param DisplayTrihedron - is trihedron displayed +*/ OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron ) : SUIT_ViewModel(), myBgColor( Qt::black ) @@ -92,22 +96,35 @@ myBgColor( Qt::black ) myMultiSelectionEnabled = true; } - +/*! + Destructor +*/ OCCViewer_Viewer::~OCCViewer_Viewer() { } +/*! + \return background color of viewer +*/ QColor OCCViewer_Viewer::backgroundColor() const { return myBgColor; } +/*! + Sets background color + \param c - new background color +*/ void OCCViewer_Viewer::setBackgroundColor( const QColor& c ) { if ( c.isValid() ) myBgColor = c; } +/*! + Start initialization of view window + \param view - view window to be initialized +*/ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view ) { if ( view ) { @@ -119,7 +136,10 @@ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view ) } } - +/*! + Creates new view window + \param theDesktop - main window of application +*/ SUIT_ViewWindow* OCCViewer_Viewer::createView( SUIT_Desktop* theDesktop ) { OCCViewer_ViewWindow* view = new OCCViewer_ViewWindow(theDesktop, this); @@ -127,7 +147,10 @@ SUIT_ViewWindow* OCCViewer_Viewer::createView( SUIT_Desktop* theDesktop ) return view; } -//********************************************************************* +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void OCCViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -143,15 +166,17 @@ void OCCViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager) } } - -//********************************************************************* +/*! + SLOT: called on mouse button press, stores current mouse position as start point for transformations +*/ void OCCViewer_Viewer::onMousePress(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { myStartPnt.setX(theEvent->x()); myStartPnt.setY(theEvent->y()); } - -//********************************************************************* +/*! + SLOT: called on mouse move, processes transformation or hilighting +*/ void OCCViewer_Viewer::onMouseMove(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { if (!mySelectionEnabled) return; @@ -163,7 +188,9 @@ void OCCViewer_Viewer::onMouseMove(SUIT_ViewWindow* theWindow, QMouseEvent* theE } -//********************************************************************* +/*! + SLOT: called on mouse button release, finishes transformation or selection +*/ void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent) { if (!mySelectionEnabled) return; @@ -211,7 +238,10 @@ void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* t } -//********************************************************************* +/*! + Sets selection enabled status + \param isEnabled - new status +*/ void OCCViewer_Viewer::enableSelection(bool isEnabled) { mySelectionEnabled = isEnabled; @@ -228,7 +258,10 @@ void OCCViewer_Viewer::enableSelection(bool isEnabled) } } -//********************************************************************* +/*! + Sets multiselection enabled status + \param isEnabled - new status +*/ void OCCViewer_Viewer::enableMultiselection(bool isEnable) { myMultiSelectionEnabled = isEnable; @@ -245,7 +278,9 @@ void OCCViewer_Viewer::enableMultiselection(bool isEnable) } } -//********************************************************************* +/*! + Builds popup for occ viewer +*/ void OCCViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup) { thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) ); @@ -258,6 +293,9 @@ void OCCViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup) thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) ); } +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void OCCViewer_Viewer::onDumpView() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); @@ -265,7 +303,9 @@ void OCCViewer_Viewer::onDumpView() aView->onDumpView(); } -//********************************************************************* +/*! + SLOT: called if background color is to be changed changed, passes new color to view port +*/ void OCCViewer_Viewer::onChangeBgColor() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); @@ -281,21 +321,28 @@ void OCCViewer_Viewer::onChangeBgColor() aViewPort3d->setBackgroundColor(selColor); } -//********************************************************************* +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ void OCCViewer_Viewer::onShowToolbar() { OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView()); if ( aView ) aView->getToolBar()->show(); } -//********************************************************************* +/*! + Updates OCC 3D viewer +*/ void OCCViewer_Viewer::update() { if (!myV3dViewer.IsNull()) myV3dViewer->Update(); } -//********************************************************************* +/*! + \return objects selected in 3D viewer + \param theList - list to be filled with selected objects +*/ void OCCViewer_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList) { theList.Clear(); @@ -303,7 +350,10 @@ void OCCViewer_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList) theList.Append(myAISContext->SelectedInteractive()); } -//********************************************************************* +/*! + Selects objects in 3D viewer. Other selected objects are left as selected + \param theList - list objects to be selected +*/ void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList) { AIS_ListIteratorOfListOfInteractive aIt; @@ -312,47 +362,62 @@ void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList) myAISContext->UpdateCurrentViewer(); } -//********************************************************************* +/*! + Auxiliary method to emit signal selectionChanged() +*/ void OCCViewer_Viewer::performSelectionChanged() { emit selectionChanged(); } -//**************************************************************** - +/*! + SLOT, clears view aspects +*/ void OCCViewer_Viewer::onClearViewAspects() { clearViewAspects(); } -//**************************************************************** - +/*! + Clears view aspects +*/ void OCCViewer_Viewer::clearViewAspects() { myViewAspects.clear(); } -//**************************************************************** - +/*! + \return const reference to list of view aspects +*/ const viewAspectList& OCCViewer_Viewer::getViewAspects() { return myViewAspects; } -//**************************************************************** - +/*! + Appends new view aspect + \param aParams - new view aspects +*/ void OCCViewer_Viewer::appendViewAspect( const viewAspect& aParams ) { myViewAspects.append( aParams ); } -//**************************************************************** - +/*! + Replaces old view aspects by new ones + \param aViewList - list of new view aspects +*/ void OCCViewer_Viewer::updateViewAspects( const viewAspectList& aViewList ) { myViewAspects = aViewList; } +/*! + Hilights/unhilights object in viewer + \param obj - object to be updated + \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param update - update current viewer +*/ bool OCCViewer_Viewer::highlight( const Handle(AIS_InteractiveObject)& obj, bool hilight, bool update ) { @@ -372,6 +437,10 @@ bool OCCViewer_Viewer::highlight( const Handle(AIS_InteractiveObject)& obj, return false; } +/*! + Unhilights all objects in viewer + \param updateviewer - update current viewer +*/ bool OCCViewer_Viewer::unHighlightAll( bool updateviewer ) { if ( myAISContext->HasOpenedContext() ) @@ -381,6 +450,11 @@ bool OCCViewer_Viewer::unHighlightAll( bool updateviewer ) return false; } +/*! + \return true if object is in viewer or in collector + \param obj - object to be checked + \param onlyInViewer - search object only in viewer (so object must be displayed) +*/ bool OCCViewer_Viewer::isInViewer( const Handle(AIS_InteractiveObject)& obj, bool onlyInViewer ) { @@ -402,11 +476,21 @@ bool OCCViewer_Viewer::isInViewer( const Handle(AIS_InteractiveObject)& obj, return false; } +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool OCCViewer_Viewer::isVisible( const Handle(AIS_InteractiveObject)& obj ) { return myAISContext->IsDisplayed( obj ); } +/*! + Sets color of object + \param obj - object to be updated + \param color - new color + \param update - update current viewer +*/ void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj, const QColor& color, bool update ) @@ -424,6 +508,12 @@ void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj, myV3dViewer->Update(); } +/*! + Changes display mode of object + \param obj - object to be processed + \param mode - new display mode + \param update - update current viewer +*/ void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject)& obj, int mode, bool update ) { @@ -432,6 +522,12 @@ void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject) myV3dViewer->Update(); } +/*! + Changes transparency of object + \param obj - object to be processed + \param trans - new transparency + \param update - update current viewer +*/ void OCCViewer_Viewer::setTransparency( const Handle(AIS_InteractiveObject)& obj, float trans, bool update ) { @@ -441,17 +537,27 @@ void OCCViewer_Viewer::setTransparency( const Handle(AIS_InteractiveObject)& obj myV3dViewer->Update(); } -//**************************************************************** +/*! + Changes visibility of trihedron to opposite +*/ void OCCViewer_Viewer::toggleTrihedron() { setTrihedronShown( !isTrihedronVisible() ); } +/*! + \return true if trihedron is visible +*/ bool OCCViewer_Viewer::isTrihedronVisible() const { return !myTrihedron.IsNull() && !myAISContext.IsNull() && myAISContext->IsDisplayed( myTrihedron ); } +/*! + Sets visibility state of trihedron + \param on - new state +*/ + void OCCViewer_Viewer::setTrihedronShown( const bool on ) { if ( myTrihedron.IsNull() ) @@ -463,6 +569,9 @@ void OCCViewer_Viewer::setTrihedronShown( const bool on ) myAISContext->Erase( myTrihedron ); } +/*! + \return trihedron size +*/ int OCCViewer_Viewer::trihedronSize() const { int sz = 0; @@ -471,12 +580,21 @@ int OCCViewer_Viewer::trihedronSize() const return sz; } +/*! + Changes trihedron size + \param sz - new size +*/ void OCCViewer_Viewer::setTrihedronSize( const int sz ) { if ( !myTrihedron.IsNull() ) myTrihedron->SetSize( sz ); } +/*! + Set number of isolines + \param u - u-isolines (first parametric co-ordinate) + \param v - v-isolines (second parametric co-ordinate) +*/ void OCCViewer_Viewer::setIsos( const int u, const int v ) { Handle(AIS_InteractiveContext) ic = getAISContext(); @@ -487,6 +605,11 @@ void OCCViewer_Viewer::setIsos( const int u, const int v ) ic->SetIsoNumber( v, AIS_TOI_IsoV ); } +/*! + \return number of isolines + \param u - to return u-isolines (first parametric co-ordinate) + \param v - to return v-isolines (second parametric co-ordinate) +*/ void OCCViewer_Viewer::isos( int& u, int& v ) const { Handle(AIS_InteractiveContext) ic = getAISContext(); diff --git a/src/OCCViewer/OCCViewer_ViewPort.cxx b/src/OCCViewer/OCCViewer_ViewPort.cxx index 72f2fc5f3..f3ea1e0b5 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort.cxx @@ -16,12 +16,7 @@ // // 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 @@ -59,6 +54,9 @@ struct CMapEntry XStandardColormap scmap; }; +/*! + Constructor +*/ CMapEntry::CMapEntry() { cmap = 0; @@ -66,6 +64,9 @@ CMapEntry::CMapEntry() scmap.colormap = 0; } +/*! + Destructor +*/ CMapEntry::~CMapEntry() { if ( alloc ) diff --git a/src/OCCViewer/OCCViewer_ViewPort.h b/src/OCCViewer/OCCViewer_ViewPort.h index 5c60ad502..fb4208667 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.h +++ b/src/OCCViewer/OCCViewer_ViewPort.h @@ -35,6 +35,10 @@ class QPainter; class OCCViewer_ViewSketcher; class OCCViewer_ViewTransformer; +/*! + \class OCCViewer_ViewPort + Visualisation canvas of SUIT-based application +*/ class OCCVIEWER_EXPORT OCCViewer_ViewPort : public QWidget { Q_OBJECT diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.cxx b/src/OCCViewer/OCCViewer_ViewPort3d.cxx index badfe3cf3..66225b69f 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort3d.cxx @@ -16,12 +16,6 @@ // // 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" @@ -259,6 +253,10 @@ void OCCViewer_ViewPort3d::setBackgroundColor( const QColor& color ) } } +/*! + Set animation mode + \param theDegenerated - degenerated mode +*/ void OCCViewer_ViewPort3d::setAnimationMode(bool theDegenerated) { if ( !activeView().IsNull() ) @@ -348,6 +346,8 @@ void OCCViewer_ViewPort3d::endRotation() if ( !myDegenerated ) activeView()->SetDegenerateModeOff(); activeView()->ZFitAll(1.); + activeView()->SetZSize(0.); + activeView()->Update(); } } @@ -400,6 +400,7 @@ void OCCViewer_ViewPort3d::fitAll( bool keepScale, bool withZ, bool upd ) Standard_Real margin = 0.01; activeView()->FitAll( margin, withZ, upd ); + activeView()->SetZSize(0.); } /*! diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index dbd2618b6..d9ca9d427 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -17,8 +17,7 @@ // See http://www.salome-platform.org/ // // OCCViewer_ViewWindow.cxx: implementation of the OCCViewer_ViewWindow class. -// -////////////////////////////////////////////////////////////////////// + #include "OCCViewer_ViewWindow.h" #include "OCCViewer_ViewModel.h" @@ -162,10 +161,11 @@ const char* imageCrossCursor[] = { "................................"}; -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor + \param theDesktop - main window of application + \param theModel - OCC 3D viewer +*/ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel) : SUIT_ViewWindow(theDesktop) { @@ -176,7 +176,9 @@ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_V myClippingDlg = 0; } -//**************************************************************** +/*! + Initialization of view window +*/ void OCCViewer_ViewWindow::initLayout() { myViewPort = new OCCViewer_ViewPort3d( this, myModel->getViewer3d(), V3d_ORTHOGRAPHIC ); @@ -196,7 +198,10 @@ void OCCViewer_ViewWindow::initLayout() createToolBar(); } -//**************************************************************** +/*! + \return type of operation by states of mouse and keyboard buttons + \param theEvent - mouse event +*/ OCCViewer_ViewWindow::OperationType OCCViewer_ViewWindow::getButtonState(QMouseEvent* theEvent) { OperationType aOp = NOTHING; @@ -213,7 +218,9 @@ OCCViewer_ViewWindow::OperationType OCCViewer_ViewWindow::getButtonState(QMouseE return aOp; } -//**************************************************************** +/*! + Custom event handler +*/ bool OCCViewer_ViewWindow::eventFilter(QObject* watched, QEvent* e) { if ( watched == myViewPort ) { @@ -259,13 +266,18 @@ bool OCCViewer_ViewWindow::eventFilter(QObject* watched, QEvent* e) return SUIT_ViewWindow::eventFilter(watched, e); } +/*! + Updates state of enable draw mode state +*/ void OCCViewer_ViewWindow::updateEnabledDrawMode() { if ( myModel ) myEnableDrawMode = myModel->isSelectionEnabled() && myModel->isMultiSelectionEnabled(); } -//**************************************************************** +/*! + Handler of mouse press event +*/ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent) { myStartX = theEvent->x(); @@ -324,7 +336,9 @@ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent) } -//**************************************************************** +/*! + Starts zoom operation, sets corresponding cursor +*/ void OCCViewer_ViewWindow::activateZoom() { if ( !transformRequested() && !myCursorIsHand ) @@ -339,9 +353,8 @@ void OCCViewer_ViewWindow::activateZoom() } -//**************************************************************** /*! - Activates 'panning' transformation + Starts panning operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activatePanning() { @@ -355,9 +368,8 @@ void OCCViewer_ViewWindow::activatePanning() } } -//**************************************************************** /*! - Activates 'rotation' transformation + Starts rotation operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activateRotation() { @@ -372,7 +384,9 @@ void OCCViewer_ViewWindow::activateRotation() } } -//**************************************************************** +/*! + Starts global panning operation, sets corresponding cursor +*/ void OCCViewer_ViewWindow::activateGlobalPanning() { Handle(V3d_View) aView3d = myViewPort->getView(); @@ -388,9 +402,8 @@ void OCCViewer_ViewWindow::activateGlobalPanning() } } -//**************************************************************** /*! - Activates 'fit' transformation + Starts fit operation, sets corresponding cursor */ void OCCViewer_ViewWindow::activateWindowFit() { @@ -405,9 +418,8 @@ void OCCViewer_ViewWindow::activateWindowFit() } } -//**************************************************************** /*! - Sets the active operation 'op' + Stores which viewer operation is requesting */ void OCCViewer_ViewWindow::setTransformRequested ( OperationType op ) { @@ -416,7 +428,9 @@ void OCCViewer_ViewWindow::setTransformRequested ( OperationType op ) } -//****************************************************************/ +/*! + Handler of mouse move event +*/ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent) { myCurrX = theEvent->x(); @@ -468,7 +482,9 @@ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent) } } -//****************************************************************/ +/*! + Handler of mouse release event +*/ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent) { switch ( myOperation ) { @@ -524,10 +540,9 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent) } } -//**************************************************************** /*! - Sets the viewport to its initial state - ( no transformations in process etc. ) + Sets the viewport to its initial state + ( no transformations in process etc. ) */ void OCCViewer_ViewWindow::resetState() { @@ -549,7 +564,9 @@ void OCCViewer_ViewWindow::resetState() } -//****************************************************************/ +/*! + Draws rectangle by starting and current points +*/ void OCCViewer_ViewWindow::drawRect() { QPainter aPainter(myViewPort); @@ -562,7 +579,9 @@ void OCCViewer_ViewWindow::drawRect() myRect = aRect; } -//****************************************************************/ +/*! + Creates actions of OCC view window +*/ void OCCViewer_ViewWindow::createActions() { if (!myActionsMap.isEmpty()) return; @@ -671,12 +690,12 @@ void OCCViewer_ViewWindow::createActions() connect(aAction, SIGNAL(activated()), this, SLOT(onCloneView())); myActionsMap[ CloneId ] = aAction; - aAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ), + myClippingAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ), tr( "MNU_CLIPPING" ), 0, this); - aAction->setStatusTip(tr("DSC_CLIPPING")); - aAction->setToggleAction( true ); - connect(aAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool ))); - myActionsMap[ ClippingId ] = aAction; + myClippingAction->setStatusTip(tr("DSC_CLIPPING")); + myClippingAction->setToggleAction( true ); + connect(myClippingAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool ))); + myActionsMap[ ClippingId ] = myClippingAction; aAction = new QtxAction(tr("MNU_SHOOT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_SHOOT_VIEW" ) ), tr( "MNU_SHOOT_VIEW" ), 0, this); @@ -699,7 +718,9 @@ void OCCViewer_ViewWindow::createActions() } } -//**************************************************************** +/*! + Creates toolbar of OCC view window +*/ void OCCViewer_ViewWindow::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -738,13 +759,17 @@ void OCCViewer_ViewWindow::createToolBar() myActionsMap[ClippingId]->addTo(myToolBar); } -//**************************************************************** +/*! + Processes operation fit all +*/ void OCCViewer_ViewWindow::onViewFitAll() { myViewPort->fitAll(); } -//**************************************************************** +/*! + Processes transformation "front view" +*/ void OCCViewer_ViewWindow::onFrontView() { emit vpTransformationStarted ( FRONTVIEW ); @@ -753,7 +778,9 @@ void OCCViewer_ViewWindow::onFrontView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "back view" +*/ void OCCViewer_ViewWindow::onBackView() { emit vpTransformationStarted ( BACKVIEW ); @@ -762,7 +789,9 @@ void OCCViewer_ViewWindow::onBackView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "top view" +*/ void OCCViewer_ViewWindow::onTopView() { emit vpTransformationStarted ( TOPVIEW ); @@ -771,7 +800,9 @@ void OCCViewer_ViewWindow::onTopView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "bottom view" +*/ void OCCViewer_ViewWindow::onBottomView() { emit vpTransformationStarted ( BOTTOMVIEW ); @@ -780,7 +811,9 @@ void OCCViewer_ViewWindow::onBottomView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "left view" +*/ void OCCViewer_ViewWindow::onLeftView() { emit vpTransformationStarted ( LEFTVIEW ); @@ -789,7 +822,9 @@ void OCCViewer_ViewWindow::onLeftView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "right view" +*/ void OCCViewer_ViewWindow::onRightView() { emit vpTransformationStarted ( RIGHTVIEW ); @@ -798,7 +833,9 @@ void OCCViewer_ViewWindow::onRightView() onViewFitAll(); } -//**************************************************************** +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void OCCViewer_ViewWindow::onResetView() { emit vpTransformationStarted( RESETVIEW ); @@ -809,21 +846,27 @@ void OCCViewer_ViewWindow::onResetView() myViewPort->getView()->Update(); } -//**************************************************************** +/*! + Processes transformation "fit all" +*/ void OCCViewer_ViewWindow::onFitAll() { emit vpTransformationStarted( FITALLVIEW ); myViewPort->fitAll(); } -//**************************************************************** +/*! + Creates one more window with same content +*/ void OCCViewer_ViewWindow::onCloneView() { SUIT_ViewWindow* vw = myManager->createViewWindow(); vw->show(); } -//**************************************************************** +/*! + SLOT: called if clipping operation is activated, enables/disables of clipping plane +*/ void OCCViewer_ViewWindow::onClipping( bool on ) { SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); @@ -835,7 +878,10 @@ void OCCViewer_ViewWindow::onClipping( bool on ) if ( on ) { if ( !myClippingDlg ) - myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop ); + { + myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop ); + myClippingDlg->SetAction( myClippingAction ); + } if ( !myClippingDlg->isShown() ) myClippingDlg->show(); @@ -848,13 +894,17 @@ void OCCViewer_ViewWindow::onClipping( bool on ) } } -//**************************************************************** +/*! + 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 ); @@ -865,8 +915,9 @@ void OCCViewer_ViewWindow::onRestoreView() performRestoring( aDlg->currentItem() ); } -//**************************************************************** - +/*! + Restores view parameters from structure viewAspect +*/ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem ) { Handle(V3d_View) aView3d = myViewPort->getView(); @@ -883,30 +934,50 @@ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem ) 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; @@ -922,37 +993,28 @@ void OCCViewer_ViewWindow::setCuttingPlane( bool on, const double x, const dou pln.Coefficients( a, b, c, d ); clipPlane->SetPlane( a, b, c, d ); - Handle(V3d_View) v = myViewPort->getView(); - v->SetPlaneOn( clipPlane ); - v->Update(); - v->Redraw(); + view->SetPlaneOn( clipPlane ); } - else { - Handle(V3d_View) view = myViewPort->getView(); + else + view->SetPlaneOff(); + + view->Update(); + view->Redraw(); +} - // try to use already existing plane - Handle(V3d_Plane) clipPlane; - view->InitActivePlanes(); - if ( view->MoreActivePlanes() ) - clipPlane = view->ActivePlane(); - - Handle(V3d_View) v = myViewPort->getView(); - if ( !clipPlane.IsNull() ) - v->SetPlaneOff( clipPlane ); - else - v->SetPlaneOff(); - - v->Update(); - v->Redraw(); - } - - 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; @@ -988,8 +1050,9 @@ viewAspect OCCViewer_ViewWindow::getViewParams() const } -/*! 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(); @@ -1000,8 +1063,9 @@ QString OCCViewer_ViewWindow::getVisualParameters() 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 ); diff --git a/src/OCCViewer/OCCViewer_ViewWindow.h b/src/OCCViewer/OCCViewer_ViewWindow.h index b6bda965a..439b40cd6 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.h +++ b/src/OCCViewer/OCCViewer_ViewWindow.h @@ -63,6 +63,8 @@ public: void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0, const double dx = 0, const double dy = 0, const double dz = 1); + bool isCuttingPlane(); + virtual QString getVisualParameters(); virtual void setVisualParameters( const QString& parameters ); @@ -151,6 +153,7 @@ protected: private: OCCViewer_ClippingDlg* myClippingDlg; + QtxAction* myClippingAction; }; diff --git a/src/OCCViewer/resources/OCCViewer_msg_en.po b/src/OCCViewer/resources/OCCViewer_msg_en.po index b856572ac..681d3d5dd 100755 --- a/src/OCCViewer/resources/OCCViewer_msg_en.po +++ b/src/OCCViewer/resources/OCCViewer_msg_en.po @@ -161,10 +161,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - - msgid "OCCViewer_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." diff --git a/src/ObjBrowser/Makefile.in b/src/ObjBrowser/Makefile.in index cdb715d69..b7039368b 100755 --- a/src/ObjBrowser/Makefile.in +++ b/src/ObjBrowser/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : ObjectBrowser diff --git a/src/ObjBrowser/OB_Browser.cxx b/src/ObjBrowser/OB_Browser.cxx index dd6012af0..3b408284a 100755 --- a/src/ObjBrowser/OB_Browser.cxx +++ b/src/ObjBrowser/OB_Browser.cxx @@ -37,8 +37,8 @@ #include /*! - Class: OB_Browser::ToolTip - Descr: Tool tip for OB_Browser. + \class OB_Browser::ToolTip + Tool tip for OB_Browser. */ class OB_Browser::ToolTip : public QToolTip @@ -53,16 +53,28 @@ private: OB_Browser* myBrowser; }; +/*! + Constructor +*/ OB_Browser::ToolTip::ToolTip( OB_Browser* b, QWidget* p ) : QToolTip( p ), myBrowser( b ) { } +/*! + Destructor +*/ OB_Browser::ToolTip::~ToolTip() { } +/*! + It is called when there is a possibility that a tool tip + should be shown and must decide whether there is a tool tip for the point + in the widget that this QToolTip object relates to. + \param pos - point co-ordinates +*/ void OB_Browser::ToolTip::maybeTip( const QPoint& pos ) { if ( !parentWidget() || !myBrowser || !myBrowser->isShowToolTips() ) @@ -88,11 +100,11 @@ void OB_Browser::ToolTip::maybeTip( const QPoint& pos ) typedef SUIT_DataObject* ObjPtr; typedef OB_ListItem* ItemPtr; + /*! - Class: OB_BrowserSync - Descr: Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items + \class OB_BrowserSync + Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items */ - class OB_BrowserSync { public: @@ -112,11 +124,18 @@ private: }; +/*! + Constructor +*/ OB_BrowserSync::OB_BrowserSync( OB_Browser* ob ) : myBrowser( ob ) { } +/*! + \return true if item must be updated + \param item - item to be checked +*/ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const { bool update = false; @@ -124,7 +143,8 @@ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const SUIT_DataObject* obj = item->dataObject(); if ( obj ) { // 1. check text - update = ( item->text( 0 ) != obj->name() ); + update = ( item->text( 0 ) != obj->name() ) || myBrowser->needToUpdateTexts( item ); + if ( !update ) { // 2. check pixmap (compare serialNumber()-s) QPixmap objPix = obj->icon(); @@ -147,14 +167,26 @@ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const return update; } +/*! + Updates item + \param p - item +*/ void OB_BrowserSync::updateItem( const ItemPtr& p ) const { if ( p && needUpdate( p ) ) { // printf( "--- needUpdate for %s = true ---\n", p->text( 0 ).latin1() ); + myBrowser->updateText( p ); p->update(); } } +/*! + Creates item by SUIT object + \param src - corresponding SUIT object + \param parent - parent for item + \param after - previous sibling for item + \param prepend - item must be added to start of children list +*/ ItemPtr OB_BrowserSync::createItem( const ObjPtr& src, const ItemPtr& parent, const ItemPtr& after, const bool prepend ) const @@ -165,6 +197,10 @@ ItemPtr OB_BrowserSync::createItem( const ObjPtr& src, return i; } +/*! + Deletes object with all children + \param i - item +*/ void OB_BrowserSync::deleteItemWithChildren( const ItemPtr& i ) const { if( myBrowser && myBrowser->myItems.contains( i->dataObject() ) ) @@ -174,21 +210,39 @@ void OB_BrowserSync::deleteItemWithChildren( const ItemPtr& i ) const } } +/*! + \return true if objects correspond each other at all + \param p - suit object + \param q - object browser item +*/ bool OB_BrowserSync::isEqual( const ObjPtr& p, const ItemPtr& q ) const { - return ( !p && !q ) || ( p && q && q->dataObject()==p ); + bool isRoot = p==myBrowser->getRootObject() && !q, + isEq = p && q && q->dataObject()==p; + return isRoot || ( !p && !q ) || isEq; } +/*! + \return null suit object +*/ ObjPtr OB_BrowserSync::nullSrc() const { return 0; } +/*! + \return null item +*/ ItemPtr OB_BrowserSync::nullTrg() const { return 0; } +/*! + Fills list with children of SUIT object + \param p - SUIT object + \param ch - list to be filled +*/ void OB_BrowserSync::children( const ObjPtr& p, QValueList& ch ) const { DataObjectList l; @@ -201,9 +255,14 @@ void OB_BrowserSync::children( const ObjPtr& p, QValueList& ch ) const } } +/*! + Fills list with children of item + \param p - item + \param ch - list to be filled +*/ void OB_BrowserSync::children( const ItemPtr& p, QValueList& 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( item ); if( p ) @@ -211,6 +270,10 @@ void OB_BrowserSync::children( const ItemPtr& p, QValueList& ch ) const } } +/*! + \return parent of item + \param p - item +*/ ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const { return p ? dynamic_cast( p->parent() ) : 0; @@ -218,10 +281,8 @@ ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const /*! - Class: OB_Browser - Descr: Hierarchical tree object browser. + Constructor */ - OB_Browser::OB_Browser( QWidget* parent, SUIT_DataObject* root ) : QFrame( parent ), @@ -257,17 +318,27 @@ myRootDecorated( true ) setModified(); } +/*! + Destructor +*/ OB_Browser::~OB_Browser() { myItems.clear(); delete myTooltip; } +/*! + \return true if root is decorated by + +*/ bool OB_Browser::rootIsDecorated() const { return myRootDecorated; } +/*! + Sets state "root is recorated" + \param decor - new value of state +*/ void OB_Browser::setRootIsDecorated( const bool decor ) { if ( decor == rootIsDecorated() ) @@ -277,11 +348,18 @@ void OB_Browser::setRootIsDecorated( const bool decor ) updateTree( 0, false ); } +/*! + \return number of levels to be auto opened on update tree +*/ int OB_Browser::autoOpenLevel() const { return myAutoOpenLevel; } +/*! + Changes number of levels to be auto opened on update tree + \param level - new number of levels +*/ void OB_Browser::setAutoOpenLevel( const int level ) { if ( myAutoOpenLevel == level ) @@ -292,41 +370,69 @@ void OB_Browser::setAutoOpenLevel( const int level ) autoOpenBranches(); } +/*! + \return state "are tooltips shown" +*/ bool OB_Browser::isShowToolTips() { return myShowToolTips; } +/*! + Sets new value of state "are tooltips shown" + \param theDisplay - new value +*/ void OB_Browser::setShowToolTips( const bool theDisplay ) { myShowToolTips = theDisplay; } +/*! + \return true if object browser automatically updates tree after SUIT object removing +*/ bool OB_Browser::isAutoUpdate() const { return myAutoUpdate; } +/*! + Sets new value of "auto update": whether object browser automatically updates tree after SUIT object removing +*/ void OB_Browser::setAutoUpdate( const bool on ) { myAutoUpdate = on; } +/*! + \return true if object browser must delete old tree on setRootObject(), replaceTree() + \sa setRootObject(), replaceTree() +*/ bool OB_Browser::isAutoDeleteObjects() const { return myAutoDelObjs; } +/*! + Sets whether object browser must delete old tree on setRootObject(), replaceTree() + \sa setRootObject(), replaceTree() +*/ void OB_Browser::setAutoDeleteObjects( const bool on ) { myAutoDelObjs = on; } +/*! + \return root SUIT object of browser +*/ SUIT_DataObject* OB_Browser::getRootObject() const { return myRoot; } +/*! + Sets new root SUIT object of browser + \param theRoot - new root object +*/ void OB_Browser::setRootObject( SUIT_DataObject* theRoot ) { DataObjectKey curKey; @@ -365,6 +471,9 @@ void OB_Browser::setRootObject( SUIT_DataObject* theRoot ) emit selectionChanged(); } +/*! + \return number of selected items +*/ int OB_Browser::numberOfSelected() const { int count = 0; @@ -377,6 +486,9 @@ int OB_Browser::numberOfSelected() const return count; } +/*! + \return list of selected objects +*/ DataObjectList OB_Browser::getSelected() const { DataObjectList lst; @@ -384,6 +496,9 @@ DataObjectList OB_Browser::getSelected() const return lst; } +/*! + Fills list with selected objects +*/ void OB_Browser::getSelected( DataObjectList& theObjList ) const { theObjList.clear(); @@ -402,6 +517,12 @@ void OB_Browser::getSelected( DataObjectList& theObjList ) const } } +/*! + Sets selected object + \param theObject - new selected object + \param append - if it is true, then other selected objects are left as selected, + otherwise only 'theObject' will be selected +*/ void OB_Browser::setSelected( const SUIT_DataObject* theObject, const bool append ) { DataObjectList lst; @@ -409,6 +530,12 @@ void OB_Browser::setSelected( const SUIT_DataObject* theObject, const bool appen setSelected( lst, append ); } +/*! + Sets selected objects + \param theObjLst - new selected objects + \param append - if it is true, then other selected objects are left as selected, + otherwise only 'theObjLst' will be selected +*/ void OB_Browser::setSelected( const DataObjectList& theObjLst, const bool append ) { QListView* lv = listView(); @@ -468,6 +595,10 @@ void OB_Browser::setSelected( const DataObjectList& theObjLst, const bool append } } +/*! + \return true if item corresponding to object is opened + \param theObject - object to be checked +*/ bool OB_Browser::isOpen( SUIT_DataObject* theObject ) const { bool res = false; @@ -476,12 +607,21 @@ bool OB_Browser::isOpen( SUIT_DataObject* theObject ) const return res; } +/*! + Sets opened state of item + \param theObject - object corresponding to item + \param theOpen - new opened state +*/ void OB_Browser::setOpen( SUIT_DataObject* theObject, const bool theOpen ) { if ( listView() ) listView()->setOpen( listViewItem( theObject ), theOpen ); } +/*! + \return SUIT object correspondint to item at position 'pos' + \param pos - position +*/ SUIT_DataObject* OB_Browser::dataObjectAt( const QPoint& pos ) const { SUIT_DataObject* obj = 0; @@ -493,21 +633,41 @@ SUIT_DataObject* OB_Browser::dataObjectAt( const QPoint& pos ) const return obj; } +/*! + \return filter of list view +*/ OB_Filter* OB_Browser::filter() const { return myView->filter(); } +/*! + Changes filter of list view + \param f - new filter +*/ void OB_Browser::setFilter( OB_Filter* f ) { myView->setFilter( f ); } +/*! + Adds new column to list view + \param label - title of column + \param id - id of column + \param width - width of column +*/ int OB_Browser::addColumn( const QString& label, const int id, const int width ) { return addColumn( QIconSet(), label, id, width ); } +/*! + Adds new column to list view + \param icon - icon of column + \param label - title of column + \param id - id of column + \param width - width of column +*/ int OB_Browser::addColumn( const QIconSet& icon, const QString& label, const int id, const int width ) { QListView* lv = listView(); @@ -539,6 +699,10 @@ int OB_Browser::addColumn( const QIconSet& icon, const QString& label, const int return theId; } +/*! + Removes column + \param id - id of column +*/ void OB_Browser::removeColumn( const int id ) { QListView* lv = listView(); @@ -558,11 +722,20 @@ void OB_Browser::removeColumn( const int id ) updateText(); } +/*! + Sets title of first column (name column) + \param label - new title +*/ void OB_Browser::setNameTitle( const QString& label ) { setNameTitle( QIconSet(), label ); } +/*! + Sets title and icon of first column (name column) + \param icon - new icon + \param label - new title +*/ void OB_Browser::setNameTitle( const QIconSet& icon, const QString& label ) { QListView* lv = listView(); @@ -575,11 +748,22 @@ void OB_Browser::setNameTitle( const QIconSet& icon, const QString& label ) lv->setColumnText( 0, icon, label ); } +/*! + Sets title of column + \param id - column id + \param label - new column title +*/ void OB_Browser::setColumnTitle( const int id, const QString& label ) { setColumnTitle( id, QIconSet(), label ); } +/*! + Sets title and icon of column + \param id - column id + \param icon - new column icon + \param label - new column title +*/ void OB_Browser::setColumnTitle( const int id, const QIconSet& icon, const QString& label ) { QListView* lv = listView(); @@ -592,11 +776,18 @@ void OB_Browser::setColumnTitle( const int id, const QIconSet& icon, const QStri lv->setColumnText( myColumnIds[id], icon, label ); } +/*! + \return title of first column (name column) +*/ QString OB_Browser::nameTitle() const { return myView->columnText( 0 ); } +/*! + \return title of first column (name column) + \param id - column id +*/ QString OB_Browser::columnTitle( const int id ) const { QString txt; @@ -605,25 +796,44 @@ QString OB_Browser::columnTitle( const int id ) const return txt; } +/*! + \return true if column is visible + \param id - column id +*/ bool OB_Browser::isColumnVisible( const int id ) const { return myColumnIds.contains( id ) && myView->isShown( myColumnIds[id] ); } +/*! + Sets visibility of column + \param id - column id + \param on - new visibility state +*/ void OB_Browser::setColumnShown( const int id, const bool on ) { if ( !myColumnIds.contains( id ) ) return; myView->setShown( myColumnIds[id], on ); + if( !on ) + myView->setColumnWidthMode( myColumnIds[id], QListView::Manual ); } +/*! + Sets global width mode + \param mode - new width mode +*/ void OB_Browser::setWidthMode( QListView::WidthMode mode ) { for ( int i = 0, n = myView->columns(); i < n; i++ ) - myView->setColumnWidthMode( i, mode ); + if( mode!=QListView::Maximum || myView->columnWidth( i )>0 ) + myView->setColumnWidthMode( i, mode ); } +/*! + \return list of columns ids +*/ QValueList OB_Browser::columns() const { QValueList lst; @@ -632,6 +842,10 @@ QValueList OB_Browser::columns() const return lst; } +/*! + \return true if it is possible to show/hide column by popup + \param id - column id +*/ bool OB_Browser::appropriateColumn( const int id ) const { bool res = false; @@ -640,6 +854,11 @@ bool OB_Browser::appropriateColumn( const int id ) const return res; } +/*! + Sets "appropriate state": is it possible to show/hide column by popup + \param id - column id + \param on - new state +*/ void OB_Browser::setAppropriateColumn( const int id, const bool on ) { if ( !myColumnIds.contains( id ) ) @@ -648,6 +867,12 @@ void OB_Browser::setAppropriateColumn( const int id, const bool on ) myView->setAppropriate( myColumnIds[id], on ); } +/*! + Updates tree + \param obj - start object + \param autoOpen - to open automatically branches of autoOpenLevel() + \sa autoOpenLevel() +*/ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen ) { // QTime t1 = QTime::currentTime(); @@ -679,6 +904,9 @@ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen ) // qDebug( QString( "update tree time = %1 msecs" ).arg( t1.msecsTo( t2 ) ) ); } +/*! + Replaces part of tree starting at object 'src' by tree starting at object 'trg' +*/ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) { if ( !src || !trg || src == trg || src->root() != getRootObject() ) @@ -719,6 +947,10 @@ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg ) emit selectionChanged(); } +/*! + Updates view + \param startObj - start object +*/ void OB_Browser::updateView( SUIT_DataObject* startObj ) { QListView* lv = listView(); @@ -728,39 +960,13 @@ void OB_Browser::updateView( SUIT_DataObject* startObj ) 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( 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( listViewItem( local_root ) ); - synchronize( 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( anIt.data() ); - if( item && myItems.contains( item->dataObject() ) ) - delete anIt.data(); - } - } + OB_BrowserSync sync( this ); + synchronize( myRoot, 0, sync ); } else { @@ -770,6 +976,14 @@ void OB_Browser::updateView( SUIT_DataObject* startObj ) } } +/*! + 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 ) { @@ -855,6 +1069,9 @@ QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem* return item; } +/*! + Adjusts width by root item +*/ void OB_Browser::adjustWidth() { if ( !listView() ) @@ -865,6 +1082,10 @@ void OB_Browser::adjustWidth() adjustWidth( listView()->firstChild() ); } +/*! + Adjusts width by item + \param item +*/ void OB_Browser::adjustWidth( QListViewItem* item ) { while ( item ) @@ -876,6 +1097,10 @@ void OB_Browser::adjustWidth( QListViewItem* item ) } } +/*! + \return SUIT object corresponding to item + \param item +*/ SUIT_DataObject* OB_Browser::dataObject( const QListViewItem* item ) const { SUIT_DataObject* obj = 0; @@ -888,6 +1113,10 @@ SUIT_DataObject* OB_Browser::dataObject( const QListViewItem* item ) const return obj; } +/*! + \return item corresponding to SUIT object + \param obj - SUIT object +*/ QListViewItem* OB_Browser::listViewItem( const SUIT_DataObject* obj ) const { QListViewItem* item = 0; @@ -898,11 +1127,17 @@ QListViewItem* OB_Browser::listViewItem( const SUIT_DataObject* obj ) const return item; } +/*! + \return list view of object browser +*/ QListView* OB_Browser::listView() const { return myView; } +/*! + \remove all items referencing current (through data objects) +*/ void OB_Browser::removeReferences( QListViewItem* item ) { if ( !item ) @@ -920,6 +1155,9 @@ void OB_Browser::removeReferences( QListViewItem* item ) } } +/*! + Connects all children to SLOT onDestroyed +*/ void OB_Browser::createConnections( SUIT_DataObject* obj ) { if ( !obj ) @@ -934,6 +1172,9 @@ void OB_Browser::createConnections( SUIT_DataObject* obj ) it.current()->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); } +/*! + Disconnects all children from SLOT onDestroyed +*/ void OB_Browser::removeConnections( SUIT_DataObject* obj ) { if ( !obj ) @@ -948,6 +1189,13 @@ void OB_Browser::removeConnections( SUIT_DataObject* obj ) it.current()->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) ); } +/*! + Stores states (opened, selected) of current tree items + \return current item + \param selObjs, selKeys - maps of selected objects + \param openObjs, openKeys - maps of opened objects + \param curKey - map of current objects +*/ SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& openObjs, DataObjectKeyMap& selKeys, DataObjectKeyMap& openKeys, DataObjectKey& curKey ) const @@ -977,6 +1225,12 @@ SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& return curObj; } +/*! + Restores states (opened, selected) of current tree items + \param selObjs, selKeys - maps of selected objects + \param openObjs, openKeys - maps of opened objects + \param curKey - map of current objects +*/ void OB_Browser::restoreState( const DataObjectMap& selObjs, const DataObjectMap& openObjs, const SUIT_DataObject* curObj, const DataObjectKeyMap& selKeys, const DataObjectKeyMap& openKeys, const DataObjectKey& curKey ) @@ -1036,11 +1290,17 @@ void OB_Browser::restoreState( const DataObjectMap& selObjs, const DataObjectMap lv->blockSignals( block ); } +/*! + Creates object key by tree item +*/ OB_Browser::DataObjectKey OB_Browser::objectKey( QListViewItem* i ) const { return objectKey( dataObject( i ) ); } +/*! + Creates object key by SUIT object +*/ OB_Browser::DataObjectKey OB_Browser::objectKey( SUIT_DataObject* obj ) const { if ( !obj ) @@ -1049,6 +1309,9 @@ OB_Browser::DataObjectKey OB_Browser::objectKey( SUIT_DataObject* obj ) const return DataObjectKey( obj->key() ); } +/*! + Custom key press event handler, updates tree by F5 +*/ void OB_Browser::keyPressEvent( QKeyEvent* e ) { if ( e->key() == Qt::Key_F5 ) @@ -1057,6 +1320,9 @@ void OB_Browser::keyPressEvent( QKeyEvent* e ) QFrame::keyPressEvent( e ); } +/*! + SLOT: called if action "Expand all" is activated +*/ void OB_Browser::onExpand() { DataObjectList selected; @@ -1065,16 +1331,28 @@ void OB_Browser::onExpand() expand( listViewItem( itr.current() ) ); } +/*! + SLOT: called if action "Show/hide column" is activated by popup +*/ void OB_Browser::onColumnVisible( int id ) { setColumnShown( id, !isColumnVisible( id ) ); } +/*! + SLOT: called if SUIT object is destroyed +*/ void OB_Browser::onDestroyed( SUIT_DataObject* obj ) { removeObject( obj ); } +/*! + SLOT: called on finish of drag-n-drop operation + \param items - dragged items + \param item - destination (item on that they were dropped) + \param action - QDropEvent::Action +*/ void OB_Browser::onDropped( QPtrList items, QListViewItem* item, int action ) { SUIT_DataObject* obj = dataObject( item ); @@ -1093,6 +1371,9 @@ void OB_Browser::onDropped( QPtrList items, QListViewItem* item, emit dropped( lst, obj, action ); } +/*! + Updates texts of items +*/ void OB_Browser::updateText() { if ( myColumnIds.isEmpty() ) @@ -1113,6 +1394,26 @@ void OB_Browser::updateText() } } +/*! + \return true if item must be updated + \param item - item to be checked +*/ +bool OB_Browser::needToUpdateTexts( QListViewItem* item ) const +{ + SUIT_DataObject* obj = dataObject( item ); + if ( !obj ) + return false; + + for( QMap::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 ); @@ -1123,6 +1424,9 @@ void OB_Browser::updateText( QListViewItem* item ) item->setText( it.data(), obj->text( it.key() ) ); } +/*! + Custom event filter +*/ bool OB_Browser::eventFilter( QObject* o, QEvent* e ) { if ( o == myView && e->type() == QEvent::ContextMenu ) @@ -1146,6 +1450,10 @@ bool OB_Browser::eventFilter( QObject* o, QEvent* e ) return QFrame::eventFilter( o, e ); } +/*! + Adds custom actions to popup + \param menu - popup menu +*/ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) { /* QValueList cols; @@ -1184,6 +1492,9 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) } } +/*! + Expands item with all it's children +*/ void OB_Browser::expand( QListViewItem* item ) { if ( !item ) @@ -1194,6 +1505,9 @@ void OB_Browser::expand( QListViewItem* item ) expand( child ); } +/*! + \return true if item or one of it's children isn't opened +*/ bool OB_Browser::hasClosed( QListViewItem* item ) const { if ( !item ) @@ -1209,6 +1523,11 @@ bool OB_Browser::hasClosed( QListViewItem* item ) const return has; } +/*! + Removes SUIT object + \param obj - SUIT object to be removed + \param autoUpd - auto tree updating +*/ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd ) { if ( !obj ) @@ -1249,6 +1568,10 @@ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd ) delete item; } +/*! + Opens branches from 1 to autoOpenLevel() + \sa autoOpenLevel() +*/ void OB_Browser::autoOpenBranches() { int level = autoOpenLevel(); @@ -1264,6 +1587,11 @@ void OB_Browser::autoOpenBranches() } } +/*! + Opens branch + \param item + \param level +*/ void OB_Browser::openBranch( QListViewItem* item, const int level ) { if ( level < 1 ) @@ -1277,12 +1605,18 @@ void OB_Browser::openBranch( QListViewItem* item, const int level ) } } +/*! + SLOT: called on double click on item, emits signal +*/ void OB_Browser::onDoubleClicked( QListViewItem* item ) { if ( item ) emit doubleClicked( dataObject( item ) ); } +/*! + Stores time of last modification +*/ void OB_Browser::setModified() { myModifiedTime = clock(); diff --git a/src/ObjBrowser/OB_Browser.h b/src/ObjBrowser/OB_Browser.h index a6e3cd421..b0c592830 100755 --- a/src/ObjBrowser/OB_Browser.h +++ b/src/ObjBrowser/OB_Browser.h @@ -39,6 +39,12 @@ class OB_Filter; class OB_ListView; class OB_ListItem; +/*! + \class OB_Browser + Represents object browser. Allows to get/set selection, + to drag-n-drop of objects, to determine item by SUIT object and + vice versa +*/ class OB_EXPORT OB_Browser : public QFrame, public SUIT_PopupClient { Q_OBJECT @@ -162,6 +168,7 @@ private: void removeObject( SUIT_DataObject*, const bool = true ); void updateText( QListViewItem* ); + bool needToUpdateTexts( QListViewItem* ) const; DataObjectKey objectKey( QListViewItem* ) const; DataObjectKey objectKey( SUIT_DataObject* ) const; diff --git a/src/ObjBrowser/OB_Filter.cxx b/src/ObjBrowser/OB_Filter.cxx index 1a9fda941..43517540e 100644 --- a/src/ObjBrowser/OB_Filter.cxx +++ b/src/ObjBrowser/OB_Filter.cxx @@ -18,10 +18,16 @@ // #include "OB_Filter.h" +/*! + Default constructor +*/ OB_Filter::OB_Filter() { } +/*! + Destructor +*/ OB_Filter::~OB_Filter() { } diff --git a/src/ObjBrowser/OB_Filter.h b/src/ObjBrowser/OB_Filter.h index 3570eb06d..60ceaadff 100644 --- a/src/ObjBrowser/OB_Filter.h +++ b/src/ObjBrowser/OB_Filter.h @@ -23,6 +23,11 @@ class SUIT_DataObject; +/*! + \class OB_Filter + Base class for ObjectBrowser filter. + Filters selected objects by some condition. +*/ class OB_EXPORT OB_Filter { public: diff --git a/src/ObjBrowser/OB_ListItem.cxx b/src/ObjBrowser/OB_ListItem.cxx index 49ad75741..1147ae5da 100755 --- a/src/ObjBrowser/OB_ListItem.cxx +++ b/src/ObjBrowser/OB_ListItem.cxx @@ -29,10 +29,8 @@ using namespace std; /*! - Class: ListItem - Descr: base template class + Constructor */ - template ListItemF::ListItemF( T* theT, SUIT_DataObject* obj ) : myT( theT ), @@ -40,6 +38,9 @@ myObject( obj ) { } +/*! + Paints item +*/ template void ListItemF::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align ) { @@ -67,6 +68,9 @@ void ListItemF::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align //myT.paintCell( p, colorGrp, c, itemW, align ); } +/*! + Paints focused item +*/ template void ListItemF::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r ) { @@ -75,6 +79,10 @@ void ListItemF::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r ) //myT.paintFocus( p, cg, rect ); } +/*! + Set selection of item + \param s - selected state +*/ template void ListItemF::setSel( bool s ) { @@ -88,6 +96,9 @@ void ListItemF::setSel( bool s ) //myT.setSelected( s ); } +/*! + Updates name and pixmap of item +*/ template void ListItemF::update() { @@ -119,10 +130,8 @@ void ListItemF::update() } /*! - Class: OB_ListItem - Descr: List view item for OB_Browser. + Constructor */ - OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent ) : ListItemF( this, obj ), QListViewItem(parent) @@ -130,6 +139,9 @@ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent ) : ListItemF( this, obj ), QListViewItem(parent) @@ -137,6 +149,9 @@ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after ) : ListItemF( this, obj), QListViewItem(parent, after ) @@ -144,6 +159,9 @@ QListViewItem(parent, after ) update(); } +/*! + Constructor +*/ OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after ) : ListItemF( this,obj), QListViewItem(parent, after ) @@ -151,16 +169,29 @@ QListViewItem(parent, after ) update(); } +/*! + Destructor +*/ OB_ListItem::~OB_ListItem() { } +/*! + Sets selection state of item + \param s - new state +*/ void OB_ListItem::setSelected( bool s ) { setSel( s ); QListViewItem::setSelected( s ); } +/*! + Paints focus + \param p - painter + \param cg - color group + \param r - focus rectangle +*/ void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ) { QColorGroup col_group( cg ); @@ -173,6 +204,14 @@ void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r QListViewItem::paintFocus( p, col_group, R ); } +/*! + Paints item + \param p - painter + \param cg - color group + \param c - not used + \param w - width of item + \param align - alignment +*/ void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) { QColorGroup col_group( cg ); @@ -182,19 +221,30 @@ void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, i if ( listView() && !listView()->allColumnsShowFocus() ) W = width( p->fontMetrics(), listView(), c ); - QListViewItem::paintCell( p, col_group, c, W, align ); + QListViewItem::paintCell( p, col_group, c, min( W, w ), align ); } +/*! + \return custom RTTI info +*/ int OB_ListItem::RTTI() { return 1000; } +/*! + \return custom RTTI info +*/ int OB_ListItem::rtti() const { return RTTI(); } +/*! + Sets item text + \param column - column index + \param text - new text +*/ void OB_ListItem::setText( int column, const QString& text ) { QListViewItem::setText( column, text ); @@ -207,10 +257,8 @@ void OB_ListItem::setText( int column, const QString& text ) } /*! - Class: OB_CheckListItem - Descr: Check list view item for OB_Browser. + Constructor */ - OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, Type type ) : ListItemF( this, obj), QCheckListItem( parent, "", type ) @@ -218,6 +266,9 @@ QCheckListItem( parent, "", type ) update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, Type type ) : ListItemF( this, obj), QCheckListItem( parent, "", type ) @@ -225,6 +276,9 @@ QCheckListItem( parent, "", type ) update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, Type type ) : ListItemF( this, obj), #if defined(QT_VERSION) && QT_VERSION >= 0x030101 @@ -236,6 +290,9 @@ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QLi update(); } +/*! + Constructor +*/ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, Type type ) : ListItemF( this, obj), #if defined(QT_VERSION) && QT_VERSION >= 0x030101 @@ -247,16 +304,29 @@ OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, update(); } +/*! + Destructor +*/ OB_CheckListItem::~OB_CheckListItem() { } +/*! + Sets selection state of item + \param s - new state +*/ void OB_CheckListItem::setSelected( bool s ) { setSel( s ); QCheckListItem::setSelected( s ); } +/*! + Paints focus + \param p - painter + \param cg - color group + \param r - focus rectangle +*/ void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ) { QColorGroup col_group( cg ); @@ -269,6 +339,14 @@ void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRe QCheckListItem::paintFocus( p, col_group, R ); } +/*! + Paints item + \param p - painter + \param cg - color group + \param c - not used + \param w - width of item + \param align - alignment +*/ void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) { QColorGroup col_group( cg ); @@ -278,19 +356,28 @@ void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int if ( listView() && !listView()->allColumnsShowFocus() ) W = width( p->fontMetrics(), listView(), c ); - QCheckListItem::paintCell( p, col_group, c, W, align ); + QCheckListItem::paintCell( p, col_group, c, min( W, w ), align ); } +/*! + \return custom RTTI info +*/ int OB_CheckListItem::RTTI() { return OB_ListItem::RTTI() + 1; } +/*! + \return custom RTTI info +*/ int OB_CheckListItem::rtti() const { return RTTI(); } +/*! + SLOT: called if checked state is changed, changes corresponding state of SUIT object +*/ void OB_CheckListItem::stateChange( bool on ) { QCheckListItem::stateChange( on ); diff --git a/src/ObjBrowser/OB_ListItem.h b/src/ObjBrowser/OB_ListItem.h index 112c3c8c9..3960fc141 100755 --- a/src/ObjBrowser/OB_ListItem.h +++ b/src/ObjBrowser/OB_ListItem.h @@ -26,10 +26,10 @@ class SUIT_DataObject; -/* - base template class for ListViewItems and CheckListItems +/*! + \class ListItemF + Base template class for ListViewItems and CheckListItems */ - template class ListItemF { public: @@ -57,10 +57,10 @@ protected: T* myT; }; -/* - ListViewItem class +/*! + \class OB_ListItem + Provides custom list item for Object Browser tree */ - class OB_EXPORT OB_ListItem : public ListItemF, public QListViewItem { public: @@ -82,10 +82,10 @@ public: static int RTTI(); }; -/* - CheckListItem class +/*! + \class OB_CheckListItem + Provides custom list item with check box */ - class OB_EXPORT OB_CheckListItem : public ListItemF, public QCheckListItem { public: diff --git a/src/ObjBrowser/OB_ListView.cxx b/src/ObjBrowser/OB_ListView.cxx index 53d62602f..98fb97d26 100755 --- a/src/ObjBrowser/OB_ListView.cxx +++ b/src/ObjBrowser/OB_ListView.cxx @@ -25,28 +25,44 @@ #include +/*! + Constructor +*/ OB_ListView::OB_ListView( QWidget* parent, const char* name, WFlags f ) : QtxListView( parent, name, f ), myFilter( 0 ) { } +/*! + Constructor +*/ OB_ListView::OB_ListView( const int state, QWidget* parent, const char* name, WFlags f ) : QtxListView( state, parent, name, f ), myFilter( 0 ) { } +/*! + Destructor +*/ OB_ListView::~OB_ListView() { delete myFilter; } +/*! + \return filter +*/ OB_Filter* OB_ListView::filter() const { return myFilter; } +/*! + Changes filter + \param f - new filter +*/ void OB_ListView::setFilter( OB_Filter* f ) { if ( myFilter == f ) @@ -56,6 +72,9 @@ void OB_ListView::setFilter( OB_Filter* f ) myFilter = f; } +/*! + \return true if item passes filter +*/ bool OB_ListView::isOk( QListViewItem* item ) const { bool ok = true; @@ -65,6 +84,9 @@ bool OB_ListView::isOk( QListViewItem* item ) const return ok; } +/*! + Creates new drag object +*/ QDragObject* OB_ListView::dragObject() { myItems.clear(); @@ -76,11 +98,17 @@ QDragObject* OB_ListView::dragObject() return new QTextDrag( "", this ); } +/*! + Custom drag enter event filter +*/ void OB_ListView::dragEnterEvent( QDragEnterEvent* e ) { e->accept(); } +/*! + Custom drag move event filter +*/ void OB_ListView::dragMoveEvent( QDragMoveEvent* e ) { QListViewItem* item = dropItem( e ); @@ -94,6 +122,9 @@ void OB_ListView::dragMoveEvent( QDragMoveEvent* e ) e->accept( false ); } +/*! + Custom drop event filter +*/ void OB_ListView::dropEvent( QDropEvent* e ) { QListViewItem* item = dropItem( e ); @@ -105,6 +136,9 @@ void OB_ListView::dropEvent( QDropEvent* e ) myItems.clear(); } +/*! + Custom key press event filter +*/ void OB_ListView::keyPressEvent( QKeyEvent* ke ) { if ( ( ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Minus ) && ke->state() & ControlButton ) @@ -118,6 +152,10 @@ void OB_ListView::keyPressEvent( QKeyEvent* ke ) QtxListView::keyPressEvent( ke ); } +/*! + Finds item, in that dragged objects are dropped by QDropEvent + \return tree item +*/ QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const { QListViewItem* item = 0; @@ -127,6 +165,10 @@ QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const return item; } +/*! + \return SUIT object by tree item + \param item - tree item +*/ SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const { if ( !item ) @@ -142,6 +184,10 @@ SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const return obj; } +/*! + \return true if it is possible to drop into item + \param item - tree item to be checked +*/ bool OB_ListView::isDropAccepted( QListViewItem* item ) const { bool res = true; @@ -152,6 +198,11 @@ bool OB_ListView::isDropAccepted( QListViewItem* item ) const return res; } +/*! + \return true if it is possible to drop one item into other + \param drag - dragged item + \param drop - destination item +*/ bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) const { SUIT_DataObject* dragObj = dataObject( drag ); @@ -163,6 +214,11 @@ bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) con return dropObj->isDropAccepted( dragObj ); } +/*! + Sets column width + \param col - column index + \param width - column width +*/ void OB_ListView::setColumnWidth( int col, int width ) { int max = columnMaxWidth( col ); @@ -171,6 +227,10 @@ void OB_ListView::setColumnWidth( int col, int width ) QListView::setColumnWidth( col, width ); } +/*! + \return column max width + \param col - column index +*/ int OB_ListView::columnMaxWidth( const int col ) const { int res = -1; @@ -181,11 +241,20 @@ int OB_ListView::columnMaxWidth( const int col ) const return res; } +/*! + Changes column max width + \param col - column index + \param w - column max width +*/ void OB_ListView::setColumnMaxWidth( const int col, const int w ) { myMaxColWidth.insert( col, w ); } +/*! + \return column max ratio + \param col - column index +*/ double OB_ListView::columnMaxRatio( const int col ) const { double res = 0.0; @@ -194,6 +263,11 @@ double OB_ListView::columnMaxRatio( const int col ) const return res; } +/*! + Changes column max ratio + \param col - column index + \param w - column max ratio +*/ void OB_ListView::setColumnMaxRatio( const int col, const double r ) { myMaxColRatio.insert( col, r ); diff --git a/src/ObjBrowser/OB_ListView.h b/src/ObjBrowser/OB_ListView.h index 03a394c21..d35b3320b 100755 --- a/src/ObjBrowser/OB_ListView.h +++ b/src/ObjBrowser/OB_ListView.h @@ -34,6 +34,11 @@ class OB_Filter; class QListViewItem; class SUIT_DataObject; +/*! + \class OB_ListView + Special list view for ObjectBrowser. + Allows drag-n-drop, filtering of selected objects, column management. +*/ class OB_EXPORT OB_ListView : public QtxListView { Q_OBJECT diff --git a/src/ObjBrowser/resources/OB_msg_en.po b/src/ObjBrowser/resources/OB_msg_en.po index b570f058e..0f57bf3e5 100755 --- a/src/ObjBrowser/resources/OB_msg_en.po +++ b/src/ObjBrowser/resources/OB_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/Plot2d/Makefile.in b/src/Plot2d/Makefile.in index ef3d4742b..b6060462c 100755 --- a/src/Plot2d/Makefile.in +++ b/src/Plot2d/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : Plot2d diff --git a/src/Plot2d/Plot2d_Curve.cxx b/src/Plot2d/Plot2d_Curve.cxx index c0a9abbb6..4c5d02bd1 100755 --- a/src/Plot2d/Plot2d_Curve.cxx +++ b/src/Plot2d/Plot2d_Curve.cxx @@ -72,6 +72,9 @@ Plot2d_Curve& Plot2d_Curve::operator=( const Plot2d_Curve& curve ) return *this; } +/*! + \return title of table +*/ QString Plot2d_Curve::getTableTitle() const { return QString(); diff --git a/src/Plot2d/Plot2d_Prs.cxx b/src/Plot2d/Plot2d_Prs.cxx index 6f708f610..de9fc819b 100755 --- a/src/Plot2d/Plot2d_Prs.cxx +++ b/src/Plot2d/Plot2d_Prs.cxx @@ -29,24 +29,18 @@ #include #include "Plot2d_Prs.h" -//========================================================== /*! - * Plot2d_Prs::Plot2d_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ Plot2d_Prs::Plot2d_Prs( bool theDelete ) : mySecondY( false) { setAutoDel(theDelete); } -//========================================================== /*! - * Plot2d_Prs::Plot2d_Prs - * Standard constructor - */ -//========================================================== + Standard constructor +*/ Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj, bool theDelete ) : mySecondY( false) { @@ -54,33 +48,24 @@ Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj, bool theDelete ) AddObject( obj ); } -//========================================================== /*! - * Plot2d_Prs::~Plot2d_Prs - * Destructor - */ -//========================================================== + Destructor +*/ Plot2d_Prs::~Plot2d_Prs() { } -//========================================================== /*! - * Plot2d_Prs::GetObjects - * Get curves list - */ -//========================================================== + Get curves list +*/ curveList Plot2d_Prs::getCurves() const { return myCurves; } -//========================================================== /*! - * Plot2d_Prs::AddObject - * Add curbe - */ -//========================================================== + Add curve +*/ void Plot2d_Prs::AddObject( const Plot2d_Curve* obj ) { myCurves.append((Plot2d_Curve*)obj); @@ -89,38 +74,25 @@ void Plot2d_Prs::AddObject( const Plot2d_Curve* obj ) mySecondY = true; } -//========================================================== /*! - * Plot2d_Prs::IsNull - * Return 0 if list of the curves is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ] +*/ bool Plot2d_Prs::IsNull() const { return myCurves.isEmpty(); } -//========================================================== /*! - * Plot2d_Prs::IsSecondY - * Return 1 if in the list of curves exist at least one curve - * with axis Qwt::yRight - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 1 if in the list of curves exist at least one curve with axis Qwt::yRight [ Reimplemented from SALOME_Prs ] +*/ bool Plot2d_Prs::isSecondY() const { return mySecondY; } -//========================================================== /*! - * Plot2d_Prs::IsNull - * Return 0 if list of the curves is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ] +*/ void Plot2d_Prs::setAutoDel(bool theDel) { myCurves.setAutoDelete(theDel); diff --git a/src/Plot2d/Plot2d_SetupCurveDlg.h b/src/Plot2d/Plot2d_SetupCurveDlg.h index c9bea3a3d..719344723 100644 --- a/src/Plot2d/Plot2d_SetupCurveDlg.h +++ b/src/Plot2d/Plot2d_SetupCurveDlg.h @@ -14,10 +14,10 @@ #include -//================================================================================= -// class : Plot2d_SetupCurveDlg -// purpose : Dialog box for setup Plot2d curve -//================================================================================= +/*! + \class Plot2d_SetupCurveDlg + Dialog box for setup Plot2d curve +*/ class QPushButton; class QComboBox; diff --git a/src/Plot2d/Plot2d_ViewFrame.cxx b/src/Plot2d/Plot2d_ViewFrame.cxx index 35f4b5888..b5eccb446 100755 --- a/src/Plot2d/Plot2d_ViewFrame.cxx +++ b/src/Plot2d/Plot2d_ViewFrame.cxx @@ -130,10 +130,6 @@ const char* imageCrossCursor[] = { "................................"}; -//================================================================================= -// Plot2d_ViewFrame implementation -//================================================================================= - /*! Constructor */ @@ -1082,6 +1078,11 @@ void Plot2d_ViewFrame::setCurveType( int curveType, bool update ) emit vpCurveChanged(); } +/*! + Sets curve title + \param curveKey - curve id + \param title - new title +*/ void Plot2d_ViewFrame::setCurveTitle( int curveKey, const QString& title ) { if(myPlot) myPlot->setCurveTitle(curveKey, title); @@ -1609,9 +1610,6 @@ bool Plot2d_ViewFrame::isYLogEnabled() const return allPositive; } -//================================================================================= -// Plot2d_Plot2d implementation -//================================================================================= /*! Constructor */ @@ -1745,11 +1743,17 @@ void Plot2d_Plot2d::getNextMarker( QwtSymbol::Style& typeMarker, QColor& color, */ } +/*! + \return the default layout behavior of the widget +*/ QSizePolicy Plot2d_Plot2d::sizePolicy() const { return QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); } +/*! + \return the recommended size for the widget +*/ QSize Plot2d_Plot2d::sizeHint() const { return QwtPlot::minimumSizeHint(); @@ -1790,12 +1794,19 @@ bool Plot2d_Plot2d::existMarker( const QwtSymbol::Style typeMarker, const QColor return false; } -// TEMPORARY SOLUTION!!! TO BE IMPLEMENTED!!! +/*! + Creates presentation of object + Default implementation is empty +*/ Plot2d_Prs* Plot2d_ViewFrame::CreatePrs( const char* /*entry*/ ) { return 0; } +/*! + Copies preferences from other viewframe + \param vf - other view frame +*/ void Plot2d_ViewFrame::copyPreferences( Plot2d_ViewFrame* vf ) { if( !vf ) @@ -1888,6 +1899,11 @@ void Plot2d_ViewFrame::updateTitles() setTitle( true, aTables.join("; "), MainTitle, true ); } +/*! + Outputs content of viewframe to file + \param file - file name + \param format - file format +*/ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const { #ifdef WIN32 @@ -1919,6 +1935,9 @@ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const #endif } +/*! + \return string with all visual parameters +*/ QString Plot2d_ViewFrame::getVisualParameters() { double xmin, xmax, ymin, ymax, y2min, y2max; @@ -1929,6 +1948,9 @@ QString Plot2d_ViewFrame::getVisualParameters() return retStr; } +/*! + Restores all visual parameters from string +*/ void Plot2d_ViewFrame::setVisualParameters( const QString& parameters ) { QStringList paramsLst = QStringList::split( '*', parameters, true ); diff --git a/src/Plot2d/Plot2d_ViewManager.cxx b/src/Plot2d/Plot2d_ViewManager.cxx index 704e33095..98196ecdf 100755 --- a/src/Plot2d/Plot2d_ViewManager.cxx +++ b/src/Plot2d/Plot2d_ViewManager.cxx @@ -22,6 +22,9 @@ int Plot2d_ViewManager::myMaxId = 0; +/*! + Constructor +*/ Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) : SUIT_ViewManager( study, desk ) { @@ -30,21 +33,35 @@ Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) setViewModel( v ); } +/*! + Destructor +*/ Plot2d_ViewManager::~Plot2d_ViewManager() { } +/*! + \return corresponding viewer +*/ Plot2d_Viewer* Plot2d_ViewManager::getPlot2dModel() const { return (Plot2d_Viewer*)myViewModel; } +/*! + Sets default name of view + \param the View - view to be renamed +*/ void Plot2d_ViewManager::setViewName( SUIT_ViewWindow* theView ) { int aPos = myViews.find(theView); theView->setCaption( QString( "Plot2d scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1)); } +/*! + Adds new view + \param theView - view to be added +*/ bool Plot2d_ViewManager::insertView( SUIT_ViewWindow* theView ) { bool res = SUIT_ViewManager::insertView( theView ); @@ -56,11 +73,17 @@ bool Plot2d_ViewManager::insertView( SUIT_ViewWindow* theView ) return res; } +/*! + Creates new view +*/ void Plot2d_ViewManager::createView() { createViewWindow(); } +/*! + SLOT: called if action "Clone view" is activated, emits signal cloneView() +*/ void Plot2d_ViewManager::onCloneView() { SUIT_ViewWindow* vw = createViewWindow(); diff --git a/src/Plot2d/Plot2d_ViewModel.cxx b/src/Plot2d/Plot2d_ViewModel.cxx index 637351c91..30cd483b2 100755 --- a/src/Plot2d/Plot2d_ViewModel.cxx +++ b/src/Plot2d/Plot2d_ViewModel.cxx @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // Plot2d_ViewModel.cxx: implementation of the Plot2d_ViewModel class. -// -////////////////////////////////////////////////////////////////////// #include "Plot2d_ViewModel.h" #include "Plot2d_ViewWindow.h" @@ -28,6 +26,9 @@ #include +/*! + Constructor +*/ Plot2d_Viewer::Plot2d_Viewer(bool theAutoDel) :SUIT_ViewModel() { @@ -35,13 +36,19 @@ Plot2d_Viewer::Plot2d_Viewer(bool theAutoDel) myAutoDel = theAutoDel; } +/*! + Destructor +*/ Plot2d_Viewer::~Plot2d_Viewer() { if (myPrs) clearPrs(); } -//********************************************************************* +/*! + Create new instance of view window on desktop \a theDesktop. + \retval SUIT_ViewWindow* - created view window pointer. +*/ SUIT_ViewWindow* Plot2d_Viewer::createView(SUIT_Desktop* theDesktop) { Plot2d_ViewWindow* aPlot2dView = new Plot2d_ViewWindow(theDesktop, this); @@ -50,7 +57,10 @@ SUIT_ViewWindow* Plot2d_Viewer::createView(SUIT_Desktop* theDesktop) return aPlot2dView; } -//********************************************************************* +/*! + Adds custom items to popup menu + \param thePopup - popup menu +*/ void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup) { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -69,8 +79,10 @@ void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup) } } - -//********************************************************************* +/*! + Sets presentation of viewer + \param thePrs - new presentation +*/ void Plot2d_Viewer::setPrs(Plot2d_Prs* thePrs) { if (myPrs) @@ -79,7 +91,9 @@ void Plot2d_Viewer::setPrs(Plot2d_Prs* thePrs) myPrs->setAutoDel(myAutoDel); } -//********************************************************************* +/*! + Updates current viewer +*/ void Plot2d_Viewer::update() { SUIT_ViewManager* aMgr = getViewManager(); @@ -92,7 +106,9 @@ void Plot2d_Viewer::update() } } -//********************************************************************* +/*! + Clear viewer presentation +*/ void Plot2d_Viewer::clearPrs() { SUIT_ViewManager* aMgr = getViewManager(); @@ -109,7 +125,10 @@ void Plot2d_Viewer::clearPrs() myPrs = 0; } -//********************************************************************* +/*! + Sets "auto delete" state of of presentation + \param theDel - new state +*/ void Plot2d_Viewer::setAutoDel(bool theDel) { myAutoDel = theDel; @@ -117,7 +136,9 @@ void Plot2d_Viewer::setAutoDel(bool theDel) myPrs->setAutoDel(theDel); } -//********************************************************************* +/*! + SLOT: called when action "Change background" is activated +*/ void Plot2d_Viewer::onChangeBgColor() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -127,14 +148,18 @@ void Plot2d_Viewer::onChangeBgColor() aViewFrame->onChangeBackground(); } -//********************************************************************* +/*! + SLOT: called when action "Show toolbar" is activated +*/ void Plot2d_Viewer::onShowToolbar() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); if ( aView ) aView->getToolBar()->show(); } -//********************************************************************* +/*! + SLOT: called when action "Dump view" is activated +*/ void Plot2d_Viewer::onDumpView() { Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView()); @@ -142,11 +167,17 @@ void Plot2d_Viewer::onDumpView() aView->onDumpView(); } -//********************************************************************* +/*! + SLOT: called when action "Clone view" is activated +*/ void Plot2d_Viewer::onCloneView( Plot2d_ViewFrame*, Plot2d_ViewFrame* ) { } -//********************************************************************* + +/*! + Sets view manager + \param mgr - new view manager +*/ void Plot2d_Viewer::setViewManager( SUIT_ViewManager* mgr ) { SUIT_ViewModel::setViewManager( mgr ); diff --git a/src/Plot2d/Plot2d_ViewWindow.cxx b/src/Plot2d/Plot2d_ViewWindow.cxx index 017e8fada..eda8bd6fb 100755 --- a/src/Plot2d/Plot2d_ViewWindow.cxx +++ b/src/Plot2d/Plot2d_ViewWindow.cxx @@ -17,8 +17,7 @@ // See http://www.salome-platform.org/ // // Plot2d_ViewWindow.cxx: implementation of the Plot2d_ViewWindow class. -// -////////////////////////////////////////////////////////////////////// + #include "Plot2d_ViewWindow.h" #include "Plot2d_ViewFrame.h" @@ -36,10 +35,9 @@ #include #include -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - +/*! + Constructor +*/ Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* theModel) : SUIT_ViewWindow(theDesktop) { @@ -62,18 +60,27 @@ Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* th } +/*! + Destructor +*/ Plot2d_ViewWindow::~Plot2d_ViewWindow() { } -//**************************************************************** +/*! + Puts message to status bar + \param theMsg - message text +*/ void Plot2d_ViewWindow::putInfo(QString theMsg) { QStatusBar* aStatusBar = myDesktop->statusBar(); aStatusBar->message(theMsg/*, 3000*/); } -//**************************************************************** +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void Plot2d_ViewWindow::contextMenuPopup( QPopupMenu* thePopup ) { // scaling @@ -101,7 +108,9 @@ void Plot2d_ViewWindow::contextMenuPopup( QPopupMenu* thePopup ) myActionsMap[ CurvSettingsId ]->addTo(thePopup); } -//**************************************************************** +/*! + Custom event filter +*/ bool Plot2d_ViewWindow::eventFilter(QObject* watched, QEvent* e) { if (watched == myViewFrame) { @@ -126,7 +135,9 @@ bool Plot2d_ViewWindow::eventFilter(QObject* watched, QEvent* e) return SUIT_ViewWindow::eventFilter(watched, e); } -//**************************************************************** +/*! + Create actions for Plot2d view window +*/ void Plot2d_ViewWindow::createActions() { if ( !myActionsMap.isEmpty() ) @@ -282,7 +293,9 @@ void Plot2d_ViewWindow::createActions() } -//**************************************************************** +/*! + Create toolbar for Plot2d view window +*/ void Plot2d_ViewWindow::createToolBar() { myActionsMap[DumpId]->addTo(myToolBar); @@ -314,7 +327,9 @@ void Plot2d_ViewWindow::createToolBar() onChangeLegendMode(); } -//**************************************************************** +/*! + SLOT: called if scale mode for horizontal axis is changed +*/ void Plot2d_ViewWindow::onChangeHorMode() { bool aLinear = myViewFrame->isModeHorLinear(); @@ -334,7 +349,9 @@ void Plot2d_ViewWindow::onChangeHorMode() myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() ); } -//**************************************************************** +/*! + SLOT: called if scale mode for vertical axis is changed +*/ void Plot2d_ViewWindow::onChangeVerMode() { bool aLinear = myViewFrame->isModeVerLinear(); @@ -354,7 +371,9 @@ void Plot2d_ViewWindow::onChangeVerMode() myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() ); } -//**************************************************************** +/*! + SLOT: called if curve type is changed +*/ void Plot2d_ViewWindow::onChangeCurveMode() { int aCurveType = myViewFrame->getCurveType(); @@ -365,43 +384,57 @@ void Plot2d_ViewWindow::onChangeCurveMode() myActionsMap[CurvSplinesId]->setOn(aCurveType == 2); } -//**************************************************************** +/*! + SLOT: called if legend mode is changed +*/ void Plot2d_ViewWindow::onChangeLegendMode() { myActionsMap[ LegendId ]->setOn(myViewFrame->isLegendShow()); } -//**************************************************************** +/*! + SLOT: called if action "Fit all" is activated +*/ void Plot2d_ViewWindow::onFitAll() { myViewFrame->onViewFitAll(); } -//**************************************************************** +/*! + SLOT: called if action "Fit rect" is activated +*/ void Plot2d_ViewWindow::onFitRect() { myViewFrame->onViewFitArea(); } -//**************************************************************** +/*! + SLOT: called if action "Zoom" is activated +*/ void Plot2d_ViewWindow::onZoom() { myViewFrame->onViewZoom(); } -//**************************************************************** +/*! + SLOT: called if action "Panning" is activated +*/ void Plot2d_ViewWindow::onPanning() { myViewFrame->onViewPan(); } -//**************************************************************** +/*! + SLOT: called if action "Global panning" is activated +*/ void Plot2d_ViewWindow::onGlobalPanning() { myViewFrame->onViewGlobalPan(); } -//**************************************************************** +/*! + SLOT: called if action of scale mode for horizontal axis changing is activated +*/ void Plot2d_ViewWindow::onViewHorMode() { if (myViewFrame->isModeHorLinear()) @@ -410,7 +443,9 @@ void Plot2d_ViewWindow::onViewHorMode() myViewFrame->setHorScaleMode(0); } -//**************************************************************** +/*! + SLOT: called if action of scale mode for vertical axis changing is activated +*/ void Plot2d_ViewWindow::onViewVerMode() { if (myViewFrame->isModeVerLinear()) @@ -419,14 +454,18 @@ void Plot2d_ViewWindow::onViewVerMode() myViewFrame->setVerScaleMode(0); } -//**************************************************************** +/*! + SLOT: called if action "Show legend" is activated +*/ void Plot2d_ViewWindow::onLegend() { myViewFrame->showLegend(!myViewFrame->isLegendShow()); onChangeLegendMode(); } -//**************************************************************** +/*! + SLOT: called if action "Change curve type" is activated +*/ void Plot2d_ViewWindow::onCurves() { QtxAction* aSender = (QtxAction*) sender(); @@ -438,20 +477,29 @@ void Plot2d_ViewWindow::onCurves() myViewFrame->setCurveType(2); } -//**************************************************************** +/*! + SLOT: called if action "Dump view" is activated +*/ void Plot2d_ViewWindow::onDumpView() { qApp->postEvent( myViewFrame, new QPaintEvent( QRect( 0, 0, myViewFrame->width(), myViewFrame->height() ), TRUE ) ); SUIT_ViewWindow::onDumpView(); } -//**************************************************************** +/*! + \return QImage, containing all scene rendering in window +*/ QImage Plot2d_ViewWindow::dumpView() { QPixmap px = QPixmap::grabWindow( myViewFrame->winId() ); return px.convertToImage(); } +/*! + 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; @@ -461,20 +509,25 @@ bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString 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 ); diff --git a/src/Plot2d/resources/Plot2d_images.po b/src/Plot2d/resources/Plot2d_images.po index 9c7bfacdc..365f067a4 100755 --- a/src/Plot2d/resources/Plot2d_images.po +++ b/src/Plot2d/resources/Plot2d_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/Plot2d/resources/Plot2d_msg_en.po b/src/Plot2d/resources/Plot2d_msg_en.po index aeb44afb7..85af54da7 100755 --- a/src/Plot2d/resources/Plot2d_msg_en.po +++ b/src/Plot2d/resources/Plot2d_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -147,9 +165,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - #------------------------------------- # Plot2d_SetupViewDlg # ------------------------------------ diff --git a/src/Prs/Makefile.in b/src/Prs/Makefile.in index 73133a3e6..599c56194 100755 --- a/src/Prs/Makefile.in +++ b/src/Prs/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx index cb35bb80b..e23180d19 100755 --- a/src/Prs/SALOME_Prs.cxx +++ b/src/Prs/SALOME_Prs.cxx @@ -28,365 +28,245 @@ //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." ); diff --git a/src/Prs/SALOME_Prs.h b/src/Prs/SALOME_Prs.h index eec2a6055..6d21c79f9 100755 --- a/src/Prs/SALOME_Prs.h +++ b/src/Prs/SALOME_Prs.h @@ -33,13 +33,11 @@ class SALOME_View; class SALOME_Displayer; class Handle_SALOME_InteractiveObject; -//=========================================================== /*! - * Class: SALOME_Prs \n - * Description: Base class for SALOME graphic object wrappers - presentations.\n - * Presentations are temporary objects, so they can be created on the stack. - */ -//=========================================================== + \class SALOME_Prs + Base class for SALOME graphic object wrappers - presentations. + Presentations are temporary objects, so they can be created on the stack. +*/ class PRS_EXPORT SALOME_Prs { @@ -63,13 +61,11 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const = 0; }; -//=========================================================== /*! - * Class: SALOME_OCCPrs \n - * Description: Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers.\n - * This intermediate class is necessary to avoid dependencies from OCC libs. - */ -//=========================================================== + \class SALOME_OCCPrs + Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers. + This intermediate class is necessary to avoid dependencies from OCC libs. +*/ class PRS_EXPORT SALOME_OCCPrs : public SALOME_Prs { @@ -90,13 +86,11 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -//=========================================================== /*! - * Class: SALOME_VTKPrs \n - * Description: Base class for VTK graphic object (vtkActor) wrappers \n - * This intermediate class is necessary to avoid dependencies from VTK libs. - */ -//=========================================================== + \class SALOME_VTKPrs + Base class for VTK graphic object (vtkActor) wrappers. + This intermediate class is necessary to avoid dependencies from VTK libs. +*/ class PRS_EXPORT SALOME_VTKPrs : public SALOME_Prs { public: @@ -116,13 +110,10 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -//=========================================================== /*! - * Class: SALOME_Prs2d \n - * Description: Base class for Plot2d graphic object (Plot2d_Curve) wrappers. - */ -//=========================================================== - + \class SALOME_Prs2d + Base class for Plot2d graphic object (Plot2d_Curve) wrappers. +*/ class PRS_EXPORT SALOME_Prs2d : public SALOME_Prs { public: @@ -142,18 +133,13 @@ public: virtual void LocalSelectionIn( SALOME_View*, const int ) const; }; -///////////////////////////////////////////////////////////////////////// -// Base classes for object wrappers for any other visualization libraries -// should be added here! -///////////////////////////////////////////////////////////////////////// - -//=========================================================== /*! - * Class: SALOME_View \n - * Description: Base class for SALOME views (or view frames) - */ -//=========================================================== - + Base classes for object wrappers for any other visualization libraries should be added here! +*/ +/*! + \class SALOME_View + Base class for SALOME views (or view frames) +*/ class PRS_EXPORT SALOME_View { public: @@ -211,24 +197,18 @@ public: virtual void Repaint() {} //!< Null body here. }; -//=========================================================== -/* - * Classes: SALOME_Displayer - * Description: These classes are used to specify type of view - * VTK, OCC or Plot2d - */ -//=========================================================== +/*! + \class SALOME_Displayer + These classes are used to specify type of view VTK, OCC or Plot2d +*/ class PRS_EXPORT SALOME_OCCViewType {}; class PRS_EXPORT SALOME_VTKViewType {}; class PRS_EXPORT SALOME_Plot2dViewType {}; -//=========================================================== /*! - * Class: SALOME_Displayer \n - * Description: Base class for SALOME displayers - */ -//=========================================================== - + \class SALOME_Displayer + Base class for SALOME displayers +*/ class PRS_EXPORT SALOME_Displayer { public: diff --git a/src/PyInterp/PyInterp_Dispatcher.cxx b/src/PyInterp/PyInterp_Dispatcher.cxx index 3d5067dba..d772c34a2 100755 --- a/src/PyInterp/PyInterp_Dispatcher.cxx +++ b/src/PyInterp/PyInterp_Dispatcher.cxx @@ -22,10 +22,6 @@ using namespace std; PyInterp_Dispatcher* PyInterp_Dispatcher::myInstance = 0; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// - void PyInterp_Request::process() { safeExecute(); @@ -89,20 +85,12 @@ void PyInterp_LockRequest::safeExecute() } } -////////////////////////////////////////////////////////// -// class : PyInterp_Event -////////////////////////////////////////////////////////// - PyInterp_Event::~PyInterp_Event() { PyInterp_Request::Destroy( myRequest ); myRequest = 0; } -////////////////////////////////////////////////////////// -// class : PyInterp_Dispatcher -////////////////////////////////////////////////////////// - PyInterp_Dispatcher* PyInterp_Dispatcher::Get() { if ( !myInstance ) diff --git a/src/PyInterp/PyInterp_Dispatcher.h b/src/PyInterp/PyInterp_Dispatcher.h index a7a4ae72f..412c97194 100755 --- a/src/PyInterp/PyInterp_Dispatcher.h +++ b/src/PyInterp/PyInterp_Dispatcher.h @@ -25,9 +25,6 @@ class PyInterp_base; class PyInterp_Watcher; class PyInterp_Dispatcher; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Request { friend class PyInterp_Dispatcher; @@ -88,9 +85,6 @@ private: PyInterp_base* myInterp; }; -////////////////////////////////////////////////////////// -// class : PyInterp_Event -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Event : public QCustomEvent { PyInterp_Event(); @@ -111,9 +105,6 @@ private: PyInterp_Request* myRequest; }; -////////////////////////////////////////////////////////// -// class : PyInterp_Dispatcher -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Dispatcher : protected QThread { PyInterp_Dispatcher(); // private constructor diff --git a/src/PyInterp/PyInterp_base.cxx b/src/PyInterp/PyInterp_base.cxx index 0e0a5622c..1afac6ac2 100644 --- a/src/PyInterp/PyInterp_base.cxx +++ b/src/PyInterp/PyInterp_base.cxx @@ -224,7 +224,7 @@ int PyInterp_base::run(const char *command) _atFirst = false; return ret; } - ret = simpleRun("salome.salome_init()"); + ret = simpleRun("salome.salome_init(0,1)"); if (ret) { _atFirst = false; return ret; diff --git a/src/PythonConsole/Makefile.in b/src/PythonConsole/Makefile.in index b1b1713ea..a770ad86a 100755 --- a/src/PythonConsole/Makefile.in +++ b/src/PythonConsole/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : PythonConsole diff --git a/src/PythonConsole/PythonConsole_PyConsole.cxx b/src/PythonConsole/PythonConsole_PyConsole.cxx index c7f8f1c7c..7dd044d60 100755 --- a/src/PythonConsole/PythonConsole_PyConsole.cxx +++ b/src/PythonConsole/PythonConsole_PyConsole.cxx @@ -26,7 +26,9 @@ using namespace std; -//**************************************************************** +/*! + Constructor +*/ PythonConsole::PythonConsole(QWidget* parent, PyInterp_base* interp) : QWidget(parent), myEditor( 0 ) { @@ -44,26 +46,36 @@ PythonConsole::PythonConsole(QWidget* parent, PyInterp_base* interp) lay->addWidget( myEditor ); } -//**************************************************************** +/*! + Destructor +*/ PythonConsole::~PythonConsole() { } -//**************************************************************** +/*! + Executes command + \param command - string with command and arguments +*/ void PythonConsole::exec( const QString& command ) { if ( myEditor ) myEditor->exec( command ); } -//**************************************************************** +/*! + Changes font of python console + \param f - new font +*/ void PythonConsole::setFont( const QFont& f ) { if( myEditor ) myEditor->setFont( f ); } -//**************************************************************** +/*! + \return font of python console +*/ QFont PythonConsole::font() const { QFont res; diff --git a/src/PythonConsole/PythonConsole_PyEditor.cxx b/src/PythonConsole/PythonConsole_PyEditor.cxx index 5bb4aed68..afb6c0537 100755 --- a/src/PythonConsole/PythonConsole_PyEditor.cxx +++ b/src/PythonConsole/PythonConsole_PyEditor.cxx @@ -173,7 +173,7 @@ void PythonConsole_PyEditor::handleReturn() PyInterp_Dispatcher::Get()->Exec( new ExecCommand( myInterp, _buf.latin1(), this ) ); } -/* +/*! Processes drop event: paste dragged text */ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event ) @@ -197,7 +197,7 @@ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event ) } } -/* +/*! Processes middle button release event - paste clipboard's contents */ void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event ) @@ -703,6 +703,9 @@ void PythonConsole_PyEditor::onPyInterpChanged( PyInterp_base* interp ) } } +/*! + Creates popup menu +*/ QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos ) { QPopupMenu* popup = QTextEdit::createPopupMenu( pos ); diff --git a/src/PythonConsole/PythonConsole_PyInterp.cxx b/src/PythonConsole/PythonConsole_PyInterp.cxx index 5b7d3e579..81ff117c4 100755 --- a/src/PythonConsole/PythonConsole_PyInterp.cxx +++ b/src/PythonConsole/PythonConsole_PyInterp.cxx @@ -48,6 +48,9 @@ PythonConsole_PyInterp::PythonConsole_PyInterp(): PyInterp_base() { } +/*! + Destructor +*/ PythonConsole_PyInterp::~PythonConsole_PyInterp() { } @@ -96,14 +99,13 @@ bool PythonConsole_PyInterp::initState() return true; } - +/*! + The GIL is assumed to be held + It is the caller responsability caller to acquire the GIL + It will still be held on initContext output +*/ bool PythonConsole_PyInterp::initContext() { - /* - * The GIL is assumed to be held - * It is the caller responsability caller to acquire the GIL - * It will still be held on initContext output - */ PyObject *m = PyImport_AddModule("__main__"); // interpreter main module (module context) if(!m){ // if(MYDEBUG) MESSAGE("problem..."); diff --git a/src/QDS/Makefile.in b/src/QDS/Makefile.in index 97b4ae3f7..5f0de87b3 100755 --- a/src/QDS/Makefile.in +++ b/src/QDS/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : QDS diff --git a/src/QDS/QDS.cxx b/src/QDS/QDS.cxx index e6bdd56c8..df0e762c8 100644 --- a/src/QDS/QDS.cxx +++ b/src/QDS/QDS.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS.h" #include "QDS_Datum.h" diff --git a/src/QDS/QDS.h b/src/QDS/QDS.h index c9ff5edd0..70c3feed8 100644 --- a/src/QDS/QDS.h +++ b/src/QDS/QDS.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_H #define QDS_H diff --git a/src/QDS/QDS_CheckBox.cxx b/src/QDS/QDS_CheckBox.cxx index ded537716..471a9522f 100644 --- a/src/QDS/QDS_CheckBox.cxx +++ b/src/QDS/QDS_CheckBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_CheckBox.h" #include diff --git a/src/QDS/QDS_CheckBox.h b/src/QDS/QDS_CheckBox.h index 8b1344b93..8ced09f30 100644 --- a/src/QDS/QDS_CheckBox.h +++ b/src/QDS/QDS_CheckBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_CHECKBOX_H #define QDS_CHECKBOX_H diff --git a/src/QDS/QDS_ComboBox.cxx b/src/QDS/QDS_ComboBox.cxx index fac69b6b4..a3e7a3af3 100644 --- a/src/QDS/QDS_ComboBox.cxx +++ b/src/QDS/QDS_ComboBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_ComboBox.h" #include diff --git a/src/QDS/QDS_ComboBox.h b/src/QDS/QDS_ComboBox.h index 9650f4c58..4355332e0 100644 --- a/src/QDS/QDS_ComboBox.h +++ b/src/QDS/QDS_ComboBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_COMBOBOX_H #define QDS_COMBOBOX_H diff --git a/src/QDS/QDS_Datum.cxx b/src/QDS/QDS_Datum.cxx index f7a76b649..ae2e26026 100644 --- a/src/QDS/QDS_Datum.cxx +++ b/src/QDS/QDS_Datum.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_Datum.h" #include "QDS_Validator.h" diff --git a/src/QDS/QDS_Datum.h b/src/QDS/QDS_Datum.h index 3a1a92985..9e3052ee3 100644 --- a/src/QDS/QDS_Datum.h +++ b/src/QDS/QDS_Datum.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_DATUM_H #define QDS_DATUM_H diff --git a/src/QDS/QDS_LineEdit.cxx b/src/QDS/QDS_LineEdit.cxx index 15cc3f057..9ad83744a 100644 --- a/src/QDS/QDS_LineEdit.cxx +++ b/src/QDS/QDS_LineEdit.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_LineEdit.h" #include diff --git a/src/QDS/QDS_LineEdit.h b/src/QDS/QDS_LineEdit.h index ec9ad48a2..e3466c5ef 100644 --- a/src/QDS/QDS_LineEdit.h +++ b/src/QDS/QDS_LineEdit.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_LINEEDIT_H #define QDS_LINEEDIT_H diff --git a/src/QDS/QDS_RadioBox.cxx b/src/QDS/QDS_RadioBox.cxx index 1b3350fb3..07271a4ad 100644 --- a/src/QDS/QDS_RadioBox.cxx +++ b/src/QDS/QDS_RadioBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_RadioBox.h" #include diff --git a/src/QDS/QDS_RadioBox.h b/src/QDS/QDS_RadioBox.h index 769a537ed..6d70c7f4e 100644 --- a/src/QDS/QDS_RadioBox.h +++ b/src/QDS/QDS_RadioBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_RADIOBOX_H #define QDS_RADIOBOX_H diff --git a/src/QDS/QDS_SpinBox.cxx b/src/QDS/QDS_SpinBox.cxx index b77aa8ba0..0fb13ccc1 100644 --- a/src/QDS/QDS_SpinBox.cxx +++ b/src/QDS/QDS_SpinBox.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_SpinBox.h" #include diff --git a/src/QDS/QDS_SpinBox.h b/src/QDS/QDS_SpinBox.h index f018ddfb8..d1c1d0e23 100644 --- a/src/QDS/QDS_SpinBox.h +++ b/src/QDS/QDS_SpinBox.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_SPINBOX_H #define QDS_SPINBOX_H diff --git a/src/QDS/QDS_SpinBoxDbl.cxx b/src/QDS/QDS_SpinBoxDbl.cxx index 8a4160e70..b4091a176 100644 --- a/src/QDS/QDS_SpinBoxDbl.cxx +++ b/src/QDS/QDS_SpinBoxDbl.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_SpinBoxDbl.h" #include diff --git a/src/QDS/QDS_SpinBoxDbl.h b/src/QDS/QDS_SpinBoxDbl.h index a0c5e3096..cabd8584e 100644 --- a/src/QDS/QDS_SpinBoxDbl.h +++ b/src/QDS/QDS_SpinBoxDbl.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_PINBOXDBL_H #define QDS_PINBOXDBL_H diff --git a/src/QDS/QDS_TextEdit.cxx b/src/QDS/QDS_TextEdit.cxx index 65fbcb28e..b3c50c56c 100644 --- a/src/QDS/QDS_TextEdit.cxx +++ b/src/QDS/QDS_TextEdit.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_TextEdit.h" #include diff --git a/src/QDS/QDS_TextEdit.h b/src/QDS/QDS_TextEdit.h index 917ff13e4..0f37fb238 100644 --- a/src/QDS/QDS_TextEdit.h +++ b/src/QDS/QDS_TextEdit.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_TEXTEEDIT_H #define QDS_TEXTEEDIT_H diff --git a/src/QDS/QDS_Validator.cxx b/src/QDS/QDS_Validator.cxx index d83463eae..120af3afc 100644 --- a/src/QDS/QDS_Validator.cxx +++ b/src/QDS/QDS_Validator.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #include "QDS_Validator.h" /*! diff --git a/src/QDS/QDS_Validator.h b/src/QDS/QDS_Validator.h index bc966c03c..9b4b0b7b9 100644 --- a/src/QDS/QDS_Validator.h +++ b/src/QDS/QDS_Validator.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef QDS_VALIDATOR_H #define QDS_VALIDATOR_H diff --git a/src/QDS/resources/QDS_msg_en.po b/src/QDS/resources/QDS_msg_en.po index e42b0191b..e73b3e81f 100644 --- a/src/QDS/resources/QDS_msg_en.po +++ b/src/QDS/resources/QDS_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/Qtx/Makefile.in b/src/Qtx/Makefile.in index 02f58984b..e8b915139 100755 --- a/src/Qtx/Makefile.in +++ b/src/Qtx/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : suit @@ -50,7 +68,8 @@ EXPORT_HEADERS= Qtx.h \ QtxResourceEdit.h \ QtxListView.h \ QtxDirListEditor.h \ - QtxDblValidator.h + QtxDblValidator.h \ + QtxSplash.h # .po files to transform in .qm @@ -98,7 +117,8 @@ LIB_SRC= \ QtxWorkstack.cxx \ QtxListView.cxx \ QtxDirListEditor.cxx \ - QtxDblValidator.cxx + QtxDblValidator.cxx \ + QtxSplash.cxx LIB_MOC = \ QtxAction.h \ @@ -131,7 +151,8 @@ LIB_MOC = \ QtxListView.h \ QtxListResourceEdit.h \ QtxDirListEditor.h \ - QtxDblValidator.h + QtxDblValidator.h \ + QtxSplash.h RESOURCES_FILES = \ diff --git a/src/Qtx/Qtx.h b/src/Qtx/Qtx.h index c16bd7b23..cbfc63b99 100755 --- a/src/Qtx/Qtx.h +++ b/src/Qtx/Qtx.h @@ -87,6 +87,10 @@ typedef QValueList QIntList; typedef QValueList QShortList; typedef QValueList QDoubleList; +/*! + \class Qtx + \brief Set of auxiliary static methods +*/ class QTX_EXPORT Qtx : public Qt { public: diff --git a/src/Qtx/QtxAction.cxx b/src/Qtx/QtxAction.cxx index 9fafdb7ac..ea8446430 100755 --- a/src/Qtx/QtxAction.cxx +++ b/src/Qtx/QtxAction.cxx @@ -22,6 +22,7 @@ #include "QtxAction.h" #include +#include /*! Name: QtxAction [public] @@ -30,7 +31,7 @@ */ QtxAction::QtxAction( QObject* parent, const char* name, bool toggle ) -: QAction( parent, name, toggle ) + : QAction( parent, name, toggle ) { } @@ -46,7 +47,7 @@ QtxAction::QtxAction( QObject* parent, const char* name, bool toggle ) QtxAction::QtxAction( const QString& text, const QIconSet& icon, const QString& menuText, int accel, QObject* parent, const char* name, bool toggle ) -: QAction( text, icon, menuText, accel, parent, name, toggle ) + : QAction( text, icon, menuText, accel, parent, name, toggle ) { } @@ -60,7 +61,7 @@ QtxAction::QtxAction( const QString& text, const QIconSet& icon, QtxAction::QtxAction( const QString& text, const QString& menuText, int accel, QObject* parent, const char* name, bool toggle ) -: QAction( text, menuText, accel, parent, name, toggle ) + : QAction( text, menuText, accel, parent, name, toggle ) { } @@ -81,6 +82,26 @@ QtxAction::~QtxAction() bool QtxAction::addTo( QWidget* w ) { + if ( w->inherits( "QMenuBar" ) ) { + // --- Add action to the QMenuBar --- + // n.b. currently for the actions inserted to the menu bar + // the following properties are not supported: + // * tooltips + // * what's this info + // * toggle mode + QMenuBar* mb = (QMenuBar*)w; + if ( myMenuIds.find( w ) != myMenuIds.end() ) + return false; // already added + if ( name() == "qt_separator_action" ) // separator + myMenuIds[ w ] = mb->insertSeparator(); + else if ( iconSet().isNull() ) // has no icon + myMenuIds[ w ] = mb->insertItem( menuText(), this, SIGNAL( activated() ), accel() ); + else // has icon + myMenuIds[ w ] = mb->insertItem( iconSet(), menuText(), this, SIGNAL( activated() ), accel() ); + mb->setItemEnabled( myMenuIds[ w ], isEnabled() ); + mb->setItemVisible( myMenuIds[ w ], isVisible() ); + return true; + } return QAction::addTo( w ); } @@ -96,91 +117,185 @@ bool QtxAction::addTo( QWidget* w, int index ) if ( !addTo( w ) ) return false; - if ( w->inherits( "QPopupMenu" ) ) - { + if ( w->inherits( "QPopupMenu" ) ) { + // --- Add action to the QPopupMenu --- QPopupMenu* popup = (QPopupMenu*)w; - if ( index < (int)popup->count() - 1 ) - { + if ( index >= 0 && index < (int)popup->count() - 1 ) { int id = popup->idAt( popup->count() - 1 ); - if ( id != -1 ) - { - QMenuItem* item = popup->findItem( id ); - if ( item && item->isSeparator() ) - { - popup->removeItem( id ); - popup->insertSeparator( index ); - } - else - { - QPopupMenu* p = item ? item->popup() : 0; - int accel = popup->accel( id ); - bool isOn = popup->isItemEnabled( id ); - QString text = popup->text( id ); - QIconSet icon; - if ( popup->iconSet( id ) ) - icon = *popup->iconSet( id ); - popup->removeItem( id ); - int pos; - if ( icon.isNull() ) - if ( p ) - pos = popup->indexOf( popup->insertItem( text, p, id, index ) ); - else - pos = popup->indexOf( popup->insertItem( text, id, index ) ); - else - if ( p ) - pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); - else - pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); - popup->setId( pos, id ); - popup->setAccel( accel, id ); - popup->setItemEnabled( id, isOn ); - if ( !p ) - popup->connectItem( id, this, SLOT( internalActivation() ) ); - } + if ( id != -1 ) { + QMenuItem* item = popup->findItem( id ); + if ( item && item->isSeparator() ) { + popup->removeItem( id ); + popup->insertSeparator( index ); + } + else { + QPopupMenu* p = item ? item->popup() : 0; + int accel = popup->accel( id ); + bool isOn = popup->isItemEnabled( id ); + bool isVisible = popup->isItemVisible( id ); + bool isChecked = popup->isItemChecked( id ); + QString text = popup->text( id ); + QIconSet icon; + if ( popup->iconSet( id ) ) + icon = *popup->iconSet( id ); + popup->removeItem( id ); + int pos; + if ( icon.isNull() ) + if ( p ) + pos = popup->indexOf( popup->insertItem( text, p, id, index ) ); + else + pos = popup->indexOf( popup->insertItem( text, id, index ) ); + else + if ( p ) + pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); + else + pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) ); + popup->setId( pos, id ); + popup->setAccel( accel, id ); + popup->setItemEnabled( id, isOn ); + popup->setItemVisible( id, isVisible ); + popup->setItemChecked( id, isChecked ); + if ( !whatsThis().isEmpty() ) + popup->setWhatsThis( id, whatsThis() ); + if ( !p ) + popup->connectItem( id, this, SLOT( internalActivation() ) ); + } + } + } + } + else if ( w->inherits( "QMenuBar" ) ) { + // --- Add action to the QMenuBar --- + QMenuBar* mb = (QMenuBar*)w; + if ( index >= 0 && index < (int)mb->count() - 1 ) { + int id = mb->idAt( mb->count() - 1 ); + if ( id != -1 ) { + QMenuItem* item = mb->findItem( id ); + if ( item && item->isSeparator() ) { + mb->removeItem( id ); + mb->insertSeparator( index ); + } + else { + QPopupMenu* p = item ? item->popup() : 0; + int accel = mb->accel( id ); + bool isOn = mb->isItemEnabled( id ); + bool isVisible = mb->isItemVisible( id ); + QString text = mb->text( id ); + QIconSet icon; + if ( mb->iconSet( id ) ) + icon = *mb->iconSet( id ); + mb->removeItem( id ); + int pos; + if ( icon.isNull() ) + if ( p ) + pos = mb->indexOf( mb->insertItem( text, p, id, index ) ); + else + pos = mb->indexOf( mb->insertItem( text, id, index ) ); + else + if ( p ) + pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) ); + else + pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) ); + mb->setId( pos, id ); + mb->setAccel( accel, id ); + mb->setItemEnabled( id, isOn ); + mb->setItemVisible( id, isVisible ); + if ( !p ) + mb->connectItem( id, this, SIGNAL( activated() ) ); + } } } } - return true; } +/*! + Name: removeFrom [virtual public] + Desc: Removes this action from widget. Returns true if the action was removed + successfully and false otherwise. +*/ + +bool QtxAction::removeFrom( QWidget* w ) +{ + // check if widget is QMenuBar + if ( w->inherits( "QMenuBar" ) ) { + QMenuBar* mb = (QMenuBar*)w; + if ( myMenuIds.find( w ) == myMenuIds.end() ) + return false; // not yet added + mb->removeItem( myMenuIds[ w ] ); + myMenuIds.remove( w ); + return true; + } + return QAction::removeFrom( w ); +} + /*! Name: setPopup [virtual public] Desc: Set or unset the sub popup menu for item with specified id in the given popup. */ -void QtxAction::setPopup( QPopupMenu* popup, const int id, QPopupMenu* subPopup ) const +void QtxAction::setPopup( QWidget* w, const int id, QPopupMenu* subPopup ) const { - if ( !popup ) + if ( !w ) return; + if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) ) + return; // unsupported widget type + QMenuData* md = 0; - const QMenuData* pmd = popup; - QMenuItem* item = popup->findItem( id, &md ); + QMenuData* pmd = dynamic_cast( 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; } + diff --git a/src/Qtx/QtxAction.h b/src/Qtx/QtxAction.h index ffffcc4d8..5251ad50f 100755 --- a/src/Qtx/QtxAction.h +++ b/src/Qtx/QtxAction.h @@ -25,6 +25,7 @@ #include "Qtx.h" #include +#include class QTX_EXPORT QtxAction : public QAction { @@ -38,9 +39,13 @@ public: 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 myMenuIds; }; #endif diff --git a/src/Qtx/QtxActionMenuMgr.cxx b/src/Qtx/QtxActionMenuMgr.cxx index 2d09b2d09..50c1147bb 100644 --- a/src/Qtx/QtxActionMenuMgr.cxx +++ b/src/Qtx/QtxActionMenuMgr.cxx @@ -31,6 +31,58 @@ #include #include #include +#include + +// 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 prepareIds( const QWidget* w ) + { + QValueList l; + const QMenuData* md = 0; + if ( w->inherits( "QMenuBar" ) ) + md = dynamic_cast( w ); + else if ( w->inherits( "QPopupMenu" ) ) + md = dynamic_cast( 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& l, bool retId = true ) + { + const QMenuData* md = 0; + if ( w->inherits( "QMenuBar" ) ) + md = dynamic_cast( w ); + else if ( w->inherits( "QPopupMenu" ) ) + md = dynamic_cast( 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( w ); + if ( !w ) return; + printf(">>> start dump menu (%s) >>>\n", before ? "before" : "after" ); + for( int i = 0; i < md->count(); i++ ) + printf("%d: %d: %s\n",i,md->idAt(i),md->text(md->idAt(i)).latin1() ); + printf("<<< end dump menu (%s) <<<\n", before ? "before" : "after" ); + } +}; /*! Class: QtxActionMenuMgr::MenuAction @@ -40,7 +92,7 @@ class QtxActionMenuMgr::MenuAction : public QtxAction { public: - MenuAction( const QString&, const QString&, QObject*, const bool = false ); + MenuAction( const QString&, const QString&, QObject*, const int = -1, const bool = false ); virtual ~MenuAction(); virtual bool addTo( QWidget* ); @@ -50,54 +102,84 @@ public: QPopupMenu* popup() const; private: - int myId; - QPopupMenu* myPopup; - bool myEmptyEnabled; + int myId; + QPopupMenu* myPopup; + bool myEmptyEnabled; + QMap 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 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 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; @@ -105,20 +187,45 @@ bool QtxActionMenuMgr::MenuAction::addTo( QWidget* w ) return true; } +/*! + Removes action from widget, for example, from popup menu or menu bar +*/ bool QtxActionMenuMgr::MenuAction::removeFrom( QWidget* w ) { - if ( w->inherits( "QPopupMenu" ) && QAction::removeFrom( w ) ) - myId = -1; + if ( !w ) + return false; // bad widget + + if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) ) + return false; // not allowed widget type + + if ( myIds.find( w ) == myIds.end() ) + return false; // not yet added + + if ( w->inherits( "QPopupMenu" ) ) { + if ( myId != -1 ) { + QPopupMenu* pm = (QPopupMenu*)w; + int idx = pm->indexOf( myId ); + if ( idx != -1 ) pm->setId( idx, myIds[ w ] ); + } + myIds.remove( w ); + return QtxAction::removeFrom( w );; + } else if ( w->inherits( "QMenuBar" ) ) { - QMenuBar* mb = (QMenuBar*)w; - mb->removeItem( myId ); - myId = -1; + if ( myId != -1 ) { + QMenuBar* mb = (QMenuBar*)w; + int idx = mb->indexOf( myId ); + if ( idx != -1 ) mb->setId( idx, myIds[ w ] ); + } + myIds.remove( w ); + return QtxAction::removeFrom( w ); } - - return myId == -1; + return false; } +/*! + \return internal popup of action +*/ QPopupMenu* QtxActionMenuMgr::MenuAction::popup() const { return myPopup; @@ -128,25 +235,28 @@ QPopupMenu* QtxActionMenuMgr::MenuAction::popup() const Class: QtxActionMenuMgr Level: Public */ - - QtxActionMenuMgr::QtxActionMenuMgr( QMainWindow* p ) : QtxActionMgr( p ), -myMenu( p ? p->menuBar() : 0 ) + myMenu( p ? p->menuBar() : 0 ) { myRoot.id = -1; myRoot.group = -1; if ( myMenu ) { 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; @@ -155,6 +265,9 @@ myMenu( mw ) connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + Destructor +*/ QtxActionMenuMgr::~QtxActionMenuMgr() { for ( NodeListIterator it( myRoot.children ); it.current() && myMenu; ++it ) @@ -171,12 +284,23 @@ QtxActionMenuMgr::~QtxActionMenuMgr() delete itr.data(); } +/*! + \return whether menu item corresponding to action is visible + \param actId - identificator of action + \param place - identificator of some parent action +*/ bool QtxActionMenuMgr::isVisible( const int actId, const int place ) const { MenuNode* node = find( actId, place ); return node && node->visible; } +/*! + Sets visible state of action + \param actId - identificator of action + \param place - identificator of some parent action + \param v - visibility state +*/ void QtxActionMenuMgr::setVisible( const int actId, const int place, const bool v ) { MenuNode* node = find( actId, place ); @@ -184,16 +308,40 @@ void QtxActionMenuMgr::setVisible( const int actId, const int place, const bool node->visible = v; } +/*! + Insert action as children menu item + \param id - identificator of action + \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const QString& menus, const int group, const int idx ) { return insert( id, QStringList::split( "|", menus ), group, idx ); } +/*! + Insert action as children menu item + \param a - action + \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( QAction* a, const QString& menus, const int group, const int idx ) { return insert( a, QStringList::split( "|", menus ), group, idx ); } +/*! + Insert action as children menu item + \param id - identificator of action + \param menus - list of names of parent menu items, separated by |. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const QStringList& menus, const int group, const int idx ) { int pId = createMenu( menus, -1 ); @@ -203,6 +351,14 @@ int QtxActionMenuMgr::insert( const int id, const QStringList& menus, const int return insert( id, pId, group, idx ); } +/*! + Insert action as children menu item + \param a - action + \param menus - list of names of parent menu items. It means sequence of menu items, + for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created. + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( QAction* a, const QStringList& menus, const int group, const int idx ) { int pId = createMenu( menus, -1 ); @@ -212,6 +368,13 @@ int QtxActionMenuMgr::insert( QAction* a, const QStringList& menus, const int gr return insert( a, pId, group, idx ); } +/*! + Insert action as children menu item + \param id - identificator of action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator + \param idx - index inside Qt menu +*/ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, const int idx ) { if ( id == -1 ) @@ -233,11 +396,28 @@ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, cons 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 ); @@ -257,13 +437,17 @@ int QtxActionMenuMgr::insert( const QString& title, const int pId, const int gro 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 ); @@ -272,53 +456,129 @@ int QtxActionMenuMgr::insert( const QString& title, const int pId, const int gro 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 ); @@ -338,16 +598,28 @@ void QtxActionMenuMgr::remove( const int id, const int pId, const int group ) updateMenu( pNode, false ); } +/*! + Shows menu item corresponding to action + \param id - identificator of action +*/ void QtxActionMenuMgr::show( const int id ) { setShown( id, true ); } +/*! + Hides menu item corresponding to action + \param id - identificator of action +*/ void QtxActionMenuMgr::hide( const int id ) { setShown( id, false ); } +/*! + \return shown status of menu item corresponding to action + \param id - identificator of action +*/ bool QtxActionMenuMgr::isShown( const int id ) const { bool res = false; @@ -357,6 +629,11 @@ bool QtxActionMenuMgr::isShown( const int id ) const return res; } +/*! + Sets shown status of menu item corresponding to action + \param id - identificator of action + \param on - new shown status +*/ void QtxActionMenuMgr::setShown( const int id, const bool on ) { NodeList aNodes; @@ -376,12 +653,18 @@ void QtxActionMenuMgr::setShown( const int id, const bool on ) updateMenu( itr.key(), false ); } +/*! + SLOT: called when corresponding menu is destroyed, clears internal pointer to menu +*/ void QtxActionMenuMgr::onDestroyed( QObject* obj ) { if ( myMenu == obj ) myMenu = 0; } +/*! + SLOT: called when menu item is highlighted +*/ void QtxActionMenuMgr::onHighlighted( int id ) { const QObject* snd = sender(); @@ -406,6 +689,10 @@ void QtxActionMenuMgr::onHighlighted( int id ) } } +/*! + Assignes new menu with manager + \param mw - new menu +*/ void QtxActionMenuMgr::setWidget( QWidget* mw ) { if ( myMenu == mw ) @@ -420,11 +707,23 @@ void QtxActionMenuMgr::setWidget( QWidget* 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; @@ -439,6 +738,13 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* star 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; @@ -452,11 +758,25 @@ bool QtxActionMenuMgr::find( const int id, NodeList& lst, MenuNode* startNode ) return !lst.isEmpty(); } +/*! + Finds menu node + \return menu node + \param title - menu text of searched node + \param pId - id of action corresponding to start menu item + \param rec - recursive searching +*/ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int pId, const bool rec ) const { return find( title, find( pId ), rec ); } +/*! + Finds menu node + \return true if at least one node is found + \param title - menu text of node + \param lst - list to be filled with found nodes + \param startNode - start menu item +*/ bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* startNode ) const { MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot; @@ -473,6 +793,13 @@ bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* star 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; @@ -490,6 +817,12 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, MenuNo 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; @@ -501,6 +834,11 @@ int QtxActionMenuMgr::findId( const int id, const int pid ) const 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; @@ -513,11 +851,19 @@ void QtxActionMenuMgr::removeMenu( const int id, MenuNode* startNode ) } } +/*! + \return menu item action by id + \param id - id of action +*/ QAction* QtxActionMenuMgr::itemAction( const int id ) const { return action( id ); } +/*! + \return menu action by id + \param id - id of action +*/ QtxActionMenuMgr::MenuAction* QtxActionMenuMgr::menuAction( const int id ) const { MenuAction* a = 0; @@ -528,6 +874,13 @@ QtxActionMenuMgr::MenuAction* QtxActionMenuMgr::menuAction( const int id ) const return a; } +/*! + Updates menu ( isUpdatesEnabled() must return true ) + \param startNode - first menu item to be updated + \param rec - recursive update + \param updParent - update also parent item (without recursion) + \sa isUpdatesEnabled() +*/ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bool updParent ) { if ( !isUpdatesEnabled() ) @@ -550,12 +903,12 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo 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 idMap; for ( NodeListIterator it2( node->children ); it2.current(); ++it2 ) { @@ -591,18 +944,8 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo QAction* a = itemAction( iter.current()->id ); if ( !a ) a = menuAction( iter.current()->id ); - if ( a ) { - QMenuData* md = dynamic_cast( 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 ); - } - } } } @@ -612,12 +955,19 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo updateMenu( node->parent, false ); } +/*! + Updates menu (virtual variant). To be redefined for custom activity on menu updating +*/ void QtxActionMenuMgr::internalUpdate() { if ( isUpdatesEnabled() ) updateMenu(); } +/*! + \return true if widget is non-empty menu + \param wid - widget to be checked +*/ bool QtxActionMenuMgr::checkWidget( QWidget* wid ) const { if ( !wid ) @@ -629,9 +979,13 @@ bool QtxActionMenuMgr::checkWidget( QWidget* wid ) const else if ( wid->inherits( "QMenuBar" ) ) md = (QMenuBar*)wid; - return md->count(); + return md ? md->count() : false; } +/*! + \return popup of menu item + \param node - menu item +*/ QWidget* QtxActionMenuMgr::menuWidget( MenuNode* node) const { if ( !node || node == &myRoot ) @@ -643,12 +997,21 @@ QWidget* QtxActionMenuMgr::menuWidget( MenuNode* node) const return myMenus[node->id]->popup(); } +/*! + Removes excess separators of menu + \param wid - menu to be processed +*/ void QtxActionMenuMgr::simplifySeparators( QWidget* wid ) { if ( wid && wid->inherits( "QPopupMenu" ) ) Qtx::simplifySeparators( (QPopupMenu*)wid, false ); } +/*! + Removes special symbols (&) from string + \param txt - string to be processed + \return clear variant of string +*/ QString QtxActionMenuMgr::clearTitle( const QString& txt ) const { QString res = txt; @@ -662,6 +1025,11 @@ QString QtxActionMenuMgr::clearTitle( const QString& txt ) const return res; } +/*! + Creates and inserts many menu items + \param lst - list of menu texts + \param pId - id of action corresponding to parent menu item +*/ int QtxActionMenuMgr::createMenu( const QStringList& lst, const int pId ) { if ( lst.isEmpty() ) @@ -677,27 +1045,44 @@ int QtxActionMenuMgr::createMenu( const QStringList& lst, const int pId ) return insert( title, parentId, -1 ); } +/*! + Loads actions description from file + \param fname - name of file + \param r - reader of file + \return true on success +*/ bool QtxActionMenuMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { MenuCreator cr( &r, this ); return r.read( fname, cr ); } +/*! + \return true if item has such child + \param title - menu text of child + \param pid - id of action corresponding to item +*/ bool QtxActionMenuMgr::containsMenu( const QString& title, const int pid ) const { return (bool)find( title, pid, false ); } +/*! + \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 ), @@ -705,10 +1090,20 @@ QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r, { } +/*! + Destructor +*/ QtxActionMenuMgr::MenuCreator::~MenuCreator() { } +/*! + Appends new menu items + \param tag - tag of item + \param subMenu - it has submenu + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxActionMenuMgr::MenuCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int pId ) { diff --git a/src/Qtx/QtxActionMenuMgr.h b/src/Qtx/QtxActionMenuMgr.h index f06ff9d3b..252ef42ab 100644 --- a/src/Qtx/QtxActionMenuMgr.h +++ b/src/Qtx/QtxActionMenuMgr.h @@ -35,6 +35,18 @@ class QMainWindow; #pragma warning( disable:4251 ) #endif +/*! + \class QtxActionMenuMgr + Allows to use set of action to automatically build main menu. + With help of methods insert/append/remove it is possible to + describe whole structure of menu. Method hide allows + to temporary remove some items from menu, method show allows to + recreate them. + Actions can be grouped with help of group identifictor. + Inside popup or menu bar items have order by increasing group id. + This manager is able to attune menu: to remove excess separators, + to remove empty popup menu etc. +*/ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr { Q_OBJECT @@ -44,6 +56,11 @@ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr typedef QPtrList NodeList; typedef QPtrListIterator NodeListIterator; + /*! + \class MenuNode + Represents a menu item inside main menu structure. + For internal purposes only + */ class MenuNode { public: @@ -148,6 +165,10 @@ private: MenuMap myMenus; }; +/*! + \class QtxActionMenuMgr::MenuCreator + Allows to create automatically main menu by data read from file +*/ class QtxActionMenuMgr::MenuCreator : public QtxActionMgr::Creator { public: diff --git a/src/Qtx/QtxActionMgr.cxx b/src/Qtx/QtxActionMgr.cxx index 16ec7b5b1..40823f61a 100644 --- a/src/Qtx/QtxActionMgr.cxx +++ b/src/Qtx/QtxActionMgr.cxx @@ -58,15 +58,25 @@ private: QMap myTools; }; +/*! + Constructor +*/ QtxActionMgr::SeparatorAction::SeparatorAction( QObject* parent ) : QtxAction( parent ) { } +/*! + Destructor +*/ QtxActionMgr::SeparatorAction::~SeparatorAction() { } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxActionMgr::SeparatorAction::addTo( QWidget* wid ) { if ( !wid ) @@ -90,6 +100,10 @@ bool QtxActionMgr::SeparatorAction::addTo( QWidget* wid ) return res; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxActionMgr::SeparatorAction::removeFrom( QWidget* wid ) { if ( !wid ) @@ -140,16 +154,28 @@ bool QtxActionMgr::SeparatorAction::removeFrom( QWidget* wid ) Level: Public */ +/*! + Constructor +*/ QtxActionMgr::QtxActionMgr( QObject* parent ) : QObject( parent ), myUpdate( true ) { } +/*! + Destructor +*/ QtxActionMgr::~QtxActionMgr() { } +/*! + Stores action in internal map + If action with such id is registered already, then it will be unregistered + \param a - action to be registered + \param userId - proposed id (if it is less than 0, then id will be generated automatically) +*/ int QtxActionMgr::registerAction( QAction* a, const int userId ) { if ( !a ) @@ -174,12 +200,20 @@ int QtxActionMgr::registerAction( QAction* a, const int userId ) return theId; } +/*! + Removes action from internal map + \param id - action id +*/ void QtxActionMgr::unRegisterAction( const int id ) { if( contains( id ) ) myActions.remove( id ); } +/*! + \return action by id + \param id - action id +*/ QAction* QtxActionMgr::action( const int id ) const { if ( contains( id ) ) @@ -188,6 +222,10 @@ QAction* QtxActionMgr::action( const int id ) const return 0; } +/*! + \return id by action + \param a - action +*/ int QtxActionMgr::actionId( const QAction* a ) const { if ( !a ) @@ -203,61 +241,101 @@ int QtxActionMgr::actionId( const QAction* a ) const return theId; } +/*! + \return true if internal map contains such id + \param id - action id +*/ bool QtxActionMgr::contains( const int id ) const { return myActions.contains( id ); } +/*! + \return count of actions in internal map +*/ int QtxActionMgr::count() const { return myActions.count(); } +/*! + \return true if internal map is empty +*/ bool QtxActionMgr::isEmpty() const { return myActions.isEmpty(); } +/*! + Fills list with ids of registered actions +*/ void QtxActionMgr::idList( QIntList& lst ) const { lst = myActions.keys(); } +/*! + \return true if updates are enabled +*/ bool QtxActionMgr::isUpdatesEnabled() const { return myUpdate; } +/*! + Enables/disables updates + \param upd - new state +*/ void QtxActionMgr::setUpdatesEnabled( const bool upd ) { myUpdate = upd; } +/*! + \return true if action is visible (by default \return always true) +*/ bool QtxActionMgr::isVisible( const int, const int ) const { return true; } +/*! + Sets visibility of action (by default, empty implementation) +*/ void QtxActionMgr::setVisible( const int, const int, const bool ) { } +/*! + Updates actions, check isUpdatesEnabled() and call internalUpdate() + \sa isUpdatesEnabled(), internalUpdate() +*/ void QtxActionMgr::update() { if ( isUpdatesEnabled() ) internalUpdate(); } +/*! + Real update (to be redefined in successors) +*/ void QtxActionMgr::internalUpdate() { } +/*! + \return global free id +*/ int QtxActionMgr::generateId() const { static int id = -1; return --id; } +/*! + \return true if action is enabled + \param id - action id +*/ bool QtxActionMgr::isEnabled( const int id ) const { QAction* a = action( id ); @@ -267,6 +345,11 @@ bool QtxActionMgr::isEnabled( const int id ) const return false; } +/*! + Enables/disables action + \param id - action id + \param en - new state +*/ void QtxActionMgr::setEnabled( const int id, const bool en ) { QAction* a = action( id ); @@ -274,6 +357,11 @@ void QtxActionMgr::setEnabled( const int id, const bool en ) a->setEnabled( en ); } +/*! + \return action for separator + If this action doesn't exist, then it will be created + \param individual - if it is false, then action will be shared, otherwise it will be created on every call +*/ QAction* QtxActionMgr::separator( const bool individual ) { if ( individual ) @@ -292,19 +380,33 @@ QAction* QtxActionMgr::separator( const bool individual ) Level: Public */ +/*! + Constructor +*/ QtxActionMgr::Reader::Reader() { } +/*! + Destructor +*/ QtxActionMgr::Reader::~Reader() { } +/*! + \return list of options +*/ QStringList QtxActionMgr::Reader::options() const { return myOptions.keys(); } +/*! + \return value of option + \param name - option name + \param def - default option value (is returned, if there is no such option) +*/ QString QtxActionMgr::Reader::option( const QString& name, const QString& def ) const { if( myOptions.contains( name ) ) @@ -313,6 +415,11 @@ QString QtxActionMgr::Reader::option( const QString& name, const QString& def ) return def; } +/*! + Sets value of option + \param name - option name + \param value - option value +*/ void QtxActionMgr::Reader::setOption( const QString& name, const QString& value ) { myOptions[ name ] = value; @@ -320,8 +427,7 @@ void QtxActionMgr::Reader::setOption( const QString& name, const QString& value /*! - Class: QtxActionMgr::XMLReader - Level: Public + Constructor */ QtxActionMgr::XMLReader::XMLReader( const QString& root, const QString& item, @@ -342,10 +448,18 @@ QtxActionMgr::XMLReader::XMLReader( const QString& root, setOption( QString( "toggle" ), QString( "toggle-id" ) ); } +/*! + Destructor +*/ QtxActionMgr::XMLReader::~XMLReader() { } +/*! + Reads file and fills action manager with help of creator + \param fname - file name + \param cr - creator +*/ bool QtxActionMgr::XMLReader::read( const QString& fname, Creator& cr ) const { bool res = false; @@ -386,6 +500,12 @@ bool QtxActionMgr::XMLReader::read( const QString& fname, Creator& cr ) const return res; } +/*! + Create item by xml node + \param parent_node - parent node + \param parent_id - parent id + \param cr - creator +*/ void QtxActionMgr::XMLReader::read( const QDomNode& parent_node, const int parent_id, Creator& cr ) const @@ -420,6 +540,9 @@ void QtxActionMgr::XMLReader::read( const QDomNode& parent_node, } } +/*! + \return true if node satisfies pattern +*/ bool QtxActionMgr::XMLReader::isNodeSimilar( const QDomNode& node, const QString& pattern ) const { @@ -445,8 +568,10 @@ bool QtxActionMgr::XMLReader::isNodeSimilar( const QDomNode& node, /*! - Class: QtxActionMgr::Creator - Level: Public + \return integer value by attributes + \param attrs - attributes + \param name - name of attribute + \param def - default value (is returned on fail) */ int QtxActionMgr::Creator::intValue( const ItemAttributes& attrs, const QString& name, int def ) @@ -461,6 +586,12 @@ int QtxActionMgr::Creator::intValue( const ItemAttributes& attrs, return def; } +/*! + \return string value by attributes + \param attrs - attributes + \param name - name of attribute + \param def - default value (is returned on fail) +*/ QString QtxActionMgr::Creator::strValue( const ItemAttributes& attrs, const QString& name, const QString& def ) @@ -471,24 +602,41 @@ QString QtxActionMgr::Creator::strValue( const ItemAttributes& attrs, return def; } +/*! + Constructor +*/ QtxActionMgr::Creator::Creator( QtxActionMgr::Reader* r ) : myReader( r ) { } +/*! + Destructor +*/ QtxActionMgr::Creator::~Creator() { } +/*! + \return corresponding reader +*/ QtxActionMgr::Reader* QtxActionMgr::Creator::reader() const { return myReader; } +/*! + Connects action to some slots (default implementation is empty) +*/ void QtxActionMgr::Creator::connect( QAction* ) const { } +/*! + Loads pixmap + \param fname - file name + \param pix - to return loaded pixmap +*/ bool QtxActionMgr::Creator::loadPixmap( const QString& fname, QPixmap& pix ) const { if( !reader() ) diff --git a/src/Qtx/QtxActionMgr.h b/src/Qtx/QtxActionMgr.h index 60fc342c0..8a82362f0 100644 --- a/src/Qtx/QtxActionMgr.h +++ b/src/Qtx/QtxActionMgr.h @@ -36,6 +36,12 @@ class QDomNode; #pragma warning( disable:4251 ) #endif + +/*! + \class QtxActionMgr + Contains set of actions accessible by id. + Base class for menu, popup creators and other action containers. +*/ class QTX_EXPORT QtxActionMgr : public QObject { Q_OBJECT @@ -93,6 +99,10 @@ private: QTX_EXPORT typedef QMap ItemAttributes; +/*! + \class QtxActionMgr::Creator + Allows to fill automatically action manager with actions created by data from file +*/ class QtxActionMgr::Creator { public: @@ -115,6 +125,11 @@ private: QtxActionMgr::Reader* myReader; }; +/*! + \class QtxActionMgr::Reader + This class is used to read files of some format + to create actions and to fill action manager automatically +*/ class QtxActionMgr::Reader { public: @@ -131,6 +146,11 @@ private: QMap< QString, QString > myOptions; }; +/*! + \class QtxActionMgr::Reader + This class is used to read files of XML format + to create actions and to fill action manager automatically +*/ class QtxActionMgr::XMLReader : public Reader { public: diff --git a/src/Qtx/QtxActionToolMgr.cxx b/src/Qtx/QtxActionToolMgr.cxx index b9ff56c8f..7529fe250 100644 --- a/src/Qtx/QtxActionToolMgr.cxx +++ b/src/Qtx/QtxActionToolMgr.cxx @@ -27,21 +27,36 @@ #include #include +/*! + Constructor +*/ QtxActionToolMgr::QtxActionToolMgr( QMainWindow* p ) : QtxActionMgr( p ), myMainWindow( p ) { } +/*! + Destructor +*/ QtxActionToolMgr::~QtxActionToolMgr() { } +/*! + \return desktop +*/ QMainWindow* QtxActionToolMgr::mainWindow() const { return myMainWindow; } +/*! + Creates toolbar + \return id of just created toolbar + \param name - name of toolbar + \param tid - proposed id (if such id is used already, then it will be returned without creation) +*/ int QtxActionToolMgr::createToolBar( const QString& name, const int tid ) { static int _toolBarId = -1; @@ -75,6 +90,11 @@ int QtxActionToolMgr::createToolBar( const QString& name, const int tid ) return tbId; } +/*! + \return toolbar by title + \param label - toolbar title + \param mw - desktop +*/ QToolBar* QtxActionToolMgr::find( const QString& label, QMainWindow* mw ) const { if ( !mw ) @@ -96,6 +116,10 @@ QToolBar* QtxActionToolMgr::find( const QString& label, QMainWindow* mw ) const return res; } +/*! + Removes toolbar + \param tid - toolbar id +*/ void QtxActionToolMgr::removeToolBar( const int tid ) { if ( !myToolBars.contains( tid ) ) @@ -105,16 +129,29 @@ void QtxActionToolMgr::removeToolBar( const int tid ) myToolBars.remove( tid ); } +/*! + Removes toolbar + \param tname - toolbar name +*/ void QtxActionToolMgr::removeToolBar( const QString& tname ) { removeToolBar( find( tname ) ); } +/*! + Insert action into toolbar + \param id - identificator of action + \param tId - identificator of toolbar + \param idx - position inside toolbar +*/ int QtxActionToolMgr::insert( const int id, const int tid, const int idx ) { if ( !contains( id ) || !hasToolBar( tid ) ) return -1; + if ( containsAction( id, tid ) ) + remove( id, tid ); + ToolNode node; node.id = id; @@ -126,61 +163,124 @@ int QtxActionToolMgr::insert( const int id, const int tid, const int idx ) return id; } +/*! + Insert action into toolbar + \param act - action + \param tId - identificator of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( QAction* act, const int tid, const int pos ) { return insert( registerAction( act ), tid, pos ); } +/*! + Insert action into toolbar + \param id - identificator of action + \param tname - name of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( const int id, const QString& tname, const int pos ) { return insert( id, createToolBar( tname ), pos ); } +/*! + Insert action into toolbar + \param act - action + \param tname - name of toolbar + \param pos - position inside toolbar +*/ int QtxActionToolMgr::insert( QAction* act, const QString& tname, const int pos ) { return insert( registerAction( act ), createToolBar( tname ), pos ); } +/*! + Append action into toolbar as last toolbutton + \param id - identificator of action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::append( const int id, const int tid ) { return insert( id, tid ); } +/*! + Append action into toolbar as last toolbutton + \param act - action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::append( QAction* act, const int tid ) { return insert( act, tid ); } +/*! + Append action into toolbar as last toolbutton + \param id - identificator of action + \param tname - toolbar name +*/ int QtxActionToolMgr::append( const int id, const QString& tname ) { return insert( id, tname ); } +/*! + Append action into toolbar as last toolbutton + \param act - action + \param tname - toolbar name +*/ int QtxActionToolMgr::append( QAction* act, const QString& tname ) { return insert( act, tname ); } +/*! + Append action into toolbar as first toolbutton + \param id - identificator of action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::prepend( const int id, const int tid ) { return insert( id, tid, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param act - action + \param tId - identificator of toolbar +*/ int QtxActionToolMgr::prepend( QAction* act, const int tid ) { return insert( act, tid, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param id - identificator of action + \param tname - toolbar name +*/ int QtxActionToolMgr::prepend( const int id, const QString& tname ) { return insert( id, tname, 0 ); } +/*! + Append action into toolbar as first toolbutton + \param act - action + \param tname - toolbar name +*/ int QtxActionToolMgr::prepend( QAction* act, const QString& tname ) { return insert( act, tname, 0 ); } +/*! + Remove action from toolbar + \param id - identificator of action + \param tId - identificator of toolbar +*/ void QtxActionToolMgr::remove( const int id, const int tid ) { if ( !myToolBars.contains( tid ) ) @@ -199,11 +299,20 @@ void QtxActionToolMgr::remove( const int id, const int tid ) updateToolBar( tid ); } +/*! + Remove action from toolbar + \param id - identificator of action + \param tname - name of toolbar +*/ void QtxActionToolMgr::remove( const int id, const QString& tname ) { remove( id, find( tname ) ); } +/*! + \return toolbar by it's id + \param tId - identificator of toolbar +*/ QToolBar* QtxActionToolMgr::toolBar( const int tid ) const { QToolBar* tb = 0; @@ -212,21 +321,38 @@ QToolBar* QtxActionToolMgr::toolBar( const int tid ) const return tb; } +/*! + \return toolbar by it's name + \param tname - name of toolbar +*/ QToolBar* QtxActionToolMgr::toolBar( const QString& tname ) const { return toolBar( find( tname ) ); } +/*! + \return true if manager contains toolbar with such id + \param tId - identificator of toolbar +*/ bool QtxActionToolMgr::hasToolBar( const int tid ) const { return myToolBars.contains( tid ); } +/*! + \return true if manager contains toolbar with such name + \param tname - name of toolbar +*/ bool QtxActionToolMgr::hasToolBar( const QString& tname ) const { return find( tname ) != -1; } +/*! + \return true if toolbar contains action + \param id - identificator of action + \param tId - identificator of toolbar +*/ bool QtxActionToolMgr::containsAction( const int id, const int tid ) const { for ( ToolBarMap::ConstIterator it = myToolBars.begin(); it != myToolBars.end(); ++it ) @@ -241,11 +367,18 @@ bool QtxActionToolMgr::containsAction( const int id, const int tid ) const 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; @@ -257,6 +390,10 @@ int QtxActionToolMgr::find( const QString& tname ) const return id; } +/*! + \return id of toolbar + \param t - toolbar +*/ int QtxActionToolMgr::find( QToolBar* t ) const { int id = -1; @@ -268,6 +405,10 @@ int QtxActionToolMgr::find( QToolBar* t ) const return id; } +/*! + Updates toolbar + \param tId - toolbar id +*/ void QtxActionToolMgr::updateToolBar( const int tId ) { if ( !isUpdatesEnabled() ) @@ -301,34 +442,57 @@ void QtxActionToolMgr::updateToolBar( const int tId ) simplifySeparators( tb ); } +/*! + Updates all toolbars +*/ void QtxActionToolMgr::internalUpdate() { for ( ToolBarMap::ConstIterator it1 = myToolBars.begin(); it1 != myToolBars.end(); ++it1 ) updateToolBar( it1.key() ); } +/*! + Removes excess separators from toolbar +*/ void QtxActionToolMgr::simplifySeparators( QToolBar* t ) { if ( t ) Qtx::simplifySeparators( t ); } +/*! + Shows action in all toolbars + \param actId - action id +*/ void QtxActionToolMgr::show( const int actId ) { setShown( actId, true ); } +/*! + Hides action in all toolbars + \param actId - action id +*/ void QtxActionToolMgr::hide( const int actId ) { setShown( actId, false ); } +/*! + Changes shown status of action in all toolbars + \param id - action id + \param on - new shown status +*/ void QtxActionToolMgr::setShown( const int id, const bool on ) { for ( ToolBarMap::Iterator it = myToolBars.begin(); it != myToolBars.end(); ++it ) setVisible( id, it.key(), on ); } +/*! + \return true if action is shown in all toolbars + \param id - action id +*/ bool QtxActionToolMgr::isShown( const int id ) const { QPtrList nodes; @@ -353,6 +517,11 @@ bool QtxActionToolMgr::isShown( const int id ) const return vis; } +/*! + \return shown status of action in toolbar + \param id - action id + \param tId - toolbar id +*/ bool QtxActionToolMgr::isVisible( const int id, const int tId ) const { if ( !myToolBars.contains( tId ) ) @@ -369,6 +538,12 @@ bool QtxActionToolMgr::isVisible( const int id, const int tId ) const return vis; } +/*! + Changes action shown status in certain toolbar + \param id - action id + \param tId - toolbar id + \param on - new shown status +*/ void QtxActionToolMgr::setVisible( const int id, const int tId, const bool on ) { if ( !myToolBars.contains( tId ) ) @@ -390,6 +565,11 @@ void QtxActionToolMgr::setVisible( const int id, const int tId, const bool on ) updateToolBar( tId ); } +/*! + Loads toolbar content from file + \param fname - file name + \param r - reader +*/ bool QtxActionToolMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { ToolCreator cr( &r, this ); @@ -398,8 +578,7 @@ bool QtxActionToolMgr::load( const QString& fname, QtxActionMgr::Reader& r ) /*! - Class: QtxActionToolMgr::ToolCreator - Level: Public + Constructor */ QtxActionToolMgr::ToolCreator::ToolCreator( QtxActionMgr::Reader* r, QtxActionToolMgr* mgr ) @@ -408,10 +587,20 @@ QtxActionToolMgr::ToolCreator::ToolCreator( QtxActionMgr::Reader* r, { } +/*! + Destructor +*/ QtxActionToolMgr::ToolCreator::~ToolCreator() { } +/*! + Appends new tool buttons + \param tag - tag of toolmenu + \param subMenu - it has submenu (not used here) + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxActionToolMgr::ToolCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int tId ) { diff --git a/src/Qtx/QtxActionToolMgr.h b/src/Qtx/QtxActionToolMgr.h index 48a722785..b86c53f41 100644 --- a/src/Qtx/QtxActionToolMgr.h +++ b/src/Qtx/QtxActionToolMgr.h @@ -35,10 +35,22 @@ class QMainWindow; #pragma warning( disable:4251 ) #endif +/*! + \class QtxActionToolMgr + Allows to use set of action to automatically build set of toolbars. + With help of methods insert/append/remove it is possible to + describe toolbars and its internal structure. + This manager is able to attune toolbar by removing excess separators +*/ class QTX_EXPORT QtxActionToolMgr : public QtxActionMgr { Q_OBJECT + /*! + \class ToolNode + Represents a toolbutton inside toolbar + For internal purposes only + */ class ToolNode { public: @@ -122,6 +134,10 @@ private: QMainWindow* myMainWindow; }; +/*! + \class QtxActionToolMgr::ToolCreator + Allows to create automatically toolbar by data read from file +*/ class QtxActionToolMgr::ToolCreator : public QtxActionMgr::Creator { public: diff --git a/src/Qtx/QtxColorScale.cxx b/src/Qtx/QtxColorScale.cxx index 7be7ba48d..1c703dad0 100755 --- a/src/Qtx/QtxColorScale.cxx +++ b/src/Qtx/QtxColorScale.cxx @@ -34,12 +34,9 @@ #include -/********************************************************************* -** Class: QtxColorScale -** Descr: Color Scale widget. -** Level: Public -*********************************************************************/ - +/*! + Constructor +*/ QtxColorScale::QtxColorScale( QWidget* parent, const char* name, WFlags f ) : QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ), myDock( 0 ), @@ -59,6 +56,9 @@ myFlags( AtBorder | WrapTitle ) setCaption( tr ( "Color scale" ) ); } +/*! + Constructor +*/ QtxColorScale::QtxColorScale( const int num, QWidget* parent, const char* name, WFlags f ) : QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ), myDock( 0 ), @@ -80,6 +80,9 @@ myFlags( AtBorder | WrapTitle ) #if QT_VER == 3 +/*! + Constructor +*/ QtxColorScale::QtxColorScale( Dock* dock, const char* name, WFlags f ) : QFrame( dock, name, f | WResizeNoErase | WRepaintNoErase ), myMin( 0.0 ), @@ -101,107 +104,89 @@ myFlags( AtBorder | WrapTitle ) #endif +/*! + Destructor +*/ QtxColorScale::~QtxColorScale() { } -//================================================================ -// Function : minimum -// Purpose : Returns minimal limit of scale. -//================================================================ - +/*! + \returns minimal limit of scale. +*/ double QtxColorScale::minimum() const { return myMin; } -//================================================================ -// Function : maximum -// Purpose : Returns maximal limit of scale. -//================================================================ - +/*! + \return maximal limit of scale. +*/ double QtxColorScale::maximum() const { return myMax; } -//================================================================ -// Function : range -// Purpose : Returns range (minimal and maximal limits) of scale. -//================================================================ - +/*! + \return range (minimal and maximal limits) of scale. +*/ void QtxColorScale::range( double& min, double& max ) const { min = myMin; max = myMax; } -//================================================================ -// Function : title -// Purpose : Returns the current title string. -//================================================================ - +/*! + \return the current title string. +*/ QString QtxColorScale::title() const { return myTitle; } -//================================================================ -// Function : format -// Purpose : Returns the current format of number presentation in -// labels for Auto label mode (sprintf specification). -//================================================================ - +/*! + \returns the current format of number presentation in labels for Auto label mode (sprintf specification). +*/ QString QtxColorScale::format() const { return myFormat; } -//================================================================ -// Function : dumpMode -// Purpose : Returns dump mode. -//================================================================ - +/*! + \return dump mode. +*/ int QtxColorScale::dumpMode() const { return myDumpMode; } -//================================================================ -// Function : labelMode -// Purpose : Returns label mode. -//================================================================ - +/*! + \return label mode. +*/ int QtxColorScale::labelMode() const { return myLabelMode; } -//================================================================ -// Function : colorMode -// Purpose : Returns color mode. -//================================================================ - +/*! + \return color mode. +*/ int QtxColorScale::colorMode() const { return myColorMode; } -//================================================================ -// Function : intervalsNumber -// Purpose : Returns intervals number of color scale. -//================================================================ - +/*! + \return intervals number of color scale. +*/ int QtxColorScale::intervalsNumber() const { return myInterval; } -//================================================================ -// Function : label -// Purpose : Returns the user label of specified interval. -//================================================================ - +/*! + \return the user label of specified interval. +*/ QString QtxColorScale::label( const int idx ) const { QString res; @@ -210,11 +195,9 @@ QString QtxColorScale::label( const int idx ) const return res; } -//================================================================ -// Function : color -// Purpose : Returns the user color of specified interval. -//================================================================ - +/*! + \return the user color of specified interval. +*/ QColor QtxColorScale::color( const int idx ) const { QColor res; @@ -223,71 +206,57 @@ QColor QtxColorScale::color( const int idx ) const return res; } -//================================================================ -// Function : labels -// Purpose : Returns the user labels. -//================================================================ - +/*! + \return the user labels. +*/ void QtxColorScale::labels( QStringList& list ) const { list = myLabels; } -//================================================================ -// Function : colors -// Purpose : Returns the user color. -//================================================================ - +/*! + \return the user color. +*/ void QtxColorScale::colors( QValueList& list ) const { list = myColors; } -//================================================================ -// Function : labelPosition -// Purpose : Returns the label position. -//================================================================ - +/*! + \return the label position. +*/ int QtxColorScale::labelPosition() const { return myLabelPos; } -//================================================================ -// Function : titlePosition -// Purpose : Returns the title position. -//================================================================ - +/*! + \return the title position. +*/ int QtxColorScale::titlePosition() const { return myTitlePos; } -//================================================================ -// Function : setMinimum -// Purpose : Sets the minimum limit. -//================================================================ - +/*! + Sets the minimum limit. +*/ void QtxColorScale::setMinimum( const double val ) { setRange( val, maximum() ); } -//================================================================ -// Function : setMaximum -// Purpose : Sets the maximum limit. -//================================================================ - +/*! + Sets the maximum limit. +*/ void QtxColorScale::setMaximum( const double val ) { setRange( minimum(), val ); } -//================================================================ -// Function : setRange -// Purpose : Sets the minimum and maximum limits. -//================================================================ - +/*! + Sets the minimum and maximum limits. +*/ void QtxColorScale::setRange( const double min, const double max ) { if ( myMin == min && myMax == max ) @@ -302,11 +271,9 @@ void QtxColorScale::setRange( const double min, const double max ) updateScale(); } -//================================================================ -// Function : setTitle -// Purpose : Sets the title string. -//================================================================ - +/*! + Sets the title string. +*/ void QtxColorScale::setTitle( const QString& str ) { if ( myTitle == str ) @@ -316,12 +283,10 @@ void QtxColorScale::setTitle( const QString& str ) updateScale(); } -//================================================================ -// Function : setFormat -// Purpose : Sets the format of number presentation in labels for -// Auto label mode (sprintf specification). -//================================================================ - +/*! + Sets the format of number presentation in labels for + Auto label mode (sprintf specification). +*/ void QtxColorScale::setFormat( const QString& format ) { if ( myFormat == format ) @@ -333,11 +298,9 @@ void QtxColorScale::setFormat( const QString& format ) updateScale(); } -//================================================================ -// Function : setIntervalsNumber -// Purpose : Sets the number of intervals. -//================================================================ - +/*! + Sets the number of intervals. +*/ void QtxColorScale::setIntervalsNumber( const int num ) { if ( myInterval == num || num < 1 ) @@ -349,13 +312,11 @@ void QtxColorScale::setIntervalsNumber( const int num ) updateScale(); } -//================================================================ -// Function : setLabel -// Purpose : Sets the user label for specified interval. If number -// of interval is negative then user label will be added -// as new at the end of list. -//================================================================ - +/*! + Sets the user label for specified interval. If number + of interval is negative then user label will be added + as new at the end of list. +*/ void QtxColorScale::setLabel( const QString& txt, const int idx ) { bool changed = false; @@ -376,13 +337,11 @@ void QtxColorScale::setLabel( const QString& txt, const int idx ) updateScale(); } -//================================================================ -// Function : setColor -// Purpose : Sets the user color for specified interval. If number -// of interval is negative then user color will be added -// as new at the end of list. -//================================================================ - +/*! + Sets the user color for specified interval. If number + of interval is negative then user color will be added + as new at the end of list. +*/ void QtxColorScale::setColor( const QColor& clr, const int idx ) { bool changed = false; @@ -403,11 +362,9 @@ void QtxColorScale::setColor( const QColor& clr, const int idx ) updateScale(); } -//================================================================ -// Function : setLabels -// Purpose : Replace the all user label with specified list. -//================================================================ - +/*! + Replace the all user label with specified list. +*/ void QtxColorScale::setLabels( const QStringList& list ) { if ( list.isEmpty() ) @@ -417,11 +374,9 @@ void QtxColorScale::setLabels( const QStringList& list ) updateScale(); } -//================================================================ -// Function : setColors -// Purpose : Replace the all user colors with specified list. -//================================================================ - +/*! + Replace the all user colors with specified list. +*/ void QtxColorScale::setColors( const QValueList& list ) { if ( list.isEmpty() ) @@ -431,11 +386,9 @@ void QtxColorScale::setColors( const QValueList& list ) updateScale(); } -//================================================================ -// Function : setColorMode -// Purpose : Sets the color mode (Auto or User). -//================================================================ - +/*! + Sets the color mode (Auto or User). +*/ void QtxColorScale::setColorMode( const int mode ) { if ( myColorMode == mode ) @@ -445,21 +398,17 @@ void QtxColorScale::setColorMode( const int mode ) updateScale(); } -//================================================================ -// Function : setDumpMode -// Purpose : Sets the dump mode. -//================================================================ - +/*! + Sets the dump mode. +*/ void QtxColorScale::setDumpMode( const int mode ) { myDumpMode = mode; } -//================================================================ -// Function : setLabelMode -// Purpose : Sets the label mode (Auto or User). -//================================================================ - +/*! + Sets the label mode (Auto or User). +*/ void QtxColorScale::setLabelMode( const int mode ) { if ( myLabelMode != mode ) @@ -469,11 +418,9 @@ void QtxColorScale::setLabelMode( const int mode ) } } -//================================================================ -// Function : setLabelPosition -// Purpose : Sets the label position. -//================================================================ - +/*! + Sets the label position. +*/ void QtxColorScale::setLabelPosition( const int pos ) { if ( myLabelPos != pos && pos >= None && pos <= Center ) @@ -483,11 +430,9 @@ void QtxColorScale::setLabelPosition( const int pos ) } } -//================================================================ -// Function : setTitlePosition -// Purpose : Sets the title position. -//================================================================ - +/*! + Sets the title position. +*/ void QtxColorScale::setTitlePosition( const int pos ) { if ( myTitlePos != pos && pos >= None && pos <= Center ) @@ -497,11 +442,9 @@ void QtxColorScale::setTitlePosition( const int pos ) } } -//================================================================ -// Function : setFlags -// Purpose : Set the specified flags. -//================================================================ - +/*! + Set the specified flags. +*/ void QtxColorScale::setFlags( const int flags ) { int prev = myFlags; @@ -510,21 +453,17 @@ void QtxColorScale::setFlags( const int flags ) updateScale(); } -//================================================================ -// Function : testFlags -// Purpose : Returns true if specified flags are setted. -//================================================================ - +/*! + \return true if specified flags are setted. +*/ bool QtxColorScale::testFlags( const int flags ) const { return ( myFlags & flags ) == flags; } -//================================================================ -// Function : clearFlags -// Purpose : Clear (reset) the specified flags. -//================================================================ - +/*! + Clear (reset) the specified flags. +*/ void QtxColorScale::clearFlags( const int flags ) { int prev = myFlags; @@ -533,33 +472,27 @@ void QtxColorScale::clearFlags( const int flags ) updateScale(); } -//================================================================ -// Function : minimumSizeHint -// Purpose : -//================================================================ - +/*! + \return minimum size hint +*/ QSize QtxColorScale::minimumSizeHint() const { QSize sz = calculateSize( true, myFlags, titlePosition() != None, labelPosition() != None, true ); return sz + QSize( frameWidth(), frameWidth() ); } -//================================================================ -// Function : sizeHint -// Purpose : -//================================================================ - +/*! + \return size hint +*/ QSize QtxColorScale::sizeHint() const { QSize sz = calculateSize( false, myFlags, titlePosition() != None, labelPosition() != None, true ); return sz + QSize( frameWidth(), frameWidth() ); } -//================================================================ -// Function : calculateSize -// Purpose : Dump color scale into pixmap with current size. -//================================================================ - +/*! + Dump color scale into pixmap with current size. +*/ QSize QtxColorScale::calculateSize( const bool min, const int flags, const bool title, const bool labels, const bool colors ) const { @@ -631,11 +564,9 @@ QSize QtxColorScale::calculateSize( const bool min, const int flags, const bool return QSize( W, H ); } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with current size. -//================================================================ - +/*! + Dump color scale into pixmap with current size. +*/ QPixmap QtxColorScale::dump() const { QPixmap aPix; @@ -667,11 +598,9 @@ QPixmap QtxColorScale::dump() const return aPix; } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with specified size. -//================================================================ - +/*! + Dump color scale into pixmap with specified size. +*/ QPixmap QtxColorScale::dump( const int w, const int h ) const { #if QT_VER < 3 @@ -681,12 +610,9 @@ QPixmap QtxColorScale::dump( const int w, const int h ) const #endif } -//================================================================ -// Function : dump -// Purpose : Dump color scale into pixmap with specified size -// and background color. -//================================================================ - +/*! + Dump color scale into pixmap with specified size and background color. +*/ QPixmap QtxColorScale::dump( const QColor& bg, const int w, const int h ) const { QPixmap aPix; @@ -724,11 +650,9 @@ QPixmap QtxColorScale::dump( const QColor& bg, const int w, const int h ) const return aPix; } -//================================================================ -// Function : show -// Purpose : Show the color scale. [Reimplemented] -//================================================================ - +/*! + Show the color scale. [Reimplemented] +*/ void QtxColorScale::show() { #if QT_VER == 3 @@ -739,11 +663,9 @@ void QtxColorScale::show() QFrame::show(); } -//================================================================ -// Function : hide -// Purpose : Hides the color scale. [Reimplemented] -//================================================================ - +/*! + Hides the color scale. [Reimplemented] +*/ void QtxColorScale::hide() { #if QT_VER == 3 @@ -754,11 +676,9 @@ void QtxColorScale::hide() QFrame::hide(); } -//================================================================ -// Function : drawContents -// Purpose : Draw color scale contents. [Reimplemented] -//================================================================ - +/*! + Draw color scale contents. [Reimplemented] +*/ void QtxColorScale::drawContents( QPainter* p ) { if ( !isUpdatesEnabled() ) @@ -771,11 +691,9 @@ void QtxColorScale::drawContents( QPainter* p ) titlePosition() != None, labelPosition() != None, true ); } -//================================================================ -// Function : drawScale -// Purpose : Draw color scale contents. -//================================================================ - +/*! + Draw color scale contents. +*/ void QtxColorScale::drawScale( QPainter* p, const bool transp, const int X, const int Y, const int W, const int H, const bool title, const bool label, const bool scale ) const @@ -793,11 +711,9 @@ void QtxColorScale::drawScale( QPainter* p, const bool transp, const int X, cons p->drawPixmap( X, Y, cache ); } -//================================================================ -// Function : drawScale -// Purpose : Draw color scale contents. -//================================================================ - +/*! + Draw color scale contents. +*/ void QtxColorScale::drawScale( QPainter* p, const QColor& bg, const bool transp, const int X, const int Y, const int W, const int H, const bool drawTitle, const bool drawLabel, const bool drawColors ) const @@ -964,11 +880,9 @@ void QtxColorScale::drawScale( QPainter* p, const QColor& bg, const bool transp, } } -//================================================================ -// Function : getFormat -// Purpose : Returns the format for number labels. -//================================================================ - +/*! + \return the format for number labels. +*/ QString QtxColorScale::getFormat() const { QString aFormat = format(); @@ -1029,11 +943,9 @@ QString QtxColorScale::getFormat() const return aFormat; } -//================================================================ -// Function : getNumber -// Purpose : Returns the number for specified interval. -//================================================================ - +/*! + \return the number for specified interval. +*/ double QtxColorScale::getNumber( const int idx ) const { double val = 0; @@ -1042,12 +954,9 @@ double QtxColorScale::getNumber( const int idx ) const return val; } -//================================================================ -// Function : getLabel -// Purpose : Returns the label for specified interval according -// to the current label mode. -//================================================================ - +/*! + \return the label for specified interval according to the current label mode. +*/ QString QtxColorScale::getLabel( const int idx ) const { QString res; @@ -1061,12 +970,9 @@ QString QtxColorScale::getLabel( const int idx ) const return res; } -//================================================================ -// Function : getColor -// Purpose : Returns the color for specified interval according -// to the current color mode. -//================================================================ - +/*! + \return the color for specified interval according to the current color mode. +*/ QColor QtxColorScale::getColor( const int idx ) const { QColor res; @@ -1077,24 +983,20 @@ QColor QtxColorScale::getColor( const int idx ) const return res; } -//================================================================ -// Function : updateScale -// Purpose : Update color scale if it required. -//================================================================ - +/*! + Update color scale if it required. +*/ void QtxColorScale::updateScale() { update(); updateGeometry(); } -//================================================================ -// Function : simpleRichText -// Purpose : Return QSimpleRichText object for title. If title -// not defined (empty string) then return null pointer. -// Object should be deleted by caller function. -//================================================================ - +/*! + \return QSimpleRichText object for title. If title + not defined (empty string) then return null pointer. + Object should be deleted by caller function. +*/ QSimpleRichText* QtxColorScale::simpleRichText( const int flags ) const { QSimpleRichText* srt = 0; @@ -1141,17 +1043,14 @@ QSimpleRichText* QtxColorScale::simpleRichText( const int flags ) const #if QT_VER == 3 -/********************************************************************* -** Class: QtxColorScale::Dock -** Descr: Dockable window contains the color scale. -** Level: Public -*********************************************************************/ - -//================================================================ -// Function : Dock -// Purpose : Constructor. -//================================================================ +/*! + \class QtxColorScale::Dock + Dockable window contains the color scale. +*/ +/*! + Constructor +*/ QtxColorScale::Dock::Dock( Place p, QWidget* parent, const char* name, WFlags f ) : QDockWindow( p, parent, name, f ), myBlockShow( false ), @@ -1169,30 +1068,24 @@ myBlockResize( false ) setCaption( tr ( "Color scale" ) ); } -//================================================================ -// Function : ~Dock -// Purpose : Destructor. -//================================================================ - +/*! + Destructor. +*/ QtxColorScale::Dock::~Dock() { } -//================================================================ -// Function : colorScale -// Purpose : Returns color scale widget. -//================================================================ - +/*! + \return color scale widget. +*/ QtxColorScale* QtxColorScale::Dock::colorScale() const { return myScale; } -//================================================================ -// Function : activate -// Purpose : Set the dockable window is visible for main window. -//================================================================ - +/*! + Set the dockable window is visible for main window. +*/ void QtxColorScale::Dock::activate() { if ( myBlockShow ) @@ -1210,11 +1103,9 @@ void QtxColorScale::Dock::activate() mw->setAppropriate( this, true ); } -//================================================================ -// Function : deactivate -// Purpose : Set the dockable window is hidden for main window. -//================================================================ - +/*! + Set the dockable window is hidden for main window. +*/ void QtxColorScale::Dock::deactivate() { if ( myBlockShow ) @@ -1232,11 +1123,9 @@ void QtxColorScale::Dock::deactivate() mw->setAppropriate( this, false ); } -//================================================================ -// Function : isActive -// Purpose : Returns true if the dockable window is visible. -//================================================================ - +/*! + \return true if the dockable window is visible. +*/ bool QtxColorScale::Dock::isActive() const { QMainWindow* mw = 0; @@ -1253,11 +1142,9 @@ bool QtxColorScale::Dock::isActive() const return false; } -//================================================================ -// Function : show -// Purpose : Reimplemented for internal reasons. -//================================================================ - +/*! + Redefined show +*/ void QtxColorScale::Dock::show() { bool f = myBlockShow; @@ -1266,11 +1153,9 @@ void QtxColorScale::Dock::show() myBlockShow = f; } -//================================================================ -// Function : hide -// Purpose : Reimplemented for internal reasons. -//================================================================ - +/*! + Redefined hide +*/ void QtxColorScale::Dock::hide() { bool f = myBlockShow; @@ -1279,11 +1164,9 @@ void QtxColorScale::Dock::hide() myBlockShow = f; } -//================================================================ -// Function : resize -// Purpose : Make extent width as maximum value of widget width. -//================================================================ - +/*! + Make extent width as maximum value of widget width. +*/ void QtxColorScale::Dock::resize( int w, int h ) { QDockWindow::resize( w, h ); @@ -1297,11 +1180,10 @@ void QtxColorScale::Dock::resize( int w, int h ) setFixedExtentHeight( QMAX( fixedExtent().height(), h ) ); } -//================================================================ -// Function : setOrientation -// Purpose : -//================================================================ - +/*! + Set orientation + \param o - new orientation +*/ void QtxColorScale::Dock::setOrientation( Orientation o ) { bool b = myBlockResize; diff --git a/src/Qtx/QtxColorScale.h b/src/Qtx/QtxColorScale.h index fa81c0d1a..164ea91be 100755 --- a/src/Qtx/QtxColorScale.h +++ b/src/Qtx/QtxColorScale.h @@ -38,6 +38,10 @@ class QSimpleRichText; #pragma warning( disable:4251 ) #endif +/*! + \class QtxColorScale + Color Scale widget. +*/ class QTX_EXPORT QtxColorScale : public QFrame { Q_OBJECT diff --git a/src/Qtx/QtxComboBox.cxx b/src/Qtx/QtxComboBox.cxx index 4e7c3b5cb..1f4325efd 100755 --- a/src/Qtx/QtxComboBox.cxx +++ b/src/Qtx/QtxComboBox.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ QtxComboBox::QtxComboBox( QWidget* parent, const char* name ) : QComboBox( parent, name ), myCleared( false ) @@ -33,6 +36,9 @@ myCleared( false ) connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) ); } +/*! + Constructor +*/ QtxComboBox::QtxComboBox( bool rw, QWidget* parent, const char* name ) : QComboBox( rw, parent, name ), myCleared( false ) @@ -41,15 +47,25 @@ myCleared( false ) connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) ); } +/*! + Destructor +*/ QtxComboBox::~QtxComboBox() { } +/*! + \return true if combobox is cleared +*/ bool QtxComboBox::isCleared() const { return myCleared; } +/*! + Sets cleared status + \param isClear - new status +*/ void QtxComboBox::setCleared( const bool isClear ) { if ( myCleared == isClear ) @@ -68,6 +84,10 @@ void QtxComboBox::setCleared( const bool isClear ) update(); } +/*! + Sets currently selected item + \param idx - index of item +*/ void QtxComboBox::setCurrentItem( int idx ) { if ( idx < 0 || idx >= count() ) @@ -77,6 +97,10 @@ void QtxComboBox::setCurrentItem( int idx ) QComboBox::setCurrentItem( idx ); } +/*! + Sets current text + \param txt - new current text +*/ void QtxComboBox::setCurrentText( const QString& txt ) { myCleared = false; @@ -96,16 +120,25 @@ void QtxComboBox::setCurrentText( const QString& txt ) #endif } +/*! + \return current selected id +*/ int QtxComboBox::currentId() const { return id( currentItem() ); } +/*! + Sets current selected id +*/ void QtxComboBox::setCurrentId( int num ) { setCurrentItem( index( num ) ); } +/*! + Custom paint event handler +*/ void QtxComboBox::paintEvent( QPaintEvent* e ) { if ( !count() || !myCleared || editable() ) @@ -114,6 +147,10 @@ void QtxComboBox::paintEvent( QPaintEvent* e ) paintClear( e ); } +/*! + SLOT: called if some item is activated + \param idx - index of activated item +*/ void QtxComboBox::onActivated( int idx ) { resetClear(); @@ -122,11 +159,16 @@ void QtxComboBox::onActivated( int idx ) emit activatedId( myIndexId[idx] ); } -void QtxComboBox::onActivated( const QString& ) +/*! + SLOT: called if some item is activated +*/void QtxComboBox::onActivated( const QString& ) { resetClear(); } +/*! + Strips "cleared" state and updates +*/ void QtxComboBox::resetClear() { if ( !myCleared ) @@ -136,6 +178,9 @@ void QtxComboBox::resetClear() update(); } +/*! + Draws combobox when it is cleared or isn't editable +*/ void QtxComboBox::paintClear( QPaintEvent* e ) { int curIndex = currentItem(); @@ -159,6 +204,9 @@ void QtxComboBox::paintClear( QPaintEvent* e ) setUpdatesEnabled( upd ); } +/*! + \return id by index +*/ int QtxComboBox::id( const int idx ) const { int id = -1; @@ -167,6 +215,9 @@ int QtxComboBox::id( const int idx ) const return id; } +/*! + \return index by id +*/ int QtxComboBox::index( const int id ) const { int idx = -1; diff --git a/src/Qtx/QtxDblSpinBox.cxx b/src/Qtx/QtxDblSpinBox.cxx index b10c28bd6..6c3655240 100755 --- a/src/Qtx/QtxDblSpinBox.cxx +++ b/src/Qtx/QtxDblSpinBox.cxx @@ -27,11 +27,10 @@ #include -/* - Class: QtxDblSpinBox::Validator [internal] - Descr: Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator) +/*! + \class QtxDblSpinBox::Validator [internal] + Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator) */ - class QtxDblSpinBox::Validator : public QDoubleValidator { public: @@ -44,6 +43,10 @@ private: QtxDblSpinBox* spinBox; }; + +/*! + Checks string and \return QValidator::State +*/ QValidator::State QtxDblSpinBox::Validator::validate( QString& str, int& pos ) const { QString pref = spinBox->prefix(); @@ -84,11 +87,9 @@ QValidator::State QtxDblSpinBox::Validator::validate( QString& str, int& pos ) c return state; } -/* - Class: QtxDblSpinBox - Descr: Spin box for real numbers. +/*! + Constructor */ - QtxDblSpinBox::QtxDblSpinBox( QWidget* parent, const char* name ) : QSpinBox( parent, name ), myCleared( false ), @@ -106,6 +107,9 @@ myPrecision( 0 ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Constructor +*/ QtxDblSpinBox::QtxDblSpinBox( double min, double max, double step, QWidget* parent, const char* name ) : QSpinBox( parent, name ), myMin( min ), @@ -123,25 +127,42 @@ myPrecision( 0 ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Destructor +*/ QtxDblSpinBox::~QtxDblSpinBox() { } +/*! + \return min value of spin box +*/ double QtxDblSpinBox::minValue() const { return myMin; } +/*! + \return max value of spin box +*/ double QtxDblSpinBox::maxValue() const { return myMax; } +/*! + Changes min value of spin box + \param min - new min value +*/ void QtxDblSpinBox::setMinValue( int min ) { setMinValue( (double)min ); } +/*! + Changes min value of spin box + \param min - new min value +*/ void QtxDblSpinBox::setMinValue( double min ) { if ( myMin != min ) @@ -151,11 +172,19 @@ void QtxDblSpinBox::setMinValue( double min ) } } +/*! + Changes max value of spin box + \param max - new max value +*/ void QtxDblSpinBox::setMaxValue( int max ) { setMaxValue( (double)max ); } +/*! + Changes max value of spin box + \param max - new max value +*/ void QtxDblSpinBox::setMaxValue( double max ) { if ( myMax != max ) @@ -165,11 +194,21 @@ void QtxDblSpinBox::setMaxValue( double max ) } } +/*! + Changes min and max value of spin box + \param min - new min value + \param max - new max value +*/ void QtxDblSpinBox::setRange( int min, int max ) { setRange( (double)min, (double)max ); } +/*! + Changes min and max value of spin box + \param min - new min value + \param max - new max value +*/ void QtxDblSpinBox::setRange( double min, double max ) { if ( myMin != min || myMax != max ) @@ -180,21 +219,35 @@ void QtxDblSpinBox::setRange( double min, double max ) } } +/*! + \return step of spin box +*/ double QtxDblSpinBox::lineStep() const { return myStep; } +/*! + Changes step of spin box + \param step - new step +*/ void QtxDblSpinBox::setLineStep( int step ) { setLineStep( (double)step ); } +/*! + Changes step of spin box + \param step - new step +*/ void QtxDblSpinBox::setLineStep( double step ) { myStep = step; } +/*! + \return value of spin box +*/ double QtxDblSpinBox::value() const { QSpinBox::value(); @@ -202,11 +255,19 @@ double QtxDblSpinBox::value() const return myValue; } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxDblSpinBox::setValue( int val ) { setValue( (double)val ); } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxDblSpinBox::setValue( double val ) { myCleared = false; @@ -216,6 +277,9 @@ void QtxDblSpinBox::setValue( double val ) valueChange(); } +/*! + Adds step to value +*/ void QtxDblSpinBox::stepUp() { interpretText(); @@ -225,6 +289,9 @@ void QtxDblSpinBox::stepUp() setValue( myValue + myStep ); } +/*! + Subtracks step from value +*/ void QtxDblSpinBox::stepDown() { interpretText(); @@ -234,11 +301,18 @@ void QtxDblSpinBox::stepDown() setValue( myValue - myStep ); } +/*! + \return number of digit after comma +*/ int QtxDblSpinBox::precision() const { return myPrecision; } +/*! + Changes number of digit after comma + \param prec - new digit number +*/ void QtxDblSpinBox::setPrecision( const int prec ) { int newPrec = QMAX( prec, 0 ); @@ -248,11 +322,18 @@ void QtxDblSpinBox::setPrecision( const int prec ) updateDisplay(); } +/*! + \return true if spin box is cleared +*/ bool QtxDblSpinBox::isCleared() const { return myCleared; } +/*! + Changes cleared status of spin box + \param on - new status +*/ void QtxDblSpinBox::setCleared( const bool on ) { if ( myCleared == on ) @@ -262,6 +343,9 @@ void QtxDblSpinBox::setCleared( const bool on ) updateDisplay(); } +/*! + Selects all content of spin box editor +*/ void QtxDblSpinBox::selectAll() { #if QT_VER >= 3 @@ -271,6 +355,9 @@ void QtxDblSpinBox::selectAll() #endif } +/*! + Custom event filter, updates text of spin box editor +*/ bool QtxDblSpinBox::eventFilter( QObject* o, QEvent* e ) { if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() ) @@ -294,6 +381,9 @@ bool QtxDblSpinBox::eventFilter( QObject* o, QEvent* e ) return QSpinBox::eventFilter( o, e ); } +/*! + Updates text of editor +*/ void QtxDblSpinBox::updateDisplay() { if ( myBlocked ) @@ -332,6 +422,9 @@ void QtxDblSpinBox::updateDisplay() myBlocked = isBlock; } +/*! + Sets double value by text in editor +*/ void QtxDblSpinBox::interpretText() { myCleared = false; @@ -356,6 +449,9 @@ void QtxDblSpinBox::interpretText() updateDisplay(); } +/*! + Emits signal "valueChanged" +*/ void QtxDblSpinBox::valueChange() { updateDisplay(); @@ -363,6 +459,9 @@ void QtxDblSpinBox::valueChange() emit valueChanged( currentValueText() ); } +/*! + Attune parameters on range changing +*/ void QtxDblSpinBox::rangeChange() { double min = QMIN( myMin, myMax ); @@ -382,6 +481,9 @@ void QtxDblSpinBox::rangeChange() updateDisplay(); } +/*! + \return text of editor +*/ QString QtxDblSpinBox::currentValueText() { QString s; @@ -396,6 +498,10 @@ QString QtxDblSpinBox::currentValueText() return s; } +/*! + Converts number to string + \param v - number to be converted +*/ QString QtxDblSpinBox::mapValueToText( double v ) { QString s; @@ -403,6 +509,9 @@ QString QtxDblSpinBox::mapValueToText( double v ) return removeTrailingZeroes( s ); } +/*! + Converts value to string +*/ QString QtxDblSpinBox::mapValueToText( int ) { QString s; @@ -410,6 +519,9 @@ QString QtxDblSpinBox::mapValueToText( int ) return removeTrailingZeroes( s ); } +/*! + Converts current text of editor to double +*/ double QtxDblSpinBox::mapTextToDoubleValue( bool* ok ) { QString s = text(); @@ -422,6 +534,10 @@ double QtxDblSpinBox::mapTextToDoubleValue( bool* ok ) return newVal; } +/*! + \return value corrected in accordance with borders + \param val - value to be corrected +*/ double QtxDblSpinBox::bound( double val ) { double newVal = val; @@ -432,12 +548,18 @@ double QtxDblSpinBox::bound( double val ) return newVal; } +/*! + Custom handler for leave event +*/ void QtxDblSpinBox::leaveEvent( QEvent* e ) { if ( !myCleared ) QSpinBox::leaveEvent( e ); } +/*! + Custom handler for wheel event +*/ void QtxDblSpinBox::wheelEvent( QWheelEvent* e ) { if ( !isEnabled() ) @@ -447,12 +569,18 @@ void QtxDblSpinBox::wheelEvent( QWheelEvent* e ) updateDisplay(); } +/*! + SLOT: called if text is changed +*/ void QtxDblSpinBox::onTextChanged( const QString& str ) { if ( !myBlocked ) myCleared = false; } +/*! + \return string without excess zeros in start and in end +*/ QString QtxDblSpinBox::removeTrailingZeroes( const QString& src ) const { QString delim( "." ); diff --git a/src/Qtx/QtxDblSpinBox.h b/src/Qtx/QtxDblSpinBox.h index e59fe4f3d..d145390e0 100755 --- a/src/Qtx/QtxDblSpinBox.h +++ b/src/Qtx/QtxDblSpinBox.h @@ -26,6 +26,10 @@ #include +/*! + \class QtxDblSpinBox + Spin box for real numbers. +*/ class QTX_EXPORT QtxDblSpinBox : public QSpinBox { Q_OBJECT diff --git a/src/Qtx/QtxDblValidator.cxx b/src/Qtx/QtxDblValidator.cxx index 2769fd406..4b204f8db 100644 --- a/src/Qtx/QtxDblValidator.cxx +++ b/src/Qtx/QtxDblValidator.cxx @@ -21,16 +21,31 @@ #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; diff --git a/src/Qtx/QtxDialog.cxx b/src/Qtx/QtxDialog.cxx index 347479e55..5bbc1f79b 100755 --- a/src/Qtx/QtxDialog.cxx +++ b/src/Qtx/QtxDialog.cxx @@ -33,7 +33,6 @@ Class: QtxDialog::Area Level: Internal */ - class QtxDialog::Area : public QFrame { public: @@ -68,6 +67,9 @@ private: Orientation myOrientation; }; +/*! + Contructor +*/ QtxDialog::Area::Area( Orientation o, QtxDialog* dlg, QWidget* parent ) : QFrame( parent ), myDlg( dlg ), @@ -84,10 +86,17 @@ myOrientation( o ) hide(); } +/*! + Destructor +*/ QtxDialog::Area::~Area() { } +/*! + Inserts button to area + \param b - button +*/ void QtxDialog::Area::insertButton( QButton* b ) { if ( !b || myButtons.findRef( b ) != -1 ) @@ -108,6 +117,10 @@ void QtxDialog::Area::insertButton( QButton* b ) updateBorder(); } +/*! + Removes button from area + \param b - button +*/ void QtxDialog::Area::removeButton( QButton* b ) { if ( !b ) @@ -126,16 +139,27 @@ void QtxDialog::Area::removeButton( QButton* b ) layoutButtons(); } +/*! + \return true if area contains button + \param b - button +*/ bool QtxDialog::Area::contains( QButton* b ) const { return myButtons.containsRef( b ); } +/*! + \return policy of button layouting. +*/ int QtxDialog::Area::policy() const { return myPolicy; } +/*! + Changes policy of button layouting. + \param p - new policy +*/ void QtxDialog::Area::setPolicy( const int p ) { if ( myPolicy == p ) @@ -145,11 +169,18 @@ void QtxDialog::Area::setPolicy( const int p ) layoutButtons(); } +/*! + \return true if border enabled +*/ bool QtxDialog::Area::isBorderEnabled() const { return myLine && myBorder; } +/*! + Enables/disable separator between main frame and button frame + \param on - new state +*/ void QtxDialog::Area::setBorderEnabled( const bool on ) { if ( !myLine || myBorder == on ) @@ -159,6 +190,10 @@ void QtxDialog::Area::setBorderEnabled( const bool on ) updateBorder(); } +/*! + Sets label as separator between main frame and button frame + \param line - new separator +*/ void QtxDialog::Area::setBorderWidget( QLabel* line ) { if ( myLine == line ) @@ -169,11 +204,17 @@ void QtxDialog::Area::setBorderWidget( QLabel* line ) updateBorder(); } +/*! + \return const reference to list of buttons +*/ const QPtrList& QtxDialog::Area::buttons() const { return myButtons; } +/*! + Updates visibility of border +*/ void QtxDialog::Area::updateBorder() { if ( !myLine ) @@ -192,6 +233,9 @@ void QtxDialog::Area::updateBorder() myLine->setLineWidth( myBorder ? 1 : 0 ); } +/*! + Installs buttons into layout +*/ void QtxDialog::Area::layoutButtons() { int aPolicy = policy(); @@ -285,11 +329,12 @@ void QtxDialog::Area::layoutButtons() Qtx::setTabOrder( wids ); } + /*! - Class: QtxDialog::Border - Level: Internal -*/ + \class QtxDialog::Border + Special label used as separator between main frame and button frame +*/ class QtxDialog::Border : public QLabel { public: @@ -302,16 +347,26 @@ public: virtual QSize minimumSizeHint() const; }; +/*! + Constructor +*/ QtxDialog::Border::Border( QWidget* parent ) : QLabel( parent ) { setAlignment( Qt::AlignCenter ); } +/*! + Destructor +*/ QtxDialog::Border::~Border() { } +/*! + Set line width of separator + \param lw - new line width +*/ void QtxDialog::Border::setLineWidth( int lw ) { bool isOn = lineWidth() > 0; @@ -322,6 +377,9 @@ void QtxDialog::Border::setLineWidth( int lw ) updateGeometry(); } +/*! + \return the recommended size for the widget +*/ QSize QtxDialog::Border::sizeHint() const { QSize sz( 5, 5 ); @@ -339,26 +397,22 @@ QSize QtxDialog::Border::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxDialog::Border::minimumSizeHint() const { return sizeHint(); } /*! - Class: QtxDialog - Level: Public + Constructor + Construct a dialog with specified parent and name. + \param modal define modal status of dialog (default non modal dialog created). + \param allowResize - if it is true then dialog can be resize by user (default non resizable dialog created). + \param Button flags specified control buttons for dialog (default buttons is OK, Cancel and Help). + \param Widget flags used as in any widget. */ - -/*! - Name: QtxDialog [public] - Desc: Construct a dialog with specified parent and name. - Parameter 'modal' define modal status of dialog (default non modal - dialog created). If parameter 'allowResize' is true then dialog - can be resize by user (default non resizable dialog created). - Button flags specified control buttons for dialog (default buttons - is OK, Cancel and Help). Widget flags used as in any widget. -*/ - QtxDialog::QtxDialog( QWidget* parent, const char* name, bool modal, bool allowResize, const int f, WFlags wf ) : QDialog( parent, name, modal, diff --git a/src/Qtx/QtxDockAction.cxx b/src/Qtx/QtxDockAction.cxx index 0a0295559..a8b7ddf7c 100755 --- a/src/Qtx/QtxDockAction.cxx +++ b/src/Qtx/QtxDockAction.cxx @@ -255,6 +255,10 @@ bool QtxDockAction::removeFrom( QWidget* wid ) return QtxAction::removeFrom( wid ); } +/*! + Sets menu text of action + \param txt - new menu text +*/ void QtxDockAction::setMenuText( const QString& txt ) { if ( menuText() == txt ) @@ -721,6 +725,11 @@ void QtxDockAction::dockWindows( QPtrList& lst, QMainWindow* main ) 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 ) @@ -1251,6 +1260,9 @@ void QtxDockAction::collectNames( const int place, QStringList& lst ) const } } +/*! + Updates menu of action +*/ void QtxDockAction::updateMenus() { for ( MenuMap::Iterator it = myMenu.begin(); it != myMenu.end(); ++it ) diff --git a/src/Qtx/QtxDockWindow.cxx b/src/Qtx/QtxDockWindow.cxx index 9872d8505..df05b42dc 100644 --- a/src/Qtx/QtxDockWindow.cxx +++ b/src/Qtx/QtxDockWindow.cxx @@ -28,10 +28,9 @@ #include /*! - Class: QtxDockWindow::Watcher [Internal] - Descr: Internal object with event filter. + \class QtxDockWindow::Watcher [Internal] + Internal object with event filter. */ - class QtxDockWindow::Watcher : public QObject { public: @@ -62,6 +61,9 @@ private: bool myVisible; }; +/*! + Constructor +*/ QtxDockWindow::Watcher::Watcher( QtxDockWindow* cont ) : QObject( cont ), myCont( cont ), myState( true ), @@ -76,6 +78,9 @@ myEmpty( true ) installFilters(); } +/*! + Custom event filter +*/ bool QtxDockWindow::Watcher::eventFilter( QObject* o, QEvent* e ) { if ( o == myCont && @@ -98,6 +103,9 @@ bool QtxDockWindow::Watcher::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Sets internal status to shown +*/ void QtxDockWindow::Watcher::shown( QtxDockWindow* dw ) { if ( dw != myCont ) @@ -106,6 +114,9 @@ void QtxDockWindow::Watcher::shown( QtxDockWindow* dw ) myVisible = true; } +/*! + Sets internal status to hidden +*/ void QtxDockWindow::Watcher::hided( QtxDockWindow* dw ) { if ( dw != myCont ) @@ -114,6 +125,9 @@ void QtxDockWindow::Watcher::hided( QtxDockWindow* dw ) myVisible = false; } +/*! + Shows corresponding dock window +*/ void QtxDockWindow::Watcher::showContainer() { if ( !myCont ) @@ -125,6 +139,9 @@ void QtxDockWindow::Watcher::showContainer() myCont = cont; } +/*! + Hides corresponding dock window +*/ void QtxDockWindow::Watcher::hideContainer() { if ( !myCont ) @@ -136,6 +153,9 @@ void QtxDockWindow::Watcher::hideContainer() myCont = cont; } +/*! + Event filter of custom events +*/ void QtxDockWindow::Watcher::customEvent( QCustomEvent* e ) { installFilters(); @@ -145,6 +165,9 @@ void QtxDockWindow::Watcher::customEvent( QCustomEvent* e ) updateVisibility(); } +/*! + Installs this object as event filter to all widgets inside corresponding main window +*/ void QtxDockWindow::Watcher::installFilters() { if ( !myCont ) @@ -161,6 +184,9 @@ void QtxDockWindow::Watcher::installFilters() } } +/*! + Updates visibility of all widgets inside corresponding main window +*/ void QtxDockWindow::Watcher::updateVisibility() { if ( !myCont ) @@ -192,6 +218,9 @@ void QtxDockWindow::Watcher::updateVisibility() vis ? showContainer() : hideContainer(); } +/*! + Updates icon of corresponding main window +*/ void QtxDockWindow::Watcher::updateIcon() { if ( !myCont || !myCont->widget() ) @@ -201,6 +230,9 @@ void QtxDockWindow::Watcher::updateIcon() myCont->setIcon( ico ? *ico : QPixmap() ); } +/*! + Updates caption of corresponding main window +*/ void QtxDockWindow::Watcher::updateCaption() { if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() ) @@ -208,10 +240,8 @@ void QtxDockWindow::Watcher::updateCaption() } /*! - Class: QtxDockWindow [Public] - Descr: + Constructor */ - QtxDockWindow::QtxDockWindow( Place p, QWidget* parent, const char* name, WFlags f ) : QDockWindow( p, parent, name, f ), myWatcher( 0 ), @@ -219,6 +249,9 @@ myStretch( false ) { } +/*! + Constructor +*/ QtxDockWindow::QtxDockWindow( const bool watch, QWidget* parent, const char* name, WFlags f ) : QDockWindow( InDock, parent, name, f ), myWatcher( 0 ), @@ -228,6 +261,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxDockWindow::QtxDockWindow( QWidget* parent, const char* name, WFlags f ) : QDockWindow( InDock, parent, name, f ), myWatcher( 0 ), @@ -235,10 +271,17 @@ myStretch( false ) { } +/*! + Destructor +*/ QtxDockWindow::~QtxDockWindow() { } +/*! + Sets the dock window's main widget + \param wid - new main widget +*/ void QtxDockWindow::setWidget( QWidget* wid ) { if ( wid ) @@ -247,11 +290,18 @@ void QtxDockWindow::setWidget( QWidget* wid ) QDockWindow::setWidget( wid ); } +/*! + \return true if the dock window is stretchable +*/ bool QtxDockWindow::isStretchable() const { return myStretch; } +/*! + Sets the dock window "stretchable" state + \param on - new state +*/ void QtxDockWindow::setStretchable( const bool on ) { if ( myStretch == on ) @@ -271,6 +321,9 @@ void QtxDockWindow::setStretchable( const bool on ) } } +/*! + \return the recommended size for the widget +*/ QSize QtxDockWindow::sizeHint() const { QSize sz = QDockWindow::sizeHint(); @@ -286,6 +339,9 @@ QSize QtxDockWindow::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxDockWindow::minimumSizeHint() const { QSize sz = QDockWindow::minimumSizeHint(); @@ -306,6 +362,9 @@ QSize QtxDockWindow::minimumSizeHint() const return sz; } +/*! + \return corresponding main window +*/ QMainWindow* QtxDockWindow::mainWindow() const { QMainWindow* mw = 0; @@ -321,6 +380,9 @@ QMainWindow* QtxDockWindow::mainWindow() const return mw; } +/*! + Shows window +*/ void QtxDockWindow::show() { if ( myWatcher ) @@ -329,6 +391,9 @@ void QtxDockWindow::show() QDockWindow::show(); } +/*! + Hides window +*/ void QtxDockWindow::hide() { if ( myWatcher ) diff --git a/src/Qtx/QtxGroupBox.cxx b/src/Qtx/QtxGroupBox.cxx index 51732dc75..801c3a599 100644 --- a/src/Qtx/QtxGroupBox.cxx +++ b/src/Qtx/QtxGroupBox.cxx @@ -27,12 +27,18 @@ #include #include +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( QWidget* parent, const char* name ) : QGroupBox( parent, name ), myContainer( 0 ) { } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( const QString& title, QWidget* parent, const char* name ) : QGroupBox( title, parent, name ), myContainer( 0 ) @@ -40,6 +46,9 @@ myContainer( 0 ) initialize(); } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( int strips, Orientation o, QWidget* parent, const char* name ) : QGroupBox( strips, o, parent, name ), myContainer( 0 ) @@ -47,6 +56,9 @@ myContainer( 0 ) initialize(); } +/*! + Constructor +*/ QtxGroupBox::QtxGroupBox( int strips, Orientation o, const QString& title, QWidget* parent, const char* name ) : QGroupBox( strips, o, title, parent, name ), @@ -55,11 +67,17 @@ myContainer( 0 ) initialize(); } +/*! + Destructor +*/ QtxGroupBox::~QtxGroupBox() { delete myContainer; } +/*! + Creates horizontal box as container +*/ void QtxGroupBox::initialize() { myContainer = new QHBox( this, 0, WStyle_Customize | WStyle_NoBorderEx | WStyle_Tool ); @@ -69,6 +87,9 @@ void QtxGroupBox::initialize() #if QT_VER < 3 +/*! + \return the width of the empty space between the items in the group and the frame of the group +*/ int QtxGroupBox::insideMargin() const { int m = 0; @@ -77,6 +98,9 @@ int QtxGroupBox::insideMargin() const return m; } +/*! + \return the width of the empty space between each of the items in the group +*/ int QtxGroupBox::insideSpacing() const { int s = 0; @@ -85,12 +109,18 @@ int QtxGroupBox::insideSpacing() const return s; } +/*! + Sets the width of the empty space between the items in the group and the frame of the group +*/ void QtxGroupBox::setInsideMargin( int m ) { if ( layout() ) layout()->setMargin( m ); } +/*! + Sets the width of the empty space between each of the items in the group +*/ void QtxGroupBox::setInsideSpacing( int s ) { if ( layout() ) @@ -99,6 +129,10 @@ void QtxGroupBox::setInsideSpacing( int s ) #endif +/*! + Inserts title widget + \param wid - new title widget +*/ void QtxGroupBox::insertTitleWidget( QWidget* wid ) { if ( !myContainer ) @@ -110,6 +144,10 @@ void QtxGroupBox::insertTitleWidget( QWidget* wid ) updateTitle(); } +/*! + Removes title widget + \param wid - title widget +*/ void QtxGroupBox::removeTitleWidget( QWidget* wid ) { if ( !myContainer || wid->parentWidget() != myContainer ) @@ -121,6 +159,9 @@ void QtxGroupBox::removeTitleWidget( QWidget* wid ) updateTitle(); } +/*! + Calculates margin +*/ void QtxGroupBox::adjustInsideMargin() { QApplication::sendPostedEvents( myContainer, QEvent::ChildInserted ); @@ -130,6 +171,9 @@ void QtxGroupBox::adjustInsideMargin() setInsideMargin( myContainer->height() ); } +/*! + Sets the alignment of the group box title +*/ void QtxGroupBox::setAlignment( int align ) { QGroupBox::setAlignment( align ); @@ -137,6 +181,9 @@ void QtxGroupBox::setAlignment( int align ) updateTitle(); } +/*! + Sets title of groop box +*/ void QtxGroupBox::setTitle( const QString& title ) { QGroupBox::setTitle( title ); @@ -144,6 +191,11 @@ void QtxGroupBox::setTitle( const QString& title ) updateTitle(); } +/*! + Changes the layout of the group box + \param strips - number of column/rows + \param o - orientation +*/ void QtxGroupBox::setColumnLayout( int strips, Orientation o ) { if ( myContainer ) @@ -157,6 +209,9 @@ void QtxGroupBox::setColumnLayout( int strips, Orientation o ) updateTitle(); } +/*! + Shows group box +*/ void QtxGroupBox::show() { QGroupBox::show(); @@ -164,6 +219,9 @@ void QtxGroupBox::show() updateTitle(); } +/*! + Updates group box +*/ void QtxGroupBox::update() { QGroupBox::update(); @@ -171,6 +229,9 @@ void QtxGroupBox::update() updateTitle(); } +/*! + \return the recommended size for the widget +*/ QSize QtxGroupBox::sizeHint() const { QSize sz = QGroupBox::sizeHint(); @@ -190,6 +251,9 @@ QSize QtxGroupBox::sizeHint() const return QSize( QMAX( sz.width(), sw ), sz.height() ); } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxGroupBox::minimumSizeHint() const { QSize sz = QGroupBox::minimumSizeHint(); @@ -209,6 +273,9 @@ QSize QtxGroupBox::minimumSizeHint() const return QSize( QMAX( sz.width(), sw ), sz.height() ); } +/*! + Custom event filter +*/ bool QtxGroupBox::eventFilter( QObject* obj, QEvent* e ) { QEvent::Type type = e->type(); @@ -220,6 +287,9 @@ bool QtxGroupBox::eventFilter( QObject* obj, QEvent* e ) return QGroupBox::eventFilter( obj, e ); } +/*! + Custom resize event filter +*/ void QtxGroupBox::resizeEvent( QResizeEvent* e ) { QGroupBox::resizeEvent( e ); @@ -227,6 +297,9 @@ void QtxGroupBox::resizeEvent( QResizeEvent* e ) updateTitle(); } +/*! + Custom child event filter +*/ void QtxGroupBox::childEvent( QChildEvent* e ) { if ( e->type() == QEvent::ChildInserted && e->child() == myContainer ) @@ -235,16 +308,25 @@ void QtxGroupBox::childEvent( QChildEvent* e ) QGroupBox::childEvent( e ); } +/*! + Event filter of custom items +*/ void QtxGroupBox::customEvent( QCustomEvent* ) { updateTitle(); } +/*! + On frame changed +*/ void QtxGroupBox::frameChanged() { updateTitle(); } +/*! + \return size of title +*/ QSize QtxGroupBox::titleSize() const { QSize sz( 0, 0 ); @@ -264,6 +346,9 @@ QSize QtxGroupBox::titleSize() const return QSize( w, h ); } +/*! + Updates title +*/ void QtxGroupBox::updateTitle() { if ( !myContainer ) diff --git a/src/Qtx/QtxIntSpinBox.cxx b/src/Qtx/QtxIntSpinBox.cxx index 35672e5ee..2e694cd18 100755 --- a/src/Qtx/QtxIntSpinBox.cxx +++ b/src/Qtx/QtxIntSpinBox.cxx @@ -24,6 +24,9 @@ #include #include +/*! + Constructor +*/ QtxIntSpinBox::QtxIntSpinBox( QWidget* parent, const char* name ) : QSpinBox( parent, name ), myCleared( false ), @@ -32,6 +35,9 @@ myBlocked( false ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Constructor +*/ QtxIntSpinBox::QtxIntSpinBox( int min, int max, int step, QWidget* parent, const char* name ) : QSpinBox( min, max, step, parent, name ), myCleared( false ), @@ -40,15 +46,25 @@ myBlocked( false ) connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) ); } +/*! + Destructor +*/ QtxIntSpinBox::~QtxIntSpinBox() { } +/*! + \return true if spin box is cleared +*/ bool QtxIntSpinBox::isCleared() const { return myCleared; } +/*! + Changes cleared status of spin box + \param on - new status +*/ void QtxIntSpinBox::setCleared( const bool on ) { if ( myCleared == on ) @@ -58,6 +74,10 @@ void QtxIntSpinBox::setCleared( const bool on ) updateDisplay(); } +/*! + Changes value of spin box + \param val - new value of spin box +*/ void QtxIntSpinBox::setValue( int value ) { myCleared = false; @@ -65,6 +85,9 @@ void QtxIntSpinBox::setValue( int value ) QSpinBox::setValue( value ); } +/*! + Custom event filter +*/ bool QtxIntSpinBox::eventFilter( QObject* o, QEvent* e ) { if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() ) @@ -83,6 +106,9 @@ bool QtxIntSpinBox::eventFilter( QObject* o, QEvent* e ) return QSpinBox::eventFilter( o, e ); } +/*! + Sets integer value by text in editor +*/ void QtxIntSpinBox::interpretText() { myCleared = false; @@ -90,6 +116,9 @@ void QtxIntSpinBox::interpretText() QSpinBox::interpretText(); } +/*! + Updates text of editor +*/ void QtxIntSpinBox::updateDisplay() { if ( myBlocked ) @@ -113,12 +142,18 @@ void QtxIntSpinBox::updateDisplay() myBlocked = block; } +/*! + Custom handler for leave event +*/ void QtxIntSpinBox::leaveEvent( QEvent* e ) { if ( !myCleared ) QSpinBox::leaveEvent( e ); } +/*! + Custom handler for wheel event +*/ void QtxIntSpinBox::wheelEvent( QWheelEvent* e ) { if ( !isEnabled() ) @@ -128,6 +163,9 @@ void QtxIntSpinBox::wheelEvent( QWheelEvent* e ) updateDisplay(); } +/*! + SLOT: called if text is changed +*/ void QtxIntSpinBox::onTextChanged( const QString& ) { if ( !myBlocked ) diff --git a/src/Qtx/QtxListAction.cxx b/src/Qtx/QtxListAction.cxx index 725120238..84fbed93b 100755 --- a/src/Qtx/QtxListAction.cxx +++ b/src/Qtx/QtxListAction.cxx @@ -46,10 +46,9 @@ static const char* list_arrow_icon[] = { }; /*! - Class: QtxListAction::ToolButton - Level: Internal + \class QtxListAction::ToolButton + Custom tool button */ - class QtxListAction::ToolButton : public QToolButton { public: @@ -62,6 +61,9 @@ private: QtxListAction* myAction; }; +/*! + Constructor +*/ QtxListAction::ToolButton::ToolButton( QtxListAction* a, QWidget* parent, const char* name ) : QToolButton( parent, name ), myAction( a ) @@ -69,12 +71,18 @@ myAction( a ) setIconSet( QPixmap( list_arrow_icon ) ); } +/*! + Destructor +*/ QtxListAction::ToolButton::~ToolButton() { if ( myAction ) myAction->controlDeleted( this ); } +/*! + \return the recommended size for the widget +*/ QSize QtxListAction::ToolButton::sizeHint() const { QSize sz = iconSet().pixmap().size(); @@ -82,16 +90,9 @@ QSize QtxListAction::ToolButton::sizeHint() const } /*! - Class: QtxListAction - Level: Public + Constructs an list action with given parent and name. If toggle is true the + action will be a toggle action, otherwise it will be a command action. */ - -/*! - Name: QtxListAction [public] - Desc: Constructs an list action with given parent and name. If toggle is true the - action will be a toggle action, otherwise it will be a command action. -*/ - QtxListAction::QtxListAction( QObject* parent, const char* name, bool toggle ) : QtxAction( parent, name, toggle ), myFrame( 0 ), @@ -102,12 +103,11 @@ myRaise( false ) } /*! - Name: QtxListAction [public] - Desc: This constructor creates an action with the following properties: the - description text, the icon or iconset icon, the menu text and keyboard - accelerator. It is a child of given parent and named specified name. - If toggle is true the action will be a toggle action, otherwise it will - be a command action. + This constructor creates an action with the following properties: the + description text, the icon or iconset icon, the menu text and keyboard + accelerator. It is a child of given parent and named specified name. + If toggle is true the action will be a toggle action, otherwise it will + be a command action. */ QtxListAction::QtxListAction( const QString& text, const QIconSet& icon, @@ -122,11 +122,10 @@ myRaise( false ) } /*! - Name: QtxListAction [public] - Desc: This constructor creates an action with the following properties: the - description text, the menu text and keyboard accelerator. It is a child - of given parent and named specified name. If toggle is true the action - will be a toggle action, otherwise it will be a command action. + This constructor creates an action with the following properties: the + description text, the menu text and keyboard accelerator. It is a child + of given parent and named specified name. If toggle is true the action + will be a toggle action, otherwise it will be a command action. */ QtxListAction::QtxListAction( const QString& text, const QString& menuText, @@ -140,8 +139,7 @@ myRaise( false ) } /*! - Name: ~QtxListAction [virtual public] - Desc: Destructor. + Destructor. */ QtxListAction::~QtxListAction() @@ -173,6 +171,9 @@ void QtxListAction::setPopupMode( const int mode ) myMode = mode; } +/*! + \return list of names +*/ QStringList QtxListAction::names() const { QStringList lst; @@ -505,6 +506,9 @@ void QtxListAction::onExpand( bool on ) myFrame->hide(); } +/*! + SLOT: called when frame is hidden +*/ void QtxListAction::onHided() { for ( ButtonsMap::Iterator bit = myButtons.begin(); bit != myButtons.end(); ++bit ) @@ -624,12 +628,10 @@ void QtxListAction::controlDeleted( QWidget* wid ) } } -/********************************************************************** -** Class: QtxListFrame -** Descr: Frame for the list of actions -** Level: Internal -***********************************************************************/ - +/*! + \class QtxListFrame + Frame for the list of actions +*/ class QtxListFrame::ScrollEvent : public QCustomEvent { public: @@ -693,6 +695,9 @@ myScrollBlock( false ) setFrameStyle( Panel | Raised ); } +/*! + Destructor +*/ QtxListFrame::~QtxListFrame() { if ( myAction ) @@ -709,6 +714,11 @@ void QtxListFrame::clear() setNames( myNames ); } +/*! + Adds a names to the list. Truncates the name to fit to the frame width. + Use QtxListAction::setMaxLineChar( int ) to set the width in characters. [ public ] +*/ + void QtxListFrame::addNames( const QStringList& names ) { for ( QStringList::ConstIterator it = names.begin(); it != names.end(); ++it ) @@ -754,6 +764,9 @@ void QtxListFrame::setNames( const QStringList& names ) } } +/*! + \return list of names +*/ const QStringList QtxListFrame::names() const { return myNames; @@ -822,6 +835,10 @@ void QtxListFrame::updateComment() myComment->setText( com ); } +/*! + Sets owner + \param wo - new owner +*/ void QtxListFrame::setOwner( QWidget* wo ) { myOwner = wo; @@ -1005,6 +1022,9 @@ bool QtxListFrame::handleMouseEvent( QObject* o, QMouseEvent* e ) return true; } +/*! + Custom event filter +*/ bool QtxListFrame::event( QEvent* e ) { if ( e->type() != (int)ScrollEvent::Scroll ) @@ -1089,6 +1109,9 @@ void QtxListFrame::setSelected( const int lastSel ) updateComment(); } +/*! + return number of selected items +*/ int QtxListFrame::selected() const { uint sel = 0; diff --git a/src/Qtx/QtxListAction.h b/src/Qtx/QtxListAction.h index 30c85acc0..d285d7ab2 100755 --- a/src/Qtx/QtxListAction.h +++ b/src/Qtx/QtxListAction.h @@ -118,11 +118,9 @@ private: friend class QtxListFrame; }; -/************************************* -** Class: QtxListFrame -** Level: Internal -*************************************/ - +/*! + \class QtxListFrame +*/ class QtxListFrame : public QFrame { Q_OBJECT diff --git a/src/Qtx/QtxListBox.cxx b/src/Qtx/QtxListBox.cxx index 6d2ce0cd9..47cff9d1d 100755 --- a/src/Qtx/QtxListBox.cxx +++ b/src/Qtx/QtxListBox.cxx @@ -24,6 +24,9 @@ #include #include +/*! + Constructor +*/ QtxListBox::QtxListBox( QWidget* parent, const char* name, WFlags f ) : QListBox( parent, name, f ), myEditor( 0 ), @@ -36,15 +39,25 @@ myModifEnabled( true ) this, SLOT( onContentsMoving( int, int ) ) ); } +/*! + Destructor +*/ QtxListBox::~QtxListBox() { } +/*! + \return true if editing is enabled +*/ bool QtxListBox::isEditEnabled() const { return myEditState; } +/*! + Enables/disables editing + \param on - new state +*/ void QtxListBox::setEditEnabled( bool on ) { if ( isEditEnabled() == on ) @@ -56,36 +69,66 @@ void QtxListBox::setEditEnabled( bool on ) endEdition( defaultEditAction() ); } +/*! + \return default edit action + \sa setDefaultEditAction() +*/ bool QtxListBox::defaultEditAction() const { return myEditDefault; } +/*! + Changes default edit action. + Pressing of ENTER button always accepts new value of edited item. + But other ways, such as focus out or edition of other item accepts + new value of edited item only if "default edit action" is true + \param def - new value +*/ void QtxListBox::setDefaultEditAction( bool def ) { myEditDefault = def; } +/*! + \return modification enabled state + \sa setModificationEnabled() +*/ bool QtxListBox::isModificationEnabled() const { return myModifEnabled; } +/*! + Changes "modification enabled" state + If it is true, then pressing of CTRL + { Up, Down, Home, End } allows move items in list + \param on - new state +*/ void QtxListBox::setModificationEnabled( bool on ) { myModifEnabled = on; } +/*! + \return current edited item +*/ QListBoxItem* QtxListBox::editedItem() const { return item( editedIndex() ); } +/*! + \return current edited index +*/ int QtxListBox::editedIndex() const { return myEditIndex; } +/*! + Starts edition of item + \param idx - index of item +*/ void QtxListBox::startEdition( const int idx ) { if ( idx < 0 || editedIndex() == idx || !isEditEnabled() ) @@ -108,11 +151,19 @@ void QtxListBox::startEdition( const int idx ) ed->setFocus(); } +/*! + Starts edition of item + \param item - item to be edited +*/ void QtxListBox::startEdition( const QListBoxItem* item ) { startEdition( index( item ) ); } +/*! + Finishes edition of item + \param action - if it is true, then new values must be accepted +*/ void QtxListBox::endEdition( const bool action ) { int idx = editedIndex(); @@ -141,6 +192,10 @@ void QtxListBox::endEdition( const bool action ) } } +/*! + Ensures that the item is visible. + \param idx - index of item +*/ void QtxListBox::ensureItemVisible( const int idx ) { if ( idx < 0 ) @@ -152,11 +207,18 @@ void QtxListBox::ensureItemVisible( const int idx ) setTopItem( idx ); } +/*! + Ensures that the item is visible. + \param item - item to be made visible +*/ void QtxListBox::ensureItemVisible( const QListBoxItem* item ) { ensureItemVisible( index( item ) ); } +/*! + \return validator of item editor +*/ const QValidator* QtxListBox::validator() const { const QValidator* v = 0; @@ -165,28 +227,48 @@ const QValidator* QtxListBox::validator() const return v; } +/*! + Removes validator of item editor +*/ void QtxListBox::clearValidator() { if ( editor() ) editor()->clearValidator(); } +/*! + Changes validator of item editor + \param v - new validator +*/ void QtxListBox::setValidator( const QValidator* v ) { if ( editor() ) editor()->setValidator( v ); } +/*! + Moves item to top + \param idx - index of item +*/ void QtxListBox::moveItemToTop( const int idx ) { moveItem( idx, -idx ); } +/*! + Moves item to bottom + \param idx - index of item +*/ void QtxListBox::moveItemToBottom( const int idx ) { moveItem( idx, count() - idx ); } +/*! + Moves item + \param idx - index of item + \param step - changing of position +*/ void QtxListBox::moveItem( const int idx, const int step ) { QListBoxItem* i = item( idx ); @@ -210,6 +292,10 @@ void QtxListBox::moveItem( const int idx, const int step ) emit itemMoved( idx, pos ); } +/*! + Inserts empty item + \param i - position of item (if it is less than 0, then current position is used) +*/ void QtxListBox::createItem( const int i ) { if ( !isEditEnabled() ) @@ -224,6 +310,10 @@ void QtxListBox::createItem( const int i ) startEdition( idx ); } +/*! + Removes item + \param i - position of item (if it is less than 0, then current position is used) +*/ void QtxListBox::deleteItem( const int i ) { if ( !isEditEnabled() ) @@ -240,6 +330,10 @@ void QtxListBox::deleteItem( const int i ) updateEditor(); } +/*! + Scrolls the content so that the point is in the top-left corner. + \param x, y - point co-ordinates +*/ void QtxListBox::setContentsPos( int x, int y ) { QListBox::setContentsPos( x, y ); @@ -247,6 +341,9 @@ void QtxListBox::setContentsPos( int x, int y ) updateEditor(); } +/*! + Custom event filter, performs finish of edition on focus out, escape/return/enter pressing +*/ bool QtxListBox::eventFilter( QObject* o, QEvent* e ) { if ( editor() == o ) @@ -267,6 +364,10 @@ bool QtxListBox::eventFilter( QObject* o, QEvent* e ) return QListBox::eventFilter( o, e ); } +/*! + Custom key press event handler + Allows to move items by CTRL + { Up, Down, Home, End } +*/ void QtxListBox::keyPressEvent( QKeyEvent* e ) { if ( e->key() == Key_Up && e->state() & ControlButton && isModificationEnabled() ) @@ -285,6 +386,9 @@ void QtxListBox::keyPressEvent( QKeyEvent* e ) QListBox::keyPressEvent( e ); } +/*! + Custom resize event handler +*/ void QtxListBox::viewportResizeEvent( QResizeEvent* e ) { QListBox::viewportResizeEvent( e ); @@ -292,6 +396,9 @@ void QtxListBox::viewportResizeEvent( QResizeEvent* e ) updateEditor(); } +/*! + Custom mouse double click event handler +*/ void QtxListBox::mouseDoubleClickEvent( QMouseEvent* e ) { if ( isEditEnabled() ) @@ -300,11 +407,17 @@ void QtxListBox::mouseDoubleClickEvent( QMouseEvent* e ) QListBox::mouseDoubleClickEvent( e ); } +/*! + Updates editor on contents moving +*/ void QtxListBox::onContentsMoving( int, int ) { updateEditor(); } +/*! + \return item editor +*/ QLineEdit* QtxListBox::editor() const { if ( !myEditor ) @@ -315,6 +428,9 @@ QLineEdit* QtxListBox::editor() const return myEditor; } +/*! + Creates item editor +*/ void QtxListBox::createEditor() { if ( myEditor ) @@ -332,6 +448,9 @@ void QtxListBox::createEditor() addChild( myEditor ); } +/*! + Updates item editor +*/ void QtxListBox::updateEditor() { if ( !editedItem() || !editor() ) diff --git a/src/Qtx/QtxListOfOperations.cxx b/src/Qtx/QtxListOfOperations.cxx index 1be04a75d..39eb5f1a2 100644 --- a/src/Qtx/QtxListOfOperations.cxx +++ b/src/Qtx/QtxListOfOperations.cxx @@ -20,26 +20,25 @@ #include "QtxListOfOperations.h" #include -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor +*/ QtxListOfOperations::QtxListOfOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxListOfOperations::~QtxListOfOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return fills list with brackets symbols + \param list - list to be filled + \param open - if it is true, it is necessary to fill with open brackets otherwise with close +*/ void QtxListOfOperations::bracketsList( QStringList& list, bool open ) const { OperationSetsIterator anIt = mySets.begin(), @@ -57,10 +56,9 @@ void QtxListOfOperations::bracketsList( QStringList& list, bool open ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with operation names +*/ void QtxListOfOperations::opersList( QStringList& list ) const { OperationSetsIterator anIt = mySets.begin(), @@ -78,10 +76,9 @@ void QtxListOfOperations::opersList( QStringList& list ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Create some value by it's string representation +*/ bool QtxListOfOperations::createValue( const QString& str, QtxValue& val ) const { bool ok; @@ -96,10 +93,9 @@ bool QtxListOfOperations::createValue( const QString& str, QtxValue& val ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of operation +*/ int QtxListOfOperations::prior( const QString& op, bool isBin ) const { OperationSetsIterator anIt = mySets.begin(), @@ -117,10 +113,12 @@ int QtxListOfOperations::prior( const QString& op, bool isBin ) const return prior>0 ? prior : 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxListOfOperations::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -137,10 +135,13 @@ QtxParser::Error QtxListOfOperations::isValid( const QString& op, return err; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxListOfOperations::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const @@ -169,19 +170,18 @@ QtxParser::Error QtxListOfOperations::calculate( const QString& op, return QtxParser::InvalidOperation; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Clears list of operations +*/ void QtxListOfOperations::clear() { mySets.clear(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if list contains operations + \param name - name of operation +*/ bool QtxListOfOperations::has( const QString& name ) const { OperationSetsIterator anIt = mySets.begin(), @@ -192,30 +192,37 @@ bool QtxListOfOperations::has( const QString& name ) const return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Appends operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior +*/ void QtxListOfOperations::append( const QString& name, QtxOperations* oper, int prior ) { insert( name, oper, prior ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Prepends operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior +*/ void QtxListOfOperations::prepend( const QString& name, QtxOperations* oper, int prior ) { insert( name, oper, prior, 0 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Inserts operations to list + \param name - name of operations + \param oper - operations + \param prior - additional prior + \param pos - insert position +*/ void QtxListOfOperations::insert( const QString& name, QtxOperations* oper, int prior, int pos ) { @@ -232,10 +239,10 @@ void QtxListOfOperations::insert( const QString& name, QtxOperations* oper, mySets.insert( mySets.at( pos ), op ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes operations from list + \param name - name of operations +*/ void QtxListOfOperations::remove( const QString& name ) { OperationSets::iterator anIt = mySets.begin(), @@ -248,19 +255,18 @@ void QtxListOfOperations::remove( const QString& name ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return count of operations in list +*/ int QtxListOfOperations::count() const { return mySets.count(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return operations by name + \name - name of operations +*/ QtxOperations* QtxListOfOperations::operations( const QString& name ) const { OperationSetsIterator anIt = mySets.begin(), diff --git a/src/Qtx/QtxListOfOperations.h b/src/Qtx/QtxListOfOperations.h index 3e1a711f1..05a737389 100644 --- a/src/Qtx/QtxListOfOperations.h +++ b/src/Qtx/QtxListOfOperations.h @@ -30,10 +30,15 @@ #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: diff --git a/src/Qtx/QtxListResourceEdit.cxx b/src/Qtx/QtxListResourceEdit.cxx index 038e189b7..bc3bcccb6 100644 --- a/src/Qtx/QtxListResourceEdit.cxx +++ b/src/Qtx/QtxListResourceEdit.cxx @@ -46,11 +46,9 @@ #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 ) @@ -76,10 +74,19 @@ QtxResourceEdit( mgr ) updateState(); } +/*! + Destructor +*/ QtxListResourceEdit::~QtxListResourceEdit() { } +/*! + Sets value to widget + \param id - id of widget + \param prop - name of resource + \param val - value of resource +*/ void QtxListResourceEdit::setItemProperty( const int id, const QString& prop, const QVariant& val ) { Item* i = item( id ); @@ -96,6 +103,9 @@ void QtxListResourceEdit::setItemProperty( const int id, const QString& prop, co updateVisible(); } +/*! + SLOT: called if main list selection changed, raises resource group widgets +*/ void QtxListResourceEdit::onSelectionChanged() { QString title = myList->text( myList->index( myList->selectedItem() ) ); @@ -115,6 +125,10 @@ void QtxListResourceEdit::onSelectionChanged() myStack->raiseWidget( i->id() ); } +/*! + Custom activity after item addition + \param i - added item +*/ void QtxListResourceEdit::itemAdded( QtxResourceEdit::Item* i ) { if ( !i ) @@ -127,6 +141,10 @@ void QtxListResourceEdit::itemAdded( QtxResourceEdit::Item* i ) updateVisible(); } +/*! + Creates and \return category + \param title - category title +*/ QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, const int ) { Item* i = item( title, -1 ); @@ -146,6 +164,10 @@ QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, co return category; } +/*! + Emits signal about resource changing + \param map - map of changed resources +*/ void QtxListResourceEdit::changedResources( const QMap& map ) { QMap idMap; @@ -163,6 +185,9 @@ void QtxListResourceEdit::changedResources( const QMap& map ) emit resourcesChanged( idMap ); } +/*! + Updates widgets with accordance with main list selection +*/ void QtxListResourceEdit::updateState() { if ( myList->selectedItem() && myStack->visibleWidget() ) @@ -173,6 +198,9 @@ void QtxListResourceEdit::updateState() myList->setShown( myList->count() > 1 ); } +/*! + Updates visibility state +*/ void QtxListResourceEdit::updateVisible() { QPtrList items; @@ -201,11 +229,9 @@ void QtxListResourceEdit::updateVisible() updateState(); } -/* - Class: QtxListResourceEdit::Category - Descr: GUI implementation of preferences category. +/*! + Constructor */ - QtxListResourceEdit::Category::Category( QtxListResourceEdit* edit, QWidget* parent ) : QFrame( parent ), Item( edit ) @@ -226,28 +252,47 @@ Item( edit ) updateState(); } +/*! + Destructor +*/ QtxListResourceEdit::Category::~Category() { } +/*! + \return true if it is empty +*/ bool QtxListResourceEdit::Category::isEmpty() const { return Item::isEmpty() && myInfo->text().isEmpty(); } +/*! + \return category type +*/ int QtxListResourceEdit::Category::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Category::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Category::retrieve() { } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::Category::property( const QString& prop ) const { QVariant var; @@ -256,6 +301,11 @@ QVariant QtxListResourceEdit::Category::property( const QString& prop ) const return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::Category::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -268,6 +318,10 @@ void QtxListResourceEdit::Category::setProperty( const QString& name, const QVar updateState(); } +/*! + Creates new tab + \param title - name of tab +*/ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& title, const int ) { Item* i = item( title, id() ); @@ -282,6 +336,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& return tab; } +/*! + Updates category +*/ void QtxListResourceEdit::Category::updateState() { if ( myTabs->count() ) @@ -295,11 +352,10 @@ void QtxListResourceEdit::Category::updateState() myInfo->hide(); } -/* - Class: QtxListResourceEdit::Tab - Descr: GUI implementation of resources tab. -*/ +/*! + Constructor +*/ QtxListResourceEdit::Tab::Tab( QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : QFrame( parent ), Item( edit, pItem ) @@ -312,23 +368,38 @@ Item( edit, pItem ) main->addStretch( 1 ); } +/*! + Destructor +*/ QtxListResourceEdit::Tab::~Tab() { } +/*! + \return tab type +*/ int QtxListResourceEdit::Tab::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Tab::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Tab::retrieve() { } +/*! + Delayed initialization of a widget +*/ void QtxListResourceEdit::Tab::polish() { QFrame::polish(); @@ -336,6 +407,10 @@ void QtxListResourceEdit::Tab::polish() adjustLabels(); } +/*! + Creates new group + \param title - name of group +*/ QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& title, const int ) { Item* i = item( title, id() ); @@ -347,6 +422,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& titl return group; } +/*! + Adjusts sizes of labels +*/ void QtxListResourceEdit::Tab::adjustLabels() { QObjectList* labels = queryList( "QLabel" ); @@ -373,34 +451,48 @@ void QtxListResourceEdit::Tab::adjustLabels() } } -/* - Class: QtxListResourceEdit::Group - Descr: GUI implementation of resources group. +/*! + Constructor */ - QtxListResourceEdit::Group::Group( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : QGroupBox( 2, Qt::Horizontal, title, parent ), Item( edit, pItem ) { } +/*! + Destructor +*/ QtxListResourceEdit::Group::~Group() { } +/*! + \return group type +*/ int QtxListResourceEdit::Group::type() const { return -1; } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Group::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Group::retrieve() { } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::Group::property( const QString& prop ) const { QVariant var; @@ -413,6 +505,11 @@ QVariant QtxListResourceEdit::Group::property( const QString& prop ) const return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::Group::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -435,12 +532,21 @@ void QtxListResourceEdit::Group::setProperty( const QString& name, const QVarian } } +/*! + Sets title of group + \param title - new title of group +*/ void QtxListResourceEdit::Group::setTitle( const QString& title ) { Item::setTitle( title ); QGroupBox::setTitle( title ); } +/*! + Creates new item + \param title - title of new item + \type - type of new item +*/ QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& title, const int type ) { Item* item = 0; @@ -491,11 +597,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& ti return item; } -/* - Class: QtxListResourceEdit::PrefItem - Descr: Base class for preferences items. +/*! + Constructor */ - QtxListResourceEdit::PrefItem::PrefItem( const int type, QtxResourceEdit* edit, Item* pi, QWidget* parent ) : QHBox( parent ), Item( edit, pi ), @@ -504,48 +608,62 @@ myType( type ) setSpacing( 5 ); } +/*! + Destructor +*/ QtxListResourceEdit::PrefItem::~PrefItem() { } +/*! + \return preference item type +*/ int QtxListResourceEdit::PrefItem::type() const { return myType; } +/*! + Doesn't create item, \return 0 by default +*/ QtxResourceEdit::Item* QtxListResourceEdit::PrefItem::createItem( const QString&, const int ) { return 0; } -/* - Class: QtxListResourceEdit::Spacer - Descr: GUI implementation of resources spacer. +/*! + Constructor */ - QtxListResourceEdit::Spacer::Spacer( QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Space, edit, pItem, parent ) { setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::Spacer::~Spacer() { } +/*! + Default empty implementation of resources storing +*/ void QtxListResourceEdit::Spacer::store() { } +/*! + Default empty implementation of resources retrieving +*/ void QtxListResourceEdit::Spacer::retrieve() { } -/* - Class: QtxListResourceEdit::SelectItem - Descr: GUI implementation of resources list item. +/*! + Constructor */ - QtxListResourceEdit::SelectItem::SelectItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Selector, edit, pItem, parent ) @@ -555,10 +673,16 @@ QtxListResourceEdit::SelectItem::SelectItem( const QString& title, QtxResourceEd myList->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::SelectItem::~SelectItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::SelectItem::store() { int idx = myList->currentItem(); @@ -566,6 +690,9 @@ void QtxListResourceEdit::SelectItem::store() setInteger( myIndex[idx] ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::SelectItem::retrieve() { int id = getInteger( -1 ); @@ -580,6 +707,10 @@ void QtxListResourceEdit::SelectItem::retrieve() myList->setCurrentItem( idx ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::SelectItem::property( const QString& name ) const { QVariant val; @@ -600,6 +731,11 @@ QVariant QtxListResourceEdit::SelectItem::property( const QString& name ) const return val; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::SelectItem::setProperty( const QString& name, const QVariant& val ) { if ( name == QString( "strings" ) ) @@ -608,6 +744,10 @@ void QtxListResourceEdit::SelectItem::setProperty( const QString& name, const QV setIndexes( val ); } +/*! + Sets property "strings" - items for selection in combo box + \param var - must be string list: list of items +*/ void QtxListResourceEdit::SelectItem::setStrings( const QVariant& var ) { if ( var.type() != QVariant::StringList ) @@ -616,6 +756,10 @@ void QtxListResourceEdit::SelectItem::setStrings( const QVariant& var ) setStrings( var.toStringList() ); } +/*! + Sets property "indexes" - corresponding indices of items in combo box + \param var - must be list of integer variants: list of indices +*/ void QtxListResourceEdit::SelectItem::setIndexes( const QVariant& var ) { if ( var.type() != QVariant::List ) @@ -631,12 +775,20 @@ void QtxListResourceEdit::SelectItem::setIndexes( const QVariant& var ) setIndexes( lst ); } +/*! + Sets property "strings" - items for selection in combo box + \param lst - list of items +*/ void QtxListResourceEdit::SelectItem::setStrings( const QStringList& lst ) { myList->clear(); myList->insertStringList( lst ); } +/*! + Sets property "indexes" - corresponding indices of items in combo box + \param var - list of indices +*/ void QtxListResourceEdit::SelectItem::setIndexes( const QValueList& lst ) { myIndex.clear(); @@ -646,11 +798,9 @@ void QtxListResourceEdit::SelectItem::setIndexes( const QValueList& lst ) myIndex.insert( idx, *it ); } -/* - Class: QtxListResourceEdit::StateItem - Descr: GUI implementation of resources bool item. +/*! + Constructor */ - QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Bool, edit, pItem, parent ) @@ -659,25 +809,32 @@ QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit myState->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::StateItem::~StateItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::StateItem::store() { setBoolean( myState->isChecked() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::StateItem::retrieve() { myState->setChecked( getBoolean() ); } -/* - Class: QtxListResourceEdit::StringItem - Descr: GUI implementation of resources string item. +/*! + Constructor */ - QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( String, edit, pItem, parent ) @@ -687,25 +844,32 @@ QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEd myString->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::StringItem::~StringItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::StringItem::store() { setString( myString->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::StringItem::retrieve() { myString->setText( getString() ); } -/* - Class: QtxListResourceEdit::IntegerEditItem - Descr: GUI implementation of resources integer item. +/*! + Constructor */ - QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Integer, edit, pItem, parent ) { @@ -715,25 +879,32 @@ QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, Qtx myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::IntegerEditItem::~IntegerEditItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::IntegerEditItem::store() { setString( myInteger->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::IntegerEditItem::retrieve() { myInteger->setText( getString() ); } -/* - Class: QtxListResourceEdit::IntegerSpinItem - Descr: GUI implementation of resources integer item. +/*! + Constructor */ - QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( IntSpin, edit, pItem, parent ) { @@ -742,20 +913,33 @@ QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, Qtx myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::IntegerSpinItem::~IntegerSpinItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::IntegerSpinItem::store() { setInteger( myInteger->value() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::IntegerSpinItem::retrieve() { myInteger->setValue( getInteger() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) const { QVariant var; @@ -774,6 +958,11 @@ QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) c return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -792,11 +981,9 @@ void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, con myInteger->setSuffix( prop.toString() ); } -/* - Class: QtxListResourceEdit::DoubleEditItem - Descr: GUI implementation of resources string item. +/*! + Constructor */ - QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Double, edit, pItem, parent ) @@ -807,25 +994,32 @@ QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxRe myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::DoubleEditItem::~DoubleEditItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DoubleEditItem::store() { setString( myDouble->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DoubleEditItem::retrieve() { myDouble->setText( getString() ); } -/* - Class: QtxListResourceEdit::DoubleSpinItem - Descr: GUI implementation of resources double item. +/*! + Constructor */ - QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( DblSpin, edit, pItem, parent ) @@ -835,20 +1029,33 @@ QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxRe myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::DoubleSpinItem::~DoubleSpinItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DoubleSpinItem::store() { setDouble( myDouble->value() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DoubleSpinItem::retrieve() { myDouble->setValue( getDouble() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) const { QVariant var; @@ -869,6 +1076,11 @@ QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) co return var; } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, const QVariant& var ) { QVariant prop = var; @@ -889,15 +1101,17 @@ void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, cons myDouble->setSuffix( prop.toString() ); } -/* - Class: QtxListResourceEdit::ColorItem - Descr: GUI implementation of resources color item. +/*! + Constructor */ - QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Color, edit, pItem, parent ) { + /*! + \class QtxListResourceEdit::ColorItem::ColorSelector + \brief Label, showing color and allowing to pick color with help of standard color dialog + */ class ColorSelector : public QLabel { public: @@ -931,24 +1145,32 @@ QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit myColor->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); } +/*! + Destructor +*/ QtxListResourceEdit::ColorItem::~ColorItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::ColorItem::store() { setColor( myColor->paletteBackgroundColor() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::ColorItem::retrieve() { myColor->setPaletteBackgroundColor( getColor() ); } -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. +/*! + Constructor */ QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) @@ -974,10 +1196,16 @@ QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit* setProperty( "widget_flags", ( int )All ); } +/*! + Destructor +*/ QtxListResourceEdit::FontItem::~FontItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::FontItem::store() { QFont f( family(), size() ); @@ -989,6 +1217,9 @@ void QtxListResourceEdit::FontItem::store() Item::setFont( f ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::FontItem::retrieve() { QFont f = getFont(); @@ -997,6 +1228,10 @@ void QtxListResourceEdit::FontItem::retrieve() setParams( f.bold(), f.italic(), f.underline() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::FontItem::property( const QString& name ) const { if( name=="system" ) @@ -1066,6 +1301,11 @@ QVariant QtxListResourceEdit::FontItem::property( const QString& name ) const return QVariant(); } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::FontItem::setProperty( const QString& name, const QVariant& value ) { if( name=="system" ) @@ -1117,6 +1357,10 @@ void QtxListResourceEdit::FontItem::setProperty( const QString& name, const QVar myProperties[ name ] = value; } +/*! + Sets family of font + \param f - new family +*/ void QtxListResourceEdit::FontItem::setFamily( const QString& f ) { QString curtext; @@ -1148,11 +1392,18 @@ void QtxListResourceEdit::FontItem::setFamily( const QString& f ) onActivateFamily( idx ); } +/*! + \return family of font +*/ QString QtxListResourceEdit::FontItem::family() const { return myFamilies->currentText(); } +/*! + Sets size of font + \param s - new size of font +*/ void QtxListResourceEdit::FontItem::setSize( const int s ) { int cursize = -1; @@ -1171,6 +1422,9 @@ void QtxListResourceEdit::FontItem::setSize( const int s ) mySizes->setCurrentText( cursize>0 ? QString( "%1" ).arg( cursize ) : "" ); } +/*! + \return size of font +*/ int QtxListResourceEdit::FontItem::size() const { QString s = mySizes->currentText(); @@ -1179,6 +1433,12 @@ int QtxListResourceEdit::FontItem::size() const return ( ok ? pSize : 0 ); } +/*! + Sets font parameters + \param bold - is font bold + \param italic - is font italic + \param underline - is font underlined +*/ void QtxListResourceEdit::FontItem::setParams( const bool bold, const bool italic, const bool underline ) { bool curbold = false, curitalic = false, curunderline = false; @@ -1211,6 +1471,12 @@ void QtxListResourceEdit::FontItem::setParams( const bool bold, const bool itali myUnderline->setChecked( curunderline ); } +/*! + \return font parameters + \param bold - is font bold + \param italic - is font italic + \param underline - is font underlined +*/ void QtxListResourceEdit::FontItem::params( bool& bold, bool& italic, bool& underline ) { bold = myBold->isChecked(); @@ -1218,9 +1484,11 @@ void QtxListResourceEdit::FontItem::params( bool& bold, bool& italic, bool& unde underline = myUnderline->isChecked(); } +/*! + Updates internal selection of font properties +*/ void QtxListResourceEdit::FontItem::internalUpdate() { - //update internal selection of font properties setFamily( family() ); setSize( size() ); bool b1, b2, b3; @@ -1228,6 +1496,9 @@ void QtxListResourceEdit::FontItem::internalUpdate() setParams( b1, b2, b3 ); } +/*! + SLOT: called if family is activated, updates list of possible sizes +*/ void QtxListResourceEdit::FontItem::onActivateFamily( int ) { QVariant sizes = property( QString( "%1:sizes" ).arg( family() ) ); @@ -1248,6 +1519,9 @@ void QtxListResourceEdit::FontItem::onActivateFamily( int ) setSize( s ); } +/*! + SLOT: called if it is necessary to show font preview +*/ void QtxListResourceEdit::FontItem::onPreview() { QFont f( family(), size() ); @@ -1270,11 +1544,8 @@ void QtxListResourceEdit::FontItem::onPreview() - - -/* - Class: QtxListResourceEdit::DirListItem - Descr: +/*! + Constructor */ QtxListResourceEdit::DirListItem::DirListItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) : PrefItem( Font, edit, pItem, parent ) @@ -1282,10 +1553,16 @@ QtxListResourceEdit::DirListItem::DirListItem( const QString& title, QtxResource myDirListEditor = new QtxDirListEditor( this ); } +/*! + Destructor +*/ QtxListResourceEdit::DirListItem::~DirListItem() { } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::DirListItem::store() { QStringList list; @@ -1293,6 +1570,9 @@ void QtxListResourceEdit::DirListItem::store() setString( QString(list.join(";")) ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::DirListItem::retrieve() { myDirListEditor->setPathList(QStringList::split(";", getString())); @@ -1300,9 +1580,8 @@ void QtxListResourceEdit::DirListItem::retrieve() -/* - Class: QtxListResourceEdit::FileItem - Descr: GUI implementation of resources file item. +/*! + Constructor */ QtxListResourceEdit::FileItem::FileItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent ) @@ -1321,22 +1600,35 @@ QtxListResourceEdit::FileItem::FileItem( const QString& title, QtxResourceEdit* connect( myOpenFile, SIGNAL( clicked() ), this, SLOT( onOpenFile() ) ); } +/*! + Destructor +*/ QtxListResourceEdit::FileItem::~FileItem() { if( myFileDlg ) delete myFileDlg; } +/*! + Stores value to resource manager +*/ void QtxListResourceEdit::FileItem::store() { setString( myFile->text() ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::FileItem::retrieve() { myFile->setText( getString() ); } +/*! + \return value of property + \param prop - property name +*/ QVariant QtxListResourceEdit::FileItem::property( const QString& name ) const { if( name=="filter" ) @@ -1351,6 +1643,11 @@ QVariant QtxListResourceEdit::FileItem::property( const QString& name ) const return QVariant(); } +/*! + Sets property value + \param name - name of property + \param var - value of property +*/ void QtxListResourceEdit::FileItem::setProperty( const QString& name, const QVariant& value ) { if( name=="filter" ) @@ -1375,6 +1672,9 @@ void QtxListResourceEdit::FileItem::setProperty( const QString& name, const QVar } } +/*! + SLOT: called if user click "Open File" button, shows dialog +*/ void QtxListResourceEdit::FileItem::onOpenFile() { if( !myFileDlg ) @@ -1393,6 +1693,10 @@ void QtxListResourceEdit::FileItem::onOpenFile() } } +/*! + \return true if file satisfies permissions + \param f - file name +*/ bool QtxListResourceEdit::FileItem::isFileCorrect( const QString& f ) const { bool res = false; @@ -1403,6 +1707,10 @@ bool QtxListResourceEdit::FileItem::isFileCorrect( const QString& f ) const return res; } +/*! + SLOT: called if user has selected file in file dialog, checks file permissions and passes it's name to widget + \param f - file name +*/ void QtxListResourceEdit::FileItem::onFileSelected( const QString& f ) { if( myFileDlg && !isFileCorrect( f ) ) @@ -1410,17 +1718,26 @@ void QtxListResourceEdit::FileItem::onFileSelected( const QString& f ) } - +/*! + Constructor +*/ QtxListResourceEdit::FileItem::FileValidator::FileValidator( FileItem* item, QObject* parent ) : QValidator( parent ), myItem( item ) { } +/*! + Destructor +*/ QtxListResourceEdit::FileItem::FileValidator::~FileValidator() { } +/*! + Check file permissions + \param f - file name +*/ QValidator::State QtxListResourceEdit::FileItem::FileValidator::validate( QString& f, int& ) const { if( myItem && myItem->isFileCorrect( f ) ) diff --git a/src/Qtx/QtxListResourceEdit.h b/src/Qtx/QtxListResourceEdit.h index 19713ca08..7b3aa7ea7 100644 --- a/src/Qtx/QtxListResourceEdit.h +++ b/src/Qtx/QtxListResourceEdit.h @@ -43,9 +43,9 @@ class QtxDblSpinBox; class QtxDirListEditor; -/* - Class: QtxListResourceEdit - Descr: GUI implementation of QtxResourceEdit - manager of resources +/*! + \class QtxListResourceEdit + GUI implementation of QtxResourceEdit - manager of resources */ class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit @@ -101,9 +101,9 @@ private: QWidgetStack* myStack; }; -/* - Class: QtxListResourceEdit::Category - Descr: GUI implementation of 'Category' frame +/*! + \class QtxListResourceEdit::Category + GUI implementation of 'Category' frame */ class QtxListResourceEdit::Category : public QFrame, public Item @@ -132,9 +132,9 @@ private: QTabWidget* myTabs; }; -/* - Class: QtxListResourceEdit::Tab - Descr: GUI implementation of resources tab. +/*! + \class QtxListResourceEdit::Tab + GUI implementation of resources tab. */ class QtxListResourceEdit::Tab : public QFrame, public Item @@ -160,9 +160,9 @@ private: QWidget* myMainFrame; }; -/* - Class: QtxListResourceEdit::Group - Descr: GUI implementation of resources group. +/*! + \class QtxListResourceEdit::Group + GUI implementation of resources group. */ class QtxListResourceEdit::Group : public QGroupBox, public Item @@ -184,9 +184,9 @@ protected: virtual Item* createItem( const QString&, const int ); }; -/* - Class: QtxListResourceEdit::PrefItem - Descr: Base class for preferences items. +/*! + \class QtxListResourceEdit::PrefItem + Base class for preferences items. */ class QtxListResourceEdit::PrefItem : public QHBox, public Item @@ -204,9 +204,9 @@ private: int myType; }; -/* - Class: QtxListResourceEdit::Spacer - Descr: GUI implementation of resources spacer. +/*! + \class QtxListResourceEdit::Spacer + GUI implementation of resources spacer. */ class QtxListResourceEdit::Spacer : public PrefItem @@ -219,9 +219,9 @@ public: virtual void retrieve(); }; -/* - Class: QtxListResourceEdit::SelectItem - Descr: GUI implementation of resources selector item. +/*! + \class QtxListResourceEdit::SelectItem + GUI implementation of resources selector item. */ class QtxListResourceEdit::SelectItem : public PrefItem @@ -248,11 +248,10 @@ private: QMap myIndex; }; -/* - Class: QtxListResourceEdit::StateItem - Descr: GUI implementation of resources bool item. +/*! + \class QtxListResourceEdit::StateItem + GUI implementation of resources bool item. */ - class QtxListResourceEdit::StateItem : public PrefItem { public: @@ -266,9 +265,9 @@ private: QCheckBox* myState; }; -/* - Class: QtxListResourceEdit::StringItem - Descr: GUI implementation of resources string item. +/*! + \class QtxListResourceEdit::StringItem + GUI implementation of resources string item. */ class QtxListResourceEdit::StringItem : public PrefItem @@ -284,9 +283,9 @@ private: QLineEdit* myString; }; -/* - Class: QtxListResourceEdit::IntegerEditItem - Descr: GUI implementation of resources integer item. +/*! + \class QtxListResourceEdit::IntegerEditItem + GUI implementation of resources integer item. */ class QtxListResourceEdit::IntegerEditItem : public PrefItem @@ -302,9 +301,9 @@ private: QLineEdit* myInteger; }; -/* - Class: QtxListResourceEdit::IntegerSpinItem - Descr: GUI implementation of resources integer item. +/*! + \class QtxListResourceEdit::IntegerSpinItem + GUI implementation of resources integer item. */ class QtxListResourceEdit::IntegerSpinItem : public PrefItem @@ -323,9 +322,9 @@ private: QtxIntSpinBox* myInteger; }; -/* - Class: QtxListResourceEdit::DoubleEditItem - Descr: GUI implementation of resources double item. +/*! + \class QtxListResourceEdit::DoubleEditItem + GUI implementation of resources double item. */ class QtxListResourceEdit::DoubleEditItem : public PrefItem @@ -341,9 +340,9 @@ private: QLineEdit* myDouble; }; -/* - Class: QtxListResourceEdit::DoubleSpinItem - Descr: GUI implementation of resources double item. +/*! + \class QtxListResourceEdit::DoubleSpinItem + GUI implementation of resources double item. */ class QtxListResourceEdit::DoubleSpinItem : public PrefItem @@ -362,9 +361,9 @@ private: QtxDblSpinBox* myDouble; }; -/* - Class: QtxListResourceEdit::ColorItem - Descr: GUI implementation of resources color item. +/*! + \class QtxListResourceEdit::ColorItem + GUI implementation of resources color item. */ class QtxListResourceEdit::ColorItem : public PrefItem @@ -380,14 +379,13 @@ private: QWidget* myColor; }; -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. -*/ - class QtxComboBox; class QToolButton; +/*! + \class QtxListResourceEdit::FontItem + GUI implementation of resources font item. +*/ class QtxListResourceEdit::FontItem : public PrefItem { Q_OBJECT @@ -441,10 +439,9 @@ private: /*! - * \brief GUI implementation of resources directory list item. - * - * - */ + \class QtxListResourceEdit + \brief GUI implementation of resources directory list item. +*/ class QtxListResourceEdit::DirListItem : public PrefItem { Q_OBJECT @@ -474,20 +471,25 @@ private: QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories }; -/* - Class: QtxListResourceEdit::FontItem - Descr: GUI implementation of resources font item. -*/ - class QtxComboBox; class QToolButton; class QFileDialog; +/*! + \class QtxListResourceEdit::FontItem + GUI implementation of resources font item. +*/ + class QtxListResourceEdit::FileItem : public PrefItem { Q_OBJECT private: + /*! + \class QtxListResourceEdit::FileItem::FileValidator + custom file validator: checks files on some rights + */ + class FileValidator : public QValidator { public: diff --git a/src/Qtx/QtxListView.cxx b/src/Qtx/QtxListView.cxx index e0ccd4991..83e74d95d 100755 --- a/src/Qtx/QtxListView.cxx +++ b/src/Qtx/QtxListView.cxx @@ -48,6 +48,9 @@ static const char* list_xpm[] = { "................", "................" }; +/*! + Constructor +*/ QtxListView::QtxListView( const int state, QWidget* parent, const char* name, WFlags f ) : QListView( parent, name, f ), myButton( 0 ), @@ -56,6 +59,9 @@ myHeaderState( state ) initialize(); } +/*! + Constructor +*/ QtxListView::QtxListView( QWidget* parent, const char* name, WFlags f ) : QListView( parent, name, f ), myButton( 0 ), @@ -64,6 +70,9 @@ myHeaderState( HeaderAuto ) initialize(); } +/*! + Initialization +*/ void QtxListView::initialize() { if ( myHeaderState == HeaderButton ) @@ -91,10 +100,18 @@ void QtxListView::initialize() connect( header(), SIGNAL( sizeChange( int, int, int ) ), this, SLOT( onHeaderResized() ) ); } +/*! + Destructor +*/ QtxListView::~QtxListView() { } +/*! + Add new column + \param label - column title + \param width - column width +*/ int QtxListView::addColumn( const QString& label, int width ) { int res = QListView::addColumn( label, width ); @@ -104,6 +121,12 @@ int QtxListView::addColumn( const QString& label, int width ) return res; } +/*! + Add new column + \param iconset - column icon + \param label - column title + \param width - column width +*/ int QtxListView::addColumn( const QIconSet& iconset, const QString& label, int width ) { int res = QListView::addColumn( iconset, label, width ); @@ -113,6 +136,10 @@ int QtxListView::addColumn( const QIconSet& iconset, const QString& label, int w return res; } +/*! + Removes column + \param index - column index +*/ void QtxListView::removeColumn( int index ) { QListView::removeColumn( index ); @@ -121,11 +148,19 @@ void QtxListView::removeColumn( int index ) onHeaderResized(); } +/*! + \return true if column is situated in popup for show/hide columns +*/ bool QtxListView::appropriate( const int index ) const { return index >= 0 && index < (int)myAppropriate.count() && myAppropriate[index]; } +/*! + Sets appropriate state: whether column is situated in popup for show/hide columns + \param index - column index + \param on - new state +*/ void QtxListView::setAppropriate( const int index, const bool on ) { if ( index < 0 || index >= (int)myAppropriate.count() ) @@ -134,18 +169,27 @@ void QtxListView::setAppropriate( const int index, const bool on ) myAppropriate[index] = on ? 1 : 0; } +/*! + Resizes list view and header +*/ void QtxListView::resize( int w, int h ) { QListView::resize( w, h ); onHeaderResized(); } +/*! + Shows list view +*/ void QtxListView::show() { QListView::show(); onHeaderResized(); } +/*! + Update on resize contents +*/ void QtxListView::resizeContents( int w, int h ) { /* @@ -162,16 +206,28 @@ void QtxListView::resizeContents( int w, int h ) onHeaderResized(); } +/*! + Shows column + \param ind - column index +*/ void QtxListView::show( int ind ) { setShown( ind, true ); } +/*! + Hides column + \param ind - column index +*/ void QtxListView::hide( int ind ) { setShown( ind, false ); } +/*! + \return true if column is shown + \param ind - column index +*/ bool QtxListView::isShown( int ind ) const { if ( ind>=0 && indcount() ) @@ -180,6 +236,11 @@ bool QtxListView::isShown( int ind ) const return false; } +/*! + Shows/hides column + \param ind - column index + \param sh - new is shown state +*/ void QtxListView::setShown( int ind, bool sh ) { if( ind<0 || ind>=header()->count() || isShown( ind )==sh ) @@ -207,6 +268,11 @@ void QtxListView::setShown( int ind, bool sh ) updateContents(); } +/*! + Changes column width + \param c - column index + \param w - new width +*/ void QtxListView::setColumnWidth( int c, int w ) { if ( myColumns.contains( c ) ) @@ -215,6 +281,9 @@ void QtxListView::setColumnWidth( int c, int w ) QListView::setColumnWidth( c, !myColumns.contains( c ) ? w : 0 ); } +/*! + \return the recommended size for the widget +*/ QSize QtxListView::sizeHint() const { QSize sz = QListView::sizeHint(); @@ -225,6 +294,9 @@ QSize QtxListView::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxListView::minimumSizeHint() const { QSize sz = QListView::minimumSizeHint(); @@ -235,6 +307,9 @@ QSize QtxListView::minimumSizeHint() const return sz; } +/*! + SLOT: called if header is resized +*/ void QtxListView::onHeaderResized() { if ( myHeaderState == HeaderAuto ) @@ -273,6 +348,10 @@ void QtxListView::onHeaderResized() } } +/*! + Shows popup filled with column names to show/hide column + \param x, y - position of popup +*/ void QtxListView::showPopup( const int x, const int y ) { myPopup->clear(); @@ -289,6 +368,9 @@ void QtxListView::showPopup( const int x, const int y ) myPopup->exec( mapToGlobal( QPoint( x, y ) ) ); } +/*! + SLOT: shows popup on button ".." click +*/ void QtxListView::onButtonClicked() { if ( myHeaderState != HeaderButton ) @@ -300,6 +382,10 @@ void QtxListView::onButtonClicked() showPopup( x, y ); } +/*! + SLOT: called on popup action is activated, toggles shown state of column + \param id - column index +*/ void QtxListView::onShowHide( int id ) { //if ( myHeaderState != HeaderButton ) @@ -308,12 +394,18 @@ void QtxListView::onShowHide( int id ) setShown( id, !isShown( id ) ); } +/*! + Receives all resize events sent to the viewport +*/ void QtxListView::viewportResizeEvent( QResizeEvent* e ) { QListView::viewportResizeEvent( e ); onHeaderResized(); } +/*! + Custom event filter, shows popup on right button click +*/ bool QtxListView::eventFilter( QObject* o, QEvent* e ) { if( o==header() && e->type()==QEvent::MouseButtonPress ) diff --git a/src/Qtx/QtxLogoMgr.cxx b/src/Qtx/QtxLogoMgr.cxx index 68811c5f3..5156bc795 100644 --- a/src/Qtx/QtxLogoMgr.cxx +++ b/src/Qtx/QtxLogoMgr.cxx @@ -27,6 +27,9 @@ #include #include +/*! + Constructor +*/ QtxLogoMgr::QtxLogoMgr( QMenuBar* mb ) : QObject( mb ), myMenus( mb ), @@ -34,6 +37,9 @@ myId( 0 ) { } +/*! + Destructor +*/ QtxLogoMgr::~QtxLogoMgr() { } @@ -106,6 +112,9 @@ void QtxLogoMgr::clear() generate(); } +/*! + Inserts logo to menu bar +*/ void QtxLogoMgr::generate() { if ( !menuBar() ) @@ -175,6 +184,10 @@ void QtxLogoMgr::generate() QApplication::postEvent( menuBar()->parentWidget(), new QEvent( QEvent::LayoutHint ) ); } +/*! + \return index of found logo + \param id - logo id +*/ int QtxLogoMgr::find( const QString& id ) const { int idx = -1; diff --git a/src/Qtx/QtxMainWindow.cxx b/src/Qtx/QtxMainWindow.cxx index b8968ef8c..39b385fea 100644 --- a/src/Qtx/QtxMainWindow.cxx +++ b/src/Qtx/QtxMainWindow.cxx @@ -47,6 +47,9 @@ private: QWidget* myWidget; }; +/*! + Constructor +*/ QtxMainWindow::Filter::Filter( QWidget* wid, QtxMainWindow* mw, QObject* parent ) : QObject( parent ), myMain( mw ), @@ -55,10 +58,16 @@ myWidget( wid ) myMain->installEventFilter( this ); }; +/*! + Destructor +*/ QtxMainWindow::Filter::~Filter() { } +/*! + Custom event filter +*/ bool QtxMainWindow::Filter::eventFilter( QObject* o, QEvent* e ) { if ( myMain == o && e->type() == QEvent::ChildRemoved && @@ -73,7 +82,6 @@ bool QtxMainWindow::Filter::eventFilter( QObject* o, QEvent* e ) Descr: Main window with support of dockable menubar/status bar and geometry store/retrieve. */ - QtxMainWindow::QtxMainWindow( QWidget* parent, const char* name, WFlags f ) : QMainWindow( parent, name, f ), myMode( -1 ), @@ -82,17 +90,27 @@ myStatusBar( NULL ) { } +/*! + Destructor +*/ QtxMainWindow::~QtxMainWindow() { setDockableMenuBar( false ); setDockableStatusBar( false ); } +/*! + \return true if menu bar exists +*/ bool QtxMainWindow::isDockableMenuBar() const { return myMenuBar; } +/*! + Creates or deletes menu bar + \param on - if it is true, then to create, otherwise - to delete +*/ void QtxMainWindow::setDockableMenuBar( const bool on ) { if ( isDockableMenuBar() == on ) @@ -134,11 +152,18 @@ void QtxMainWindow::setDockableMenuBar( const bool on ) setUpLayout(); } +/*! + \return true if status bar exists +*/ bool QtxMainWindow::isDockableStatusBar() const { return myStatusBar; } +/*! + Creates or deletes status bar + \param on - if it is true, then to create, otherwise - to delete +*/ void QtxMainWindow::setDockableStatusBar( const bool on ) { if ( isDockableStatusBar() == on ) @@ -185,6 +210,11 @@ void QtxMainWindow::setDockableStatusBar( const bool on ) setUpLayout(); } +/*! + Retrieve the geometry information from the specified resource manager section. + \param resMgr - instance of ersource manager + \param section - section name +*/ void QtxMainWindow::loadGeometry( QtxResourceMgr* resMgr, const QString& section ) { QString sec = section.stripWhiteSpace(); @@ -232,6 +262,9 @@ void QtxMainWindow::loadGeometry( QtxResourceMgr* resMgr, const QString& section myMode = winState; } +/*! + Shows main window +*/ void QtxMainWindow::show() { if ( myMode != -1 ) @@ -242,11 +275,14 @@ void QtxMainWindow::show() QMainWindow::show(); } +/*! + Handler of custom events +*/ void QtxMainWindow::customEvent( QCustomEvent* e ) { QMainWindow::customEvent( e ); - int mode = (int)e->data(); + size_t mode = size_t(e->data()); switch ( mode ) { case WS_Normal: @@ -261,6 +297,12 @@ void QtxMainWindow::customEvent( QCustomEvent* e ) } } +/*! + \return relative co-ordinate by two points + \param type - type of result: WP_Center (center), WP_Left (left), WP_Right (right) + \param wh - left point + \param WH - right point +*/ int QtxMainWindow::relativeCoordinate( const int type, const int WH, const int wh ) const { int res = 0; @@ -279,6 +321,11 @@ int QtxMainWindow::relativeCoordinate( const int type, const int WH, const int w return res; } +/*! + Store the geometry information into the specified resource manager section. + \param resMgr - instance of ersource manager + \param section - section name +*/ void QtxMainWindow::saveGeometry( QtxResourceMgr* resMgr, const QString& section ) const { QString sec = section.stripWhiteSpace(); @@ -299,16 +346,28 @@ void QtxMainWindow::saveGeometry( QtxResourceMgr* resMgr, const QString& section resMgr->setValue( sec, "state", winState ); } +/*! + Custom event filter +*/ bool QtxMainWindow::eventFilter( QObject* o, QEvent* e ) { return QMainWindow::eventFilter( o, e ); } +/*! + Controls whether or not the dw dock window's caption should appear + as a menu item on the dock window menu that lists the dock windows. + \param dw - window + \param a - if it is true, then it appears in menu +*/ void QtxMainWindow::setAppropriate( QDockWindow* dw, bool a ) { QMainWindow::setAppropriate( dw, myStatusBar != dw && myMenuBar != dw && a ); } +/*! + Sets up layout +*/ void QtxMainWindow::setUpLayout() { QMainWindow::setUpLayout(); @@ -317,6 +376,9 @@ void QtxMainWindow::setUpLayout() layout()->setMenuBar( 0 ); } +/*! + SLOT: called on object destroyed, clears internal fields in case of deletion of menu bar or status bar +*/ void QtxMainWindow::onDestroyed( QObject* obj ) { QObject* o = 0; @@ -338,6 +400,10 @@ void QtxMainWindow::onDestroyed( QObject* obj ) } } +/*! + \return flag of window state by it's name + \param str - name of flag +*/ int QtxMainWindow::windowState( const QString& str ) const { static QMap winStateMap; @@ -363,6 +429,10 @@ int QtxMainWindow::windowState( const QString& str ) const return res; } +/*! + \return flag of position by it's name + \param str - name of position +*/ int QtxMainWindow::windowPosition( const QString& str ) const { static QMap winPosMap; diff --git a/src/Qtx/QtxMenuButton.cxx b/src/Qtx/QtxMenuButton.cxx index 88bfc1061..ef4ac5253 100755 --- a/src/Qtx/QtxMenuButton.cxx +++ b/src/Qtx/QtxMenuButton.cxx @@ -39,6 +39,11 @@ private: QtxMenuButton* myMenuButton; }; +/*! + Sets the widget's minimum size + \param w - width + \param h - height +*/ void QtxMenuButton::PopupMenu::setMinimumSize( int w, int h ) { if ( myMenuButton->isAlignWidth() && @@ -49,6 +54,12 @@ void QtxMenuButton::PopupMenu::setMinimumSize( int w, int h ) } +/*! + Constructor + \param pos - position + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( int pos, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( pos ) @@ -56,6 +67,12 @@ myPos( pos ) initialize(); } +/*! + Constructor + \param text - button text + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( const QString& text, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( Bottom ) @@ -64,6 +81,13 @@ myPos( Bottom ) initialize(); } +/*! + Constructor + \param pos - position + \param text - button text + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( int pos, const QString& text, QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( pos ) @@ -72,6 +96,11 @@ myPos( pos ) initialize(); } +/*! + Constructor + \param parent - parent widget + \param name - name +*/ QtxMenuButton::QtxMenuButton( QWidget* parent, const char* name ) : QPushButton( parent, name ), myPos( Bottom ) @@ -79,10 +108,16 @@ myPos( Bottom ) initialize(); } +/*! + Destructor +*/ QtxMenuButton::~QtxMenuButton() { } +/*! + Initialization +*/ void QtxMenuButton::initialize() { myArrow = true; @@ -96,21 +131,34 @@ void QtxMenuButton::initialize() connect( this, SIGNAL( clicked() ), this, SLOT( onShowPopup() ) ); } +/*! + \return position +*/ int QtxMenuButton::position() const { return myPos; } +/*! + \return true if align is enabled +*/ bool QtxMenuButton::isAlignWidth() const { return myAlign; } +/*! + \return true if arrow is shown +*/ bool QtxMenuButton::isArrowEnabled() const { return myArrow; } +/*! + Changes position + \param pos - new position +*/ void QtxMenuButton::setPosition( const int pos ) { if ( myPos == pos ) @@ -121,6 +169,10 @@ void QtxMenuButton::setPosition( const int pos ) onShowPopup(); } +/*! + Changes align state + \param on - new align state +*/ void QtxMenuButton::setAlignWidth( const bool on ) { if ( myAlign == on ) @@ -130,6 +182,10 @@ void QtxMenuButton::setAlignWidth( const bool on ) updateGeometry(); } +/*! + Enables/disable arrow + \param on - new enabled state +*/ void QtxMenuButton::setArrowEnabled( const bool on ) { if ( myArrow == on ) @@ -139,6 +195,9 @@ void QtxMenuButton::setArrowEnabled( const bool on ) repaint(); } +/*! + Clears popup +*/ void QtxMenuButton::clear() { if ( myPopup ) @@ -147,13 +206,21 @@ void QtxMenuButton::clear() updateGeometry(); } +/*! + Removes item from popup + \param id - item id +*/ void QtxMenuButton::removeItem( int id ) { if ( myPopup ) - removeItem( id ); + myPopup->removeItem( id ); updateGeometry(); } +/*! + Inserts separator into popup + \param id - position +*/ int QtxMenuButton::insertSeparator( int id ) { int res = -1; @@ -162,6 +229,12 @@ int QtxMenuButton::insertSeparator( int id ) return res; } +/*! + Inserts item into popup + \param t - menu text + \param id - item id + \param index - position +*/ int QtxMenuButton::insertItem( const QString& t, int id, int index ) { int resId = -1; @@ -174,6 +247,13 @@ int QtxMenuButton::insertItem( const QString& t, int id, int index ) return resId; } +/*! + Inserts item into popup + \param is - icons + \param t - menu text + \param id - item id + \param index - position +*/ int QtxMenuButton::insertItem( const QIconSet& is, const QString& t, int id, int index ) { int resId = -1; @@ -186,6 +266,9 @@ int QtxMenuButton::insertItem( const QIconSet& is, const QString& t, int id, int return resId; } +/*! + SLOT: calls when button is clicked, shows popup +*/ void QtxMenuButton::onShowPopup() { if ( !myPopup || !myPopup->count() ) @@ -224,6 +307,9 @@ void QtxMenuButton::onShowPopup() myPopup->exec( QPoint( x, y ) ); } +/*! + Custom event handler +*/ bool QtxMenuButton::event( QEvent* e ) { if ( e->type() == QEvent::MouseButtonPress || @@ -237,6 +323,9 @@ bool QtxMenuButton::event( QEvent* e ) return QPushButton::event( e ); } +/*! + \return the recommended size for the widget +*/ QSize QtxMenuButton::sizeHint() const { QSize sz = QPushButton::sizeHint(); @@ -246,6 +335,9 @@ QSize QtxMenuButton::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxMenuButton::minimumSizeHint() const { QSize sz = QPushButton::minimumSizeHint(); @@ -255,6 +347,9 @@ QSize QtxMenuButton::minimumSizeHint() const return sz; } +/*! + Custom resize event handler +*/ void QtxMenuButton::resizeEvent( QResizeEvent* re ) { if ( re ) @@ -264,11 +359,17 @@ void QtxMenuButton::resizeEvent( QResizeEvent* re ) myPopup->setMinimumWidth( re ? re->size().width() : width() ); } +/*! + \return corresponding popup +*/ QPopupMenu* QtxMenuButton::popup() const { return myPopup; } +/*! + Draws label +*/ void QtxMenuButton::drawButtonLabel( QPainter* p ) { QPushButton::drawButtonLabel( p ); diff --git a/src/Qtx/QtxOperations.cxx b/src/Qtx/QtxOperations.cxx index 0034d41e4..5e4517428 100644 --- a/src/Qtx/QtxOperations.cxx +++ b/src/Qtx/QtxOperations.cxx @@ -19,26 +19,23 @@ #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; diff --git a/src/Qtx/QtxOperations.h b/src/Qtx/QtxOperations.h index 9dae0b336..a4a8524a9 100644 --- a/src/Qtx/QtxOperations.h +++ b/src/Qtx/QtxOperations.h @@ -25,10 +25,6 @@ #include "Qtx.h" #include "QtxParser.h" -//================================================================ -// Class : -// Purpose : -//================================================================ class QTX_EXPORT QtxOperations { public: diff --git a/src/Qtx/QtxParser.cxx b/src/Qtx/QtxParser.cxx index 105ddb7a5..b71f26bed 100644 --- a/src/Qtx/QtxParser.cxx +++ b/src/Qtx/QtxParser.cxx @@ -20,12 +20,10 @@ #include "QtxParser.h" #include "QtxOperations.h" -//================================================================ -// Function : -// Purpose : -//================================================================ -QtxParser::QtxParser( QtxOperations* operations, - const QString& expr ) +/*! + Constructor +*/ +QtxParser::QtxParser( QtxOperations* operations, const QString& expr ) : myOperations( operations ) { if( myOperations ) @@ -37,18 +35,22 @@ QtxParser::QtxParser( QtxOperations* operations, setLastError( OperationsNull ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxParser::~QtxParser() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Search elements of list as substrings starting on 'offset' + \returns the least position of substrings inside string + \param list - list of substrings + \param str - string where search + \param offset - starting index for search + \param matchLen - the length of appropriate substring + \param listind - list index of appropriate substring +*/ int QtxParser::search( const QStringList& list, const QString& str, int offset, int& matchLen, int& listind ) { @@ -71,19 +73,22 @@ int QtxParser::search( const QStringList& list, const QString& str, int offset, return min; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return substring + \param str - string + \param pos - start position of substring + \param len - length of substring +*/ QString QtxParser::note( const QString& str, int pos, int len ) { return str.mid( pos, len ).stripWhiteSpace(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + First step of parsing: finding tokens, determining its types and creating of unsorted pseudo-postfix (with brackets) + \param expr - string expression + \param post - postfix to be created +*/ bool QtxParser::prepare( const QString& expr, Postfix& post ) { int pos = 0, len = expr.length(); @@ -225,10 +230,10 @@ bool QtxParser::prepare( const QString& expr, Postfix& post ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Second step of parsing: determining types of operations + \param post - unsorted postfix +*/ bool QtxParser::setOperationTypes( Postfix& post ) { Postfix::iterator aStart = post.begin(), @@ -279,10 +284,12 @@ bool QtxParser::setOperationTypes( Postfix& post ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return how many global brackets there is (for example '((2+3))' has 2 global brackets) + \param post - postfix to be checked + \param f - start index to search + \param l - last index to search +*/ int QtxParser::globalBrackets( const QtxParser::Postfix& post, int f, int l ) { int i, @@ -317,10 +324,15 @@ int QtxParser::globalBrackets( const QtxParser::Postfix& post, int f, int l ) return br+min_br_num; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Third step of parsing: sorting of postfix in order to convert it to real postfix + \param post - source postfix + \param res - destination postfix + \param anOpen - list of open brackets + \param aClose - list of close brackets + \param f - start index of postfix to sorting + \param l - last index of postfix to sorting +*/ bool QtxParser::sort( const Postfix& post, Postfix& res, const QStringList& anOpen, const QStringList& aClose, @@ -478,10 +490,10 @@ bool QtxParser::sort( const Postfix& post, Postfix& res, return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Build posfix by expression + \param expr - string expression +*/ bool QtxParser::parse( const QString& expr ) { myPost.clear(); @@ -506,10 +518,12 @@ bool QtxParser::parse( const QString& expr ) sort( p, myPost, opens, closes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculate operation + \param op - operation name + \param v1 - first argument (it is not valid for unary prefix operations and it is used to store result) + \param v2 - second argument (it is not valid for unary postfix operations) +*/ bool QtxParser::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) { Error err = myOperations->isValid( op, v1.type(), v2.type() ); @@ -521,10 +535,10 @@ bool QtxParser::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) return lastError()==OK; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates expression without postfix rebuilding + \return QtxValue as result (it is invalid if there were errors during calculation) +*/ QtxValue QtxParser::calculate() { setLastError( OK ); @@ -639,47 +653,47 @@ QtxValue QtxParser::calculate() return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Change expression, rebuild postfix and calculate it + \return QtxValue as result (it is invalid if there were errors during calculation) +*/ QtxValue QtxParser::calculate( const QString& expr ) { setExpr( expr ); return calculate(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Change expression and rebuild postfix +*/ bool QtxParser::setExpr( const QString& expr ) { return parse( expr ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true, if parser contain parameter + \param name - name of parameter +*/ bool QtxParser::has( const QString& name ) const { return myParameters.contains( name.stripWhiteSpace() ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets parameter value + \param name - name of parameter + \param value - value of parameter +*/ void QtxParser::set( const QString& name, const QtxValue& value ) { myParameters[ name.stripWhiteSpace() ] = value; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes parameter + \param name - name of parameter +*/ bool QtxParser::remove( const QString& name ) { QString sname = name.stripWhiteSpace(); @@ -689,10 +703,10 @@ bool QtxParser::remove( const QString& name ) return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return value of parameter (result is invalid if there is no such parameter) + \param name - name of parameter +*/ QtxValue QtxParser::value( const QString& name ) const { QString sname = name.stripWhiteSpace(); @@ -702,10 +716,11 @@ QtxValue QtxParser::value( const QString& name ) const return QtxValue(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Searches first parameter with assigned invalid QtxValue + \return true if it is found + \param name - variable to return name of parameter +*/ bool QtxParser::firstInvalid( QString& name ) const { QMap< QString, QtxValue >::const_iterator anIt = myParameters.begin(), @@ -719,10 +734,9 @@ bool QtxParser::firstInvalid( QString& name ) const return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes all parameters with assigned invalid QtxValues +*/ void QtxParser::removeInvalids() { QStringList toDelete; @@ -738,37 +752,34 @@ void QtxParser::removeInvalids() myParameters.remove( *aLIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return last error occured during parsing +*/ QtxParser::Error QtxParser::lastError() const { return myLastError; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets last error occured during parsing (for internal using only) +*/ void QtxParser::setLastError( QtxParser::Error err ) { myLastError = err; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string dump of internal parser postfix +*/ QString QtxParser::dump() const { return dump( myPost ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string dump of postfix + \param post - postfix to be dumped +*/ QString QtxParser::dump( const Postfix& post ) const { QString res; @@ -798,10 +809,10 @@ QString QtxParser::dump( const Postfix& post ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with names of parameters + \param list - list to be filled +*/ void QtxParser::paramsList( QStringList& list ) { PostfixIterator anIt = myPost.begin(), @@ -815,19 +826,18 @@ void QtxParser::paramsList( QStringList& list ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes all parameters +*/ void QtxParser::clear() { myParameters.clear(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return string representation for list of QtxValues + \param list - list to be converted +*/ QString QtxParser::toString( const QValueList< QtxValue >& list ) { QValueList< QtxValue >::const_iterator anIt = list.begin(), diff --git a/src/Qtx/QtxParser.h b/src/Qtx/QtxParser.h index 737fc96ce..25b5f5511 100644 --- a/src/Qtx/QtxParser.h +++ b/src/Qtx/QtxParser.h @@ -33,21 +33,44 @@ class QtxOperations; +/*! \var QtxValue + \brief Alias for QVariant +*/ typedef QVariant QtxValue; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxParser + + This class allows to calculate values of expressions using different set of operations. + It is provided some of standard set of operations (arithmetics, logic, strings, etc - in QtxStdOperations.h). + This parser allows to use parameters with help of methods has(), set(), remove(), value(). It uses + postfix representation of expressions and uses class QtxOperations in order to make certain operation + Every instance of parser contains only one postfix, so that if expression has been changed, then postfix + must be rebuilt. In order to increase performance of frequent calculation for many of expressions it is + recommended to use different instances of parser for expressions + +*/ class QTX_EXPORT QtxParser { public: + /*! + \enum Error + \brief Errors during parsing + */ typedef enum { - OK, OperandsNotMatch, InvalidResult, InvalidOperation, - OperationsNull, InvalidToken, CloseExpected, ExcessClose, - BracketsNotMatch, StackUnderflow, ExcessData + OK, /*! \var All right */ + OperandsNotMatch, /*! \var Types of arguments are invalid for this operation */ + InvalidResult, /*! \var Operation cannot find result (for example, division by zero) */ + InvalidOperation, /*! \var Name of operation is unknown */ + OperationsNull, /*! \var Internal operations pointer of parser is null */ + InvalidToken, /*! \var It isn't operation, parameter of value */ + CloseExpected, /*! \var Close bracket is expected */ + ExcessClose, /*! \var The one of close bracket is excess */ + BracketsNotMatch, /*! \var Last open and this close bracket are different, for example [) */ + StackUnderflow, /*! \var There is no arguments in stack for operation */ + ExcessData /*! \var The parsing is finished, but there is more then one value in stack */ } Error; @@ -74,8 +97,23 @@ public: static QString toString( const QValueList< QtxValue >& ); protected: - typedef enum { Value, Param, Open, Close, Pre, Post, Binary } PostfixItemType; + /*! + \enum PostfixItemType + \brief Types of postfix representation elements + */ + typedef enum + { + Value, /*! \var Value (number, string, etc.)*/ + Param, /*! \var Parameter */ + Open, /*! \var Open bracket */ + Close, /*! \var Close bracket */ + Pre, /*! \var Unary prefix operation */ + Post, /*! \var Unary postfix operation */ + Binary /*! \var Binary operation */ + + } PostfixItemType; + /*! \var postfix representation element */ typedef struct { QtxValue myValue; @@ -83,7 +121,10 @@ protected: } PostfixItem; + /*! \var postfix representation */ typedef QValueList< PostfixItem > Postfix; + + /*! \var postfix representation iterator */ typedef Postfix::const_iterator PostfixIterator; protected: @@ -105,6 +146,7 @@ protected: static int globalBrackets( const Postfix&, int, int ); private: + /*! \var stack of QtxValues */ typedef QValueStack < QtxValue > QtxValueStack; private: diff --git a/src/Qtx/QtxPathDialog.cxx b/src/Qtx/QtxPathDialog.cxx index 55df5d781..260c1d090 100755 --- a/src/Qtx/QtxPathDialog.cxx +++ b/src/Qtx/QtxPathDialog.cxx @@ -60,11 +60,9 @@ static const char* open_icon[] = { " " }; -//================================================================ -// Function : QtxPathDialog -// Purpose : Constructor. -//================================================================ - +/*! + Constructor. +*/ QtxPathDialog::QtxPathDialog( const bool import, QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f ) : QtxDialog( parent, 0, modal, resize, buttons, f ), myDefault( -1 ), @@ -85,11 +83,9 @@ myOptionsFrame( 0 ) setFocusProxy( le ); } -//================================================================ -// Function : QtxPathDialog -// Purpose : Constructor. -//================================================================ - +/*! + Constructor. +*/ QtxPathDialog::QtxPathDialog( QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f ) : QtxDialog( parent, 0, modal, resize, buttons, f ), myDefault( -1 ), @@ -99,60 +95,51 @@ myOptionsFrame( 0 ) initialize(); } -//================================================================ -// Function : ~QtxPathDialog -// Purpose : Destructor. -//================================================================ - +/*! + Destructor. +*/ QtxPathDialog::~QtxPathDialog() { } -//================================================================ -// Function : fileName -// Purpose : -//================================================================ - +/*! + \return file name +*/ QString QtxPathDialog::fileName() const { return fileName( defaultEntry() ); } -//================================================================ -// Function : setFileName -// Purpose : -//================================================================ - +/*! + Sets file name + \param txt - new file name + \param autoExtension - auto extension determination by file +*/ void QtxPathDialog::setFileName( const QString& txt, const bool autoExtension ) { setFileName( defaultEntry(), txt, autoExtension ); } -//================================================================ -// Function : filter -// Purpose : -//================================================================ - +/*! + \return filter +*/ QString QtxPathDialog::filter() const { return myFilter; } -//================================================================ -// Function : setFilter -// Purpose : -//================================================================ - +/*! + Changes filter (filter is a list of masks, separated by ';;') + \param fltr - new filter +*/ void QtxPathDialog::setFilter( const QString& fltr ) { myFilter = fltr; } -//================================================================ -// Function : show -// Purpose : -//================================================================ - +/*! + Shows path dialog +*/ void QtxPathDialog::show() { if ( hasVisibleChildren( myEntriesFrame ) ) @@ -168,11 +155,9 @@ void QtxPathDialog::show() QtxDialog::show(); } -//================================================================ -// Function : onBrowse -// Purpose : -//================================================================ - +/*! + SLOT: called if user click button to show standard file dialog +*/ void QtxPathDialog::onBrowse() { const QObject* obj = sender(); @@ -247,11 +232,9 @@ void QtxPathDialog::onBrowse() emit fileNameChanged( fName ); } -//================================================================ -// Function : onReturnPressed -// Purpose : -//================================================================ - +/*! + SLOT: called if user presses RETURN in line edit +*/ void QtxPathDialog::onReturnPressed() { const QObject* obj = sender(); @@ -270,31 +253,25 @@ void QtxPathDialog::onReturnPressed() emit fileNameChanged( fileName() ); } -//================================================================ -// Function : onTextChanged -// Purpose : -//================================================================ - +/*! + SLOT: called if text in line edit is changed +*/ void QtxPathDialog::onTextChanged( const QString& ) { validate(); } -//================================================================ -// Function : validate -// Purpose : -//================================================================ - +/*! + Checks validity of text and according to it enables/disables OK, Yes buttons +*/ void QtxPathDialog::validate() { setButtonEnabled( isValid(), OK | Yes ); } -//================================================================ -// Function : isValid -// Purpose : -//================================================================ - +/*! + \return true if selected file is valid +*/ bool QtxPathDialog::isValid() { bool ok = true; @@ -305,11 +282,9 @@ bool QtxPathDialog::isValid() return ok; } -//================================================================ -// Function : acceptData -// Purpose : -//================================================================ - +/*! + \return true entered data is accepted +*/ bool QtxPathDialog::acceptData() const { bool ok = true; @@ -383,30 +358,25 @@ bool QtxPathDialog::acceptData() const return ok; } -//================================================================ -// Function : fileNameChanged -// Purpose : -//================================================================ - +/*! + Some custom activity on file name changing (must be redefined, default implementation is empty +*/ void QtxPathDialog::fileNameChanged( int, QString ) { } -//================================================================ -// Function : optionsFrame -// Purpose : -//================================================================ - +/*! + \return frame with options +*/ QFrame* QtxPathDialog::optionsFrame() { return myOptionsFrame; } -//================================================================ -// Function : getFileName -// Purpose : -//================================================================ - +/*! + \return file name + \param id - id of file entry +*/ QString QtxPathDialog::fileName( const int id ) const { QString res; @@ -416,11 +386,12 @@ QString QtxPathDialog::fileName( const int id ) const return res; } -//================================================================ -// Function : setFileName -// Purpose : -//================================================================ - +/*! + Change file name of file entry + \param id - id of file entry + \param txt - new file name + \param autoExt - assign extension automatically +*/ void QtxPathDialog::setFileName( const int id, const QString& txt, const bool autoExt ) { int mode; @@ -435,11 +406,10 @@ void QtxPathDialog::setFileName( const int id, const QString& txt, const bool au } } -//================================================================ -// Function : fileEntry -// Purpose : -//================================================================ - +/*! + \return line edit of file entry + \param id - id of file entry +*/ QLineEdit* QtxPathDialog::fileEntry( const int id ) const { QLineEdit* le = 0; @@ -449,11 +419,11 @@ QLineEdit* QtxPathDialog::fileEntry( const int id ) const return le; } -//================================================================ -// Function : fileEntry -// Purpose : -//================================================================ - +/*! + \return line edit and mode of file entry + \param id - id of file entry + \param theMode - for return mode of file entry +*/ QLineEdit* QtxPathDialog::fileEntry( const int theId, int& theMode ) const { QLineEdit* le = 0; @@ -466,11 +436,13 @@ QLineEdit* QtxPathDialog::fileEntry( const int theId, int& theMode ) const return le; } -//================================================================ -// Function : createFileEntry -// Purpose : -//================================================================ - +/*! + Creates file entry + \return id of just created file entry + \param lab - title of entry + \param mode - mode of entry + \param id - proposed id (if it is -1, then id will be chosen automatically) +*/ int QtxPathDialog::createFileEntry( const QString& lab, const int mode, const int id ) { int num = id; @@ -500,31 +472,26 @@ int QtxPathDialog::createFileEntry( const QString& lab, const int mode, const in return num; } -//================================================================ -// Function : defaultEntry -// Purpose : -//================================================================ - +/*! + \return id of default entry +*/ int QtxPathDialog::defaultEntry() const { return myDefault; } -//================================================================ -// Function : setDefaultEntry -// Purpose : -//================================================================ - +/*! + Change default entry id + \param id - new default entry id +*/ void QtxPathDialog::setDefaultEntry( const int id ) { myDefault = id; } -//================================================================ -// Function : initialize -// Purpose : -//================================================================ - +/*! + Initialize dialog layout +*/ void QtxPathDialog::initialize() { setCaption( tr( "File dialog" ) ); @@ -539,11 +506,9 @@ void QtxPathDialog::initialize() myOptionsFrame = new QFrame( mainGroup ); } -//================================================================ -// Function : prepareFilters -// Purpose : -//================================================================ - +/*! + \return list of filters +*/ QStringList QtxPathDialog::prepareFilters() const { QStringList res; @@ -564,11 +529,9 @@ QStringList QtxPathDialog::prepareFilters() const return res; } -//================================================================ -// Function : filterWildCards -// Purpose : -//================================================================ - +/*! + \return list of filters with filtered wild cards +*/ QStringList QtxPathDialog::filterWildCards( const QString& theFilter ) const { QStringList res; @@ -586,11 +549,11 @@ QStringList QtxPathDialog::filterWildCards( const QString& theFilter ) const return res; } -//================================================================ -// Function : autoExtension -// Purpose : -//================================================================ - +/*! + \return file name with assigned extension + \param theFileName - source file name + \param theFilter - list of filters +*/ QString QtxPathDialog::autoExtension( const QString& theFileName, const QString& theFilter ) const { QString fName = theFileName; @@ -620,11 +583,10 @@ QString QtxPathDialog::autoExtension( const QString& theFileName, const QString& return fName; } -//================================================================ -// Function : hasVisibleChildren -// Purpose : -//================================================================ - +/*! + \return true if widget has visible children + \param wid - widget +*/ bool QtxPathDialog::hasVisibleChildren( QWidget* wid ) const { bool res = false; diff --git a/src/Qtx/QtxPopupMenu.cxx b/src/Qtx/QtxPopupMenu.cxx index 5da53d034..f46537eac 100644 --- a/src/Qtx/QtxPopupMenu.cxx +++ b/src/Qtx/QtxPopupMenu.cxx @@ -45,6 +45,9 @@ private: int myAlign; }; +/*! + Constructor +*/ QtxPopupMenu::TitleMenuItem::TitleMenuItem( const QString& txt, const QIconSet& ico, const int align ) : QCustomMenuItem(), myText( txt ), @@ -53,26 +56,42 @@ myAlign( align ) { } +/*! + Destructor +*/ QtxPopupMenu::TitleMenuItem::~TitleMenuItem() { } +/*! + \return TRUE if this item wants to span the entire popup menu width +*/ bool QtxPopupMenu::TitleMenuItem::fullSpan() const { return true; } +/*! + \return TRUE if this item is just a separator +*/ bool QtxPopupMenu::TitleMenuItem::isSeparator() const { return false; } +/*! + Changes font of item + \param font - new font +*/ void QtxPopupMenu::TitleMenuItem::setFont( const QFont& font ) { myFont = font; myFont.setBold( true ); } +/*! + Draws item +*/ void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg, bool act, bool enabled, int x, int y, int w, int h ) { @@ -119,6 +138,9 @@ void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg, p->setFont( f ); } +/*! + \return the recommended size for item +*/ QSize QtxPopupMenu::TitleMenuItem::sizeHint() { QFontMetrics fM( myFont ); @@ -132,10 +154,8 @@ QSize QtxPopupMenu::TitleMenuItem::sizeHint() } /*! - Class: QtxPopupMenu [Public] - Descr: Popup menu item with title. + Constructor */ - QtxPopupMenu::QtxPopupMenu( QWidget* parent, const char* name ) : QPopupMenu( parent, name ), myId( -1 ), @@ -144,30 +164,49 @@ myAlign( AlignCenter ) { } +/*! + Destructor +*/ QtxPopupMenu::~QtxPopupMenu() { } +/*! + \return popup menu title +*/ QString QtxPopupMenu::titleText() const { return myText; } +/*! + \return popup menu icon +*/ QIconSet QtxPopupMenu::titleIcon() const { return myIcon; } +/*! + \return popup menu title policy +*/ int QtxPopupMenu::titlePolicy() const { return myPolicy; } +/*! + \return popup menu title alignment +*/ int QtxPopupMenu::titleAlignment() const { return myAlign; } +/*! + Changes title text + \param txt - new text +*/ void QtxPopupMenu::setTitleText( const QString& txt ) { if ( myText == txt ) @@ -178,6 +217,10 @@ void QtxPopupMenu::setTitleText( const QString& txt ) updateTitle(); } +/*! + Changes title icon + \param icon - new icon +*/ void QtxPopupMenu::setTitleIcon( const QIconSet& ico ) { myIcon = ico; @@ -185,6 +228,10 @@ void QtxPopupMenu::setTitleIcon( const QIconSet& ico ) updateTitle(); } +/*! + Changes title policy + \param p - new policy +*/ void QtxPopupMenu::setTitlePolicy( const int p ) { if ( myPolicy == p ) @@ -195,6 +242,10 @@ void QtxPopupMenu::setTitlePolicy( const int p ) updateTitle(); } +/*! + Changes title alignment + \param a - new alignment +*/ void QtxPopupMenu::setTitleAlignment( const int a ) { if ( myAlign == a ) @@ -205,6 +256,9 @@ void QtxPopupMenu::setTitleAlignment( const int a ) updateTitle(); } +/*! + Shows menu +*/ void QtxPopupMenu::show() { insertTitle(); @@ -212,6 +266,9 @@ void QtxPopupMenu::show() QPopupMenu::show(); } +/*! + Hides menu +*/ void QtxPopupMenu::hide() { QPopupMenu::hide(); @@ -219,12 +276,21 @@ void QtxPopupMenu::hide() removeTitle(); } +/*! + Creates title item + \param txt - item text + \param icon - item icon + \param align - item alignment +*/ QtxPopupMenu::TitleMenuItem* QtxPopupMenu::createTitleItem( const QString& txt, const QIconSet& ico, const int align ) const { return new TitleMenuItem( txt, ico, align ); } +/*! + Inserts title item to popup menu +*/ void QtxPopupMenu::insertTitle() { if ( myId != -1 || titlePolicy() == TitleOff || @@ -237,6 +303,9 @@ void QtxPopupMenu::insertTitle() setItemEnabled( myId, false ); } +/*! + Removes title item from popup menu +*/ void QtxPopupMenu::removeTitle() { if ( myId == -1 ) @@ -246,6 +315,9 @@ void QtxPopupMenu::removeTitle() myId = -1; } +/*! + Updates title item +*/ void QtxPopupMenu::updateTitle() { if ( myId != -1 ) diff --git a/src/Qtx/QtxPopupMgr.cxx b/src/Qtx/QtxPopupMgr.cxx index f01716c16..37d0cbbc1 100644 --- a/src/Qtx/QtxPopupMgr.cxx +++ b/src/Qtx/QtxPopupMgr.cxx @@ -25,10 +25,13 @@ #include #include -//================================================================ -// 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 ("$") +*/ QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const { if( str==selCountParam() ) @@ -54,37 +57,33 @@ QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const return QtxValue(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return symbole to detect name of parameter list +*/ QChar QtxPopupMgr::Selection::equality() const { return defEquality(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return name of parameter for count of selected objects +*/ QString QtxPopupMgr::Selection::selCountParam() const { return defSelCountParam(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return default symbole to detect name of parameter list +*/ QChar QtxPopupMgr::Selection::defEquality() { return '$'; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return default name of parameter for count of selected objects +*/ QString QtxPopupMgr::Selection::defSelCountParam() { return "selcount"; @@ -92,12 +91,15 @@ QString QtxPopupMgr::Selection::defSelCountParam() +/*! + \class QtxCacheSelection + Special selection class, that caches parameter values. + Every parameter during popup building is calculated only one time, + although it may be included to many rules. After calculation + it is stored in internal map +*/ -//================================================================ -// Class : -// Purpose : -//================================================================ class QtxCacheSelection : public QtxPopupMgr::Selection { public: @@ -115,36 +117,37 @@ private: CacheMap myParamCache; }; -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param sel - base selection used for parameter calculation +*/ QtxCacheSelection::QtxCacheSelection( QtxPopupMgr::Selection* sel ) : mySel( sel ) { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxCacheSelection::~QtxCacheSelection() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return count of selected objects +*/ int QtxCacheSelection::count() const { return mySel ? mySel->count() : 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates and caches parameters. + Already calculated parameters are returned without calculation + \return parameter value + \param i - index of selected object + \param name - name of parameter +*/ QtxValue QtxCacheSelection::param( const int i, const QString& name ) const { QString param_name = name + "#####" + QString::number( i ); @@ -161,10 +164,12 @@ QtxValue QtxCacheSelection::param( const int i, const QString& name ) const } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates and caches global parameters. + Already calculated parameters are returned without calculation + \return parameter value + \param name - name of parameter +*/ QtxValue QtxCacheSelection::globalParam( const QString& name ) const { if( myParamCache.contains( name ) ) @@ -183,11 +188,10 @@ QtxValue QtxCacheSelection::globalParam( const QString& name ) const - -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param mgr - popup manager +*/ QtxPopupMgr::Operations::Operations( QtxPopupMgr* mgr ) : QtxStrings(), myPopupMgr( mgr ) @@ -201,19 +205,19 @@ QtxPopupMgr::Operations::Operations( QtxPopupMgr* mgr ) myParser = new QtxParser( mgr->myOperations ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor + Deletes internal parser +*/ QtxPopupMgr::Operations::~Operations() { delete myParser; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of popup operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxPopupMgr::Operations::prior( const QString& op, bool isBin ) const { if( !isBin && ( op=="every" || op=="any" || op=="onlyone" ) ) @@ -223,10 +227,13 @@ int QtxPopupMgr::Operations::prior( const QString& op, bool isBin ) const } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxPopupMgr::Operations::calculate ( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -299,10 +306,9 @@ QtxParser::Error QtxPopupMgr::Operations::calculate return QtxStrings::calculate( op, v1, v2 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Clears internal map of values +*/ void QtxPopupMgr::Operations::clear() { myValues.clear(); @@ -315,11 +321,9 @@ void QtxPopupMgr::Operations::clear() - -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor +*/ QtxPopupMgr::QtxPopupMgr( QPopupMenu* popup, QObject* parent ) : QtxActionMenuMgr( popup, parent ), myCurrentSelection( 0 ) @@ -327,18 +331,16 @@ QtxPopupMgr::QtxPopupMgr( QPopupMenu* popup, QObject* parent ) createOperations(); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxPopupMgr::~QtxPopupMgr() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates popup operations instance +*/ void QtxPopupMgr::createOperations() { myOperations = new QtxListOfOperations; @@ -349,10 +351,13 @@ void QtxPopupMgr::createOperations() myOperations->append( "custom", new Operations( this ), 200 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Additional version of registerAction + \param act - action to be registered + \param visible - rule for visibility state + \param toggle - rule for toggle on state + \param id - proposed id (if it is less than 0, then id will be generated automatically) +*/ int QtxPopupMgr::registerAction( QAction* act, const QString& visible, const QString& toggle, @@ -364,10 +369,10 @@ int QtxPopupMgr::registerAction( QAction* act, return _id; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes action from internal map + \param id - action id +*/ void QtxPopupMgr::unRegisterAction( const int id ) { QAction* act = action( id ); @@ -379,28 +384,32 @@ void QtxPopupMgr::unRegisterAction( const int id ) //QtxActionMenuMgr::unRegisterAction( id ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if manager has rule for action + \param act - action + \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle" +*/ bool QtxPopupMgr::hasRule( QAction* act, bool visibility ) const { return map( visibility ).contains( act ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if manager has rule for action + \param id - action id + \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle" +*/ bool QtxPopupMgr::hasRule( const int id, bool visibility ) const { return hasRule( action( id ), visibility ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets new rule for action + \param act - action + \param rule - string expression of rule + \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle" +*/ void QtxPopupMgr::setRule( QAction* act, const QString& rule, bool visibility ) { if( !act || rule.isEmpty() ) @@ -423,19 +432,21 @@ void QtxPopupMgr::setRule( QAction* act, const QString& rule, bool visibility ) } } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Sets new rule for action + \param id - action id + \param rule - string expression of rule + \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle" +*/ void QtxPopupMgr::setRule( const int id, const QString& rule, bool visibility ) { setRule( action( id ), rule, visibility ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if parser has finished work without errors + \param p - parser +*/ bool result( QtxParser* p ) { bool res = false; @@ -449,10 +460,11 @@ bool result( QtxParser* p ) return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills parser parameters with help of Selection::globalParam() method + \param p - parser + \param specific - list will be filled with names of parameters depending on selection objects (not global) +*/ void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const { if( !p || !myCurrentSelection ) @@ -473,6 +485,10 @@ void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const } } +/*! + \return true if 'v1'<'v2' + This function can work with many types of values +*/ bool operator<( const QtxValue& v1, const QtxValue& v2 ) { QVariant::Type t1 = v1.type(), t2 = v2.type(); @@ -512,10 +528,11 @@ bool operator<( const QtxValue& v1, const QtxValue& v2 ) return t1menuText(); @@ -580,10 +597,11 @@ bool QtxPopupMgr::isSatisfied( QAction* act, bool visibility ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return true if item corresponding to action is visible + \param actId - action id + \param place - index of place +*/ bool QtxPopupMgr::isVisible( const int actId, const int place ) const { bool res = QtxActionMenuMgr::isVisible( actId, place ); @@ -593,10 +611,11 @@ bool QtxPopupMgr::isVisible( const int actId, const int place ) const return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Updates popup according to selection + \param p - popup menu + \param sel - selection +*/ void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel ) { QTime t1 = QTime::currentTime(); @@ -620,19 +639,21 @@ void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel ) delete myCurrentSelection; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return reference to map of rules + \param visibility - type of map: visibility of toggle +*/ QtxPopupMgr::RulesMap& QtxPopupMgr::map( bool visibility ) const { return ( RulesMap& )( visibility ? myVisibility : myToggle ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Loads actions description from file + \param fname - name of file + \param r - reader of file + \return true on success +*/ bool QtxPopupMgr::load( const QString& fname, QtxActionMgr::Reader& r ) { PopupCreator cr( &r, this ); @@ -642,10 +663,11 @@ bool QtxPopupMgr::load( const QString& fname, QtxActionMgr::Reader& r ) -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Constructor + \param r - menu reader + \param mgr - menu manager +*/ QtxPopupMgr::PopupCreator::PopupCreator( QtxActionMgr::Reader* r, QtxPopupMgr* mgr ) : QtxActionMgr::Creator( r ), @@ -653,18 +675,20 @@ QtxPopupMgr::PopupCreator::PopupCreator( QtxActionMgr::Reader* r, { } -//================================================================ -// Function : -// Purpose : -//================================================================ -QtxPopupMgr::PopupCreator::~PopupCreator() +/*! + Destructor +*/QtxPopupMgr::PopupCreator::~PopupCreator() { } -//================================================================ -// Function : -// Purpose : -//================================================================ + +/*! + Appends new menu items + \param tag - tag of item + \param subMenu - it has submenu + \param attr - list of attributes + \param pId - id of action corresponding to parent item +*/ int QtxPopupMgr::PopupCreator::append( const QString& tag, const bool subMenu, const ItemAttributes& attr, const int pId ) { @@ -716,19 +740,19 @@ int QtxPopupMgr::PopupCreator::append( const QString& tag, const bool subMenu, return res; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return visibility rule by attributes + Default implementation is empty +*/ QString QtxPopupMgr::PopupCreator::visibleRule( const ItemAttributes& ) const { return QString::null; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return toggle rule by attributes + Default implementation is empty +*/ QString QtxPopupMgr::PopupCreator::toggleRule( const ItemAttributes& ) const { return QString::null; diff --git a/src/Qtx/QtxPopupMgr.h b/src/Qtx/QtxPopupMgr.h index a75a7dced..7e8d2ff13 100644 --- a/src/Qtx/QtxPopupMgr.h +++ b/src/Qtx/QtxPopupMgr.h @@ -29,10 +29,6 @@ class QtxListOfOperations; -//================================================================ -// Class : -// Purpose : -//================================================================ class QTX_EXPORT QtxPopupMgr : public QtxActionMenuMgr { Q_OBJECT diff --git a/src/Qtx/QtxResourceEdit.cxx b/src/Qtx/QtxResourceEdit.cxx index e499236ff..d4398e2ad 100644 --- a/src/Qtx/QtxResourceEdit.cxx +++ b/src/Qtx/QtxResourceEdit.cxx @@ -23,16 +23,18 @@ #include "QtxResourceMgr.h" -/* - Class: QtxResourceEdit - Descr: Class for managing preferences items -*/ +/*! + Constructor +*/ QtxResourceEdit::QtxResourceEdit( QtxResourceMgr* mgr ) : myResMgr( mgr ) { } +/*! + Destructor +*/ QtxResourceEdit::~QtxResourceEdit() { ItemMap items; @@ -44,11 +46,22 @@ QtxResourceEdit::~QtxResourceEdit() delete itr.data(); } +/*! + \return assigned resource manager +*/ QtxResourceMgr* QtxResourceEdit::resourceMgr() const { return myResMgr; } +/*! + Adds new item + \param label - label of widget to edit preference + \param pId - parent item id + \param type - type of item + \param section - section of resource assigned with item + \param param - name of resource assigned with item +*/ int QtxResourceEdit::addItem( const QString& label, const int pId, const int type, const QString& section, const QString& param ) { @@ -72,6 +85,11 @@ int QtxResourceEdit::addItem( const QString& label, const int pId, const int typ return i->id(); } +/*! + \return value of item property + \param id - item id + \propName - propertyName +*/ QVariant QtxResourceEdit::itemProperty( const int id, const QString& propName ) const { QVariant propValue; @@ -81,6 +99,12 @@ QVariant QtxResourceEdit::itemProperty( const int id, const QString& propName ) return propValue; } +/*! + Sets value of item property + \param id - item id + \propName - propertyName + \propValue - new value of property +*/ void QtxResourceEdit::setItemProperty( const int id, const QString& propName, const QVariant& propValue ) { Item* i = item( id ); @@ -88,6 +112,12 @@ void QtxResourceEdit::setItemProperty( const int id, const QString& propName, co i->setProperty( propName, propValue ); } +/*! + \return resource assigned with item + \param id - item id + \param section - to return section of resource + \param param - to return name of resource +*/ void QtxResourceEdit::resource( const int id, QString& sec, QString& param ) const { Item* i = item( id ); @@ -95,6 +125,9 @@ void QtxResourceEdit::resource( const int id, QString& sec, QString& param ) con i->resource( sec, param ); } +/*! + Stores all values to resource manager +*/ void QtxResourceEdit::store() { QMap before; @@ -112,18 +145,27 @@ void QtxResourceEdit::store() changedResources( changed ); } +/*! + Retrieve all values from resource manager +*/ void QtxResourceEdit::retrieve() { for ( ItemMap::ConstIterator it = myItems.begin(); it != myItems.end(); ++it ) it.data()->retrieve(); } +/*! + Stores all values to backup container +*/ void QtxResourceEdit::toBackup() { myBackup.clear(); resourceValues( myBackup ); } +/*! + Retrieve all values from backup container +*/ void QtxResourceEdit::fromBackup() { QMap before; @@ -140,10 +182,17 @@ void QtxResourceEdit::fromBackup() changedResources( changed ); } +/*! + Updates resource edit (default implementation is empty) +*/ void QtxResourceEdit::update() { } +/*! + \return item by it's id + \param id - item id +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const int id ) const { Item* i = 0; @@ -152,6 +201,10 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const int id ) const return i; } +/*! + \return item by it's title (finds first item) + \param title - item title +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title ) const { Item* i = 0; @@ -163,6 +216,11 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title ) const return i; } +/*! + \return item by it's title and parent id + \param title - item title + \param pId - parent id +*/ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title, const int pId ) const { Item* i = 0; @@ -175,6 +233,13 @@ QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title, const int pI return i; } +/*! + Creates item + \return new item + \param label - text of label for new item + \param type - type of new item + \param pId - parent id +*/ QtxResourceEdit::Item* QtxResourceEdit::createItem( const QString& label, const int type, const int pId ) { Item* i = 0; @@ -193,6 +258,10 @@ QtxResourceEdit::Item* QtxResourceEdit::createItem( const QString& label, const return i; } +/*! + Removes item + \param item - item to be removed +*/ void QtxResourceEdit::removeItem( Item* item ) { if ( !item ) @@ -204,6 +273,10 @@ void QtxResourceEdit::removeItem( Item* item ) itemRemoved( item ); } +/*! + \return children items of resource edit + \param lst - list of items to be filled with children +*/ void QtxResourceEdit::childItems( QPtrList& lst ) const { lst.clear(); @@ -211,6 +284,10 @@ void QtxResourceEdit::childItems( QPtrList& lst ) const lst.append( it.current() ); } +/*! + \return all resources values from widgets + \param map - map to be filled by resources values +*/ void QtxResourceEdit::resourceValues( QMap& map ) const { QString sect, name; @@ -222,6 +299,10 @@ void QtxResourceEdit::resourceValues( QMap& map ) const } } +/*! + \return all resources values from widgets + \param map - map to be filled by resources values +*/ void QtxResourceEdit::resourceValues( QMap& map ) const { QString sect, name; @@ -233,6 +314,10 @@ void QtxResourceEdit::resourceValues( QMap& map ) const } } +/*! + Sets to widgets all resources values from map + \param map - map with resources values +*/ void QtxResourceEdit::setResourceValues( QMap& map ) const { for ( QMap::ConstIterator it = map.begin(); it != map.end(); ++it ) @@ -243,13 +328,23 @@ void QtxResourceEdit::setResourceValues( QMap& map ) const } } +/*! + Sets to widgets all resources values from map + \param map - map with resources values +*/ void QtxResourceEdit::setResourceValues( QMap& map ) const { for ( QMap::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& map1, const QMap& map2, QMap& resMap, const bool fromFirst ) const { @@ -264,6 +359,13 @@ void QtxResourceEdit::differentValues( const QMap& map1, const QMa } } +/*! + Compares two map of resources values and finds different ones + \param map1 - first map + \param map2 - second map + \param resMap - map to be filled with different values + \param fromFirst - if it is true, then resMap will be filled with values from first map, otherwise - from second +*/ void QtxResourceEdit::differentValues( const QMap& map1, const QMap& map2, QMap& resMap, const bool fromFirst ) const { @@ -278,23 +380,31 @@ void QtxResourceEdit::differentValues( const QMap& map1, const Q } } +/*! + Makes some activity on resource changing (called from store() method) + \sa store() +*/ void QtxResourceEdit::changedResources( const QMap& ) { } +/*! + Some activity on item addition (default implementation is empty) +*/ void QtxResourceEdit::itemAdded( Item* ) { } +/*! + Some activity on item removing (default implementation is empty) +*/ void QtxResourceEdit::itemRemoved( Item* ) { } -/* - Class: QtxResourceEdit::Item - Descr: Class for incapsulation of one preference item +/*! + Constructor */ - QtxResourceEdit::Item::Item( QtxResourceEdit* edit, Item* parent ) : myEdit( edit ), myParent( 0 ) @@ -305,22 +415,35 @@ myParent( 0 ) parent->insertChild( this ); } +/*! + Destructor +*/ QtxResourceEdit::Item::~Item() { if ( resourceEdit() ) resourceEdit()->removeItem( this ); } +/*! + \return id of item +*/ int QtxResourceEdit::Item::id() const { return myId; } +/*! + \return parent item +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::parentItem() const { return myParent; } +/*! + Appends child and (if necessary) removes item from old parent + \param item - item to be added +*/ void QtxResourceEdit::Item::insertChild( Item* item ) { if ( !item || myChildren.contains( item ) ) @@ -333,6 +456,10 @@ void QtxResourceEdit::Item::insertChild( Item* item ) myChildren.append( item ); } +/*! + Removes child + \param item - item to be removed +*/ void QtxResourceEdit::Item::removeChild( Item* item ) { if ( !item || !myChildren.contains( item ) ) @@ -342,62 +469,105 @@ void QtxResourceEdit::Item::removeChild( Item* item ) item->myParent = 0; } +/*! + Fills list with children items + \param lst - list to be filled with +*/ void QtxResourceEdit::Item::childItems( QPtrList& lst ) const { for ( ItemListIterator it( myChildren ); it.current(); ++it ) lst.append( it.current() ); } +/*! + \return true if there is no children of this item +*/ bool QtxResourceEdit::Item::isEmpty() const { return myChildren.isEmpty(); } +/*! + \return title of item +*/ QString QtxResourceEdit::Item::title() const { return myTitle; } +/*! + \return assigned resource placement + \param sec - to return section + \param param - to return param name +*/ void QtxResourceEdit::Item::resource( QString& sec, QString& param ) const { sec = myResSection; param = myResParameter; } +/*! + Sets item title + \param title - new item title +*/ void QtxResourceEdit::Item::setTitle( const QString& title ) { myTitle = title; } +/*! + Assigns new resource to item + \param sec - section + \param sec - param name +*/ void QtxResourceEdit::Item::setResource( const QString& sec, const QString& param ) { myResSection = sec; myResParameter = param; } +/*! + Updates item (default implementation is empty) +*/ void QtxResourceEdit::Item::update() { } +/*! + \return property value +*/ QVariant QtxResourceEdit::Item::property( const QString& ) const { return QVariant(); } +/*! + Sets property value +*/ void QtxResourceEdit::Item::setProperty( const QString&, const QVariant& ) { } +/*! + \return value of assigned resource +*/ QString QtxResourceEdit::Item::resourceValue() const { return getString(); } +/*! + Sets value of assigned resource + \param val - new value +*/ void QtxResourceEdit::Item::setResourceValue( const QString& val ) { setString( val ); } +/*! + \return corresponding resource manager +*/ QtxResourceMgr* QtxResourceEdit::Item::resourceMgr() const { QtxResourceMgr* resMgr = 0; @@ -406,47 +576,78 @@ QtxResourceMgr* QtxResourceEdit::Item::resourceMgr() const return resMgr; } +/*! + \return corresponding resource edit +*/ QtxResourceEdit* QtxResourceEdit::Item::resourceEdit() const { return myEdit; } +/*! + \return integer value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ int QtxResourceEdit::Item::getInteger( const int val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->integerValue( myResSection, myResParameter, val ) : val; } +/*! + \return double value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ double QtxResourceEdit::Item::getDouble( const double val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->doubleValue( myResSection, myResParameter, val ) : val; } +/*! + \return boolean value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ bool QtxResourceEdit::Item::getBoolean( const bool val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->booleanValue( myResSection, myResParameter, val ) : val; } +/*! + \return string value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QString QtxResourceEdit::Item::getString( const QString& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->stringValue( myResSection, myResParameter, val ) : val; } +/*! + \return color value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QColor QtxResourceEdit::Item::getColor( const QColor& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->colorValue( myResSection, myResParameter, val ) : val; } +/*! + \return font value of resource corresponding to item + \param val - default value (it is returned if there is no such resource) +*/ QFont QtxResourceEdit::Item::getFont( const QFont& val ) const { QtxResourceMgr* resMgr = resourceMgr(); return resMgr ? resMgr->fontValue( myResSection, myResParameter, val ) : val; } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setInteger( const int val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -454,6 +655,10 @@ void QtxResourceEdit::Item::setInteger( const int val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setDouble( const double val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -461,6 +666,10 @@ void QtxResourceEdit::Item::setDouble( const double val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setBoolean( const bool val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -468,6 +677,10 @@ void QtxResourceEdit::Item::setBoolean( const bool val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setString( const QString& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -475,6 +688,10 @@ void QtxResourceEdit::Item::setString( const QString& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setColor( const QColor& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -482,6 +699,10 @@ void QtxResourceEdit::Item::setColor( const QColor& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + Sets value of resource + \param val - value +*/ void QtxResourceEdit::Item::setFont( const QFont& val ) { QtxResourceMgr* resMgr = resourceMgr(); @@ -489,21 +710,37 @@ void QtxResourceEdit::Item::setFont( const QFont& val ) resMgr->setValue( myResSection, myResParameter, val ); } +/*! + \return other item + \param id - other item id +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const int id ) const { return resourceEdit() ? resourceEdit()->item( id ) : 0; } +/*! + \return other item + \param title - other item title +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title ) const { return resourceEdit() ? resourceEdit()->item( title ) : 0; } +/*! + \return other item + \param title - other item title + \param id - parent item id +*/ QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title, const int id ) const { return resourceEdit() ? resourceEdit()->item( title, id ) : 0; } +/*! + \return free item id +*/ int QtxResourceEdit::Item::generateId() { static int _id = 0; diff --git a/src/Qtx/QtxResourceEdit.h b/src/Qtx/QtxResourceEdit.h index 7c55abc7b..15dd6ceef 100644 --- a/src/Qtx/QtxResourceEdit.h +++ b/src/Qtx/QtxResourceEdit.h @@ -35,6 +35,10 @@ class QtxResourceMgr; #include #include +/*! + \class QtxResourceEdit + Class for managing preferences items +*/ class QTX_EXPORT QtxResourceEdit { public: @@ -104,9 +108,9 @@ private: friend class QtxResourceEdit::Item; }; -/* - Class: QtxResourceEditor::Item - Descr: Class for incapsulation of one preference item +/*! + \class QtxResourceEditor::Item + Class for incapsulation of one preference item */ class QTX_EXPORT QtxResourceEdit::Item diff --git a/src/Qtx/QtxResourceMgr.cxx b/src/Qtx/QtxResourceMgr.cxx index d5376b7e0..9824aff30 100644 --- a/src/Qtx/QtxResourceMgr.cxx +++ b/src/Qtx/QtxResourceMgr.cxx @@ -42,20 +42,41 @@ QtxResourceMgr::Resources::Resources( const QtxResourceMgr* mgr, const QString& { } +/*! + Destructor +*/ QtxResourceMgr::Resources::~Resources() { } +/*! + Returns name of resource file + This file is used to load/save operations +*/ QString QtxResourceMgr::Resources::file() const { return myFileName; } +/*! + Sets name of resource file + \param fn - name of file +*/ void QtxResourceMgr::Resources::setFile( const QString& fn ) { myFileName = fn; } +/*! + Returns string representation of parameter value + Returns QString::null if there is no such parameter + + \param sect - name of section + \param name - name of parameter + \param subst - if it is true, then the substitution of variables + will be done with help of makeSubstitution method + \sa makeSubstitution() +*/ QString QtxResourceMgr::Resources::value( const QString& sect, const QString& name, const bool subst ) const { QString val; @@ -69,27 +90,52 @@ QString QtxResourceMgr::Resources::value( const QString& sect, const QString& na return val; } +/*! + Sets value by it's string representation + + \param sect - name of section + \param name - name of parameter + \param val - string value +*/ void QtxResourceMgr::Resources::setValue( const QString& sect, const QString& name, const QString& val ) { Section& s = section( sect ); s.insert( name, val ); } +/*! + \return true if section exists + \param sect - name of section +*/ bool QtxResourceMgr::Resources::hasSection( const QString& sect ) const { return mySections.contains( sect ); } +/*! + \return true if parameter exists in section + \param sect - name of section + \param name - name of parameter +*/ bool QtxResourceMgr::Resources::hasValue( const QString& sect, const QString& name ) const { return hasSection( sect ) && section( sect ).contains( name ); } +/*! + Removes section from resources + \param sect - name of section +*/ void QtxResourceMgr::Resources::removeSection( const QString& sect ) { mySections.remove( sect ); } +/*! + Removes parameter from section + \param sect - name of section + \param name - name of parameter +*/ void QtxResourceMgr::Resources::removeValue( const QString& sect, const QString& name ) { if ( !hasSection( sect ) ) @@ -102,16 +148,26 @@ void QtxResourceMgr::Resources::removeValue( const QString& sect, const QString& mySections.remove( sect ); } +/*! + Removes all sections +*/ void QtxResourceMgr::Resources::clear() { mySections.clear(); } +/*! + \return list of section names +*/ QStringList QtxResourceMgr::Resources::sections() const { return mySections.keys(); } +/*! + \return list of parameter names from section + \param sec - name of section +*/ QStringList QtxResourceMgr::Resources::parameters( const QString& sec ) const { if ( !hasSection( sec ) ) @@ -120,6 +176,13 @@ QStringList QtxResourceMgr::Resources::parameters( const QString& sec ) const return section( sec ).keys(); } +/*! + \return path of file from directory built by parameter + \return QString::null if built path doesn't exist + \param sec - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::Resources::path( const QString& sec, const QString& prefix, const QString& name ) const { QString filePath = fileName( sec, prefix, name ); @@ -131,11 +194,17 @@ QString QtxResourceMgr::Resources::path( const QString& sec, const QString& pref return filePath; } +/*! + \return corresponding resource manager +*/ QtxResourceMgr* QtxResourceMgr::Resources::resMgr() const { return myMgr; } +/*! + \return instance of section by it's name. Section will be created if it doesn't exist +*/ QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) { if ( !mySections.contains( sn ) ) @@ -144,11 +213,20 @@ QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) return mySections[sn]; } +/*! + \return instance of section by it's name. Section will be created if it doesn't exist +*/ const QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) const { return mySections[sn]; } +/*! + \return full path of file + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::Resources::fileName( const QString& sect, const QString& prefix, const QString& name ) const { QString path; @@ -173,6 +251,12 @@ QString QtxResourceMgr::Resources::fileName( const QString& sect, const QString& return QString(); } +/*! + \return QPixmap loaded from file + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of picture file +*/ QPixmap QtxResourceMgr::Resources::loadPixmap( const QString& sect, const QString& prefix, const QString& name ) const { QString fname = fileName( sect, prefix, name ); @@ -189,6 +273,12 @@ QPixmap QtxResourceMgr::Resources::loadPixmap( const QString& sect, const QStrin return p; } +/*! + \return just created and loaded translator + \param sect - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, const QString& prefix, const QString& name ) const { QTranslator* trans = new QTranslator( 0 ); @@ -200,6 +290,13 @@ QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, con return trans; } +/*! + Finds in string variables by patterns: ${name} or $(name) or %name% + \return first found name or QString::null if there is no ones + \param str - string where the search is processed + \param start - integer value for returning start position of variable + \param len - integer value for returning length of variable +*/ QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& start, int& len ) const { QString varName = QString::null; @@ -219,6 +316,15 @@ QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& return varName; } +/*! + Substitutes variables by its' values. If variable is from enviroment, + it will be replaced by environment value. If it isn't, method tries to + find it's value among resources + \return new variant of string 'str' + \param str - string to process substitution + \param sect - section, in which the variables will be finding + \param name - name of variable which must be ignored during substitution +*/ QString QtxResourceMgr::Resources::makeSubstitution( const QString& str, const QString& sect, const QString& name ) const { QString res = str; @@ -259,7 +365,6 @@ QString QtxResourceMgr::Resources::makeSubstitution( const QString& str, const Q Class: QtxResourceMgr::IniFormat Level: Internal */ - class QtxResourceMgr::IniFormat : public Format { public: @@ -271,15 +376,26 @@ protected: virtual bool save( const QString&, const QMap& ); }; +/*! + 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& secMap ) { QFile file( fname ); @@ -346,6 +462,11 @@ bool QtxResourceMgr::IniFormat::load( const QString& fname, QMap& secMap ) { QFile file( fname ); @@ -391,15 +512,26 @@ private: QString valueAttribute() const; }; +/*! + Default constructor +*/ QtxResourceMgr::XmlFormat::XmlFormat() : Format( "xml" ) { } +/*! + Destructor +*/ QtxResourceMgr::XmlFormat::~XmlFormat() { } +/*! + Loads resources from xml-file to map of sections + \param fname - name of resource file + \param secMap - map of sections +*/ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap& secMap ) { bool res = false; @@ -408,7 +540,10 @@ bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap& secMap ) { bool res = false; @@ -507,6 +669,9 @@ bool QtxResourceMgr::XmlFormat::save( const QString& fname, const QMapmyFileName ) ); - return save( res->myFileName, res->mySections ); + QtxResourceMgr* mgr = res->resMgr(); + QString name = mgr ? mgr->userFileName( mgr->appName(), false ) : res->myFileName; + return save( name, res->mySections ); } /*! @@ -787,11 +966,18 @@ void QtxResourceMgr::clear() it.current()->clear(); } +/*! + Set state 'ignore user values'. + If it is true, then all resources loaded from user home directory is ignored +*/ void QtxResourceMgr::setIgnoreUserValues( const bool val ) { myIsIgnoreUserValues = val; } +/*! + \return state 'ignore user values' +*/ bool QtxResourceMgr::ignoreUserValues() const { return myIsIgnoreUserValues; @@ -1343,6 +1529,26 @@ bool QtxResourceMgr::load() return res; } +/*! + \brief Import some file with resources +*/ +bool QtxResourceMgr::import( const QString& fname ) +{ + Format* fmt = format( currentFormat() ); + if ( !fmt ) + return false; + + Resources* r = myResources.getFirst(); + if( !r ) + return false; + + QString old = r->file(); + r->setFile( fname ); + bool res = fmt->load( r ); + r->setFile( old ); + return res; +} + /*! \brief Save the changed resources in to the user resource file. */ @@ -1411,6 +1617,13 @@ QStringList QtxResourceMgr::parameters( const QString& sec ) const return res; } +/*! + \return path of file from directory built by parameter + \return QString::null if built path doesn't exist + \param sec - name of section + \param prefix - name of parameter containing some path + \param name - name of file +*/ QString QtxResourceMgr::path( const QString& sect, const QString& prefix, const QString& name ) const { QString res; @@ -1419,6 +1632,9 @@ QString QtxResourceMgr::path( const QString& sect, const QString& prefix, const return res; } +/*! + \return section corresponding to resources paths +*/ QString QtxResourceMgr::resSection() const { QString res = option( "res_section_name" ); @@ -1427,6 +1643,9 @@ QString QtxResourceMgr::resSection() const return res; } +/*! + \return section corresponding to language settings +*/ QString QtxResourceMgr::langSection() const { QString res = option( "lang_section_name" ); @@ -1435,26 +1654,55 @@ QString QtxResourceMgr::langSection() const return res; } +/*! + \return default image used when during loading the image file doesn't exist +*/ QPixmap QtxResourceMgr::defaultPixmap() const { return myDefaultPix; } +/*! + Set image as default image used when during loading the image file doesn't exist + \param pix - image +*/ void QtxResourceMgr::setDefaultPixmap( const QPixmap& pix ) { myDefaultPix = pix; } +/*! + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name ) const { return loadPixmap( prefix, name, true ); } +/*! + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file + \param useDef - indicates if it is possible to use default image returning by defaultPixmap() method. + If it is false, the empty pixmap will be used as default + \sa defaultPixmap() +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const bool useDef ) const { return loadPixmap( prefix, name, useDef ? defaultPixmap() : QPixmap() ); } +/*! + Finds in all sections an existing path corresponding to 'prefix' parameter + and load image with name 'name' from this folder + + \return image loaded from file + \param prefix - name of parameter containing some path + \param name - name of file + \param defPix - default image used when file doesn't exist +*/ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const QPixmap& defPix ) const { initialize(); @@ -1467,6 +1715,22 @@ QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, return pix; } +/*! + Loads translator for language + Name of translator file is constructed by list returning by option "translators" or, + if it is empty, by predefined pattern "%P_msg_%L.qm". It is recommended to used in translators + name the strings %A, %P, %L whose will be replaced by application name, prefix and language name correspondingly + + \param pref - name of parameter containing path to translator's file. + If it is empty, the list of parameters from resource section ( resSection() ) + is used. + + \param l - name of language. If it is empty, then value of parameter "language" + from language section ( langSection() ) is used. If it is also empty, then + predefined name "en" is used + + \sa resSection(), langSection() +*/ void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l ) { initialize(); @@ -1523,6 +1787,12 @@ void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l ) } } +/*! + Loads translators by path and list of files + + \param prefix - value of this parameter must contain path + \param translators - list of translators' files +*/ void QtxResourceMgr::loadTranslators( const QString& prefix, const QStringList& translators ) { initialize(); @@ -1545,6 +1815,12 @@ void QtxResourceMgr::loadTranslators( const QString& prefix, const QStringList& } } +/*! + Loads translator by path and file name + + \param prefix - value of this parameter must contain path + \param name - name of translator file +*/ void QtxResourceMgr::loadTranslator( const QString& prefix, const QString& name ) { initialize(); @@ -1564,6 +1840,11 @@ void QtxResourceMgr::loadTranslator( const QString& prefix, const QString& name } } +/*! + Remove all translators corresponding to prefix + + \param prefix - parameter containing path +*/ void QtxResourceMgr::removeTranslators( const QString& prefix ) { if ( !myTranslator.contains( prefix ) ) @@ -1578,6 +1859,11 @@ void QtxResourceMgr::removeTranslators( const QString& prefix ) myTranslator.remove( prefix ); } +/*! + Moves translators corresponding to prefix to the top of translator stack + + \param prefix - parameter containing path +*/ void QtxResourceMgr::raiseTranslators( const QString& prefix ) { if ( !myTranslator.contains( prefix ) ) @@ -1590,6 +1876,9 @@ void QtxResourceMgr::raiseTranslators( const QString& prefix ) } } +/*! + Copies all resources to user resources, so that they will be saved in user home folder +*/ void QtxResourceMgr::refresh() { QStringList sl = sections(); @@ -1601,6 +1890,9 @@ void QtxResourceMgr::refresh() } } +/*! + \brief Sets the resource directories list except user home directory and clear resources +*/ void QtxResourceMgr::setDirList( const QStringList& dl ) { myDirList = dl; @@ -1610,6 +1902,12 @@ void QtxResourceMgr::setDirList( const QStringList& dl ) myResources.clear(); } +/*! + Sets resource value + \param sect - name of section + \param name - name of parameter + \param val - string representation of value +*/ void QtxResourceMgr::setResource( const QString& sect, const QString& name, const QString& val ) { initialize(); @@ -1618,7 +1916,13 @@ void QtxResourceMgr::setResource( const QString& sect, const QString& name, cons myResources.first()->setValue( sect, name, val ); } -QString QtxResourceMgr::userFileName( const QString& appName ) const +/*! + \return name of resource file, which is being found in user home directory + \param appName - name of application + \param for_load - flag indicating that file will be used for loading (true) or for saving(false) + It makes possible to use different resource files for loading and saving +*/ +QString QtxResourceMgr::userFileName( const QString& appName, const bool /*for_load*/ ) const { QString fileName; QString pathName = QDir::homeDirPath(); @@ -1635,11 +1939,20 @@ QString QtxResourceMgr::userFileName( const QString& appName ) const return pathName; } +/*! + \return name of resource file, which is being found in all resource directories, except user home +*/ QString QtxResourceMgr::globalFileName( const QString& appName ) const { return QString( "%1.%2" ).arg( appName ).arg( currentFormat() ); } +/*! + Replaced substrings by pattern %A, %B, etc by values from map + + \param src - string to be processed + \param substMap - map of values for replacing +*/ QString QtxResourceMgr::substMacro( const QString& src, const QMap& substMap ) const { QString trg = src; diff --git a/src/Qtx/QtxResourceMgr.h b/src/Qtx/QtxResourceMgr.h index f75345425..bcaa4ebf5 100644 --- a/src/Qtx/QtxResourceMgr.h +++ b/src/Qtx/QtxResourceMgr.h @@ -133,6 +133,7 @@ public: QString path( const QString&, const QString&, const QString& ) const; bool load(); + bool import( const QString& ); bool save(); QStringList sections() const; @@ -144,7 +145,7 @@ protected: virtual void setDirList( const QStringList& ); virtual void setResource( const QString&, const QString&, const QString& ); - virtual QString userFileName( const QString& ) const; + virtual QString userFileName( const QString&, const bool = true ) const; virtual QString globalFileName( const QString& ) const; private: diff --git a/src/Qtx/QtxSplash.cxx b/src/Qtx/QtxSplash.cxx new file mode 100644 index 000000000..3b8737394 --- /dev/null +++ b/src/Qtx/QtxSplash.cxx @@ -0,0 +1,507 @@ +// 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 +#include +#include +#include + +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; +} diff --git a/src/Qtx/QtxSplash.h b/src/Qtx/QtxSplash.h new file mode 100644 index 000000000..cc24f7fce --- /dev/null +++ b/src/Qtx/QtxSplash.h @@ -0,0 +1,114 @@ +// 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 +#include + +#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 diff --git a/src/Qtx/QtxStdOperations.cxx b/src/Qtx/QtxStdOperations.cxx index 6d612b299..0e4bacb81 100644 --- a/src/Qtx/QtxStdOperations.cxx +++ b/src/Qtx/QtxStdOperations.cxx @@ -21,26 +21,23 @@ #include #include -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxStdOperations::QtxStdOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxStdOperations::~QtxStdOperations() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false') +*/ void QtxStdOperations::bracketsList( QStringList& list, bool open ) const { if( open ) @@ -49,19 +46,17 @@ void QtxStdOperations::bracketsList( QStringList& list, bool open ) const list.append( ")" ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list with operation names by copying of internal list of operations +*/ void QtxStdOperations::opersList( QStringList& list ) const { - list += myOpers; + list += myOpers; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Add operation names from list to internal list of operations +*/ void QtxStdOperations::addOperations( const QStringList& list ) { QStringList::const_iterator anIt = list.begin(), @@ -71,10 +66,9 @@ void QtxStdOperations::addOperations( const QStringList& list ) myOpers.append( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Append operation names from 'list' to internal list of operations +*/ void QtxStdOperations::addTypes( const ListOfTypes& list ) { ListOfTypes::const_iterator anIt = list.begin(), @@ -84,10 +78,12 @@ void QtxStdOperations::addTypes( const ListOfTypes& list ) myTypes.append( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxStdOperations::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -110,10 +106,9 @@ QtxParser::Error QtxStdOperations::isValid( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxArithmetics::QtxArithmetics() : QtxStdOperations() { @@ -138,18 +133,16 @@ QtxArithmetics::QtxArithmetics() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxArithmetics::~QtxArithmetics() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates numbers by it's string representation [redefined virtual] +*/ bool QtxArithmetics::createValue( const QString& str, QtxValue& v ) const { bool ok = false; @@ -164,10 +157,10 @@ bool QtxArithmetics::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxArithmetics::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -191,10 +184,13 @@ void set( QVariant& v1, bool v2 ) v1 = QVariant( v2, 0 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxArithmetics::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -286,10 +282,9 @@ QtxParser::Error QtxArithmetics::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxLogic::QtxLogic() : QtxStdOperations() { @@ -312,18 +307,16 @@ QtxLogic::QtxLogic() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxLogic::~QtxLogic() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates value 'true' or 'false' it's string representation [redefined virtual] +*/ bool QtxLogic::createValue( const QString& str, QtxValue& v ) const { bool ok = true; @@ -337,10 +330,10 @@ bool QtxLogic::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxLogic::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -370,10 +363,13 @@ bool boolean_value( const QtxValue& v ) return false; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxLogic::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -405,10 +401,9 @@ QtxParser::Error QtxLogic::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxFunctions::QtxFunctions() : QtxStdOperations() { @@ -427,18 +422,16 @@ QtxFunctions::QtxFunctions() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxFunctions::~QtxFunctions() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates numbers by it's string representation [redefined virtual] +*/ bool QtxFunctions::createValue( const QString& str, QtxValue& v ) const { bool ok = false; @@ -453,10 +446,10 @@ bool QtxFunctions::createValue( const QString& str, QtxValue& v ) const return ok; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxFunctions::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -468,10 +461,13 @@ int QtxFunctions::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxFunctions::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -506,10 +502,9 @@ QtxParser::Error QtxFunctions::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxStrings::QtxStrings() : QtxStdOperations() { @@ -536,18 +531,16 @@ QtxStrings::QtxStrings() } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxStrings::~QtxStrings() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates string QtxValue by it's Qt string representation [redefined virtual] +*/ bool QtxStrings::createValue( const QString& str, QtxValue& v ) const { QChar st = str[0], @@ -561,10 +554,10 @@ bool QtxStrings::createValue( const QString& str, QtxValue& v ) const return QtxStdOperations::createValue( str, v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxStrings::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -582,10 +575,13 @@ int QtxStrings::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxStrings::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { @@ -628,10 +624,9 @@ QtxParser::Error QtxStrings::calculate( const QString& op, -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Default constructor +*/ QtxSets::QtxSets() { QStringList aList; @@ -652,18 +647,16 @@ QtxSets::QtxSets() addTypes( aTypes ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Destructor +*/ QtxSets::~QtxSets() { } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false') +*/ void QtxSets::bracketsList( QStringList& list, bool open ) const { if( open ) @@ -673,19 +666,18 @@ void QtxSets::bracketsList( QStringList& list, bool open ) const QtxStdOperations::bracketsList( list, open ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Creates set of QtxValues by their string representation [redefined virtual] +*/ bool QtxSets::createValue( const QString& str, QtxValue& val ) const { return QtxStdOperations::createValue( str, val ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return priority of arithmetic operation 'op'. + \param isBin indicate whether the operation is binary +*/ int QtxSets::prior( const QString& op, bool isBin ) const { if( isBin ) @@ -707,10 +699,12 @@ int QtxSets::prior( const QString& op, bool isBin ) const return 0; } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + \return whether values with passed types are valid for arguments of operation + \param op - name of operation + \param t1 - type of first argument + \param t2 - type of second argument +*/ QtxParser::Error QtxSets::isValid( const QString& op, const QVariant::Type t1, const QVariant::Type t2 ) const @@ -726,20 +720,18 @@ QtxParser::Error QtxSets::isValid( const QString& op, return QtxStdOperations::isValid( op, t1, t2 ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Adds new value 'v' to set 'set' [static] +*/ void QtxSets::add( ValueSet& set, const QtxValue& v ) { if( v.isValid() && set.contains( v )==0 ) set.append( v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Adds values from set 's2' to set 's1' +*/ void QtxSets::add( ValueSet& s1, const ValueSet& s2 ) { ValueSet::const_iterator anIt = s2.begin(), @@ -748,19 +740,17 @@ void QtxSets::add( ValueSet& s1, const ValueSet& s2 ) add( s1, *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes value 'v' from set 'set' +*/ void QtxSets::remove( ValueSet& set, const QtxValue& v ) { set.remove( v ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Removes values of set 's2' from set 's1' +*/ void QtxSets::remove( ValueSet& s1, const ValueSet& s2 ) { ValueSet::const_iterator anIt = s2.begin(), @@ -769,10 +759,13 @@ void QtxSets::remove( ValueSet& s1, const ValueSet& s2 ) s1.remove( *anIt ); } -//================================================================ -// Function : -// Purpose : -//================================================================ +/*! + Calculates result of operation + \return one of error states + \param op - name of operation + \param v1 - first operation argument (must be used also to store result) + \param v2 - second operation argument +*/ QtxParser::Error QtxSets::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const { QtxParser::Error err = QtxParser::OK; diff --git a/src/Qtx/QtxStdOperations.h b/src/Qtx/QtxStdOperations.h index 5a8cfd48e..27245e95d 100644 --- a/src/Qtx/QtxStdOperations.h +++ b/src/Qtx/QtxStdOperations.h @@ -25,10 +25,11 @@ #include "Qtx.h" #include "QtxOperations.h" -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxStdOperations + Provides simplified interface for standard operations. + Conatins list of operation names, priority and possible types +*/ class QTX_EXPORT QtxStdOperations : public QtxOperations { public: @@ -52,10 +53,10 @@ private: ListOfTypes myTypes; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxArithmetics + Provides set of arithmetic operations for parser +*/ class QTX_EXPORT QtxArithmetics : public QtxStdOperations { public: @@ -67,10 +68,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxLogic + Provides set of logic operations for parser +*/ class QTX_EXPORT QtxLogic : public QtxStdOperations { public: @@ -82,10 +83,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxFunctions + Provides set of more complex operations for parser (sqrt, sin, cos, etc) +*/ class QTX_EXPORT QtxFunctions : public QtxStdOperations { public: @@ -97,10 +98,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxStrings + Provides set of string operations for parser +*/ class QTX_EXPORT QtxStrings : public QtxStdOperations { public: @@ -112,10 +113,10 @@ public: virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const; }; -//================================================================ -// Class : -// Purpose : -//================================================================ +/*! + \class QtxSets + Provides set of operations with sets for parser +*/ class QTX_EXPORT QtxSets : public QtxStdOperations { public: diff --git a/src/Qtx/QtxTable.cxx b/src/Qtx/QtxTable.cxx index eac69ea60..4c0f1971f 100644 --- a/src/Qtx/QtxTable.cxx +++ b/src/Qtx/QtxTable.cxx @@ -25,6 +25,9 @@ #include +/*! + Constructor +*/ QtxTable::QtxTable( QWidget* parent, const char* name ) : QTable( parent, name ), myHeaderEditor( 0 ), @@ -39,6 +42,9 @@ myEditedSection( -1 ) connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) ); } +/*! + Constructor +*/ QtxTable::QtxTable( int numRows, int numCols, QWidget* parent, const char* name ) : QTable( numRows, numCols, parent, name ), myHeaderEditor( 0 ), @@ -53,15 +59,27 @@ myEditedSection( -1 ) connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) ); } +/*! + Destructor +*/ QtxTable::~QtxTable() { } +/*! + \return true if header is editable + \param o - header orientation +*/ bool QtxTable::headerEditable( Orientation o ) const { return myHeaderEditable.contains( o ) ? myHeaderEditable[o] : false; } +/*! + Changes editable state of header + \param o - header orientation + \param on - new state +*/ void QtxTable::setHeaderEditable( Orientation o, const bool on ) { if ( headerEditable( o ) == on ) @@ -80,16 +98,28 @@ void QtxTable::setHeaderEditable( Orientation o, const bool on ) hdr->removeEventFilter( this ); } +/*! + Starts edition of header + \param o - header orientation + \param sec - column/row +*/ bool QtxTable::editHeader( Orientation o, const int sec ) { return beginHeaderEdit( o, sec ); } +/*! + Finishes edition of header + \param accept - whether new value must be accepted +*/ void QtxTable::endEditHeader( const bool accept ) { endHeaderEdit( accept ); } +/*! + Finishes edition and hides table +*/ void QtxTable::hide() { endHeaderEdit(); @@ -97,6 +127,11 @@ void QtxTable::hide() QTable::hide(); } +/*! + Custom event filter + Starts edition of header by double click + Finishes edition by escape/return/enter pressing +*/ bool QtxTable::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == QEvent::MouseButtonDblClick ) @@ -145,17 +180,26 @@ bool QtxTable::eventFilter( QObject* o, QEvent* e ) return QTable::eventFilter( o, e ); } +/*! + SLOT: called on scroll +*/ void QtxTable::onScrollBarMoved( int ) { updateHeaderEditor(); } +/*! + SLOT: called on header size changing +*/ void QtxTable::onHeaderSizeChange( int, int, int ) { if ( sender() == myEditedHeader ) updateHeaderEditor(); } +/*! + Custom resize event handler +*/ void QtxTable::resizeEvent( QResizeEvent* e ) { QTable::resizeEvent( e ); @@ -163,6 +207,11 @@ void QtxTable::resizeEvent( QResizeEvent* e ) updateHeaderEditor(); } +/*! + Starts edition of header + \param o - header orientation + \param sec - column/row +*/ bool QtxTable::beginHeaderEdit( Orientation o, const int section ) { if ( !headerEditable( o ) || !header( o ) || !header( o )->isVisibleTo( this ) ) @@ -202,6 +251,10 @@ bool QtxTable::beginHeaderEdit( Orientation o, const int section ) return true; } +/*! + Finishes edition of header + \param accept - whether new value must be accepted +*/ void QtxTable::endHeaderEdit( const bool accept ) { if ( !isHeaderEditing() ) @@ -231,11 +284,20 @@ void QtxTable::endHeaderEdit( const bool accept ) } } +/*! + \return true if header is being edited +*/ bool QtxTable::isHeaderEditing() const { return myHeaderEditor && myEditedHeader && myEditedSection != -1; } +/*! + Creates and \return header editor + \param hdr - header + \param sec - column/row + \param init - init editor with value +*/ QWidget* QtxTable::createHeaderEditor( QHeader* hdr, const int sec, const bool init ) { QLineEdit* ed = new QLineEdit( 0 ); @@ -246,6 +308,12 @@ QWidget* QtxTable::createHeaderEditor( QHeader* hdr, const int sec, const bool i return ed; } +/*! + Initialize editor with value + \param hdr - header + \param sec - column/row + \param editor - editor +*/ void QtxTable::setHeaderContentFromEditor( QHeader* hdr, const int sec, QWidget* editor ) { if ( !hdr || !editor ) @@ -255,11 +323,20 @@ void QtxTable::setHeaderContentFromEditor( QHeader* hdr, const int sec, QWidget* hdr->setLabel( sec, ((QLineEdit*)editor)->text() ); } +/*! + \return header + \param o - orientation +*/ QHeader* QtxTable::header( Orientation o ) const { return o == Horizontal ? horizontalHeader() : verticalHeader(); } +/*! + Starts edition of header + \param o - header orientation + \param p - point +*/ void QtxTable::beginHeaderEdit( Orientation o, const QPoint& p ) { QHeader* hdr = header( o ); @@ -272,6 +349,11 @@ void QtxTable::beginHeaderEdit( Orientation o, const QPoint& p ) beginHeaderEdit( o, sec ); } +/*! + \return rectangle of header section + \param hdr - header + \param sec - column/row +*/ QRect QtxTable::headerSectionRect( QHeader* hdr, const int sec ) const { QRect r( -1, -1, -1, -1 ); @@ -286,6 +368,9 @@ QRect QtxTable::headerSectionRect( QHeader* hdr, const int sec ) const return r; } +/*! + Updates header editor +*/ void QtxTable::updateHeaderEditor() { if ( !myHeaderEditor || !myEditedHeader || myEditedSection < 0 ) diff --git a/src/Qtx/QtxToolBar.cxx b/src/Qtx/QtxToolBar.cxx index b5f32845e..3ffb69750 100644 --- a/src/Qtx/QtxToolBar.cxx +++ b/src/Qtx/QtxToolBar.cxx @@ -66,6 +66,9 @@ private: bool myVisible; }; +/*! + Constructor +*/ QtxToolBar::Watcher::Watcher( QtxToolBar* cont ) : QObject( cont ), myCont( cont ), @@ -81,6 +84,9 @@ myEmpty( true ) installFilters(); } +/*! + Custom event filter +*/ bool QtxToolBar::Watcher::eventFilter( QObject* o, QEvent* e ) { if ( o == myCont && e->type() == QEvent::ChildInserted ) @@ -108,6 +114,9 @@ bool QtxToolBar::Watcher::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Sets internal visibility state to true +*/ void QtxToolBar::Watcher::shown( QtxToolBar* tb ) { if ( tb != myCont ) @@ -116,6 +125,9 @@ void QtxToolBar::Watcher::shown( QtxToolBar* tb ) myVisible = true; } +/*! + Sets internal visibility state to false +*/ void QtxToolBar::Watcher::hided( QtxToolBar* tb ) { if ( tb != myCont ) @@ -124,6 +136,9 @@ void QtxToolBar::Watcher::hided( QtxToolBar* tb ) myVisible = false; } +/*! + Shows corresponding QtxToolBar +*/ void QtxToolBar::Watcher::showContainer() { if ( !myCont ) @@ -135,6 +150,9 @@ void QtxToolBar::Watcher::showContainer() myCont = cont; } +/*! + Hides corresponding QtxToolBar +*/ void QtxToolBar::Watcher::hideContainer() { if ( !myCont ) @@ -146,6 +164,9 @@ void QtxToolBar::Watcher::hideContainer() myCont = cont; } +/*! + Event handler of custom events +*/ void QtxToolBar::Watcher::customEvent( QCustomEvent* e ) { switch ( e->type() ) @@ -159,6 +180,9 @@ void QtxToolBar::Watcher::customEvent( QCustomEvent* e ) } } +/*! + Installs event filters +*/ void QtxToolBar::Watcher::installFilters() { if ( !myCont ) @@ -176,6 +200,9 @@ void QtxToolBar::Watcher::installFilters() } } +/*! + Update visibility state +*/ void QtxToolBar::Watcher::updateVisibility() { if ( !myCont ) @@ -215,6 +242,9 @@ void QtxToolBar::Watcher::updateVisibility() vis ? showContainer() : hideContainer(); } +/*! + Updates icon +*/ void QtxToolBar::Watcher::updateIcon() { if ( !myCont || !myCont->widget() ) @@ -224,6 +254,9 @@ void QtxToolBar::Watcher::updateIcon() myCont->setIcon( ico ? *ico : QPixmap() ); } +/*! + Updates caption +*/ void QtxToolBar::Watcher::updateCaption() { if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() ) @@ -231,10 +264,8 @@ void QtxToolBar::Watcher::updateCaption() } /*! - Class: QtxToolBar [Public] - Descr: + Constructor */ - QtxToolBar::QtxToolBar( const bool watch, const QString& label, QMainWindow* main, QWidget* parent, bool newLine, const char* name, WFlags f ) : QToolBar( label, main, parent, newLine, name, f ), @@ -245,6 +276,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( const QString& label, QMainWindow* main, QWidget* parent, bool newLine, const char* name, WFlags f ) : QToolBar( label, main, parent, newLine, name, f ), @@ -253,6 +287,9 @@ myStretch( false ) { } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( const bool watch, QMainWindow* main, const char* name ) : QToolBar( main, name ), myWatcher( 0 ), @@ -262,6 +299,9 @@ myStretch( false ) myWatcher = new Watcher( this ); } +/*! + Constructor +*/ QtxToolBar::QtxToolBar( QMainWindow* main, const char* name ) : QToolBar( main, name ), myWatcher( 0 ), @@ -269,10 +309,17 @@ myStretch( false ) { } +/*! + Destructor +*/ QtxToolBar::~QtxToolBar() { } +/*! + Change the toolbar's main widget + \param wid - new main widget +*/ void QtxToolBar::setWidget( QWidget* wid ) { if ( wid ) @@ -293,11 +340,18 @@ void QtxToolBar::setWidget( QWidget* wid ) } } +/*! + \return true if toolbar is stretchable +*/ bool QtxToolBar::isStretchable() const { return myStretch; } +/*! + Sets stretchable state of toolbar + \param on - new state +*/ void QtxToolBar::setStretchable( const bool on ) { if ( myStretch == on ) @@ -317,6 +371,9 @@ void QtxToolBar::setStretchable( const bool on ) } } +/*! + \return the recommended size for the widget +*/ QSize QtxToolBar::sizeHint() const { QSize sz = QToolBar::sizeHint(); @@ -332,6 +389,9 @@ QSize QtxToolBar::sizeHint() const return sz; } +/*! + \return the recommended minimum size for the widget +*/ QSize QtxToolBar::minimumSizeHint() const { QSize sz = QToolBar::minimumSizeHint(); @@ -347,6 +407,9 @@ QSize QtxToolBar::minimumSizeHint() const return sz; } +/*! + Shows toolbar +*/ void QtxToolBar::show() { if ( myWatcher ) @@ -355,6 +418,9 @@ void QtxToolBar::show() QToolBar::show(); } +/*! + Hides toolbar +*/ void QtxToolBar::hide() { if ( myWatcher ) diff --git a/src/Qtx/QtxToolTip.cxx b/src/Qtx/QtxToolTip.cxx index 5141e127d..ff00db58e 100755 --- a/src/Qtx/QtxToolTip.cxx +++ b/src/Qtx/QtxToolTip.cxx @@ -30,6 +30,9 @@ #define TOOLTIP_SHOW_DELAY 0500 #define TOOLTIP_HIDE_DELAY 7000 +/*! + Constructor +*/ QtxToolTip::QtxToolTip( QWidget* parent ) : QLabel( parent, "", WStyle_Customize | WStyle_NoBorder | WX11BypassWM | WStyle_Tool | WStyle_StaysOnTop | WType_TopLevel ) { @@ -55,10 +58,16 @@ QtxToolTip::QtxToolTip( QWidget* parent ) myShowDelayTime = 5000; } +/*! + Destructor +*/ QtxToolTip::~QtxToolTip() { } +/*! + Custom event filter +*/ bool QtxToolTip::eventFilter( QObject* o, QEvent* e ) { if ( ( e->type() == QEvent::Destroy ) || ( e->type() == QEvent::Close ) || ( e->type() == QEvent::Hide ) ) @@ -106,6 +115,12 @@ bool QtxToolTip::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + Shows tool tip + \param aPos - position + \param text - tooltip text + \param aWidgetRegion - rectangle +*/ void QtxToolTip::showTip( const QPoint& aPos, const QString& text, const QRect& aWidgetRegion ) { QFontMetrics theFM = fontMetrics(); @@ -114,6 +129,12 @@ void QtxToolTip::showTip( const QPoint& aPos, const QString& text, const QRect& showTip( QRect( QPoint( aPos.x(), aPos.y() + 10 ), QSize( theWidth, theHeight ) ), text, aWidgetRegion ); } +/*! + Shows tool tip + \param aRegion - tooltip region + \param text - tooltip text + \param aWidgetRegion - widget rectangle +*/ void QtxToolTip::showTip( const QRect& aRegion, const QString& text, const QRect& aWidgetRegion ) { setText( text ); @@ -124,6 +145,9 @@ void QtxToolTip::showTip( const QRect& aRegion, const QString& text, const QRect show(); } +/*! + Hides tooltip +*/ void QtxToolTip::hideTip() { hide(); @@ -131,6 +155,11 @@ void QtxToolTip::hideTip() mySleepTimer->stop(); } +/*! + It is called when there is a possibility that a tool tip should be shown and + must decide whether there is a tool tip for the point p in the widget that this QToolTip object relates to + \param pos - position +*/ void QtxToolTip::maybeTip( const QPoint& pos ) { QString text; @@ -152,12 +181,18 @@ void QtxToolTip::maybeTip( const QPoint& pos ) } } +/*! + SLOT: called when sleep time is out +*/ void QtxToolTip::onSleepTimeOut() { mySleepTimer->stop(); hideTip(); } +/*! + SLOT: called when wake time is out +*/ void QtxToolTip::onWakeUpTimeOut() { myWakeUpTimer->stop(); @@ -167,6 +202,9 @@ void QtxToolTip::onWakeUpTimeOut() maybeTip( pos ); } +/*! + Custom mouse press event handler +*/ void QtxToolTip::mousePressEvent( QMouseEvent* e ) { hideTip(); @@ -177,6 +215,9 @@ void QtxToolTip::mousePressEvent( QMouseEvent* e ) QApplication::sendEvent( reciever, me ); } +/*! + Custom mouse double click event handler +*/ void QtxToolTip::mouseDoubleClickEvent( QMouseEvent* e ) { hideTip(); @@ -187,23 +228,37 @@ void QtxToolTip::mouseDoubleClickEvent( QMouseEvent* e ) QApplication::sendEvent( reciever, me ); } +/*! + Sets wake delay time + \param theTime +*/ void QtxToolTip::setWakeUpDelayTime( int theTime ) { if( !(theTime < 0) ) myWakeUpDelayTime = theTime; } +/*! + Sets show delay time + \param theTime +*/ void QtxToolTip::setShowDelayTime( int theTime ) { if( !(theTime < 0) ) myShowDelayTime = theTime; } +/*! + \return timer measuring time of sleeping +*/ QTimer* QtxToolTip::sleepTimer() const { return mySleepTimer; } +/*! + \return timer measuring time of waking up +*/ QTimer* QtxToolTip::wakeUpTimer() const { return myWakeUpTimer; diff --git a/src/Qtx/QtxWorkspaceAction.cxx b/src/Qtx/QtxWorkspaceAction.cxx index c630ff47d..9b6d98ae6 100644 --- a/src/Qtx/QtxWorkspaceAction.cxx +++ b/src/Qtx/QtxWorkspaceAction.cxx @@ -25,6 +25,9 @@ #include #include +/*! + Constructor +*/ QtxWorkspaceAction::QtxWorkspaceAction( QWorkspace* ws, QObject* parent, const char* name ) : QtxAction( tr( "Controls windows into workspace" ), tr( "Workspace management" ), 0, parent, name ), myFlags( Standard ), @@ -45,20 +48,33 @@ myWorkspace( ws ) connect( myItem[VTile], SIGNAL( activated() ), this, SLOT( tileHorizontal() ) ); } +/*! + Destructor +*/ QtxWorkspaceAction::~QtxWorkspaceAction() { } +/*! + \return corresponding workspace +*/ QWorkspace* QtxWorkspaceAction::workspace() const { return myWorkspace; } +/*! + \return set of action flags +*/ int QtxWorkspaceAction::items() const { return myFlags; } +/*! + Sets action flags + \param flags - new set of flags +*/ void QtxWorkspaceAction::setItems( const int flags ) { if ( !flags || flags == myFlags || !( flags & Operations ) ) @@ -67,11 +83,19 @@ void QtxWorkspaceAction::setItems( const int flags ) myFlags = flags; } +/*! + \return true if action contains all flags + \param flags - new set of flags +*/ bool QtxWorkspaceAction::hasItems( const int flags ) const { return ( myFlags & flags ) == flags; } +/*! + \return accelerator of item + \param id - item id +*/ int QtxWorkspaceAction::accel( const int id ) const { int a = 0; @@ -80,6 +104,10 @@ int QtxWorkspaceAction::accel( const int id ) const return a; } +/*! + \return icons of item + \param id - item id +*/ QIconSet QtxWorkspaceAction::iconSet( const int id ) const { QIconSet ico; @@ -88,6 +116,10 @@ QIconSet QtxWorkspaceAction::iconSet( const int id ) const return ico; } +/*! + \return menu text of item + \param id - item id +*/ QString QtxWorkspaceAction::menuText( const int id ) const { QString txt; @@ -96,6 +128,10 @@ QString QtxWorkspaceAction::menuText( const int id ) const return txt; } +/*! + \return status tip of item + \param id - item id +*/ QString QtxWorkspaceAction::statusTip( const int id ) const { QString txt; @@ -104,35 +140,64 @@ QString QtxWorkspaceAction::statusTip( const int id ) const return txt; } +/*! + Changes accelerator of item + \param id - item id + \param a - new accelerator +*/ void QtxWorkspaceAction::setAccel( const int id, const int a ) { if ( myItem.contains( id ) ) myItem[id]->setAccel( a ); } +/*! + Changes icons of item + \param id - item id + \param ico - new icons +*/ void QtxWorkspaceAction::setIconSet( const int id, const QIconSet& ico ) { if ( myItem.contains( id ) ) myItem[id]->setIconSet( ico ); } +/*! + Changes menu text of item + \param id - item id + \param txt - new menu text +*/ void QtxWorkspaceAction::setMenuText( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setMenuText( txt ); } +/*! + Changes status tip of item + \param id - item id + \param txt - new status tip +*/ void QtxWorkspaceAction::setStatusTip( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setStatusTip( txt ); } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxWorkspaceAction::addTo( QWidget* wid ) { return addTo( wid, -1 ); } +/*! + Adds action to widget + \param wid - widget + \param idx - position +*/ bool QtxWorkspaceAction::addTo( QWidget* wid, const int idx ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -153,6 +218,10 @@ bool QtxWorkspaceAction::addTo( QWidget* wid, const int idx ) return true; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxWorkspaceAction::removeFrom( QWidget* wid ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -172,6 +241,10 @@ bool QtxWorkspaceAction::removeFrom( QWidget* wid ) return true; } +/*! + Performs action + \param type - action type +*/ void QtxWorkspaceAction::perform( const int type ) { switch ( type ) @@ -191,6 +264,9 @@ void QtxWorkspaceAction::perform( const int type ) } } +/*! + Performs tile action +*/ void QtxWorkspaceAction::tile() { QWorkspace* ws = workspace(); @@ -200,6 +276,9 @@ void QtxWorkspaceAction::tile() ws->tile(); } +/*! + Performs cascade action +*/ void QtxWorkspaceAction::cascade() { QWorkspace* ws = workspace(); @@ -216,6 +295,9 @@ void QtxWorkspaceAction::cascade() it.current()->resize( int( w * 0.8 ), int( h * 0.8 ) ); } +/*! + Performs tile vertical action +*/ void QtxWorkspaceAction::tileVertical() { QWorkspace* wrkSpace = workspace(); @@ -256,6 +338,9 @@ void QtxWorkspaceAction::tileVertical() } } +/*! + Performs tile horizontal action +*/ void QtxWorkspaceAction::tileHorizontal() { QWorkspace* wrkSpace = workspace(); @@ -295,6 +380,9 @@ void QtxWorkspaceAction::tileHorizontal() } } +/*! + SLOT: called just before the popup menu is displayed, updates popup +*/ void QtxWorkspaceAction::onAboutToShow() { const QObject* obj = sender(); @@ -304,11 +392,18 @@ void QtxWorkspaceAction::onAboutToShow() updatePopup( (QPopupMenu*)obj ); } +/*! + SLOT: called when popup menu is destroyed, removes it from menu +*/ void QtxWorkspaceAction::onPopupDestroyed( QObject* obj ) { myMenu.remove( (QPopupMenu*)obj ); } +/*! + Updates popup + \param pm - popup menu +*/ void QtxWorkspaceAction::checkPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -332,6 +427,10 @@ void QtxWorkspaceAction::checkPopup( QPopupMenu* pm ) } } +/*! + Clears and refills popup and updates state of actions + \param pm - popup menu +*/ void QtxWorkspaceAction::updatePopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -346,6 +445,10 @@ void QtxWorkspaceAction::updatePopup( QPopupMenu* pm ) myItem[VTile]->setEnabled( count ); } +/*! + Clears popup + \param pm - popup menu +*/ int QtxWorkspaceAction::clearPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -365,6 +468,11 @@ int QtxWorkspaceAction::clearPopup( QPopupMenu* pm ) return idx; } +/*! + Fills popup with items + \param pm - popup menu + \param idx - position +*/ void QtxWorkspaceAction::fillPopup( QPopupMenu* pm, const int idx ) { if ( !pm ) @@ -405,6 +513,9 @@ void QtxWorkspaceAction::fillPopup( QPopupMenu* pm, const int idx ) } } +/*! + SLOT: called when popup item corresponding to window is activated, activates window +*/ void QtxWorkspaceAction::onItemActivated( int idx ) { QWorkspace* ws = workspace(); diff --git a/src/Qtx/QtxWorkstack.cxx b/src/Qtx/QtxWorkstack.cxx index 5e01f08e8..c54060631 100644 --- a/src/Qtx/QtxWorkstack.cxx +++ b/src/Qtx/QtxWorkstack.cxx @@ -41,10 +41,8 @@ #define DARK_COLOR_LIGHT 250 /*! - Class: QtxWorkstack [Public] - Descr: + Constructor */ - QtxWorkstack::QtxWorkstack( QWidget* parent ) : QWidget( parent ), myWin( 0 ), @@ -68,10 +66,16 @@ myWorkArea( 0 ) base->addWidget( mySplit ); } +/*! + Destructor +*/ QtxWorkstack::~QtxWorkstack() { } +/*! + \return list of all widgets in all areas +*/ QWidgetList QtxWorkstack::windowList() const { QPtrList lst; @@ -88,16 +92,26 @@ QWidgetList QtxWorkstack::windowList() const return widList; } +/*! + \return list of all widgets in active area +*/ QWidgetList QtxWorkstack::splitWindowList() const { return myArea ? myArea->widgetList() : QWidgetList(); } +/*! + \return active widget +*/ QWidget* QtxWorkstack::activeWindow() const { return myWin; } +/*! + Splits widgets + \param o - orientation (Qt::Orientation) +*/ void QtxWorkstack::split( const int o ) { QtxWorkstackArea* area = myWorkArea; @@ -145,10 +159,10 @@ void QtxWorkstack::split( const int o ) } /*! -* \brief Split workarea of the given widget on two parts. -* \param wid - widget, belonging to this workstack -* \param o - orientation of splitting (Qt::Horizontal or Qt::Vertical) -* \param type - type of splitting, see SplitType 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 SplitType enumeration */ void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType type) { @@ -224,8 +238,8 @@ void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType } /*! -* \brief Put given widget on top of its workarea -* \param wid - widget, belonging to this workstack + \brief Put given widget on top of its workarea + \param wid - widget, belonging to this workstack */ /* void QtxWorkstack::OnTop (QWidget* wid) @@ -249,17 +263,17 @@ void QtxWorkstack::OnTop (QWidget* wid) */ /*! -* \brief Move widget(s) from source workarea into target workarea -* or just reorder widgets inside one workarea. -* \param wid1 - widget from target workarea -* \param wid2 - widget from source workarea -* \param all - if this parameter is TRUE, all widgets from source workarea will -* be moved into the target one, else only the \a wid2 will be moved -* -* Move \a wid2 in target workarea. Put it right after \a wid1. -* If value of boolean argument is TRUE, all widgets from source workarea -* will be moved together with \a wid2, source workarea will be deleted. -* If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place. + \brief Move widget(s) from source workarea into target workarea + or just reorder widgets inside one workarea. + \param wid1 - widget from target workarea + \param wid2 - widget from source workarea + \param all - if this parameter is TRUE, all widgets from source workarea will + be moved into the target one, else only the \a wid2 will be moved + + Move \a wid2 in target workarea. Put it right after \a wid1. + If value of boolean argument is TRUE, all widgets from source workarea + will be moved together with \a wid2, source workarea will be deleted. + If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place. */ void QtxWorkstack::Attract ( QWidget* wid1, QWidget* wid2, const bool all ) { @@ -711,6 +725,9 @@ int QtxWorkstack::setPosition( QWidget* wid, QSplitter* split, const Qt::Orienta return 0; } +/*! + Redistributes space among widgets equally +*/ void QtxWorkstack::distributeSpace( QSplitter* split ) const { if ( !split ) @@ -724,16 +741,25 @@ void QtxWorkstack::distributeSpace( QSplitter* split ) const split->setSizes( szList ); } +/*! + Splits widgets vertically +*/ void QtxWorkstack::splitVertical() { split( Qt::Horizontal ); } +/*! + Splits widgets horizontally +*/ void QtxWorkstack::splitHorizontal() { split( Qt::Vertical ); } +/*! + SLOT: called if action "Rename" is activated, changes caption of widget +*/ void QtxWorkstack::onRename() { if ( !myWorkWin ) @@ -746,6 +772,10 @@ void QtxWorkstack::onRename() myWorkWin->setCaption( newName ); } +/*! + Wraps area into new splitter + \return new splitter +*/ QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area ) { if ( !area ) @@ -774,6 +804,12 @@ QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area ) return wrap; } +/*! + Reparenst and adds widget + \param wid - widget + \param pWid - parent widget + \param after - after widget +*/ void QtxWorkstack::insertWidget( QWidget* wid, QWidget* pWid, QWidget* after ) { if ( !wid || !pWid ) @@ -818,6 +854,10 @@ void QtxWorkstack::onCloseWindow() activeWindow()->close(); } +/*! + SLOT: called on area is destroyed + Sets focus to neighbour area +*/ void QtxWorkstack::onDestroyed( QObject* obj ) { QtxWorkstackArea* area = (QtxWorkstackArea*)obj; @@ -835,6 +875,9 @@ void QtxWorkstack::onDestroyed( QObject* obj ) QApplication::postEvent( this, new QCustomEvent( QEvent::User ) ); } +/*! + SLOT: called on window activating +*/ void QtxWorkstack::onWindowActivated( QWidget* wid ) { const QObject* obj = sender(); @@ -844,6 +887,9 @@ void QtxWorkstack::onWindowActivated( QWidget* wid ) setActiveArea( (QtxWorkstackArea*)obj ); } +/*! + SLOT: called on window deactivating +*/ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area ) { if ( myArea != area ) @@ -866,6 +912,11 @@ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area ) QApplication::postEvent( this, new QCustomEvent( QEvent::User ) ); } +/*! + Creates and shows popup menu for area + \param w - area + \param p - popup position +*/ void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p ) { QtxWorkstackArea* anArea = dynamic_cast( (QObject*)sender() ); @@ -906,6 +957,9 @@ void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p ) myWorkArea = 0; } +/*! + Custom child event handler, inserts widget to active or current area +*/ void QtxWorkstack::childEvent( QChildEvent* e ) { if ( e->inserted() && e->child()->isWidgetType() ) @@ -920,11 +974,18 @@ void QtxWorkstack::childEvent( QChildEvent* e ) QWidget::childEvent( e ); } +/*! + Handler of custom events +*/ void QtxWorkstack::customEvent( QCustomEvent* e ) { updateState(); } +/*! + \return splitter corresponding to area + \param area +*/ QSplitter* QtxWorkstack::splitter( QtxWorkstackArea* area ) const { if ( !area ) @@ -939,6 +1000,12 @@ QSplitter* QtxWorkstack::splitter( QtxWorkstackArea* area ) const return split; } +/*! + Fills list with children splitters + \param split - parent splitter + \param splitList - list to be filled with + \param rec - recursive search of children +*/ void QtxWorkstack::splitters( QSplitter* split, QPtrList& splitList, const bool rec ) const { if ( !split ) @@ -957,6 +1024,12 @@ void QtxWorkstack::splitters( QSplitter* split, QPtrList& splitList, } } +/*! + Fills list with children areas + \param split - parent splitter + \param areaList - list to be filled with + \param rec - recursive search of children +*/ void QtxWorkstack::areas( QSplitter* split, QPtrList& areaList, const bool rec ) const { if ( !split ) @@ -975,11 +1048,17 @@ void QtxWorkstack::areas( QSplitter* split, QPtrList& areaList } } +/*! + \return active area +*/ QtxWorkstackArea* QtxWorkstack::activeArea() const { return myArea; } +/*! + \return active area or current area or create new area of there is no one +*/ QtxWorkstackArea* QtxWorkstack::targetArea() { QtxWorkstackArea* area = activeArea(); @@ -999,6 +1078,9 @@ QtxWorkstackArea* QtxWorkstack::targetArea() return area; } +/*! + \return current area (that has focus) +*/ QtxWorkstackArea* QtxWorkstack::currentArea() const { QtxWorkstackArea* area = 0; @@ -1013,6 +1095,9 @@ QtxWorkstackArea* QtxWorkstack::currentArea() const return area; } +/*! + Creates new area +*/ QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const { QtxWorkstackArea* area = new QtxWorkstackArea( parent ); @@ -1026,6 +1111,10 @@ QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const return area; } +/*! + Sets area as active + \param area +*/ void QtxWorkstack::setActiveArea( QtxWorkstackArea* area ) { QWidget* oldCur = myWin; @@ -1049,6 +1138,10 @@ void QtxWorkstack::setActiveArea( QtxWorkstackArea* area ) emit windowActivated( myWin ); } +/*! + \return neighbour area + \param area - area to search neighbour +*/ QtxWorkstackArea* QtxWorkstack::neighbourArea( QtxWorkstackArea* area ) const { QPtrList lst; @@ -1072,6 +1165,10 @@ QtxWorkstackArea* QtxWorkstack::neighbourArea( QtxWorkstackArea* area ) const return na; } +/*! + \return area covering point + \param p - point +*/ QtxWorkstackArea* QtxWorkstack::areaAt( const QPoint& p ) const { QtxWorkstackArea* area = 0; @@ -1089,11 +1186,17 @@ QtxWorkstackArea* QtxWorkstack::areaAt( const QPoint& p ) const return area; } +/*! + Update +*/ void QtxWorkstack::updateState() { updateState( mySplit ); } +/*! + Update splitters +*/ void QtxWorkstack::updateState( QSplitter* split ) { QPtrList recList; @@ -1133,6 +1236,11 @@ void QtxWorkstack::updateState( QSplitter* split ) 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 ) @@ -1183,16 +1291,18 @@ void QtxWorkstack::splitterInfo( QSplitter* split, QString& info ) const } -// 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 ); @@ -1207,7 +1317,9 @@ QString getValue( const QString& str, const QString& valName ) return QString( "" ); } -// checks format of splitter parameters string +/* + checks format of splitter parameters string +*/ bool checkFormat( const QString& parameters ) { QString params( parameters ); @@ -1234,7 +1346,9 @@ bool checkFormat( const QString& 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; @@ -1290,7 +1404,9 @@ QWidget* getView( const QWidget* parent, const QString& aName ) 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 >& sMap ) { if ( !::checkFormat( parameters ) ) { @@ -1348,7 +1464,9 @@ void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& 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 @@ -1383,9 +1501,11 @@ QtxWorkstack& QtxWorkstack::operator<<( const QString& parameters ) 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 ); @@ -1394,10 +1514,8 @@ QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters ) /*! - Class: QtxWorkstackArea [Internal] - Descr: + Constructor */ - QtxWorkstackArea::QtxWorkstackArea( QWidget* parent ) : QWidget( parent ) { @@ -1432,11 +1550,17 @@ QtxWorkstackArea::QtxWorkstackArea( QWidget* parent ) qApp->installEventFilter( this ); } +/*! + Destructor +*/ QtxWorkstackArea::~QtxWorkstackArea() { qApp->removeEventFilter( this ); } +/*! + \return true if area is empty +*/ bool QtxWorkstackArea::isEmpty() const { bool res = false; @@ -1445,6 +1569,11 @@ bool QtxWorkstackArea::isEmpty() const return !res; } +/*! + Adds widget to area + \param wid - widget + \param idx - index +*/ void QtxWorkstackArea::insertWidget( QWidget* wid, const int idx ) { if ( !wid ) @@ -1479,6 +1608,10 @@ void QtxWorkstackArea::insertWidget( QWidget* wid, const int idx ) wid->setFocus(); } +/*! + Creates and shows popup menu for area + \param p - popup position +*/ void QtxWorkstackArea::onContextMenuRequested( QPoint p ) { const QtxWorkstackTabBar* bar = ::qt_cast( sender() ); @@ -1493,12 +1626,20 @@ void QtxWorkstackArea::onContextMenuRequested( QPoint p ) emit contextMenuRequested( wid, p ); } +/*! + SLOT: called when widget added to area is destroyed, removes widget from area +*/ void QtxWorkstackArea::onWidgetDestroyed() { if ( sender() ) removeWidget( (QWidget*)sender(), false ); } +/*! + Removes widget from area + \param wid - widget + \param del - auto deleting +*/ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del ) { if ( !myList.contains( wid ) ) @@ -1524,6 +1665,9 @@ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del ) updateState(); } +/*! + \return list of visible widgets +*/ QWidgetList QtxWorkstackArea::widgetList() const { QWidgetList lst; @@ -1535,21 +1679,35 @@ QWidgetList QtxWorkstackArea::widgetList() const return lst; } +/*! + \return active widget +*/ QWidget* QtxWorkstackArea::activeWidget() const { return widget( myBar->currentTab() ); } +/*! + Sets widget as active + \param wid - widget +*/ void QtxWorkstackArea::setActiveWidget( QWidget* wid ) { myBar->setCurrentTab( widgetId( wid ) ); } +/*! + \return true if area contains widget + \param wid - widget +*/ bool QtxWorkstackArea::contains( QWidget* wid ) const { return myList.contains( wid ); } +/*! + Shows area +*/ void QtxWorkstackArea::show() { QMap map; @@ -1565,6 +1723,9 @@ void QtxWorkstackArea::show() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + Hides area +*/ void QtxWorkstackArea::hide() { QMap map; @@ -1580,6 +1741,9 @@ void QtxWorkstackArea::hide() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + \return true if area is active +*/ bool QtxWorkstackArea::isActive() const { QtxWorkstack* ws = workstack(); @@ -1589,11 +1753,17 @@ bool QtxWorkstackArea::isActive() const return ws->activeArea() == this; } +/*! + Update active state of tab bar +*/ void QtxWorkstackArea::updateActiveState() { myBar->setActive( isActive() ); } +/*! + \return corresponding workstack +*/ QtxWorkstack* QtxWorkstackArea::workstack() const { QtxWorkstack* ws = 0; @@ -1607,6 +1777,9 @@ QtxWorkstack* QtxWorkstackArea::workstack() const return ws; } +/*! + Custom event filter +*/ bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e ) { if ( o->isWidgetType() ) @@ -1627,17 +1800,28 @@ bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e ) return false; } +/*! + \return rectangle of area in order to draw drop rectangle on area +*/ QRect QtxWorkstackArea::floatRect() const { QRect r = myStack->geometry(); return QRect( mapToGlobal( r.topLeft() ), mapToGlobal( r.bottomRight() ) ); } +/*! + \return rectangle of tab in order to draw drop rectangle on tab + \param idx - tab index +*/ QRect QtxWorkstackArea::floatTab( const int idx ) const { return myBar->tabRect( idx ); } +/*! + \return tab covering point + \param p - point +*/ int QtxWorkstackArea::tabAt( const QPoint& p ) const { int idx = -1; @@ -1650,6 +1834,9 @@ int QtxWorkstackArea::tabAt( const QPoint& p ) const return idx; } +/*! + Event handler for custom events +*/ void QtxWorkstackArea::customEvent( QCustomEvent* e ) { switch ( e->type() ) @@ -1678,6 +1865,9 @@ void QtxWorkstackArea::customEvent( QCustomEvent* e ) } } +/*! + Custom focus in event handler +*/ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) { QWidget::focusInEvent( e ); @@ -1685,6 +1875,9 @@ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) emit activated( activeWidget() ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) { QWidget::mousePressEvent( e ); @@ -1692,6 +1885,9 @@ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) emit activated( activeWidget() ); } +/*! + SLOT: called if button close is pressed +*/ void QtxWorkstackArea::onClose() { QWidget* wid = activeWidget(); @@ -1699,6 +1895,9 @@ void QtxWorkstackArea::onClose() wid->close(); } +/*! + SLOT: called if tab page is selected +*/ void QtxWorkstackArea::onSelected( int id ) { updateCurrent(); @@ -1706,6 +1905,9 @@ void QtxWorkstackArea::onSelected( int id ) emit activated( activeWidget() ); } +/*! + SLOT: called if active tab page is dragged +*/ void QtxWorkstackArea::onDragActiveTab() { QtxWorkstackChild* c = child( activeWidget() ); @@ -1715,6 +1917,9 @@ void QtxWorkstackArea::onDragActiveTab() new QtxWorkstackDrag( workstack(), c ); } +/*! + SLOT: called on child is destroyed, removes from area +*/ void QtxWorkstackArea::onChildDestroyed( QObject* obj ) { QtxWorkstackChild* child = (QtxWorkstackChild*)obj; @@ -1732,26 +1937,41 @@ void QtxWorkstackArea::onChildDestroyed( QObject* obj ) QApplication::postEvent( this, new QCustomEvent( (QEvent::Type)RemoveWidget, wid ) ); } +/*! + SLOT: called on child is shown +*/ void QtxWorkstackArea::onChildShown( QtxWorkstackChild* c ) { setWidgetShown( c->widget(), true ); } +/*! + SLOT: called on child is hidden +*/ void QtxWorkstackArea::onChildHided( QtxWorkstackChild* c ) { setWidgetShown( c->widget(), false ); } +/*! + SLOT: called on child is activated +*/ void QtxWorkstackArea::onChildActivated( QtxWorkstackChild* c ) { setWidgetActive( c->widget() ); } +/*! + SLOT: called on child caption is changed +*/ void QtxWorkstackArea::onChildCaptionChanged( QtxWorkstackChild* c ) { updateTab( c->widget() ); } +/*! + Raises widget when active tab is changed +*/ void QtxWorkstackArea::updateCurrent() { QMap map; @@ -1767,6 +1987,10 @@ void QtxWorkstackArea::updateCurrent() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + Updates tab + \param wid - tab widget +*/ void QtxWorkstackArea::updateTab( QWidget* wid ) { QTab* tab = myBar->tab( widgetId( wid ) ); @@ -1785,6 +2009,10 @@ void QtxWorkstackArea::updateTab( QWidget* wid ) tab->setText( wid->caption() ); } +/*! + \return widget + \param id - widget id +*/ QWidget* QtxWorkstackArea::widget( const int id ) const { QWidget* wid = 0; @@ -1796,6 +2024,10 @@ QWidget* QtxWorkstackArea::widget( const int id ) const return wid; } +/*! + \return widget id + \param wid - widget +*/ int QtxWorkstackArea::widgetId( QWidget* wid ) const { int id = -1; @@ -1804,6 +2036,10 @@ int QtxWorkstackArea::widgetId( QWidget* wid ) const return id; } +/*! + \return true if widget is visible + \param wid - widget +*/ bool QtxWorkstackArea::widgetVisibility( QWidget* wid ) const { bool res = false; @@ -1812,6 +2048,10 @@ bool QtxWorkstackArea::widgetVisibility( QWidget* wid ) const return res; } +/*! + Sets widget as active + \param wid - widget +*/ void QtxWorkstackArea::setWidgetActive( QWidget* wid ) { int id = widgetId( wid ); @@ -1821,6 +2061,11 @@ void QtxWorkstackArea::setWidgetActive( QWidget* wid ) myBar->setCurrentTab( id ); } +/*! + Shows/hides widget + \param wid - widget + \param on - new shown state +*/ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on ) { if ( isBlocked( wid ) || !myInfo.contains( wid ) || myInfo[wid].vis == on ) @@ -1830,6 +2075,9 @@ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on ) updateState(); } +/*! + Update +*/ void QtxWorkstackArea::updateState() { bool updBar = myBar->isUpdatesEnabled(); @@ -1931,6 +2179,9 @@ void QtxWorkstackArea::updateState() } } +/*! + \return first unshared widget id +*/ int QtxWorkstackArea::generateId() const { QMap map; @@ -1945,11 +2196,20 @@ int QtxWorkstackArea::generateId() const return id; } +/*! + \return true if widget is blocked + \param wid - widget +*/ bool QtxWorkstackArea::isBlocked( QWidget* wid ) const { return myBlock.contains( wid ); } +/*! + Blocks widget + \param wid - widget + \param on - new blocked state +*/ void QtxWorkstackArea::setBlocked( QWidget* wid, const bool on ) { if ( on ) @@ -1958,6 +2218,10 @@ void QtxWorkstackArea::setBlocked( QWidget* wid, const bool on ) myBlock.remove( wid ); } +/*! + \return child corresponding to widget + \param wid - widget +*/ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const { QtxWorkstackChild* res = 0; @@ -1967,10 +2231,8 @@ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const } /*! - Class: QtxWorkstackChild [Internal] - Descr: + Constructor */ - QtxWorkstackChild::QtxWorkstackChild( QWidget* wid, QWidget* parent ) : QHBox( parent ), myWidget( wid ) @@ -1981,6 +2243,9 @@ myWidget( wid ) connect( myWidget, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + Destructor +*/ QtxWorkstackChild::~QtxWorkstackChild() { qApp->removeEventFilter( this ); @@ -1993,11 +2258,17 @@ QtxWorkstackChild::~QtxWorkstackChild() disconnect( widget(), SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + \return corresponding widget +*/ QWidget* QtxWorkstackChild::widget() const { return myWidget; } +/*! + Custom event filter +*/ bool QtxWorkstackChild::eventFilter( QObject* o, QEvent* e ) { if ( o->isWidgetType() ) @@ -2017,6 +2288,9 @@ bool QtxWorkstackChild::eventFilter( QObject* o, QEvent* e ) return QHBox::eventFilter( o, e ); } +/*! + SLOT: called on object is destroyed +*/ void QtxWorkstackChild::onDestroyed( QObject* obj ) { if ( obj != widget() ) @@ -2026,6 +2300,9 @@ void QtxWorkstackChild::onDestroyed( QObject* obj ) deleteLater(); } +/*! + Custom child event handler +*/ void QtxWorkstackChild::childEvent( QChildEvent* e ) { if ( e->type() == QEvent::ChildRemoved && e->child() == widget() ) @@ -2037,20 +2314,25 @@ void QtxWorkstackChild::childEvent( QChildEvent* e ) } /*! - Class: QtxWorkstackTabBar [Internal] - Descr: + Constructor */ - QtxWorkstackTabBar::QtxWorkstackTabBar( QWidget* parent ) : QTabBar( parent ), myId( -1 ) { } +/*! + Destructor +*/ QtxWorkstackTabBar::~QtxWorkstackTabBar() { } +/*! + Sets tab bar as active or inactive + \param on - new active state +*/ void QtxWorkstackTabBar::setActive( const bool on ) { QFont aFont = font(); @@ -2072,6 +2354,10 @@ void QtxWorkstackTabBar::setActive( const bool on ) update(); } +/*! + \return tab rectangle + \param idx - tab index +*/ QRect QtxWorkstackTabBar::tabRect( const int idx ) const { QRect r; @@ -2100,6 +2386,9 @@ QRect QtxWorkstackTabBar::tabRect( const int idx ) const return r; } +/*! + Custom mouse move event handler +*/ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e ) { if ( myId != -1 && !tab( myId )->rect().contains( e->pos() ) ) @@ -2111,6 +2400,9 @@ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e ) QTabBar::mouseMoveEvent( e ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) { QTabBar::mousePressEvent( e ); @@ -2119,6 +2411,9 @@ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) myId = currentTab(); } +/*! + Custom mouse release event handler +*/ void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e ) { QTabBar::mouseReleaseEvent( e ); @@ -2129,12 +2424,18 @@ void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e ) emit contextMenuRequested( e->globalPos() ); } +/*! + Custom context menu event handler +*/ void QtxWorkstackTabBar::contextMenuEvent( QContextMenuEvent* e ) { if ( e->reason() != QContextMenuEvent::Mouse ) emit contextMenuRequested( e->globalPos() ); } +/*! + Draws label of tab bar +*/ void QtxWorkstackTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const { if ( currentTab() != t->identifier() ) @@ -2147,10 +2448,8 @@ void QtxWorkstackTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool } /*! - Class: QtxWorkstackDrag [Internal] - Descr: + Constructor */ - QtxWorkstackDrag::QtxWorkstackDrag( QtxWorkstack* ws, QtxWorkstackChild* child ) : QObject( 0 ), myWS( ws ), @@ -2162,6 +2461,9 @@ myChild( child ) qApp->installEventFilter( this ); } +/*! + Destructor +*/ QtxWorkstackDrag::~QtxWorkstackDrag() { qApp->removeEventFilter( this ); @@ -2169,6 +2471,9 @@ QtxWorkstackDrag::~QtxWorkstackDrag() endDrawRect(); } +/*! + Custom event filter +*/ bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e ) { switch ( e->type() ) @@ -2188,6 +2493,10 @@ bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e ) return true; } +/*! + Updates internal field with widget-target for dropping + \param p - current point of dragging +*/ void QtxWorkstackDrag::updateTarget( const QPoint& p ) { int tab = -1; @@ -2195,6 +2504,11 @@ void QtxWorkstackDrag::updateTarget( const QPoint& p ) setTarget( area, tab ); } +/*! + \return target area for dropping by point + \param p - current point of dragging + \param tab - index of tab to dropping +*/ QtxWorkstackArea* QtxWorkstackDrag::detectTarget( const QPoint& p, int& tab ) const { if ( p.isNull() ) @@ -2206,6 +2520,11 @@ QtxWorkstackArea* QtxWorkstackDrag::detectTarget( const QPoint& p, int& tab ) co return area; } +/*! + Changes target area for dropping + \param area - new target area + \param tab - tab index +*/ void QtxWorkstackDrag::setTarget( QtxWorkstackArea* area, const int tab ) { if ( !area || ( myArea == area && tab == myTab ) ) @@ -2223,12 +2542,18 @@ void QtxWorkstackDrag::setTarget( QtxWorkstackArea* area, const int tab ) drawRect(); } +/*! + Called on widget drop, inserts dropped widget to area +*/ void QtxWorkstackDrag::dropWidget() { if ( myArea ) myArea->insertWidget( myChild->widget(), myTab ); } +/*! + Draws float rect +*/ void QtxWorkstackDrag::drawRect() { if ( !myPainter || !myArea ) @@ -2253,12 +2578,18 @@ void QtxWorkstackDrag::drawRect() myPainter->drawRect( tr ); } +/*! + Deletes internal painter +*/ void QtxWorkstackDrag::endDrawRect() { delete myPainter; myPainter = 0; } +/*! + Initialize internal painter +*/ void QtxWorkstackDrag::startDrawRect() { if ( myPainter ) diff --git a/src/Qtx/QtxWorkstackAction.cxx b/src/Qtx/QtxWorkstackAction.cxx index c26a9b0aa..3bc06761a 100644 --- a/src/Qtx/QtxWorkstackAction.cxx +++ b/src/Qtx/QtxWorkstackAction.cxx @@ -26,6 +26,9 @@ #include #include +/*! + Constructor +*/ QtxWorkstackAction::QtxWorkstackAction( QtxWorkstack* ws, QObject* parent, const char* name ) : QtxAction( tr( "Controls windows into workstack" ), tr( "Workstack management" ), 0, parent, name ), myFlags( Standard ), @@ -40,20 +43,33 @@ myWorkstack( ws ) connect( myItem[HSplit], SIGNAL( activated() ), ws, SLOT( splitHorizontal() ) ); } +/*! + Destructor +*/ QtxWorkstackAction::~QtxWorkstackAction() { } +/*! + \return corresponding workstack +*/ QtxWorkstack* QtxWorkstackAction::workstack() const { return myWorkstack; } +/*! + \return set of action flags +*/ int QtxWorkstackAction::items() const { return myFlags; } +/*! + Sets action flags + \param flags - new set of flags +*/ void QtxWorkstackAction::setItems( const int flags ) { if ( !flags || flags == myFlags || !( flags & Split ) ) @@ -62,11 +78,19 @@ void QtxWorkstackAction::setItems( const int flags ) myFlags = flags; } +/*! + \return true if action contains all flags + \param flags - new set of flags +*/ bool QtxWorkstackAction::hasItems( const int flags ) const { return ( myFlags & flags ) == flags; } +/*! + \return accelerator of item + \param id - item id +*/ int QtxWorkstackAction::accel( const int id ) const { int a = 0; @@ -75,6 +99,10 @@ int QtxWorkstackAction::accel( const int id ) const return a; } +/*! + \return icons of item + \param id - item id +*/ QIconSet QtxWorkstackAction::iconSet( const int id ) const { QIconSet ico; @@ -83,6 +111,10 @@ QIconSet QtxWorkstackAction::iconSet( const int id ) const return ico; } +/*! + \return menu text of item + \param id - item id +*/ QString QtxWorkstackAction::menuText( const int id ) const { QString txt; @@ -91,6 +123,10 @@ QString QtxWorkstackAction::menuText( const int id ) const return txt; } +/*! + \return status tip of item + \param id - item id +*/ QString QtxWorkstackAction::statusTip( const int id ) const { QString txt; @@ -99,35 +135,64 @@ QString QtxWorkstackAction::statusTip( const int id ) const return txt; } +/*! + Changes accelerator of item + \param id - item id + \param a - new accelerator +*/ void QtxWorkstackAction::setAccel( const int id, const int a ) { if ( myItem.contains( id ) ) myItem[id]->setAccel( a ); } +/*! + Changes icons of item + \param id - item id + \param ico - new icons +*/ void QtxWorkstackAction::setIconSet( const int id, const QIconSet& ico ) { if ( myItem.contains( id ) ) myItem[id]->setIconSet( ico ); } +/*! + Changes menu text of item + \param id - item id + \param txt - new menu text +*/ void QtxWorkstackAction::setMenuText( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setMenuText( txt ); } +/*! + Changes status tip of item + \param id - item id + \param txt - new status tip +*/ void QtxWorkstackAction::setStatusTip( const int id, const QString& txt ) { if ( myItem.contains( id ) ) myItem[id]->setStatusTip( txt ); } +/*! + Adds action to widget + \param wid - widget +*/ bool QtxWorkstackAction::addTo( QWidget* wid ) { return addTo( wid, -1 ); } +/*! + Adds action to widget + \param wid - widget + \param idx - position +*/ bool QtxWorkstackAction::addTo( QWidget* wid, const int idx ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -148,6 +213,10 @@ bool QtxWorkstackAction::addTo( QWidget* wid, const int idx ) return true; } +/*! + Removes action from widget + \param wid - widget +*/ bool QtxWorkstackAction::removeFrom( QWidget* wid ) { if ( !wid || !wid->inherits( "QPopupMenu" ) ) @@ -167,6 +236,10 @@ bool QtxWorkstackAction::removeFrom( QWidget* wid ) return true; } +/*! + Performs action + \param type - action type +*/ void QtxWorkstackAction::perform( const int type ) { switch ( type ) @@ -180,6 +253,9 @@ void QtxWorkstackAction::perform( const int type ) } } +/*! + SLOT: called just before the popup menu is displayed, updates popup +*/ void QtxWorkstackAction::onAboutToShow() { const QObject* obj = sender(); @@ -195,11 +271,18 @@ void QtxWorkstackAction::onAboutToShow() updatePopup( (QPopupMenu*)obj ); } +/*! + SLOT: called when popup menu is destroyed, removes it from menu +*/ void QtxWorkstackAction::onPopupDestroyed( QObject* obj ) { myMenu.remove( (QPopupMenu*)obj ); } +/*! + Updates popup + \param pm - popup menu +*/ void QtxWorkstackAction::checkPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -223,6 +306,10 @@ void QtxWorkstackAction::checkPopup( QPopupMenu* pm ) } } +/*! + Clears and refills popup and updates state of actions + \param pm - popup menu +*/ void QtxWorkstackAction::updatePopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -235,6 +322,10 @@ void QtxWorkstackAction::updatePopup( QPopupMenu* pm ) myItem[HSplit]->setEnabled( count > 1 ); } +/*! + Clears popup + \param pm - popup menu +*/ int QtxWorkstackAction::clearPopup( QPopupMenu* pm ) { if ( !myMenu.contains( pm ) ) @@ -254,6 +345,11 @@ int QtxWorkstackAction::clearPopup( QPopupMenu* pm ) return idx; } +/*! + Fills popup with items + \param pm - popup menu + \param idx - position +*/ void QtxWorkstackAction::fillPopup( QPopupMenu* pm, const int idx ) { if ( !pm ) @@ -294,6 +390,9 @@ void QtxWorkstackAction::fillPopup( QPopupMenu* pm, const int idx ) } } +/*! + SLOT: called when popup item corresponding to window is activated, activates window +*/ void QtxWorkstackAction::onItemActivated( int idx ) { QtxWorkstack* ws = workstack(); diff --git a/src/RegistryDisplay/HelpWindow.cxx b/src/RegistryDisplay/HelpWindow.cxx index a75b6d4e0..79d6fdf19 100755 --- a/src/RegistryDisplay/HelpWindow.cxx +++ b/src/RegistryDisplay/HelpWindow.cxx @@ -36,6 +36,9 @@ using namespace std; +/*! + Constructor +*/ HelpWindow::HelpWindow(QWidget* parent, const char* name ) : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) { diff --git a/src/RegistryDisplay/IntervalWindow.cxx b/src/RegistryDisplay/IntervalWindow.cxx index 9f1a5d212..7326dadf2 100755 --- a/src/RegistryDisplay/IntervalWindow.cxx +++ b/src/RegistryDisplay/IntervalWindow.cxx @@ -20,6 +20,9 @@ #define SPACING_SIZE 6 #define MIN_SPIN_WIDTH 100 +/*! + Constructor +*/ IntervalWindow::IntervalWindow ( QWidget* parent ) : QDialog( parent, "IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) { @@ -73,8 +76,13 @@ IntervalWindow::IntervalWindow ( QWidget* parent ) END_OF("IntervalWindow constructor") } + +/*! + Destructor +*/ IntervalWindow::~IntervalWindow() {} -/* + +/*! Sets start interval size */ void IntervalWindow::setValue(const int size) @@ -82,7 +90,7 @@ void IntervalWindow::setValue(const int size) mySpinBox->setValue(size); } -/* +/*! Gets interval size */ int IntervalWindow::getValue() @@ -90,7 +98,7 @@ int IntervalWindow::getValue() return mySpinBox->value(); } -/* +/*! gets a pointer to myButtonOk */ QPushButton* IntervalWindow::Ok() @@ -98,7 +106,7 @@ QPushButton* IntervalWindow::Ok() return myButtonOk; } -/* +/*! gets a pointer to myButtonCancel */ QPushButton* IntervalWindow::Cancel() diff --git a/src/RegistryDisplay/Makefile.in b/src/RegistryDisplay/Makefile.in index aa0a8550e..77f61b068 100755 --- a/src/RegistryDisplay/Makefile.in +++ b/src/RegistryDisplay/Makefile.in @@ -52,8 +52,8 @@ LIB_MOC = RegWidget.h LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl -CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS+=$(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil +CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS) +LDFLAGS+=$(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil @CONCLUDE@ diff --git a/src/RegistryDisplay/RegWidget.cxx b/src/RegistryDisplay/RegWidget.cxx index 0425cc268..5dadc9d9d 100755 --- a/src/RegistryDisplay/RegWidget.cxx +++ b/src/RegistryDisplay/RegWidget.cxx @@ -353,8 +353,10 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) a.append( QString( " )
    " ) + tr( "in directory" ) + QString( " " )); a.append( BOLD( c_info.cdir ) ); + time_t aTime; a.append( QString( "
    " ) + tr( "begins" ) + QString( " " ) ); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; a.append( BOLD( t1 ) ); delete [] t1; @@ -362,7 +364,8 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) if (c_info.tc_hello != 0 ) { - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; a.append( tr( "last signal" ) + QString(" : ") ); a.append( BOLD( t2 ) ); @@ -371,7 +374,8 @@ QString RegWidget::setlongText( const Registry::Infos &c_info) } if ((c_info.tc_end - c_info.difftime) != 0) { - char * t3 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t3 = (char * )duplicate(ctime(&aTime)); t3 [strlen(t3) -1 ] = ' '; a.append( tr( "ends" ) + QString( " " ) ); a.append( BOLD( t3 ) ); @@ -459,6 +463,7 @@ void RegWidget::InfoHistory() _history->clear(); try { + time_t aTime; _serverhistory = _VarComponents->history(); for (CORBA::ULong i=0; i<_serverhistory->length(); i++) { @@ -466,9 +471,11 @@ void RegWidget::InfoHistory() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -499,6 +506,7 @@ void RegWidget::InfoReg() _clients->clear(); try { + time_t aTime; _serverclients = _VarComponents->getall(); for (CORBA::ULong i=0; i<_serverclients->length(); i++) { @@ -506,9 +514,11 @@ void RegWidget::InfoReg() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -563,6 +573,9 @@ void RegWidget::slotSelectRefresh() END_OF("slotSelectRefresh"); } +/*! + SLOT: called when button OK is clicked in interval window +*/ void RegWidget::slotIntervalOk() { BEGIN_OF("slotIntervalOk"); diff --git a/src/ResExporter/Makefile.in b/src/ResExporter/Makefile.in index d14c977ba..572127384 100755 --- a/src/ResExporter/Makefile.in +++ b/src/ResExporter/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vadim SANDLER (OCN) # Module : SalomeApp diff --git a/src/ResExporter/ResourceExporter.cxx b/src/ResExporter/ResourceExporter.cxx index 29922a2cd..92ae3ace8 100644 --- a/src/ResExporter/ResourceExporter.cxx +++ b/src/ResExporter/ResourceExporter.cxx @@ -1,27 +1,45 @@ -//====================================================================================================== -// File: ResourceExporter.cxx -// Created: 27/06/05 -// Author: Vadim SANDLER -// Copyright (C) CEA 2005 +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D // -// This tool provides command-line interface allowing to modify user preferences. -// The tool can be used by the compilation procedures in order to set default preferences for the module. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// Usage: -// ResourceExporter -// Parameters have the following format: -// '
    :=' - to set for the user -// preference from the
    section; -// '
    :+=[|]' - the is appended to the current value -// of the preference from the
    section; -// separator is used to concatenate old and new values, -// by default comma (',') symbol is used -// '-
    :' - to remove user preference from the
    -// section. Note that only use preference file is -// influenced, you may need to use '
    :=""' -// 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 have the following format: + '
    :=' - to set for the user + preference from the
    section; + '
    :+=[|]' - the is appended to the current value + of the preference from the
    section; + separator is used to concatenate old and new values, + by default comma (',') symbol is used + '-
    :' - to remove user preference from the
    + section. Note that only use preference file is + influenced, you may need to use '
    :=""' + option + The number of parameters is limeted only by maximum possible length of the command line. +*/ #include "SUIT_ResourceMgr.h" #include @@ -30,9 +48,9 @@ #include #include -//============================================================ -// salomeVersion(): get the SALOME version number -//============================================================ +/*! + \return the SALOME version number +*/ static QString salomeVersion() { QString path( ::getenv( "GUI_ROOT_DIR" ) ); @@ -62,9 +80,9 @@ static QString salomeVersion() return ver; } -//============================================================ -// help(): print the help information -//============================================================ +/*! + print the help information +*/ static void help() { std::cout << "" << std::endl; @@ -87,9 +105,9 @@ static void help() std::cout << "" << std::endl; } -//============================================================ -// main(): application main() function -//============================================================ +/*! + application main() function +*/ int main( int argc, char** argv ) { QApplication app( argc, argv ); diff --git a/src/SALOME_PY/Makefile.in b/src/SALOME_PY/Makefile.in index a9bd30e95..7101c82d4 100755 --- a/src/SALOME_PY/Makefile.in +++ b/src/SALOME_PY/Makefile.in @@ -44,7 +44,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ SALOME_Exception.idl \ SALOME_GenericObj.idl -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -DHAVE_CONFIG_H +CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -DHAVE_CONFIG_H LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeApp -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython # -lVTKViewer diff --git a/src/SALOME_PY/SalomePy.cxx b/src/SALOME_PY/SalomePy.cxx index 69ef49106..c12d61c24 100755 --- a/src/SALOME_PY/SalomePy.cxx +++ b/src/SALOME_PY/SalomePy.cxx @@ -45,15 +45,15 @@ 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; diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in index d5481f52a..7104c8601 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in @@ -63,7 +63,7 @@ LIB_CLIENT_IDL = SALOME_Exception.idl \ SALOME_ContainerManager.idl \ SALOME_Component.idl -CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome -D__CALL_OLD_METHODS__ +CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) -D__CALL_OLD_METHODS__ LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS) LDFLAGS += -lPyInterp -lSalomeApp diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx index 0593d7784..b761e719a 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx @@ -16,14 +16,6 @@ // // 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" @@ -43,6 +35,7 @@ #include #include #include +#include #include #include "SALOME_PYQT_SipDefs.h" @@ -59,15 +52,16 @@ 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) @@ -77,32 +71,33 @@ const bool IsCallOldMethods = true; 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 ); @@ -110,12 +105,13 @@ protected: 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 @@ -168,8 +164,10 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule() /*! * 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 ) { } @@ -197,6 +195,8 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module() */ void SALOME_PYQT_Module::initialize( CAM_Application* app ) { + MESSAGE( "SALOME_PYQT_Module::initialize" ); + SalomeApp_Module::initialize( app ); // Try to get XML resource file name @@ -207,11 +207,9 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app ) 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 @@ -284,6 +282,34 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy ) 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; } @@ -299,7 +325,9 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) 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 ); @@ -330,7 +358,38 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) // Posting the request PyInterp_Dispatcher::Get()->Exec( new DeactivateReq( myInterp, theStudy, this ) ); - return res; + return SalomeApp_Module::deactivateModule( theStudy ); +} + +/*! + * Called when study desktop is activated. + * Used for notifying about changing of the active study. + */ +void SALOME_PYQT_Module::studyActivated() +{ + // StudyChangedReq: request class for internal studyChanged() operation + class StudyChangedReq : public PyInterp_Request + { + public: + StudyChangedReq( SUIT_Study* _study, + SALOME_PYQT_Module* _obj ) + : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) + myStudy ( _study ), + myObj ( _obj ) {} + + protected: + virtual void execute() + { + myObj->studyChanged( myStudy ); + } + + private: + SUIT_Study* myStudy; + SALOME_PYQT_Module* myObj; + }; + + // Posting the request + PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) ); } /*! @@ -543,11 +602,6 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) 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(); @@ -622,8 +676,7 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) * 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 ) { @@ -644,6 +697,45 @@ 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( theStudy ); + int aStudyId = aStudy ? aStudy->studyDS()->StudyId() : 0; + + // initialize Python subinterpreter (on per study) and put it in 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")){ @@ -653,14 +745,6 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy ) } } } //__CALL_OLD_METHODS__ - - // call Python module's activate() method (for the new modules) - if(PyObject_HasAttrString(myModule , "activate")){ - PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) ); - if( !res1 ) { - PyErr_Print(); - } - } } /*! @@ -705,6 +789,11 @@ void SALOME_PYQT_Module::studyChanged( SUIT_Study* theStudy ) 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(); @@ -742,37 +831,6 @@ QString SALOME_PYQT_Module::engineIOR() const return QString( "" ); } -/*! - * Called when study desktop is activated. - * Used for notifying about changing of the active study. - */ -void SALOME_PYQT_Module::studyActivated() -{ - // StudyChangedReq: request class for internal studyChanged() operation - class StudyChangedReq : public PyInterp_Request - { - public: - StudyChangedReq( SUIT_Study* _study, - SALOME_PYQT_Module* _obj ) - : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) - myStudy ( _study ), - myObj ( _obj ) {} - - protected: - virtual void execute() - { - myObj->studyChanged( myStudy ); - } - - private: - SUIT_Study* myStudy; - SALOME_PYQT_Module* myObj; - }; - - // Posting the request - PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) ); -} - /*! * Processes context popup menu request * - calls Python module's definePopup(...) method (obsolete function, used for compatibility with old code) @@ -926,7 +984,8 @@ void SALOME_PYQT_Module::initInterp( int theStudyId ) return; } // ... then call a method - PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "" ) ); + int embedded = 1; + PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "ii", theStudyId, embedded ) ); if( !aRes ) { // Error! PyErr_Print(); @@ -1022,26 +1081,66 @@ int SALOME_PYQT_Module::defaultMenuGroup() * 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 ); @@ -1050,6 +1149,7 @@ int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, cons 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 ); @@ -1062,6 +1162,7 @@ int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, 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 ); @@ -1069,6 +1170,7 @@ int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int grou 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 ); @@ -1081,6 +1183,7 @@ int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int 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 ); @@ -1088,6 +1191,7 @@ int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, co 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 ); @@ -1100,28 +1204,27 @@ int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int i 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 ); @@ -1138,6 +1241,19 @@ QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, co } 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 @@ -1318,9 +1434,7 @@ bool SALOME_PYQT_Module::clearMenu( const int id, const int menu, const bool rem 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 @@ -1335,44 +1449,68 @@ static QString attribute( const QDomElement& element, const QString& attName ) { } // checks the given value for the boolean value [ static ] -// returns TRUE if string is "true", "yes" or "1" -static bool checkBool( const QString& value ) { - return ( value == "true" || value == "yes" || value == "1" ); +// returns TRUE if string represents boolean value: +// - "true", "yes" or "1" for true +// - "false", "no" or "0" for false +// second parameter allows to check certain boolean value +// - 1: true +// - 0: false +// - other value is not taken into account +static bool checkBool( const QString& value, const int check = -1 ) { + QString v = value.lower(); + if ( ( v == "true" || v == "yes" || v == "1" ) && ( check != 0 ) ) + return true; + if ( ( v == "false" || v == "no" || v == "0" ) && ( check != 1 ) ) + return true; + return false; } // checks the given value for the integer value [ static ] // returns -1 if item is empty or presents and invalid number -static int checkInt( const QString& value, 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 ); @@ -1385,6 +1523,36 @@ void SALOME_PYQT_XmlHandler::createActions() QDomNode n = aToolsList.item( i ); createToolBar( n ); } + // set flag : menus are already created + myMenuCreated = true; +} + +/*! + * Called by SALOME_PYQT_Module::deactivate() in order to remove actions + * (menus, toolbars, popup menus) + */ +void SALOME_PYQT_XmlHandler::clearActions() +{ + for ( uint i = 0; i < myMenuItems.count(); i++ ) { + QMenuData* md = dynamic_cast( 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( mi->popup() ); + } + else + break; + } + } + myMenuItems.clear(); } /*! @@ -1419,7 +1587,9 @@ void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu* menu, /*! Create main menu with child actions */ -void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentMenuId ) +void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, + const int parentMenuId, + QPopupMenu* parentPopup ) { if ( !myModule ) return; @@ -1435,13 +1605,52 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM 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() ) { @@ -1462,25 +1671,49 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM // -1 action ID is not allowed : it means that 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 @@ -1488,17 +1721,27 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM 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(); } } } @@ -1549,7 +1792,7 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) 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(); @@ -1562,6 +1805,9 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) } } +/*! + * Fill popup menu with items + */ void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* menu ) { if ( !myModule ) diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h index 57fa50cce..1cfcf855f 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h @@ -16,14 +16,6 @@ // // 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 @@ -152,6 +144,8 @@ public: int actionId( const QAction* ) const; QAction* createAction( const int, const QString&, const QString&, const QString&, const QString&, const int, const bool = false ); + /* load icon from resource file */ + QIconSet loadIcon( const QString& fileName ); /* Show/hide menus/toolbars */ void setMenuShown( const bool ); @@ -190,6 +184,8 @@ private: void activate ( SUIT_Study* ); /* internal deactivation */ void deactivate ( SUIT_Study* ); + /* customization */ + void customize ( SUIT_Study* ); /* study activation */ void studyChanged( SUIT_Study* ); /* context popup menu processing */ diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h index 1e15494e8..8c4787640 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h @@ -16,14 +16,6 @@ // // 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 diff --git a/src/SALOME_PYQT/SalomePyQt/Makefile.in b/src/SALOME_PYQT/SalomePyQt/Makefile.in index ac2aeab56..5de10a238 100644 --- a/src/SALOME_PYQT/SalomePyQt/Makefile.in +++ b/src/SALOME_PYQT/SalomePyQt/Makefile.in @@ -101,7 +101,7 @@ LIB_MOC = SalomePyQt.h LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl # Compilation/linkage flags -CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS) LDFLAGS += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx index 67f222687..d6afaaf4d 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx @@ -16,14 +16,6 @@ // // 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" @@ -50,12 +42,8 @@ using namespace std; -//==================================================================================== -// static functions -//==================================================================================== /*! - getApplication() - Returns active application object [ static ] + \return active application object [ static ] */ static SalomeApp_Application* getApplication() { if ( SUIT_Session::session() ) @@ -64,8 +52,7 @@ static SalomeApp_Application* getApplication() { } /*! - getActiveStudy() - Gets active study or 0 if there is no study opened [ static ] + \return active study or 0 if there is no study opened [ static ] */ static SalomeApp_Study* getActiveStudy() { @@ -74,13 +61,9 @@ static SalomeApp_Study* getActiveStudy() return 0; } -//==================================================================================== -// SALOME_Selection class. -//==================================================================================== static QMap SelMap; /*! - SALOME_Selection::GetSelection Creates or finds the selection object (one per study). */ SALOME_Selection* SALOME_Selection::GetSelection( SalomeApp_Application* app ) @@ -94,7 +77,6 @@ SALOME_Selection* SALOME_Selection::GetSelection( SalomeApp_Application* app ) } /*! - SALOME_Selection::SALOME_Selection Selection constructor. */ SALOME_Selection::SALOME_Selection( QObject* p ) : QObject( p ), mySelMgr( 0 ) @@ -107,7 +89,6 @@ SALOME_Selection::SALOME_Selection( QObject* p ) : QObject( p ), mySelMgr( 0 ) } } /*! - SALOME_Selection::~SALOME_Selection Selection destructor. Removes selection object from the map. */ SALOME_Selection::~SALOME_Selection() @@ -118,7 +99,6 @@ SALOME_Selection::~SALOME_Selection() } /*! - SALOME_Selection::onSelMgrDestroyed Watches for the selection manager destroying when study is closed. */ void SALOME_Selection::onSelMgrDestroyed() @@ -127,7 +107,6 @@ void SALOME_Selection::onSelMgrDestroyed() } /*! - SALOME_Selection::Clear Clears the selection. */ void SALOME_Selection::Clear() @@ -146,7 +125,6 @@ void SALOME_Selection::Clear() } /*! - SALOME_Selection::ClearIObjects Clears the selection. */ void SALOME_Selection::ClearIObjects() @@ -155,7 +133,6 @@ void SALOME_Selection::ClearIObjects() } /*! - SALOME_Selection::ClearFilters Removes all selection filters. */ void SALOME_Selection::ClearFilters() @@ -173,13 +150,8 @@ void SALOME_Selection::ClearFilters() ProcessVoidEvent( new TEvent( mySelMgr ) ); } -//==================================================================================== -// SalomePyQt class -//==================================================================================== - /*! - SalomePyQt::getDesktop - Gets desktop. Returns 0 in error. + \return desktop (0 if error) */ class TGetDesktopEvent: public SALOME_Event { public: @@ -191,14 +163,17 @@ public: myResult = (QWidget*)( getApplication()->desktop() ); } }; + +/*! + \return desktop +*/ QWidget* SalomePyQt::getDesktop() { return ProcessEvent( new TGetDesktopEvent() ); } /*! - SalomePyQt::getMainFrame - Gets workspace widget. Returns 0 in error. + \return workspace widget (0 if error) */ class TGetMainFrameEvent: public SALOME_Event { public: @@ -212,6 +187,10 @@ public: } } }; + +/*! + \return workspace widget (0 if error) +*/ QWidget* SalomePyQt::getMainFrame() { return ProcessEvent( new TGetMainFrameEvent() ); @@ -232,6 +211,11 @@ public: } } }; + +/*! + \return main menu + \retval 0 in error. +*/ QMenuBar* SalomePyQt::getMainMenuBar() { return ProcessEvent( new TGetMainMenuBarEvent() ); @@ -277,6 +261,11 @@ public: } } }; + +/*! + \return popup menu + \param menu - menu name +*/ QPopupMenu* SalomePyQt::getPopupMenu( const MenuName menu ) { return ProcessEvent( new TGetPopupMenuEvent( menu ) ); @@ -297,6 +286,11 @@ public: } } }; + +/*! + SalomePyQt::getStudyId + Returns active study's ID or 0 if there is no active study. +*/ int SalomePyQt::getStudyId() { return ProcessEvent( new TGetStudyIdEvent() ); @@ -315,6 +309,11 @@ public: myResult = SALOME_Selection::GetSelection( getApplication() ); } }; + +/*! + Creates a Selection object (to provide a compatibility with previous SALOME GUI). + \return just created selection object +*/ SALOME_Selection* SalomePyQt::getSelection() { return ProcessEvent( new TGetSelectionEvent() ); @@ -336,6 +335,13 @@ public: } } }; + +/*! + Puts an information message to the desktop's status bar + (with optional delay parameter given in seconds) + \param msg - message text + \param sec - delay in seconds +*/ void SalomePyQt::putInfo( const QString& msg, const int sec ) { ProcessVoidEvent( new TPutInfoEvent( msg, sec ) ); @@ -358,6 +364,10 @@ public: } } }; + +/*! + \return an active component name or empty string if there is no active component +*/ const QString SalomePyQt::getActiveComponent() { return ProcessEvent( new TGetActiveComponentEvent() ); @@ -532,6 +542,12 @@ public: } } }; + +/*! + \return a setting value (as string) + This function is obsolete. Use stringSetting(), integerSetting(), + boolSetting(), stringSetting() or colorSetting() instead. +*/ QString SalomePyQt::getSetting( const QString& name ) { return ProcessEvent( new TGetSettingEvent( name ) ); @@ -653,6 +669,10 @@ public: } } }; + +/*! + \return an integer setting from the application preferences +*/ int SalomePyQt::integerSetting( const QString& section, const QString& name, const int def ) { return ProcessEvent( new TGetIntSettingEvent( section, name, def ) ); @@ -678,6 +698,10 @@ public: } } }; + +/*! + \return an double setting from the application preferences +*/ double SalomePyQt::doubleSetting( const QString& section, const QString& name, const int def ) { return ProcessEvent( new TGetDblSettingEvent( section, name, def ) ); @@ -703,6 +727,10 @@ public: } } }; + +/*! + \return an boolean setting from the application preferences +*/ bool SalomePyQt::boolSetting( const QString& section, const QString& name, const bool def ) { return ProcessEvent( new TGetBoolSettingEvent( section, name, def ) ); @@ -728,6 +756,10 @@ public: } } }; + +/*! + \return an string setting from the application preferences +*/ QString SalomePyQt::stringSetting( const QString& section, const QString& name, const QString& def ) { return ProcessEvent( new TGetStrSettingEvent( section, name, def ) ); @@ -753,6 +785,10 @@ public: } } }; + +/*! + \return a color setting from the application preferences +*/ QColor SalomePyQt::colorSetting ( const QString& section, const QString& name, const QColor& def ) { return ProcessEvent( new TGetColorSettingEvent( section, name, def ) ); @@ -809,6 +845,10 @@ public: } } }; + +/*! + Displays 'Open/Save file' dialog box and returns a user's choice (file name) +*/ QString SalomePyQt::getFileName( QWidget* parent, const QString& initial, const QStringList& filters, @@ -844,6 +884,10 @@ public: } } }; + +/*! + Displays 'Open files' dialog box and returns a user's choice (a list of file names) +*/ QStringList SalomePyQt::getOpenFileNames( QWidget* parent, const QString& initial, const QStringList& filters, @@ -875,6 +919,10 @@ public: } } }; + +/*! + Displays 'Get Directory' dialog box and returns a user's choice (a directory name) +*/ QString SalomePyQt::getExistingDirectory( QWidget* parent, const QString& initial, const QString& caption ) @@ -934,6 +982,11 @@ public: } } }; + +/*! + Dumps the contents of the currently active view to the image file + in the given format (JPEG, PNG, BMP are supported) +*/ bool SalomePyQt::dumpView( const QString& filename ) { return ProcessEvent( new TDumpViewEvent( filename ) ); @@ -952,6 +1005,10 @@ public: myResult = SALOME_PYQT_Module::defaultMenuGroup(); } }; + +/*! + \return default menu group +*/ int SalomePyQt::defaultMenuGroup() { return ProcessEvent( new TDefMenuGroupEvent() ); @@ -1023,27 +1080,34 @@ public: } } }; -// create new toolbar or get existing by name + +/*! + create new toolbar or get existing by name +*/ int SalomePyQt::createTool( const QString& tBar ) { return ProcessEvent( new TCreateToolEvent( CrTool( tBar ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( const int id, const int tBar, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( const int id, const QString& tBar, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( QtxAction* a, const int tBar, const int id, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) ); } -// add action with id and index to the existing tollbar +/*! add action with id and index to the existing tollbar +*/ int SalomePyQt::createTool( QtxAction* a, const QString& tBar, const int id, const int idx ) { return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h index a3022cb2a..609a68e96 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h @@ -16,14 +16,6 @@ // // 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 diff --git a/src/SALOME_SWIG/Help.py b/src/SALOME_SWIG/Help.py deleted file mode 100755 index 404ee4dfc..000000000 --- a/src/SALOME_SWIG/Help.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : Help.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -class SalomeDoc: - def __init__(self, aDoc): - self.doc = aDoc - def __repr__(self): - print self.doc - return "---" - def salome(self): - doc_salome = ''' -MODULE : salome ---------------- -module salome gives access to Salome ressources: -variables: - - salome:orb : CORBA - salome.naming_service : instance of naming Service class - methods: - Resolve(name) : find a CORBA object (ior) by its pathname - Register(name) : register a CORBA object under a pathname - salome.lcc : instance of lifeCycleCORBA class - methods: - FindOrLoadComponent(server,name) : - obtain an Engine (CORBA object) - or launch the Engine if not found, - with a Server name and an Engine name - salome.sg - methods: - updateObjBrowser(bool): - getActiveStudyId(): - getActiveStudyName(): - - SelectedCount(): returns number of selected objects - getSelected(i): returns entry of selected object number i - getAllSelected(): returns list of entry of selected objects - AddIObject(Entry): select an existing Interactive object - RemoveIObject(Entry): remove object from selection - ClearIObjects(): clear selection - - Display(*Entry): - DisplayOnly(Entry): - Erase(Entry): - DisplayAll(): - EraseAll(): - - IDToObject(Entry): returns CORBA reference from entry - - salome.myStudyName : active Study Name - salome.myStudyId : active Study Id - salome.myStudy : the active Study itself (CORBA ior) - methods : defined in SALOMEDS.idl - -methods: - salome.DumpStudy(study) : Dump a study, given the ior ---- -''' - print doc_salome - - def geompy(self): - doc_geompy = ''' -MODULE : geompy ---------------- -module geompy provides an encapsulation of GEOM Engine methods -variables: - geompy.geom : a Geometry Engine, found or loaded - at first import of module geompy. - methods : defined in GEOM_Gen.idl - geompy.myBuilder : a study builder - geompy.father : GEOM root in current study (salome.myStudy) - -methods: - addToStudy(aShape, aName) : add the shape into the current study - --- all methods of GEOM_Gen.idl that returns a shape are encapsulated, - with the same interface : shapes are named with their ior -''' - print doc_geompy - - def supervision(self): - doc_supervision = ''' -MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor ------------------------------------------------------------------ -this modules provide access to Editor and Executor Engine methods - -See SUPERV.idl - -In order to run the example (supervisionexample.py) - - Type : from supervisionexample import * - supervisionexample.py contains comments - -A new python example avoids references to LifeCycleCORBA - avoids references to NamingService - avoids references to ModuleCatalog - avoids SuperVisionComponent creation - allows G.Input(...) instead of AddInput(G,...) - replaces Editor/Executor with Graph - allows Nodes, Ports and Links CORBA objects - shortens methods names - ... - - See /SuperVisionTest/resources/GraphExample.py - and GraphExample.xml ---- -''' - print doc_supervision - - - -help = SalomeDoc(''' -Availables modules: - salome : gives access to Salome ressources - geompy : encapsulation of GEOM Engine methods - supervision : gives access to SuperVision Engine -To obtain specific help on a module "truc", type: help.truc() -To run an example, type: import example3 -''') - diff --git a/src/SALOME_SWIG/Makefile.in b/src/SALOME_SWIG/Makefile.in index 19142ae1b..0c757d005 100755 --- a/src/SALOME_SWIG/Makefile.in +++ b/src/SALOME_SWIG/Makefile.in @@ -46,11 +46,11 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ SALOME_GenericObj.idl SWIG_DEF = libSALOME_Swig.i -EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py salome_test.py test_remove_ref.py +EXPORT_PYSCRIPTS = libSALOME_Swig.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py test_remove_ref.py EXPORT_SHAREDPYSCRIPTS=SALOMEGUI_shared_modules.py -CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) LIBS+= $(PYTHON_LIBS) LDFLAGS+= -lSalomeApp diff --git a/src/SALOME_SWIG/PyInterp.py b/src/SALOME_SWIG/PyInterp.py deleted file mode 100755 index 3e0133d89..000000000 --- a/src/SALOME_SWIG/PyInterp.py +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# 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) - diff --git a/src/SALOME_SWIG/SALOMEGUI_Swig.cxx b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx index 0c8e1764d..ea767e60b 100644 --- a/src/SALOME_SWIG/SALOMEGUI_Swig.cxx +++ b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx @@ -53,22 +53,22 @@ using namespace std; -////////////////////////////////////////////////////////////////////////////// -// asv : 3.12.04 : added checking for NULL GUI objects in almost all methods. -// In the scope of fixing bug PAL6869. -////////////////////////////////////////////////////////////////////////////// -// (PR : modify comments) -// Instance of this class is created every time "import salome" line is typed -// - in IAPP embedded Python interpretor (SALOME_Session_Server executable), -// - in inline Python nodes in Supervisor (in SALOME_Container executable), -// - in stand-alone Python console outside any executable. -// SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server -////////////////////////////////////////////////////////////////////////////// -// VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) -// All methods are implemeted using Event mechanism. -// Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently -// implemented only for OCC and VTK viewers. -////////////////////////////////////////////////////////////////////////////// +/*! + asv : 3.12.04 : added checking for NULL GUI objects in almost all methods. + In the scope of fixing bug PAL6869. + + (PR : modify comments) + Instance of this class is created every time "import salome" line is typed + - in IAPP embedded Python interpretor (SALOME_Session_Server executable), + - in inline Python nodes in Supervisor (in SALOME_Container executable), + - in stand-alone Python console outside any executable. + SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server + + VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based) + All methods are implemeted using Event mechanism. + Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently + implemented only for OCC and VTK viewers. +*/ /*! getApplication() @@ -120,6 +120,10 @@ public: myResult = (bool)( getApplication() && getApplication()->desktop() ); } }; + +/*! + \return true if GUI is available. +*/ bool SALOMEGUI_Swig::hasDesktop() { return ProcessEvent( new THasDesktopEvent() ); @@ -160,6 +164,10 @@ public: } } }; + +/*! + \return active study's ID or 0 if there is no active study. +*/ int SALOMEGUI_Swig::getActiveStudyId() { return ProcessEvent( new TGetActiveStudyIdEvent() ); @@ -180,6 +188,10 @@ public: } } }; + +/*! + \return active study's name or NULL if there is no active study. +*/ const char* SALOMEGUI_Swig::getActiveStudyName() { string result = ProcessEvent( new TGetActiveStudyNameEvent() ); @@ -190,20 +202,32 @@ const char* SALOMEGUI_Swig::getActiveStudyName() SALOMEGUI_Swig::getComponentName Returns the name of the component by its user name. */ +class TGetModulCatalogEvent: public SALOME_Event { +public: + typedef CORBA::Object_var TResult; + TResult myResult; + TGetModulCatalogEvent() : myResult(CORBA::Object::_nil()) {} + virtual void Execute() { + if (SalomeApp_Application* anApp = getApplication()) + myResult = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); + } +}; + +/*! + \return the name of the component by its user name. +*/ const char* SALOMEGUI_Swig::getComponentName( const char* componentUserName ) { - if ( SalomeApp_Application* anApp = getApplication() ) { - CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); - if ( !CORBA::is_nil( anObject ) ) { - SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = - SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); - SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); - for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { - CORBA::String_var aModuleName = aModules[ ind ].modulename; - CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; - if ( strcmp(componentUserName, aModuleUserName.in()) == 0 ) - return aModuleName._retn(); - } + CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent()); + if (!CORBA::is_nil(anObject)) { + SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = + SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); + SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); + for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { + CORBA::String_var aModuleName = aModules[ ind ].modulename; + CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; + if ( strcmp(componentUserName, aModuleUserName.in()) == 0 ) + return aModuleName._retn(); } } return 0; @@ -215,18 +239,16 @@ const char* SALOMEGUI_Swig::getComponentName( const char* componentUserName ) */ const char* SALOMEGUI_Swig::getComponentUserName( const char* componentName ) { - if ( SalomeApp_Application* anApp = getApplication() ) { - CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog"); - if ( !CORBA::is_nil( anObject ) ) { - SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = - SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); - SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); - for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { - CORBA::String_var aModuleName = aModules[ ind ].modulename; - CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; - if ( strcmp(componentName, aModuleName.in()) == 0 ) - return aModuleUserName._retn(); - } + CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent()); + if (!CORBA::is_nil(anObject)) { + SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue = + SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject ); + SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList(); + for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) { + CORBA::String_var aModuleName = aModules[ ind ].modulename; + CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername; + if ( strcmp(componentName, aModuleName.in()) == 0 ) + return aModuleUserName._retn(); } } return 0; @@ -253,6 +275,10 @@ public: } } }; + +/*! + \return the number of selected objects. +*/ int SALOMEGUI_Swig::SelectedCount() { return ProcessEvent( new TSelectedCountEvent() ); @@ -290,6 +316,10 @@ public: } } }; + +/*! + \return the selected object entry by the given index. +*/ const char* SALOMEGUI_Swig::getSelected( int index ) { QString result = ProcessEvent( new TGetSelectedEvent( index ) ); @@ -530,6 +560,11 @@ public: } } }; + +/*! + \return TRUE if the object with given entry is in the current viewer. + VSR: For the current moment implemented for OCC and VTK viewers only. +*/ bool SALOMEGUI_Swig::IsInCurrentView( const char* theEntry ) { return ProcessEvent( new TIsInViewerEvent( theEntry ) ); diff --git a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py index cd849085d..bdd521f3f 100755 --- a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py +++ b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# """ """ diff --git a/src/SALOME_SWIG/salome.py b/src/SALOME_SWIG/salome.py deleted file mode 100755 index 9d45865db..000000000 --- a/src/SALOME_SWIG/salome.py +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : salome.py -# Author : Paul RASCLE, EDF -# Module : SALOME -# $Header$ - -from omniORB import CORBA -from LifeCycleCORBA import * -from libSALOME_Swig import * -import SALOMEDS -from SALOME_NamingServicePy import * - -from SALOME_utilities import * - -#-------------------------------------------------------------------------- - -def DumpComponent(Study, SO, offset): - it = Study.NewChildIterator(SO) - Builder = Study.NewBuilder() - while it.More(): - CSO = it.Value() - it.Next() - anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName") - AtName = anAttr._narrow(SALOMEDS.AttributeName) - t_name = AtName.Value() - if t_name[0] == 1: - ofs = 1 - a = "" - while ofs <= offset: - a = a + "--" - ofs = ofs +1 - MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) ) - t_RefSO = CSO.ReferencedObject() - if t_RefSO[0] == 1: - RefSO = t_RefSO[1] - ofs = 1 - a = "" - while ofs <= offset: - a = a + " " - ofs = ofs +1 - MESSAGE( a + ">" + str(RefSO.GetID()) ) - DumpComponent(Study, CSO, offset+2) - - #-------------------------------------------------------------------------- - -def DumpStudy(Study): - itcomp = Study.NewComponentIterator() - while itcomp.More(): - SC = itcomp.Value() - itcomp.Next() - name = SC.ComponentDataType() - MESSAGE( "-> ComponentDataType is " + name ) - DumpComponent(Study, SC, 1) - - - #-------------------------------------------------------------------------- - -def ImportComponentGUI(ComponentName): - libName = "lib" + ComponentName + "_Swig" - command = "from " + libName + " import *" - exec ( command ) - constructor = ComponentName + "_Swig()" - command = "gui = " + constructor - exec ( command ) - return gui - - #-------------------------------------------------------------------------- - -def SalomeGUIgetAllSelected(self): - selNumber = self.SelectedCount() - listSelected = [] - for i in range(selNumber): - listSelected.append(self.getSelected(i)) - return listSelected - -class SalomeGUI(SALOMEGUI_Swig): - getAllSelected = SalomeGUIgetAllSelected - - #-------------------------------------------------------------------------- - -def IDToObject(id): - myObj = None - mySO = myStudy.FindObjectID(id); - if mySO is not None: - ok, anAttr = mySO.FindAttribute("AttributeIOR") - if ok: - AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR) - if AtIOR.Value() != "": - myObj = orb.string_to_object(AtIOR.Value()) - return myObj - -def ObjectToSObject(obj): - mySO = None - if obj is not None: - ior = orb.object_to_string(obj) - if ior != "": - mySO = myStudy.FindObjectIOR(ior) - return mySO - -def ObjectToID(obj): - mySO = ObjectToSObject(obj) - if mySO: - return mySO.GetID() - return "" - -def IDToSObject(id): - mySO = myStudy.FindObjectID(id); - return mySO - - #-------------------------------------------------------------------------- - -# initialise the ORB -orb = CORBA.ORB_init([''], CORBA.ORB_ID) - -# create an LifeCycleCORBA instance -lcc = LifeCycleCORBA(orb) - -# create an SALOMEGUI_Swig instance -sg = SalomeGUI() - -#create an naming service instance -naming_service = SALOME_NamingServicePy_i(orb) - -# get active study name and id -myStudyName = sg.getActiveStudyName() -MESSAGE( myStudyName ) - -myStudyId = sg.getActiveStudyId() -MESSAGE( str(myStudyId) ) - -# get Study Manager reference -obj = naming_service.Resolve('myStudyManager') -myStudyManager = obj._narrow(SALOMEDS.StudyManager) - -# get active study -myStudy = myStudyManager.GetStudyByName(myStudyName) - diff --git a/src/SALOME_SWIG/salome_test.py b/src/SALOME_SWIG/salome_test.py deleted file mode 100755 index 75e5f0bbd..000000000 --- a/src/SALOME_SWIG/salome_test.py +++ /dev/null @@ -1,486 +0,0 @@ -# SALOME SALOME_SWIG : binding of C++ implementation and Python -# -# Copyright (C) 2003 CEA/DEN, EDF R&D -# -# -# -# File : salome_test.py -# Module : SALOME - -print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some" -print "operation within the components." - -import salome -from salome import sg -import SALOMEDS -import os - -import SALOME_ModuleCatalog - -print "======================================================================" -print " Get Catalog " -print "======================================================================" -obj = salome.naming_service.Resolve('Kernel/ModulCatalog') -catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog) - -print "======================================================================" -print " Create Study " -print "======================================================================" - -comp = catalog.GetComponent("GEOM") -if comp is None: - raise RuntimeError,"Component GEOM not found in Module Catalog." - -import geompy - -print "=================================" -print " create AttributeReal " -print "=================================" -A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal") -if A == None : - raise RuntimeError, "Can't create AttributeReal attribute" -A = A._narrow(SALOMEDS.AttributeReal) -A.SetValue(0.0001) -if A.Value() != 0.0001: - raise RuntimeError, "Error : wrong value of AttributeReal" - -print -print " =========== Test Geometry ==========================" -print - -print "===================================" -print " define a box" -print "===================================" - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -print -print "============= Test SMESH =============================" -print - -import StdMeshers - -comp = catalog.GetComponent("SMESH") -if comp is None: - raise RuntimeError,"Component SMESH not found in Module Catalog." - -comp = catalog.GetComponent("MED") -if comp is None: - raise RuntimeError,"Component MED not found in Module Catalog." - -import SMESH - -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() - -smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") -smeshgui = salome.ImportComponentGUI("SMESH") -smeshgui.Init(salome.myStudyId); - -ShapeTypeCompSolid = 1 -ShapeTypeSolid = 2 -ShapeTypeShell = 3 -ShapeTypeFace = 4 -ShapeTypeWire = 5 -ShapeTypeEdge = 6 -ShapeTypeVertex = 7 - -# ---- define a box - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") - -# ---- add first face of box in study - -subShapeList=geompy.SubShapeAll(box,ShapeTypeFace) -face=subShapeList[0] -name = geompy.SubShapeName(face, box) -print name -idface=geompy.addToStudyInFather(box,face,name) - -# ---- add shell from box in study - -subShellList=geompy.SubShapeAll(box,ShapeTypeShell) -shell = subShellList[0] -name = geompy.SubShapeName(shell, box) -print name -idshell=geompy.addToStudyInFather(box,shell,name) - -# ---- add first edge of face in study - -edgeList = geompy.SubShapeAll(face,ShapeTypeEdge) -edge=edgeList[0]; -name = geompy.SubShapeName(edge, face) -print name -idedge=geompy.addToStudyInFather(face,edge,name) - - -# ---- SMESH - -# ---- create Hypothesis - -print "-------------------------- create Hypothesis" -print "-------------------------- LocalLength" -hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" ) -hypLen1.SetLength(100) -print hypLen1.GetName() -print hypLen1.GetId() -print hypLen1.GetLength() - -smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100") - -print "-------------------------- NumberOfSegments" -hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" ) -hypNbSeg1.SetNumberOfSegments(7) -print hypNbSeg1.GetName() -print hypNbSeg1.GetId() -print hypNbSeg1.GetNumberOfSegments() - -smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7") - -print "-------------------------- MaxElementArea" -hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea1.SetMaxElementArea(2500) -print hypArea1.GetName() -print hypArea1.GetId() -print hypArea1.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500") - -print "-------------------------- MaxElementArea" -hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) -hypArea2.SetMaxElementArea(500) -print hypArea2.GetName() -print hypArea2.GetId() -print hypArea2.GetMaxElementArea() - -smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500") - -print "-------------------------- Regular_1D" -algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" ) -listHyp=algoReg.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoReg.GetName() -print algoReg.GetId() - -smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" ) - -print "-------------------------- MEFISTO_2D" -algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" ) -listHyp=algoMef.GetCompatibleHypothesis() -for hyp in listHyp: - print hyp -print algoMef.GetName() -print algoMef.GetId() - -smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" ) - -# ---- add hypothesis to box - -print "-------------------------- add hypothesis to box" -box=salome.IDToObject(idbox) -mesh = smesh.CreateMesh(box) - -smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" ); - -ret=mesh.AddHypothesis(box,algoReg) -print ret -ret=mesh.AddHypothesis(box,algoMef) -print ret - - -ret=mesh.AddHypothesis(box,hypNbSeg1) -print ret -ret=mesh.AddHypothesis(box,hypArea1) -print ret - - -# ---- add hypothesis to edge - -print "-------------------------- add hypothesis to edge" -edge=salome.IDToObject(idedge) -submesh=mesh.GetSubMesh(edge, "SubMeshEdge") - -ret=mesh.AddHypothesis(edge,algoReg) -print ret -ret=mesh.AddHypothesis(edge,hypLen1) -print ret - -print "-------------------------- add hypothesis to face" -face=salome.IDToObject(idface) -submesh = mesh.GetSubMesh(face, "SubMeshFace") - -ret=mesh.AddHypothesis(face,hypArea2) -print ret - -smesh.Compute(mesh, box) -sg.updateObjBrowser(1); - -print -print "============= Test Supervisor =============================" -print - -comp = catalog.GetComponent("SUPERV") -if comp is None: - raise RuntimeError,"Component SUPERV not found in Module Catalog." - -from SuperV import * -import SALOMEDS -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV") -father = myStudy.FindComponent("SUPERV") -if father is None: - father = myBuilder.NewComponent("SUPERV") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName"); - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue( salome.sg.getComponentUserName("SUPERV") ) - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap"); - aPixmap = A2._narrow(SALOMEDS.AttributePixMap); - aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" ); - myBuilder.DefineComponentInstance(father,SuperVision) - -def addStudy(ior): - dataflow = SuperVision.getStreamGraph(ior) - name=dataflow.Name() - itr = myStudy.NewChildIterator(father) - while itr.More(): - item=itr.Value() - res,A=item.FindAttribute("AttributeName") - if res: - aName = A._narrow(SALOMEDS.AttributeName) - if aName.Value() == name : - print myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - print "A = ", A - if A is not None : - #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR); - print "anIOR.SetValue(dataflow.getIOR())" - anIOR.SetValue(dataflow.getIOR()) - return - itr.Next() - obj = myBuilder.NewObject(father) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeName") - aName=A._narrow(SALOMEDS.AttributeName) - aName.SetValue(name) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR) - anIOR.SetValue(dataflow.getIOR()) - -import os -dir= os.getenv("DATA_DIR") -if dir == None: - raise RuntimeError, "DATA_DIR is not defined" -xmlfile = dir +"/Superv/Graphs/GraphGeomEssai.xml" -print "Load dataflow from the file : " -print xmlfile -print - -myGraph = StreamGraph ( xmlfile ) - -# This DataFlow is "valid" : no loop, correct links between Nodes etc... -print "myGraph.IsValid() = ", myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print "myGraph.IsDone() = ",myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -print " " -#print "Type : print myGraph.IsDone()" -#print " If execution is finished ==> 1 (true)" -res=myGraph.IsDone() -if res != 1: - raise RuntimeError, "myGraph.Run() is not done" - -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -myGraph.PrintPorts() - -# Export will create newsupervisionexample.xml and the corresponding .py file -tmpdir=os.getenv("TmpDir") -if tmpdir is None: - tmpdir="/tmp" -file = tmpdir + "/newsupervisionexample" -print "--------------\n"+file+"\n--------------\n" -myGraph.Export(file) - -ior = salome.orb.object_to_string(myGraph.G) -addStudy(ior) - -GraphName = myGraph.Name() -print "Befor save ", -#nodes = myGraph.Nodes() -nodes = myGraph.G.Nodes().FNodes -length_bs = len(nodes) -print "ListOfNodes length = ", length_bs -names=[] -for node in nodes: - names.append(node.Name()) -print names - -# Graph creation -GraphInLines = StreamGraph( 'GraphInLines' ) -GraphInLines.SetName( 'GraphInLines' ) -GraphInLines.SetAuthor( '' ) -GraphInLines.SetComment( '' ) -GraphInLines.Coords( 0 , 0 ) - -# Creation of InLine Nodes -PyAdd = [] -PyAdd.append( 'def Add(a,b) : ' ) -PyAdd.append( ' return a+b ' ) -PyAdd.append( '' ) -Add = GraphInLines.INode( 'Add' , PyAdd ) -Add.InPort( 'a' , 'long' ) -Add.InPort( 'b' , 'long' ) -Add.OutPort( 'f' , 'long' ) -Add.SetName( 'Add' ) -Add.SetAuthor( '' ) -Add.SetComment( 'Python function' ) -Add.Coords( 351 , 77 ) -PySub = [] -PySub.append( 'def Sub(a,b) : ' ) -PySub.append( ' return a-b ' ) -PySub.append( '' ) -Sub = GraphInLines.INode( 'Sub' , PySub ) -Sub.InPort( 'a' , 'long' ) -Sub.InPort( 'b' , 'long' ) -Sub.OutPort( 'f' , 'long' ) -Sub.SetName( 'Sub' ) -Sub.SetAuthor( '' ) -Sub.SetComment( 'Python function' ) -Sub.Coords( 86 , 333 ) -PyMul = [] -PyMul.append( 'def Mul(a,b) : ' ) -PyMul.append( ' return a*b ' ) -Mul = GraphInLines.INode( 'Mul' , PyMul ) -Mul.InPort( 'a' , 'long' ) -Mul.InPort( 'b' , 'long' ) -Mul.OutPort( 'Result' , 'long' ) -Mul.SetName( 'Mul' ) -Mul.SetAuthor( '' ) -Mul.SetComment( 'Python function' ) -Mul.Coords( 616 , 247 ) - -# Creation of intermediate Output variables and of Control Links -Addf = Add.Port( 'f' ) -Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) ) -Mula.AddCoord( 1 , 570 , 356 ) -Mula.AddCoord( 2 , 570 , 186 ) -Subf = Sub.Port( 'f' ) -Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) ) -Mulb.AddCoord( 1 , 282 , 376 ) -Mulb.AddCoord( 2 , 282 , 442 ) -Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) ) -Addb.AddCoord( 1 , 283 , 209 ) -Addb.AddCoord( 2 , 283 , 374 ) -Addb.AddCoord( 3 , 283 , 442 ) - -# Creation of Input datas -Adda = Add.Input( 'a' , 1) -Suba = Sub.Input( 'a' , 3) -Subb = Sub.Input( 'b' , 4) - -# Creation of Output variables -MulResult = Mul.Port( 'Result' ) - -GraphInLines.Run() - -GraphInLines.DoneW() - -GraphInLines.PrintPorts() - -sg.updateObjBrowser(1); - -print -print "============= Test VISU and MED =============================" -print - -comp = catalog.GetComponent("VISU") -if comp is None: - raise RuntimeError,"Component VISU not found in Module Catalog." - -import sys -import SALOMEDS -import SALOME -import SALOME_MED -import VISU - -import visu_gui - -medFileName = "pointe.med" -medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFileName -print "Load ", medFile - -studyCurrent = salome.myStudyName - -med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED") -myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU") - -try: - if os.access(medFile, os.R_OK) : - if not os.access(medFile, os.W_OK) : - import random - medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName - print " -- Copy " + medFile + " to " + medFileNew - os.system("cp "+ medFile + " " + medFileNew) - medFile = medFileNew - os.system("chmod 755 " + medFile) - - if os.access(medFile, os.W_OK) : - med_comp.readStructFileWithFieldType(medFile,studyCurrent) - med_obj = visu_gui.visu.getMedObjectFromStudy() - print "med_obj - ", med_obj - - myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1) - aMeshName = "maa1" - anEntity = VISU.NODE - aTimeStampId = -1 - - myResult1 = myVisu.ImportMedField(myField1) - aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity); - - aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - myResult2 = myVisu.ImportFile(medFile); - aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity); - - aTimeStampId = 3 - aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - sg.updateObjBrowser(0) - else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file"; - else : print "We have no permission to read medFile, it will not be opened"; - -except: - if sys.exc_type == SALOME.SALOME_Exception : - print "There is no permission to read " + medFile - else : - print sys.exc_type - print sys.exc_value - print sys.exc_traceback - -sg.updateObjBrowser(1); diff --git a/src/SALOME_SWIG/supervisionexample.py b/src/SALOME_SWIG/supervisionexample.py index 56bdd9bf5..9444eb9c1 100755 --- a/src/SALOME_SWIG/supervisionexample.py +++ b/src/SALOME_SWIG/supervisionexample.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# #============================================================================== # File : supervisionexample.py # Created : 23 nov 2001 diff --git a/src/SALOME_SWIG/supervisiongeomexample.py b/src/SALOME_SWIG/supervisiongeomexample.py index 8c56bb1f2..e30e66b6c 100755 --- a/src/SALOME_SWIG/supervisiongeomexample.py +++ b/src/SALOME_SWIG/supervisiongeomexample.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # Generated python file of Graph GraphGeom2Essai diff --git a/src/SOCC/Makefile.in b/src/SOCC/Makefile.in index 36b2aa697..9440935a0 100755 --- a/src/SOCC/Makefile.in +++ b/src/SOCC/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander Solovyov(OCN) # Module : SOCC diff --git a/src/SOCC/SOCC_Prs.cxx b/src/SOCC/SOCC_Prs.cxx index a751570c4..a7867e388 100644 --- a/src/SOCC/SOCC_Prs.cxx +++ b/src/SOCC/SOCC_Prs.cxx @@ -29,84 +29,63 @@ #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; diff --git a/src/SOCC/SOCC_ViewModel.cxx b/src/SOCC/SOCC_ViewModel.cxx index 60c0a880e..0a569f048 100755 --- a/src/SOCC/SOCC_ViewModel.cxx +++ b/src/SOCC/SOCC_ViewModel.cxx @@ -16,643 +16,686 @@ // // See http://www.salome-platform.org/ // -#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 -//#include CORBA_CLIENT_HEADER(SALOMEDS) - -#include -#include - -#include -#include - -// Temporarily commented to avoid awful dependecy on SALOMEDS -// TODO: better mechanism of storing display/erse status in a study -// should be provided... -//#include -//#include -//#include -//#include - -//#include "SALOMEDSClient.hxx" -//#include "SALOMEDS_StudyManager.hxx" - -#include - -// 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 ); -//} - -SOCC_Viewer::SOCC_Viewer( bool DisplayTrihedron ) -: OCCViewer_Viewer( DisplayTrihedron ) -{ -} - -SOCC_Viewer::~SOCC_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; -} - -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; -} - -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; -} - -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; - } - } -} - -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; - } - } -} - -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; - } - } -} - -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(); - } -} - -//======================================================================= -// name : Display -// Purpose : Display presentation -//======================================================================= -void SOCC_Viewer::Display( const SALOME_OCCPrs* prs ) -{ - // try do downcast object - const SOCC_Prs* anOCCPrs = dynamic_cast( 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 ); - } - } -} - -//======================================================================= -// name : Erase -// Purpose : Erase presentation -//======================================================================= -void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced ) -{ - // try do downcast object - const SOCC_Prs* anOCCPrs = dynamic_cast( 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 ); - // } - //} - } - } -} - -//======================================================================= -// name : EraseAll -// Purpose : Erase all presentations -//======================================================================= -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(); -} - -//======================================================================= -// name : CreatePrs -// Purpose : Create presentation corresponding to the 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; -} - -//======================================================================= -// name : LocalSelection -// Purpose : 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( 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 ); - } - } - } -} - -//======================================================================= -// name : GlobalSelection -// Purpose : 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(); - } -} - -//======================================================================= -// name : BeforeDisplay -// Purpose : Axiluary method called before displaying of objects -//======================================================================= -void SOCC_Viewer::BeforeDisplay( SALOME_Displayer* d ) -{ - d->BeforeDisplay( this, SALOME_OCCViewType() ); -} - -//======================================================================= -// name : AfterDisplay -// Purpose : Axiluary method called after displaying of objects -//======================================================================= -void SOCC_Viewer::AfterDisplay( SALOME_Displayer* d ) -{ - d->AfterDisplay( this, SALOME_OCCViewType() ); -} - -//======================================================================= -// name : getTrihedronSize -// Purpose : Get new and current trihedron size corresponding to the -// current model size -//======================================================================= -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; -} - -//======================================================================= -// name : Repaint -// Purpose : -//======================================================================= -void SOCC_Viewer::Repaint() -{ -// onAdjustTrihedron(); - getViewer3d()->Update(); -} - -//======================================================================= -// name : createView -// Purpose : create SOCC_ViewWindow -//======================================================================= -SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop ) -{ - SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this); - initView( view ); - return view; -} +#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 +//#include CORBA_CLIENT_HEADER(SALOMEDS) + +#include +#include + +#include +#include + +// Temporarily commented to avoid awful dependecy on SALOMEDS +// TODO: better mechanism of storing display/erse status in a study +// should be provided... +//#include +//#include +//#include +//#include + +//#include "SALOMEDSClient.hxx" +//#include "SALOMEDS_StudyManager.hxx" + +#include + +// 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( 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( 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( 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; +} diff --git a/src/SOCC/SOCC_ViewWindow.cxx b/src/SOCC/SOCC_ViewWindow.cxx index ce28624a0..444b6ef74 100644 --- a/src/SOCC/SOCC_ViewWindow.cxx +++ b/src/SOCC/SOCC_ViewWindow.cxx @@ -22,7 +22,9 @@ #include "SUIT_Accel.h" -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SOCC_ViewWindow ::SOCC_ViewWindow( SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel) @@ -30,14 +32,19 @@ SOCC_ViewWindow { } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SOCC_ViewWindow ::~SOCC_ViewWindow() { } -//---------------------------------------------------------------------------- -void +/*! + Performs action + \param theAction - type of action +*/ +bool SOCC_ViewWindow ::action( const int theAction ) { @@ -91,5 +98,6 @@ SOCC_ViewWindow myViewPort->rotate( cx, cy + inc ); myViewPort->endRotation(); break; - } + } + return true; } diff --git a/src/SOCC/SOCC_ViewWindow.h b/src/SOCC/SOCC_ViewWindow.h index 7b4f22551..413ee469d 100644 --- a/src/SOCC/SOCC_ViewWindow.h +++ b/src/SOCC/SOCC_ViewWindow.h @@ -35,7 +35,7 @@ public: virtual ~SOCC_ViewWindow(); protected: - virtual void action( const int ); + virtual bool action( const int ); }; diff --git a/src/SPlot2d/Makefile.in b/src/SPlot2d/Makefile.in index 44334e80b..cf3f8c9fd 100644 --- a/src/SPlot2d/Makefile.in +++ b/src/SPlot2d/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -27,18 +45,6 @@ LIB_SRC = \ LIB_MOC = \ SPlot2d_ViewModel.h -#LIB_CLIENT_IDL = SALOMEDS.idl \ -# SALOME_Exception.idl \ -# SALOME_GenericObj.idl - -#LIB_CLIENT_IDL = SALOMEDS.idl \ -# SALOME_ModuleCatalog.idl \ -# SALOME_Component.idl \ -# SALOME_ContainerManager.idl \ -# SALOME_Exception.idl \ -# SALOME_GenericObj.idl - -#CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs diff --git a/src/SPlot2d/SPlot2d_Curve.cxx b/src/SPlot2d/SPlot2d_Curve.cxx index e6b2c5b83..caca33aaf 100644 --- a/src/SPlot2d/SPlot2d_Curve.cxx +++ b/src/SPlot2d/SPlot2d_Curve.cxx @@ -77,36 +77,59 @@ SPlot2d_Curve& SPlot2d_Curve::operator=( const SPlot2d_Curve& curve ) return *this; } +/*! + \return corresponding SALOME_InteractiveObject +*/ Handle(SALOME_InteractiveObject) SPlot2d_Curve::getIO() const { return myIO; } +/*! + Sets corresponding SALOME_InteractiveObject + \param io - SALOME_InteractiveObject +*/ void SPlot2d_Curve::setIO( const Handle(SALOME_InteractiveObject)& io ) { myIO = io; } +/*! + \return true if curve has table interactive object +*/ bool SPlot2d_Curve::hasTableIO() const { return !myTableIO.IsNull(); } +/*! + \return table interactive object of curve +*/ Handle(SALOME_InteractiveObject) SPlot2d_Curve::getTableIO() const { return myTableIO; } +/*! + Sets table interactive object of curve + \param io - SALOME_InteractiveObject +*/ void SPlot2d_Curve::setTableIO( const Handle(SALOME_InteractiveObject)& io ) { myTableIO = io; } +/*! + \return SALOME_InteractiveObject +*/ bool SPlot2d_Curve::hasIO() const { return !myIO.IsNull(); } +/*! + \return table title +*/ QString SPlot2d_Curve::getTableTitle() const { QString title; diff --git a/src/SPlot2d/SPlot2d_Prs.cxx b/src/SPlot2d/SPlot2d_Prs.cxx index 38756328c..ce54a8bfb 100644 --- a/src/SPlot2d/SPlot2d_Prs.cxx +++ b/src/SPlot2d/SPlot2d_Prs.cxx @@ -25,40 +25,34 @@ 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() { } diff --git a/src/SPlot2d/SPlot2d_ViewModel.cxx b/src/SPlot2d/SPlot2d_ViewModel.cxx index 554927ff5..14b9b2c6f 100644 --- a/src/SPlot2d/SPlot2d_ViewModel.cxx +++ b/src/SPlot2d/SPlot2d_ViewModel.cxx @@ -63,10 +63,6 @@ using namespace std; return aMgr->GetStudyByID( id ); } */ -//================================================================================= -// SPlot2d_Viewer implementation -//================================================================================= - /*! Constructor */ @@ -110,6 +106,11 @@ void SPlot2d_Viewer::rename( const Handle(SALOME_InteractiveObject)& IObject, aViewFrame->updateTitles(); } +/*! + Renames all copies of object in all view windows + \param IObj - object to be renamed + \param name - new name +*/ void SPlot2d_Viewer::renameAll( const Handle(SALOME_InteractiveObject)& IObj, const QString& name ) { SUIT_ViewManager* vm = getViewManager(); @@ -232,12 +233,9 @@ void SPlot2d_Viewer::Repaint() if(aViewFrame) aViewFrame->Repaint(); } -//========================================================== /*! - * SPlot2d_Viewer::Display - * Display presentation - */ -//========================================================== + Display presentation +*/ void SPlot2d_Viewer::Display( const SALOME_Prs2d* prs ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -245,12 +243,9 @@ void SPlot2d_Viewer::Display( const SALOME_Prs2d* prs ) if(aViewFrame && aPrs) aViewFrame->Display(aPrs); } -//========================================================== /*! - * SPlot2d_Viewer::Erase - * Erase presentation - */ -//========================================================== + Erase presentation +*/ void SPlot2d_Viewer::Erase( const SALOME_Prs2d* prs, const bool ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -258,12 +253,9 @@ void SPlot2d_Viewer::Erase( const SALOME_Prs2d* prs, const bool ) if(aViewFrame && aPrs) aViewFrame->Erase(aPrs); } -//========================================================== /*! - * SPlot2d_Viewer::CreatePrs - * Create presentation by entry - */ -//========================================================== + Create presentation by entry +*/ SALOME_Prs* SPlot2d_Viewer::CreatePrs( const char* entry ) { Plot2d_ViewFrame* aViewFrame = getActiveViewFrame(); @@ -277,23 +269,17 @@ SALOME_Prs* SPlot2d_Viewer::CreatePrs( const char* entry ) return NULL; } -//========================================================== /*! - * SPlot2d_Viewer::BeforeDisplay - * Axiluary method called before displaying of objects - */ -//========================================================== + Axiluary method called before displaying of objects +*/ void SPlot2d_Viewer::BeforeDisplay( SALOME_Displayer* d ) { d->BeforeDisplay( this, SALOME_Plot2dViewType() ); } -//========================================================== /*! - * SPlot2d_Viewer::AfterDisplay - * Axiluary method called after displaying of objects - */ -//========================================================== + Axiluary method called after displaying of objects +*/ void SPlot2d_Viewer::AfterDisplay( SALOME_Displayer* d ) { d->AfterDisplay( this, SALOME_Plot2dViewType() ); @@ -331,12 +317,9 @@ Handle(SALOME_InteractiveObject) SPlot2d_Viewer::FindIObject( const char* Entry return anIO; } -//========================================================== /*! - * SPlot2d_Viewer::getActiveViewFrame - * Returns an active Plot2d ViewFrame or NULL - */ -//========================================================== + Returns an active Plot2d ViewFrame or NULL +*/ Plot2d_ViewFrame* SPlot2d_Viewer::getActiveViewFrame() { SUIT_ViewManager* aViewMgr = getViewManager(); @@ -349,6 +332,11 @@ Plot2d_ViewFrame* SPlot2d_Viewer::getActiveViewFrame() return NULL; } +/*! + \return curve by object and viewframe + \param theIObject - object + \param fr - viewframe +*/ SPlot2d_Curve* SPlot2d_Viewer::getCurveByIO( const Handle(SALOME_InteractiveObject)& theIObject, Plot2d_ViewFrame* fr ) { @@ -368,6 +356,9 @@ SPlot2d_Curve* SPlot2d_Viewer::getCurveByIO( const Handle(SALOME_InteractiveObje return NULL; } +/*! + SLOT: called when action "Clone view" is activated +*/ void SPlot2d_Viewer::onCloneView( Plot2d_ViewFrame* clonedVF, Plot2d_ViewFrame* newVF ) { if( !clonedVF || !newVF ) diff --git a/src/SPlot2d/SPlot2d_msg_en.po b/src/SPlot2d/SPlot2d_msg_en.po index 0653ee888..b68ec7b3d 100644 --- a/src/SPlot2d/SPlot2d_msg_en.po +++ b/src/SPlot2d/SPlot2d_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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", diff --git a/src/STD/Makefile.in b/src/STD/Makefile.in index 7bcec2561..5ad7fa383 100755 --- a/src/STD/Makefile.in +++ b/src/STD/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : STD diff --git a/src/STD/STD_Application.cxx b/src/STD/STD_Application.cxx index 68b7b1a06..7c0f33498 100755 --- a/src/STD/STD_Application.cxx +++ b/src/STD/STD_Application.cxx @@ -472,8 +472,11 @@ void STD_Application::onSaveDoc() if ( !isOk ) { putInfo( "" ); - SUIT_MessageBox::error1( desktop(), tr( "TIT_FILE_SAVEAS" ), - tr( "MSG_CANT_SAVE" ).arg( activeStudy()->studyName() ), tr( "BUT_OK" ) ); + // displaying a message box as SUIT_Validator in case file can't be written (the most frequent case) + SUIT_MessageBox::error1( desktop(), + tr( "ERR_ERROR" ), + tr( "ERR_PERMISSION_DENIED" ).arg( activeStudy()->studyName() ), + tr( "BUT_OK" ) ); } else putInfo( tr( "INF_DOC_SAVED" ).arg( "" ) ); @@ -510,7 +513,8 @@ bool STD_Application::onSaveAsDoc() if ( !isOk ) SUIT_MessageBox::error1( desktop(), tr( "ERROR" ), - tr( "INF_DOC_SAVING_FAILS" ).arg( aName ), tr( "BUT_OK" ) ); + tr( "INF_DOC_SAVING_FAILS" ).arg( aName ), + tr( "BUT_OK" ) ); } studySaved( activeStudy() ); @@ -835,6 +839,10 @@ QString STD_Application::getDirectory( const QString& initial, const QString& ca return QFileDialog::getExistingDirectory( initial, parent, 0, caption, true ); } +/*! + Changes desktop + \param desk - new desktop +*/ void STD_Application::setDesktop( SUIT_Desktop* desk ) { SUIT_Desktop* prev = desktop(); @@ -860,18 +868,30 @@ void STD_Application::savePreferences() { } +/*! + Custom activity after study is created + Updates desktop and actions +*/ void STD_Application::studyCreated( SUIT_Study* ) { updateDesktopTitle(); updateCommandsStatus(); } +/*! + Custom activity after study is opened + Updates desktop and actions +*/ void STD_Application::studyOpened( SUIT_Study* ) { updateDesktopTitle(); updateCommandsStatus(); } +/*! + Custom activity after study is opened + Updates desktop and actions +*/ void STD_Application::studySaved( SUIT_Study* ) { updateDesktopTitle(); diff --git a/src/STD/STD_CloseDlg.cxx b/src/STD/STD_CloseDlg.cxx index a06d8c6c5..bc6017978 100644 --- a/src/STD/STD_CloseDlg.cxx +++ b/src/STD/STD_CloseDlg.cxx @@ -85,12 +85,9 @@ STD_CloseDlg::STD_CloseDlg( QWidget* parent, bool modal, WFlags f ) connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) ); } -//================================================================================ /*! * \brief reaction on clicked(pressed) button */ -//================================================================================ - void STD_CloseDlg::onButtonClicked() { QPushButton* btn = ( QPushButton* )sender(); diff --git a/src/STD/resources/STD_images.po b/src/STD/resources/STD_images.po index 08410020c..f6b15c196 100755 --- a/src/STD/resources/STD_images.po +++ b/src/STD/resources/STD_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/STD/resources/STD_msg_en.po b/src/STD/resources/STD_msg_en.po index 2c5d9fd37..d5605763b 100755 --- a/src/STD/resources/STD_msg_en.po +++ b/src/STD/resources/STD_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -13,25 +31,25 @@ msgid "INF_READY" msgstr "Ready" msgid "BUT_OK" -msgstr "OK" +msgstr "&Ok" msgid "BUT_CANCEL" -msgstr "Cancel" +msgstr "&Cancel" msgid "BUT_CLOSE" -msgstr "Close" +msgstr "&Close" msgid "BUT_HELP" -msgstr "Help" +msgstr "&Help" msgid "BUT_YES" -msgstr "Yes" +msgstr "&Yes" msgid "BUT_NO" -msgstr "No" +msgstr "&No" msgid "BUT_APPLY" -msgstr "Apply" +msgstr "&Apply" msgid "ERR_ERROR" msgstr "Error" @@ -330,7 +348,7 @@ msgid "CLOSE_DLG_SAVE_CLOSE" msgstr "&Save&&Close" msgid "CLOSE_DLG_CLOSE" -msgstr "&Close w/o saving" +msgstr "C&lose w/o saving" msgid "CLOSE_DLG_UNLOAD" msgstr "&Unload" @@ -342,7 +360,7 @@ msgid "PRP_DESK_FILE_LOAD" msgstr "Load a document" msgid "MEN_DESK_FILE_LOAD" -msgstr "Conn&ect" +msgstr "Conn&ect..." msgid "CLOSE_DLG_CAPTION" msgstr "Close active study" diff --git a/src/SUIT/Makefile.in b/src/SUIT/Makefile.in index a6bab14a7..4a366b401 100755 --- a/src/SUIT/Makefile.in +++ b/src/SUIT/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : suit diff --git a/src/SUIT/SUIT_Accel.cxx b/src/SUIT/SUIT_Accel.cxx index 887b98bca..600ab2ebd 100644 --- a/src/SUIT/SUIT_Accel.cxx +++ b/src/SUIT/SUIT_Accel.cxx @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // SUIT_Accel.cxx: implementation of the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #include "SUIT_Accel.h" #include "SUIT_ViewWindow.h" @@ -30,9 +28,6 @@ #include -/*!\class SUIT_Accel - * Class handles keyboard accelerator bindings. - */ SUIT_Accel* SUIT_Accel::myself = 0; /*! Constructor [private].*/ @@ -125,8 +120,7 @@ bool SUIT_Accel::eventFilter( QObject *obj, QEvent *event ) if ( myMap.contains( type ) ) { IdActionMap idActionMap = myMap[type]; if ( idActionMap.contains( key ) ) { - vw->onAccelAction( idActionMap[key] ); - return true; + return vw->onAccelAction( idActionMap[key] ); } } } diff --git a/src/SUIT/SUIT_Accel.h b/src/SUIT/SUIT_Accel.h index ee3e96cf6..a5bec6b16 100644 --- a/src/SUIT/SUIT_Accel.h +++ b/src/SUIT/SUIT_Accel.h @@ -17,8 +17,6 @@ // See http://www.salome-platform.org/ // // SUIT_Accel.h: interface for the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #ifndef SUIT_Accel_h #define SUIT_Accel_h @@ -29,6 +27,10 @@ #include #include +/*! + \class SUIT_Accel + Manager of keyboard accelerator bindings +*/ class SUIT_EXPORT SUIT_Accel: public QObject { Q_OBJECT diff --git a/src/SUIT/SUIT_Application.cxx b/src/SUIT/SUIT_Application.cxx index bf0daebe6..1d8da2124 100755 --- a/src/SUIT/SUIT_Application.cxx +++ b/src/SUIT/SUIT_Application.cxx @@ -30,6 +30,9 @@ #include #include +/*! + Default constructor +*/ SUIT_Application::SUIT_Application() : QObject( 0 ), myStudy( 0 ), @@ -38,6 +41,9 @@ myStatusLabel( 0 ) { } +/*! + Destructor +*/ SUIT_Application::~SUIT_Application() { delete myStudy; @@ -46,37 +52,61 @@ SUIT_Application::~SUIT_Application() setDesktop( 0 ); } +/*! + \return main window of application (desktop) +*/ SUIT_Desktop* SUIT_Application::desktop() { return myDesktop; } +/*! + \return FALSE if application can not be closed (because of non saved data for example). + This method called by SUIT_Session whin closing of application was requested. +*/ bool SUIT_Application::isPossibleToClose() { return true; } +/*! + Performs some finalization of life cycle of this application. + For instance, the application can force its documents(s) to close. +*/ void SUIT_Application::closeApplication() { emit applicationClosed( this ); } +/*! + \return active Study. If Application supports wirking with several studies this method should be redefined +*/ SUIT_Study* SUIT_Application::activeStudy() const { return myStudy; } +/*! + \return version of application +*/ QString SUIT_Application::applicationVersion() const { return QString::null; } +/*! + Shows the application's main widget. For non GUI application must be redefined. +*/ void SUIT_Application::start() { if ( desktop() ) desktop()->show(); } +/*! + Opens document into active Study. If Study is empty - creates it. + \param theFileName - name of document file +*/ bool SUIT_Application::useFile( const QString& theFileName ) { createEmptyStudy(); @@ -93,22 +123,36 @@ bool SUIT_Application::useFile( const QString& theFileName ) return status; } +/*! + Opens other study into active Study. If Study is empty - creates it. + \param theName - name of study +*/ bool SUIT_Application::useStudy( const QString& theName ) { return false; } +/*! + Creates new empty Study if active Study = 0 +*/ void SUIT_Application::createEmptyStudy() { if ( !activeStudy() ) setActiveStudy( createNewStudy() ); } +/*! + \return number of Studies. + Must be redefined in Applications which support several studies for one Application instance. +*/ int SUIT_Application::getNbStudies() const { return activeStudy() ? 1 : 0; } +/*! + \return global resource manager +*/ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const { if ( !SUIT_Session::session() ) @@ -118,6 +162,12 @@ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const } #define DEFAULT_MESSAGE_DELAY 3000 + +/*! + Puts the message to the status bar + \param msg - text of message + \param msec - time in milliseconds, after that the status label will be cleared +*/ void SUIT_Application::putInfo ( const QString& msg, const int msec ) { if ( !desktop() ) @@ -135,11 +185,22 @@ void SUIT_Application::putInfo ( const QString& msg, const int msec ) QTimer::singleShot( msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec, myStatusLabel, SLOT( clear() ) ); } +/*! + Initialize with application arguments + \param argc - number of application arguments + \param argv - array of application arguments +*/ SUIT_Application* SUIT_Application::startApplication( int argc, char** argv ) const { return startApplication( name(), argc, argv ); } +/*! + Initialize with application name and arguments + \param name - name of application + \param argc - number of application arguments + \param argv - array of application arguments +*/ SUIT_Application* SUIT_Application::startApplication( const QString& name, int argc, char** argv ) const { SUIT_Session* session = SUIT_Session::session(); @@ -149,6 +210,10 @@ SUIT_Application* SUIT_Application::startApplication( const QString& name, int a return session->startApplication( name, argc, argv ); } +/*! + Sets the main window of application + \param desk - new main window (desktop) +*/ void SUIT_Application::setDesktop( SUIT_Desktop* desk ) { if ( myDesktop == desk ) @@ -160,11 +225,20 @@ void SUIT_Application::setDesktop( SUIT_Desktop* desk ) connect( myDesktop, SIGNAL( activated() ), this, SLOT( onDesktopActivated() ) ); } +/*! + Creates new instance of study. + By default, it is called from createEmptyStudy() + \sa createEmptyStudy() +*/ SUIT_Study* SUIT_Application::createNewStudy() { return new SUIT_Study( this ); } +/*! + Sets study as active + \param study - instance of study to be set as active +*/ void SUIT_Application::setActiveStudy( SUIT_Study* study ) { if ( myStudy == study ) @@ -173,6 +247,11 @@ void SUIT_Application::setActiveStudy( SUIT_Study* study ) myStudy = study; } +/*! + Creates new toolbar + \return identificator of new toolbar in tool manager + \param name - name of new toolbar +*/ int SUIT_Application::createTool( const QString& name ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -181,6 +260,14 @@ int SUIT_Application::createTool( const QString& name ) return desktop()->toolMgr()->createToolBar( name ); } +/*! + Creates new toolbutton + \return SUIT identificator of new action + \param a - action + \param tBar - identificator of toolbar + \param id - proposed SUIT identificator of action (if it is -1, then must be use any free) + \param idx - index in toolbar +*/ int SUIT_Application::createTool( QAction* a, const int tBar, const int id, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -191,6 +278,14 @@ int SUIT_Application::createTool( QAction* a, const int tBar, const int id, cons 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() ) @@ -201,6 +296,13 @@ int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, 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() ) @@ -210,6 +312,13 @@ int SUIT_Application::createTool( const int id, const int tBar, const int idx ) return intId != -1 ? id : -1; } +/*! + Creates new toolbutton + \return "id" if all right or -1 otherwise + \param id - SUIT identificator of action + \param tBar - name of toolbar + \param idx - index in toolbar +*/ int SUIT_Application::createTool( const int id, const QString& tBar, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) @@ -219,6 +328,15 @@ int SUIT_Application::createTool( const int id, const QString& tBar, const int i 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 ) { @@ -228,6 +346,15 @@ int SUIT_Application::createMenu( const QString& subMenu, const int menu, 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 ) { @@ -237,6 +364,15 @@ int SUIT_Application::createMenu( const QString& subMenu, const QString& menu, 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() ) @@ -247,6 +383,15 @@ int SUIT_Application::createMenu( QAction* a, const int menu, const int id, cons 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() ) @@ -257,6 +402,14 @@ int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, 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() ) @@ -266,6 +419,14 @@ int SUIT_Application::createMenu( const int id, const int menu, const int group, 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() ) @@ -275,40 +436,74 @@ int SUIT_Application::createMenu( const int id, const QString& menu, const int g 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; @@ -317,6 +512,10 @@ QAction* SUIT_Application::action( const int id ) const return a; } +/*! + \return SUIT identificator of action + \param a - action +*/ int SUIT_Application::actionId( const QAction* a ) const { int id = -1; @@ -329,6 +528,20 @@ int SUIT_Application::actionId( const QAction* a ) const 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 ) @@ -344,6 +557,11 @@ QAction* SUIT_Application::createAction( const int id, const QString& text, cons 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 ); @@ -367,11 +585,18 @@ int SUIT_Application::registerAction( const int id, QAction* 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 ); diff --git a/src/SUIT/SUIT_Convertor.h b/src/SUIT/SUIT_Convertor.h index 36e1985da..0f1713b81 100755 --- a/src/SUIT/SUIT_Convertor.h +++ b/src/SUIT/SUIT_Convertor.h @@ -18,7 +18,6 @@ // // 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_ diff --git a/src/SUIT/SUIT_DataObject.cxx b/src/SUIT/SUIT_DataObject.cxx index ddb393817..6240ed008 100755 --- a/src/SUIT/SUIT_DataObject.cxx +++ b/src/SUIT/SUIT_DataObject.cxx @@ -464,11 +464,17 @@ void SUIT_DataObject::setOn( const bool on ) myCheck = on; } +/*! + \return the opened state of the object (used in Object Browser). +*/ bool SUIT_DataObject::isOpen() const { return myOpen; } +/*! + Sets the opened state of the object (used in Object Browser). +*/ void SUIT_DataObject::setOpen( const bool on ) { myOpen = on; diff --git a/src/SUIT/SUIT_DataObject.h b/src/SUIT/SUIT_DataObject.h index bb14608c3..263698f06 100755 --- a/src/SUIT/SUIT_DataObject.h +++ b/src/SUIT/SUIT_DataObject.h @@ -37,7 +37,9 @@ typedef QPtrListIterator DataObjectListIterator; #endif /*! - Class provide support data object. + \class SUIT_DataObject + Data Object represents uniform data tree structure recommended to use in SUIT-based applications + Many of standard classes (DataModel,ObjectBrowser) deal with SUIT_DataObjects */ class SUIT_EXPORT SUIT_DataObject { @@ -116,6 +118,13 @@ private: friend class SUIT_DataObjectIterator; }; +/*! + \class SUIT_DataObject::Signal + Auxiliary class providing functionality to use signals of data object state change + SUIT_DataObject cannot have signals, because it isn't QObject, but + methods connect/disconnect of SUIT_DataObject with help of this it is possible + to emulate Qt signal processing +*/ class SUIT_DataObject::Signal : public QObject { Q_OBJECT diff --git a/src/SUIT/SUIT_DataObjectIterator.h b/src/SUIT/SUIT_DataObjectIterator.h index 45b8f7082..f697a0f68 100644 --- a/src/SUIT/SUIT_DataObjectIterator.h +++ b/src/SUIT/SUIT_DataObjectIterator.h @@ -22,7 +22,10 @@ #include "SUIT_DataObject.h" /*! - Class provide data object iterator. + \class SUIT_DataObjectIterator + Provides functionality of SUIT tree detour + It is possible to use "to-depth" or "to-breadth" detour and + to control level detour (from left or from right) */ class SUIT_EXPORT SUIT_DataObjectIterator { @@ -51,6 +54,11 @@ private: int myDetourType, myCurrentLevel; }; +/*! + \class SUIT_DataObjectIterator + Provides functionality of SUIT tree detour between certain levels + Only "to-breadth" detour is used +*/ class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator { public: diff --git a/src/SUIT/SUIT_DataOwner.cxx b/src/SUIT/SUIT_DataOwner.cxx index 28ceb5153..a7f562515 100755 --- a/src/SUIT/SUIT_DataOwner.cxx +++ b/src/SUIT/SUIT_DataOwner.cxx @@ -26,11 +26,6 @@ #define _typeinfo type_info #endif -//******************************************************************** -// SUIT_DataOwner class -//******************************************************************** - - /*! Constructor*/ SUIT_DataOwner::SUIT_DataOwner() { @@ -49,43 +44,42 @@ bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 ) return p1.isNull() && p2.isNull(); } -//******************************************************************** -/*! \class SUIT_DataOwnerPtrList - * implements value list with unique items (uniqueness is - * provided by operator==()) - */ -//******************************************************************** +/*! + \class SUIT_DataOwnerPtrList + implements value list with unique items (uniqueness is + provided by operator==()) +*/ -//==================================================================== -//! Constructor (default) -//==================================================================== +/*! + Constructor (default) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList() : QValueList(), mySkipEqual( true ) { } -//==================================================================== -//! Constructor (default) -//==================================================================== +/*! + Constructor (default) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) { } -//==================================================================== -//! Constructor (copy) -//==================================================================== +/*! + Constructor (copy) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l ) : QValueList( l ), mySkipEqual( true ) { } -//==================================================================== -//! Constructor (copy) -//==================================================================== +/*! + Constructor (copy) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) @@ -102,9 +96,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, co } #ifndef QT_NO_STL -//==================================================================== -//! Constructor (from stl) -//==================================================================== +/*! + Constructor (from stl) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list& l ) : QValueList( l ), mySkipEqual( true ) @@ -113,9 +107,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list #endif #ifndef QT_NO_STL -//==================================================================== -//! Constructor (from stl) -//==================================================================== +/*! + Constructor (from stl) +*/ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list& l, const bool skipAllEqual ) : QValueList(), mySkipEqual( skipAllEqual ) @@ -127,9 +121,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list } #endif -//==================================================================== -//! Appends an item to the list -//==================================================================== +/*! + Appends an item to the list +*/ SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x ) { if( mySkipEqual && myMap.contains( x ) ) //contains uses SUIT_DataOwnerPtr::operator== @@ -143,9 +137,9 @@ SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOw return it; } -//==================================================================== -//! Clear list -//==================================================================== +/*! + Clear list +*/ void SUIT_DataOwnerPtrList::clear() { if( mySkipEqual ) @@ -153,9 +147,9 @@ void SUIT_DataOwnerPtrList::clear() QValueList::clear(); } -//==================================================================== -//! Remove an item from the list -//==================================================================== +/*! + Remove an item from the list +*/ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x ) { if( mySkipEqual && myMap.contains(x) ) @@ -163,9 +157,9 @@ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x ) return QValueList::remove( x ); } -//==================================================================== -//! -//==================================================================== +/*! + Operator < allows to order suit data owners for map +*/ bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 ) { return p1.get() #include "SUIT.h" +/*! + \class SUIT_FileValidator + Provides functionality to check file +*/ class SUIT_EXPORT SUIT_FileValidator { public: diff --git a/src/SUIT/SUIT_MessageBox.cxx b/src/SUIT/SUIT_MessageBox.cxx index 1d4d03cad..0e8630c91 100755 --- a/src/SUIT/SUIT_MessageBox.cxx +++ b/src/SUIT/SUIT_MessageBox.cxx @@ -16,12 +16,13 @@ // // 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" diff --git a/src/SUIT/SUIT_MessageBox.h b/src/SUIT/SUIT_MessageBox.h index f8cf626be..334ecb080 100755 --- a/src/SUIT/SUIT_MessageBox.h +++ b/src/SUIT/SUIT_MessageBox.h @@ -16,12 +16,7 @@ // // 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 @@ -36,6 +31,10 @@ #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: diff --git a/src/SUIT/SUIT_Operation.cxx b/src/SUIT/SUIT_Operation.cxx index 658ff2017..5426588c7 100755 --- a/src/SUIT/SUIT_Operation.cxx +++ b/src/SUIT/SUIT_Operation.cxx @@ -16,16 +16,15 @@ // // 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" @@ -36,13 +35,13 @@ #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(), diff --git a/src/SUIT/SUIT_Operation.h b/src/SUIT/SUIT_Operation.h index 4f1b617b9..1c91a2b19 100755 --- a/src/SUIT/SUIT_Operation.h +++ b/src/SUIT/SUIT_Operation.h @@ -16,17 +16,6 @@ // // 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 @@ -40,6 +29,7 @@ class SUIT_Study; class SUIT_Application; /*! + \class SUIT_Operation * \brief Base class for all operations * * Base class for all operations. If you perform an action it is reasonable to create diff --git a/src/SUIT/SUIT_ResourceMgr.cxx b/src/SUIT/SUIT_ResourceMgr.cxx index ed8f3a872..e76ed76b1 100755 --- a/src/SUIT/SUIT_ResourceMgr.cxx +++ b/src/SUIT/SUIT_ResourceMgr.cxx @@ -18,6 +18,9 @@ // #include "SUIT_ResourceMgr.h" +#include +#include + /*! Constructor */ @@ -61,15 +64,59 @@ QString SUIT_ResourceMgr::loadDoc( const QString& prefix, const QString& id ) co return path( docSection, prefix, id ); } +#include /*! 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; +} diff --git a/src/SUIT/SUIT_ResourceMgr.h b/src/SUIT/SUIT_ResourceMgr.h index 2b1a18bec..ebb380446 100755 --- a/src/SUIT/SUIT_ResourceMgr.h +++ b/src/SUIT/SUIT_ResourceMgr.h @@ -35,7 +35,9 @@ public: QString loadDoc( const QString&, const QString& ) const; protected: - virtual QString userFileName( const QString& ) const; + virtual QString userFileName( const QString&, const bool = true ) const; + virtual QString findAppropriateUserFile( const QString& ) const; + virtual int userFileId( const QString& ) const; private: QString myVersion; diff --git a/src/SUIT/SUIT_Selector.h b/src/SUIT/SUIT_Selector.h index 5d1ae0e3a..7d195ffbd 100755 --- a/src/SUIT/SUIT_Selector.h +++ b/src/SUIT/SUIT_Selector.h @@ -27,6 +27,13 @@ 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 diff --git a/src/SUIT/SUIT_Session.cxx b/src/SUIT/SUIT_Session.cxx index 7eca7329a..baa32fd81 100755 --- a/src/SUIT/SUIT_Session.cxx +++ b/src/SUIT/SUIT_Session.cxx @@ -290,7 +290,7 @@ SUIT_Session::AppLib SUIT_Session::loadLibrary( const QString& name, QString& li #ifdef WIN32 lib = ::LoadLibrary( (char*)libFile.latin1() ); #else - lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY /*| RTLD_GLOBAL */ ); + lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY | RTLD_GLOBAL ); #endif return lib; } @@ -313,7 +313,7 @@ QString SUIT_Session::applicationName( const QString& str ) const */ SUIT_ResourceMgr* SUIT_Session::createResourceMgr( const QString& appName ) const { - return new SUIT_ResourceMgr( appName ); + return new SUIT_ResourceMgr( applicationName( appName ) ); } /*! diff --git a/src/SUIT/SUIT_Study.cxx b/src/SUIT/SUIT_Study.cxx index 995aede9e..ac8320b6c 100755 --- a/src/SUIT/SUIT_Study.cxx +++ b/src/SUIT/SUIT_Study.cxx @@ -117,11 +117,12 @@ void SUIT_Study::closeDocument(bool permanently) { } +/*! + Custom document initialization to be performed \n + within onNewDoc() handler can be put here +*/ void SUIT_Study::createDocument() { - /*! Custom document initialization to be performed \n - * within onNewDoc() handler can be put here - */ } /*! diff --git a/src/SUIT/SUIT_Tools.h b/src/SUIT/SUIT_Tools.h index 07d8ff059..56643dfea 100755 --- a/src/SUIT/SUIT_Tools.h +++ b/src/SUIT/SUIT_Tools.h @@ -27,6 +27,10 @@ #include #include +/*! + \class SUIT_Tools + Prodives set of auxiliary static methods +*/ class SUIT_EXPORT SUIT_Tools : public Qtx { public: diff --git a/src/SUIT/SUIT_TreeSync.h b/src/SUIT/SUIT_TreeSync.h index 19bdf4edd..1ce2a3a5a 100644 --- a/src/SUIT/SUIT_TreeSync.h +++ b/src/SUIT/SUIT_TreeSync.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SUIT_TREE_SYNC_HEADER #define SUIT_TREE_SYNC_HEADER @@ -5,25 +23,49 @@ #include #include +/*! + \struct DiffItem + \brief Struct representing difference between items +*/ template 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 TrgItem synchronize( const SrcItem&, const TrgItem&, const TreeData& ); +/*! + \brief compares children +*/ template void diffSiblings( const SrcItem&, const TrgItem&, QValueList < DiffItem < SrcItem,TrgItem > >&, const TreeData& ); +/*! + \brief create item with children (subtree) +*/ template TrgItem createSubTree( const SrcItem&, const TrgItem&, const TrgItem&, const bool, const TreeData& ); +/*! + \brief find equal element in list +*/ template const typename QValueList::const_iterator findEqual( const QValueList& l, const typename QValueList::const_iterator& first, @@ -33,8 +75,31 @@ const typename QValueList::const_iterator findEqual( const QValueList +
  • bool isEqual( const SrcItem&, const TrgItem& ) const - returns true if items are equal +
  • SrcItem nullSrc() const - returns null SrcItem +
  • TrgItem nullTrg() const - returns null TrgItem +
  • TrgItem createItem( +
      +
    1. const SrcItem& src, - corresponding SrcItem +
    2. const TrgItem& parent, - parent TrgItem +
    3. const TrgItem& after, - TrgItem after that new item must be added +
    4. const bool prepend - whether new item must be added as first +
    + ) const - creates new TrgItem +
  • void updateItem( const TrgItem& ) const - updates TrgItem without recreation +
  • void deleteItemWithChildren( const TrgItem& ) const - deletes TrgItem with all children +
  • void children( const SrcItem&, QValueList& ) const - fills list with children +
  • void children( const TrgItem&, QValueList& ) const - fills list with children +
  • SrcItem parent( const SrcItem& ) const - return parent SrcItem +
  • TrgItem parent( const TrgItem& ) const - return parent SrcItem + +*/ template TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) { @@ -48,7 +113,6 @@ 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++ ) @@ -64,7 +128,9 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) if( item.myTrg==td.nullTrg() ) { //to add - lastItem = createSubTree( item.mySrc, r2, lastItem, isFirst, td ); + TrgItem nitem = createSubTree( item.mySrc, r2, lastItem, lastItem==td.nullTrg(), td ); + if( nitem!=td.nullTrg() ) + lastItem = nitem; } else { @@ -73,10 +139,9 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) synchronize( item.mySrc, item.myTrg, td ); lastItem = item.myTrg; } - isFirst = false; } } - + return r2; } else @@ -88,6 +153,14 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td ) } } +/*! + Finds equal element in list + \return iterator + \param l - list to search + \param first - start iterator + \param it - item to be found + \param td - tree data object (provides auxiliary methods) +*/ template const typename QValueList::const_iterator findEqual( const QValueList& l, const typename QValueList::const_iterator& first, @@ -101,13 +174,20 @@ const typename QValueList::const_iterator findEqual( const QValueList 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 src_ch; QValueList trg_ch; @@ -155,6 +235,15 @@ void diffSiblings( const SrcItem& src, const TrgItem& trg, } } +/*! + Creates sub-tree + \return root of just created sub-tree + \param src - corresponding SrcItem + \param parent - parent of new TrgItem + \param after - TrgItem, after that new item must be added + \param asFirst - true if TrgItem must be added as first + \param td - tree data object (provides auxiliary methods) +*/ template TrgItem createSubTree( const SrcItem& src, const TrgItem& parent, const TrgItem& after, const bool asFirst, diff --git a/src/SUIT/SUIT_ViewManager.cxx b/src/SUIT/SUIT_ViewManager.cxx index 69288994b..3158025d4 100755 --- a/src/SUIT/SUIT_ViewManager.cxx +++ b/src/SUIT/SUIT_ViewManager.cxx @@ -254,9 +254,9 @@ void SUIT_ViewManager::onDeleteStudy() myStudy = NULL; } +/*! invoke method of SUIT_PopupClient, which notifies about popup*/ void SUIT_ViewManager::onContextMenuRequested( QContextMenuEvent* e ) { - /*! invoke method of SUIT_PopupClient, which notifies about popup*/ contextMenuRequest( e ); } diff --git a/src/SUIT/SUIT_ViewModel.cxx b/src/SUIT/SUIT_ViewModel.cxx index 38a9aac1e..49bef3db8 100755 --- a/src/SUIT/SUIT_ViewModel.cxx +++ b/src/SUIT/SUIT_ViewModel.cxx @@ -18,7 +18,6 @@ // // SUIT_ViewModel.cxx: implementation of the SUIT_ViewModel class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewModel.h" diff --git a/src/SUIT/SUIT_ViewWindow.cxx b/src/SUIT/SUIT_ViewWindow.cxx index 3b013f679..a0e154a81 100755 --- a/src/SUIT/SUIT_ViewWindow.cxx +++ b/src/SUIT/SUIT_ViewWindow.cxx @@ -18,7 +18,6 @@ // // SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewWindow.h" #include "SUIT_Desktop.h" @@ -54,21 +53,36 @@ SUIT_ViewWindow::~SUIT_ViewWindow() { } +/*! + Sets new view manager for window + \param theManager - new view manager +*/ void SUIT_ViewWindow::setViewManager( SUIT_ViewManager* theManager ) { myManager = theManager; } +/*! + \return view manager of window +*/ SUIT_ViewManager* SUIT_ViewWindow::getViewManager() const { return myManager; } +/*! + \return QImage, containing all scene rendering in window +*/ QImage SUIT_ViewWindow::dumpView() { return QImage(); } +/*! + 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(); @@ -111,6 +125,9 @@ void SUIT_ViewWindow::onDumpView() qApp->postEvent( this, new QCustomEvent( DUMP_EVENT ) ); } +/*! + \return filters for image files +*/ QString SUIT_ViewWindow::filter() const { return tr( "TLT_IMAGE_FILES" ); @@ -148,22 +165,30 @@ bool SUIT_ViewWindow::event( QEvent* e ) /*! Called by SUIT_Accel::onActivated() when a key accelerator was activated and this window was active */ -void SUIT_ViewWindow::onAccelAction( int _action ) +bool SUIT_ViewWindow::onAccelAction( int _action ) { - action( _action ); + return action( _action ); } /*! action handle standard action (zoom, pan) or custom action. to be redefined in successors. */ -void SUIT_ViewWindow::action( const int ) +bool SUIT_ViewWindow::action( const int ) { + return true; } +/*! + \return string containing visual parameters of window +*/ QString SUIT_ViewWindow::getVisualParameters() { return "empty"; } - + +/*! + Sets visual parameters of window by its string representation + \param parameters - string with visual parameters +*/ void SUIT_ViewWindow::setVisualParameters( const QString& parameters ) { } diff --git a/src/SUIT/SUIT_ViewWindow.h b/src/SUIT/SUIT_ViewWindow.h index 200deb1c4..c32e6776a 100755 --- a/src/SUIT/SUIT_ViewWindow.h +++ b/src/SUIT/SUIT_ViewWindow.h @@ -18,7 +18,6 @@ // // 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_ @@ -50,7 +49,7 @@ public: 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 ); @@ -73,7 +72,7 @@ protected: 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; diff --git a/src/SUIT/resources/SUIT_images.po b/src/SUIT/resources/SUIT_images.po index b22696bbd..7fa7e7f9d 100755 --- a/src/SUIT/resources/SUIT_images.po +++ b/src/SUIT/resources/SUIT_images.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # 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". diff --git a/src/SUIT/resources/SUIT_msg_en.po b/src/SUIT/resources/SUIT_msg_en.po index 95f43c747..6de96c108 100755 --- a/src/SUIT/resources/SUIT_msg_en.po +++ b/src/SUIT/resources/SUIT_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -60,15 +78,6 @@ msgstr "The file \"%1\" does not exist!" msgid "ERR_PERMISSION_DENIED" msgstr "Can't save file \"%1\".\nPermission denied." -msgid "BUT_OK" -msgstr "&OK" - -msgid "BUT_YES" -msgstr "&Yes" - -msgid "BUT_NO" -msgstr "&No" - msgid "INF_DIRECTORIES_FILTER" msgstr "Directories" diff --git a/src/SUIT/utilities.h b/src/SUIT/utilities.h index cfc5ed0e5..fe27a2190 100755 --- a/src/SUIT/utilities.h +++ b/src/SUIT/utilities.h @@ -26,7 +26,7 @@ // Module : SALOME // $Header$ -/* --- Definition macros file to print informations if _DEBUG_ is defined --- */ +/*! --- Definition macros file to print informations if _DEBUG_ is defined --- */ #ifndef UTILITIES_H #define UTILITIES_H @@ -38,7 +38,7 @@ #include "LocalTraceBufferPool.hxx" -/** \file utilities.h +/*! \file utilities.h * For each message to put in the trace, a specific ostingstream object is \n * created and destroyed automatically at the end of the message macro. \n * The insert function of LocalTraceBufferPool class gets a buffer in a \n @@ -65,7 +65,7 @@ std::cerr << "ABORT return code= "<< code << std::endl; \ std::exit(code);} -/* --- To print date and time of compilation of current source --- */ +/*! --- To print date and time of compilation of current source --- */ #if defined ( __GNUC__ ) #define COMPILER "g++" @@ -90,7 +90,7 @@ << " at " << __TIME__ << MESS_END } #ifdef _DEBUG_ -/** @name the following MACROS are useful at debug time*/ +/*! @name the following MACROS are useful at debug time*/ //@{ #define MESSAGE(msg) {MESS_BEGIN("- Trace ") << msg << MESS_END} #define SCRUTE(var) {MESS_BEGIN("- Trace ") << #var << "=" << var < #include +#include #ifdef SUIT_ENABLE_PYTHON #include @@ -38,6 +39,7 @@ #include #include #include +#include #include @@ -101,7 +103,6 @@ public: SUITApp_Session( bool theIniFormat ) : SUIT_Session(), myIniFormat ( theIniFormat ) {} virtual ~SUITApp_Session() {} -protected: virtual SUIT_ResourceMgr* createResourceMgr( const QString& appName ) const { SUIT_ResourceMgr* resMgr = 0; @@ -139,13 +140,16 @@ int main( int args, char* argv[] ) QStringList argList; bool noExceptHandling = false; - bool iniFormat = false; + bool iniFormat = false; + bool noSplash = false; for ( int i = 1; i < args /*&& !noExceptHandling*/; i++ ) { - if ( !strcmp( argv[i], "/noexcepthandling" ) ) + if ( !strcmp( argv[i], "--noexcepthandling" ) ) noExceptHandling = true; else if ( !strcmp( argv[i], "--format=ini") ) iniFormat = true; + else if ( !strcmp( argv[i], "--nosplash") ) + noSplash = true; else argList.append( QString( argv[i] ) ); } @@ -156,6 +160,55 @@ int main( int args, char* argv[] ) if ( !argList.isEmpty() ) { SUITApp_Session* aSession = new SUITApp_Session( iniFormat ); + QtxSplash* splash = 0; + if ( !noSplash ) { + SUIT_ResourceMgr* resMgr = aSession->createResourceMgr( argList.first() ); + if ( resMgr ) { + resMgr->loadLanguage(); + QString splashIcon, splashInfo, splashTextColors; + resMgr->value( "splash", "image", splashIcon ); + resMgr->value( "splash", "info", splashInfo, false ); + resMgr->value( "splash", "text_colors", splashTextColors ); + QString appName = QObject::tr( "APP_NAME" ).stripWhiteSpace(); + QString appVersion = QObject::tr( "APP_VERSION" ).stripWhiteSpace(); + if ( appVersion == "APP_VERSION" ) { + if ( appName == "APP_NAME" || appName.lower() == "salome" ) + appVersion = salomeVersion(); + else + appVersion = ""; + } + QPixmap px( splashIcon ); + if ( !px.isNull() ) { + splash = QtxSplash::splash( px ); + if ( !splashTextColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashTextColors ); + QColor c1, c2; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + splash->setTextColors( c1, c2 ); + } + else { + splash->setTextColors( Qt::white, Qt::black ); + } +#ifdef _DEBUG_ + splash->setHideOnClick( true ); +#endif + QFont f = splash->font(); + f.setBold( true ); + splash->setFont( f ); + if ( !splashInfo.isEmpty() ) { + splashInfo.replace( QRegExp( "%A" ), appName ); + splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( appVersion ) ); + splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) ); + splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) ); + splashInfo.replace( QRegExp( "\\\\n" ), "\n" ); + splash->message( splashInfo ); + } + splash->show(); + qApp->processEvents(); + } + } + } SUIT_Application* theApp = aSession->startApplication( argList.first() ); if ( theApp ) { @@ -164,8 +217,12 @@ int main( int args, char* argv[] ) // if ( !app.mainWidget() ) // app.setMainWidget( theApp->desktop() ); + if ( splash ) + splash->finish( theApp->desktop() ); result = app.exec(); + if ( splash ) + delete splash; } delete aSession; } diff --git a/src/SUITApp/SUITApp_Application.cxx b/src/SUITApp/SUITApp_Application.cxx index 744d84acc..84f267953 100644 --- a/src/SUITApp/SUITApp_Application.cxx +++ b/src/SUITApp/SUITApp_Application.cxx @@ -31,6 +31,9 @@ #include #endif +/*! + Constructor +*/ SUITApp_Application::SUITApp_Application( int& argc, char** argv, SUIT_ExceptionHandler* hand ) : QApplication( argc, argv ), myExceptHandler( hand ) @@ -45,6 +48,9 @@ myExceptHandler( hand ) delete strTbl; } +/*! + Constructor +*/ SUITApp_Application::SUITApp_Application( int& argc, char** argv, Type type, SUIT_ExceptionHandler* hand ) : QApplication( argc, argv, type ), myExceptHandler( hand ) @@ -54,17 +60,30 @@ myExceptHandler( hand ) installTranslator( strTbl ); } +/*! + Sends event to receiver + \return the value that is returned from the receiver's event handler + \param e - event + \param receiver - receiver +*/ bool SUITApp_Application::notify( QObject* receiver, QEvent* e ) { return myExceptHandler ? myExceptHandler->handle( receiver, e ) : QApplication::notify( receiver, e ); } +/*! + Changes exception handler + \param hand - new handler +*/ void SUITApp_Application::setHandler( SUIT_ExceptionHandler* hand ) { myExceptHandler = hand; } +/*! + \return exception handler +*/ SUIT_ExceptionHandler* SUITApp_Application::handler() const { return myExceptHandler; diff --git a/src/SUITApp/resources/SUITApp_msg_en.po b/src/SUITApp/resources/SUITApp_msg_en.po index fa5399056..1cc1968c2 100644 --- a/src/SUITApp/resources/SUITApp_msg_en.po +++ b/src/SUITApp/resources/SUITApp_msg_en.po @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# msgid "APP_ERROR" msgstr "Error" diff --git a/src/SUPERVGraph/Makefile.in b/src/SUPERVGraph/Makefile.in index 8772d041e..3c5c54963 100755 --- a/src/SUPERVGraph/Makefile.in +++ b/src/SUPERVGraph/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -34,7 +52,7 @@ RESOURCES_FILES = view_pan.png \ 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 diff --git a/src/SUPERVGraph/SUPERVGraph.cxx b/src/SUPERVGraph/SUPERVGraph.cxx index 2b8f3d87f..69aab0ec8 100755 --- a/src/SUPERVGraph/SUPERVGraph.cxx +++ b/src/SUPERVGraph/SUPERVGraph.cxx @@ -31,6 +31,9 @@ using namespace std; +/*! + Creates view +*/ SUIT_ViewWindow* SUPERVGraph::createView(SUIT_Desktop* parent) { return new SUPERVGraph_ViewFrame( parent/*, "vtkView"*/ ); @@ -38,6 +41,9 @@ SUIT_ViewWindow* SUPERVGraph::createView(SUIT_Desktop* parent) extern "C" { + /*! + Creates view + */ SUIT_ViewWindow* createView(SUIT_Desktop* parent) { return SUPERVGraph::createView(parent); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx index 716cc8fca..9bbf6431d 100755 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx @@ -38,21 +38,33 @@ using namespace std; +/*! + Constructor +*/ SUPERVGraph_View::SUPERVGraph_View( QWidget* theParent ): QWidget( theParent ) { init(theParent); } +/*! + Constructor +*/ SUPERVGraph_View::SUPERVGraph_View( SUPERVGraph_View* theParent ): QWidget( theParent ) { init(theParent); } +/*! + Builds popup for SUPERVGraph viewer +*/ void SUPERVGraph_View::contextMenuPopup( QPopupMenu* ) { // to be implemented } +/*! + Initialization +*/ void SUPERVGraph_View::init( QWidget* theParent ) { if ( theParent->inherits( "QMainWindow" ) ) { @@ -88,6 +100,9 @@ SUPERVGraph_ViewFrame::SUPERVGraph_ViewFrame( SUIT_Desktop* theDesktop ) createToolBar(); } +/*! + Creates actions of SUPERVGraph view window +*/ void SUPERVGraph_ViewFrame::createActions() { if (!myActionsMap.isEmpty()) return; @@ -109,16 +124,18 @@ void SUPERVGraph_ViewFrame::createActions() myActionsMap[ ResetId ] = aAction; } -//================================================================ -// Function : createToolBar -// Purpose : -//================================================================ +/*! + Creates toolbar of SUPERVGraph view window +*/ void SUPERVGraph_ViewFrame::createToolBar() { myActionsMap[PanId]->addTo(myToolBar); myActionsMap[ResetId]->addTo(myToolBar); } +/*! + Destructor +*/ SUPERVGraph_ViewFrame::~SUPERVGraph_ViewFrame() {} /*! @@ -130,10 +147,13 @@ SUPERVGraph_View* SUPERVGraph_ViewFrame::getViewWidget() } +/*! + Sets new view widget + \param theView - new view widget +*/ void SUPERVGraph_ViewFrame::setViewWidget( SUPERVGraph_View* theView ) { myView = theView; - setFocusProxy( myView ); // mkr : IPAL11388 } @@ -272,40 +292,69 @@ QColor SUPERVGraph_ViewFrame::backgroundColor() const return QMainWindow::backgroundColor(); } +/*! +*/ void SUPERVGraph_ViewFrame::onAdjustTrihedron() { // MESSAGE ( "SUPERVGraph_ViewFrame::onAdjustTrihedron" ) } +/*! + Changes name of object + \param obj - object to be renamed + \param name - new name +*/ void SUPERVGraph_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName ) { // MESSAGE ( "SUPERVGraph_ViewFrame::rename" ) } +/*! + Unhilights all object in viewer + \param updateviewer - update current viewer +*/ void SUPERVGraph_ViewFrame::unHighlightAll() { // MESSAGE ( "SUPERVGraph_ViewFrame::unHighlightAll" ) } +/*! + Hilights/unhilights object in viewer + \param obj - object to be updated + \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param update - update current viewer +*/ void SUPERVGraph_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject, bool highlight, bool immediatly ) { // MESSAGE ( "SUPERVGraph_ViewFrame::highlight" ) } +/*! + \return true if object is in viewer or in collector + \param obj - object to be checked + \param onlyInViewer - search object only in viewer (so object must be displayed) +*/ bool SUPERVGraph_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) { // MESSAGE ( "SUPERVGraph_ViewFrame::isInViewer" ) return false; } +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool SUPERVGraph_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject ) { // MESSAGE ( "SUPERVGraph_ViewFrame::isVisible" ) return false; } +/*! + Custom resize event handler +*/ void SUPERVGraph_ViewFrame::resizeEvent( QResizeEvent* theEvent ) { QMainWindow::resizeEvent( theEvent ); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx index 9cf508b31..fa3bfdb4a 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx @@ -20,6 +20,9 @@ int SUPERVGraph_ViewManager::myMaxId = 0; +/*! + Constructor +*/ SUPERVGraph_ViewManager::SUPERVGraph_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop, SUIT_ViewModel* theViewModel ) @@ -28,16 +31,27 @@ SUPERVGraph_ViewManager::SUPERVGraph_ViewManager( SUIT_Study* theStudy, myId = ++myMaxId; } +/*! + Destructor +*/ SUPERVGraph_ViewManager::~SUPERVGraph_ViewManager() { } +/*! + Sets view name + \param theView - view to assign name +*/ void SUPERVGraph_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); theView->setCaption( QString( "SUPERVISION scene:%1 - viewer:%2" ).arg( myId ).arg(aPos+1)); } +/*! + Fills popup menu with custom actions + \param popup - popup menu to be filled with +*/ void SUPERVGraph_ViewManager::contextMenuPopup( QPopupMenu* thePopup) { SUIT_ViewManager::contextMenuPopup( thePopup ); diff --git a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx index c6fe5f9ea..aadb0a192 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx @@ -21,15 +21,25 @@ #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 ); diff --git a/src/SVTK/Makefile.in b/src/SVTK/Makefile.in index 58c7e6fdb..810689524 100755 --- a/src/SVTK/Makefile.in +++ b/src/SVTK/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Alexander Solovyov(OCN) # Module : SVTK @@ -19,6 +37,7 @@ EXPORT_HEADERS= \ SALOME_Actor.h \ SVTK_RectPicker.h \ SVTK_DeviceActor.h \ + SVTK_DialogBase.h \ SVTK_FontWidget.h \ SVTK_CubeAxesActor2D.h \ SVTK_Functor.h \ @@ -38,7 +57,9 @@ EXPORT_HEADERS= \ SVTK_Event.h \ SVTK_ViewModelBase.h -PO_FILES = SVTK_msg_en.po +PO_FILES = \ + SVTK_msg_en.po \ + SVTK_images.po # Libraries targets LIB = libSVTK.la @@ -51,7 +72,9 @@ LIB_SRC= \ SVTK_DeviceActor.cxx \ SVTK_CubeAxesActor2D.cxx \ SVTK_NonIsometricDlg.cxx \ + SVTK_UpdateRateDlg.cxx \ SVTK_CubeAxesDlg.cxx \ + SVTK_DialogBase.cxx \ SVTK_FontWidget.cxx \ SVTK_Trihedron.cxx \ SVTK_MainWindow.cxx \ @@ -70,8 +93,10 @@ LIB_MOC = \ SVTK_GenericRenderWindowInteractor.h \ SVTK_RenderWindowInteractor.h \ SVTK_NonIsometricDlg.h \ + SVTK_UpdateRateDlg.h \ SVTK_CubeAxesDlg.h \ SVTK_FontWidget.h \ + SVTK_DialogBase.h \ SVTK_ViewModelBase.h \ SVTK_ViewManager.h \ SVTK_ViewWindow.h \ @@ -85,11 +110,13 @@ CPPFLAGS+= \ $(QT_INCLUDES) \ $(OCC_INCLUDES) \ $(VTK_INCLUDES) \ + $(QWT_INCLUDES) \ $(BOOST_CPPFLAGS) LDFLAGS+= \ $(QT_MT_LIBS) \ $(OCC_LIBS) \ + $(QWT_LIBS) \ $(VTK_LIBS) LIBS+= -lqtx -lsuit -lstd -lCAM -lSalomeObject -lSalomePrs -lVTKViewer diff --git a/src/SVTK/SALOME_Actor.cxx b/src/SVTK/SALOME_Actor.cxx index 9b1b7937d..bb100848c 100644 --- a/src/SVTK/SALOME_Actor.cxx +++ b/src/SVTK/SALOME_Actor.cxx @@ -73,7 +73,6 @@ using namespace std; int SALOME_POINT_SIZE = 5; int SALOME_LINE_WIDTH = 3; -//---------------------------------------------------------------------------- namespace { int @@ -83,12 +82,13 @@ namespace { int anEdgeId = 0; if (vtkCell* aPickedCell = theActor->GetElemCell(theObjId)) { - float aPickPosition[3]; + vtkFloatingPointType aPickPosition[3]; thePicker->GetPickPosition(aPickPosition); - float aMinDist = 1000000.0, aDist = 0; + vtkFloatingPointType aMinDist = 1000000.0, aDist = 0; for (int i = 0, iEnd = aPickedCell->GetNumberOfEdges(); i < iEnd; i++){ if(vtkLine* aLine = vtkLine::SafeDownCast(aPickedCell->GetEdge(i))){ - int subId; float pcoords[3], closestPoint[3], weights[3]; + int subId; + vtkFloatingPointType pcoords[3], closestPoint[3], weights[3]; aLine->EvaluatePosition(aPickPosition,closestPoint,subId,pcoords,aDist,weights); if (aDist < aMinDist) { aMinDist = aDist; @@ -122,11 +122,11 @@ namespace } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SALOME_Actor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SALOME_Actor ::SALOME_Actor(): myRenderer(NULL), @@ -164,14 +164,17 @@ SALOME_Actor myOutlineActor->SetVisibility( false ); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SALOME_Actor ::~SALOME_Actor() {} -//---------------------------------------------------------------------------- +/*! + \return true if the SALOME_Actor has a reference to SALOME_InteractiveObject +*/ Standard_Boolean SALOME_Actor ::hasIO() @@ -179,6 +182,9 @@ SALOME_Actor return !myIO.IsNull(); } +/*! + \return correspoinding reference to SALOME_InteractiveObject +*/ const Handle(SALOME_InteractiveObject)& SALOME_Actor ::getIO() @@ -186,6 +192,10 @@ SALOME_Actor return myIO; } +/*! + Sets reference to SALOME_InteractiveObject + \param theIO - new SALOME_InteractiveObject +*/ void SALOME_Actor ::setIO(const Handle(SALOME_InteractiveObject)& theIO) @@ -193,6 +203,10 @@ SALOME_Actor myIO = theIO; } +/*! + Sets name the SALOME_Actor + \param theName - new name +*/ void SALOME_Actor ::setName(const char* theName) @@ -203,7 +217,9 @@ SALOME_Actor } -//---------------------------------------------------------------------------- +/*! + Publishes the actor in all its internal devices +*/ void SALOME_Actor ::AddToRender(vtkRenderer* theRenderer) @@ -217,6 +233,9 @@ SALOME_Actor theRenderer->AddActor( myOutlineActor.GetPointer() ); } +/*! + Removes the actor from all its internal devices +*/ void SALOME_Actor ::RemoveFromRender(vtkRenderer* theRenderer) @@ -228,6 +247,9 @@ SALOME_Actor theRenderer->RemoveActor( myOutlineActor.GetPointer() ); } +/*! + \return reference on renderer where it is published +*/ vtkRenderer* SALOME_Actor ::GetRenderer() @@ -235,8 +257,10 @@ SALOME_Actor return myRenderer; } - -//---------------------------------------------------------------------------- +/*! + Sets interactor in order to use vtkInteractorObserver devices + \param theInteractor - new interactor +*/ void SALOME_Actor ::SetInteractor(vtkRenderWindowInteractor* theInteractor) @@ -244,6 +268,9 @@ SALOME_Actor myInteractor = theInteractor; } +/*! + Put a request to redraw the view +*/ void SALOME_Actor ::Update() @@ -251,8 +278,10 @@ SALOME_Actor myInteractor->CreateTimer(VTKI_TIMER_UPDATE); } - -//---------------------------------------------------------------------------- +/*! + Apply view transformation + \param theTransform - transformation +*/ void SALOME_Actor ::SetTransform(VTKViewer_Transform* theTransform) @@ -264,10 +293,14 @@ SALOME_Actor myOutlineActor->SetTransform(theTransform); } - +/*! + Apply additional position +*/ void SALOME_Actor -::SetPosition(float _arg1, float _arg2, float _arg3) +::SetPosition(vtkFloatingPointType _arg1, + vtkFloatingPointType _arg2, + vtkFloatingPointType _arg3) { Superclass::SetPosition(_arg1,_arg2,_arg3); @@ -276,16 +309,20 @@ SALOME_Actor myOutlineActor->SetPosition(_arg1,_arg2,_arg3); } - +/*! + Apply additional position +*/ void SALOME_Actor -::SetPosition(float _arg[3]) +::SetPosition(vtkFloatingPointType _arg[3]) { SetPosition(_arg[0],_arg[1],_arg[2]); } - -//---------------------------------------------------------------- +/*! + Shows/hides actor + \param theVisibility - new visibility state +*/ void SALOME_Actor ::SetVisibility( int theVisibility ) @@ -304,8 +341,10 @@ SALOME_Actor } } - -//---------------------------------------------------------------- +/*! + Set selector in order to the actor at any time can restore current selection + \param theSelector - new selector +*/ void SALOME_Actor ::SetSelector(SVTK_Selector* theSelector) @@ -313,6 +352,9 @@ SALOME_Actor mySelector = theSelector; } +/*! + To map current selection to VTK representation +*/ void SALOME_Actor ::Highlight(bool theIsHighlight) @@ -349,11 +391,14 @@ SALOME_Actor highlight(theIsHighlight); } +/*! + Updates visibility of the highlight devices +*/ void SALOME_Actor ::highlight(bool theIsHighlight) { - float aBounds[6]; + vtkFloatingPointType aBounds[6]; GetInput()->GetBounds(aBounds); myOutline->SetBounds(aBounds); myOutlineActor->SetVisibility( GetVisibility() && theIsHighlight ); @@ -362,13 +407,18 @@ SALOME_Actor } -//---------------------------------------------------------------- +/*! + To process prehighlight (called from SVTK_InteractorStyle) +*/ bool SALOME_Actor ::PreHighlight(vtkInteractorStyle *theInteractorStyle, SVTK_SelectionEvent* theSelectionEvent, bool theIsHighlight) { + if ( !GetPickable() ) + return false; + vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer(); // myPreHighlightActor->SetVisibility( false ); @@ -377,9 +427,9 @@ SALOME_Actor Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode; bool anIsChanged = (mySelectionMode != aSelectionMode); - float x = theSelectionEvent->myX; - float y = theSelectionEvent->myY; - float z = 0.0; + vtkFloatingPointType x = theSelectionEvent->myX; + vtkFloatingPointType y = theSelectionEvent->myY; + vtkFloatingPointType z = 0.0; if( !theIsHighlight ) { SetPreSelected( false ); @@ -500,14 +550,18 @@ SALOME_Actor return anIsChanged; } - -//---------------------------------------------------------------- +/*! + To process highlight (called from SVTK_InteractorStyle) +*/ bool SALOME_Actor ::Highlight(vtkInteractorStyle *theInteractorStyle, SVTK_SelectionEvent* theSelectionEvent, bool theIsHighlight) { + if ( !GetPickable() ) + return false; + myOutlineActor->SetVisibility( false ); myHighlightActor->SetVisibility( false ); @@ -515,13 +569,16 @@ SALOME_Actor // Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode; bool anIsShift = theSelectionEvent->myIsShift; - if( !anIsShift ) { + if( !anIsShift || !theIsHighlight ) { mySelector->RemoveIObject( this ); } - float x = theSelectionEvent->myX; - float y = theSelectionEvent->myY; - float z = 0.0; + if ( !theIsHighlight ) + return true; + + vtkFloatingPointType x = theSelectionEvent->myX; + vtkFloatingPointType y = theSelectionEvent->myY; + vtkFloatingPointType z = 0.0; if( !theSelectionEvent->myIsRectangle ) { switch(aSelectionMode){ @@ -588,16 +645,16 @@ SALOME_Actor break; } }else{ - float xLast = theSelectionEvent->myLastX; - float yLast = theSelectionEvent->myLastY; - float zLast = 0.0; + vtkFloatingPointType xLast = theSelectionEvent->myLastX; + vtkFloatingPointType yLast = theSelectionEvent->myLastY; + vtkFloatingPointType zLast = 0.0; - float x1 = x < xLast ? x : xLast; - float y1 = y < yLast ? y : yLast; - float z1 = z < zLast ? z : zLast; - float x2 = x > xLast ? x : xLast; - float y2 = y > yLast ? y : yLast; - float z2 = z > zLast ? z : zLast; + vtkFloatingPointType x1 = x < xLast ? x : xLast; + vtkFloatingPointType y1 = y < yLast ? y : yLast; + vtkFloatingPointType z1 = z < zLast ? z : zLast; + vtkFloatingPointType x2 = x > xLast ? x : xLast; + vtkFloatingPointType y2 = y > yLast ? y : yLast; + vtkFloatingPointType z2 = z > zLast ? z : zLast; switch(aSelectionMode){ case NodeSelection: { @@ -611,7 +668,6 @@ SALOME_Actor if(aMapIter != aVectorIdsMap.end()){ const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second; vtkIdType anEnd = aVectorIds.size(); - SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin(); for(vtkIdType anId = 0; anId < anEnd; anId++ ) { int aPointId = aVectorIds[anId]; if( aPointId >= 0 && mySelector->IsValid( this, aPointId, true ) ) { @@ -633,8 +689,8 @@ SALOME_Actor } case ActorSelection : { - float aPnt[3]; - float* aBounds = GetBounds(); + vtkFloatingPointType aPnt[3]; + vtkFloatingPointType* aBounds = GetBounds(); bool anIsPicked = true; for( int i = 0; i <= 1; i++ ) { @@ -672,7 +728,6 @@ SALOME_Actor if(aMapIter != aVectorIdsMap.end()){ const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second; vtkIdType anEnd = aVectorIds.size(); - SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin(); for(vtkIdType anId = 0; anId < anEnd; anId++ ) { int aCellId = aVectorIds[anId]; if ( !mySelector->IsValid( this, aCellId ) ) @@ -698,7 +753,10 @@ SALOME_Actor return true; } -//---------------------------------------------------------------------------- +/*! + To set up a picker for nodal selection (initialized by SVTK_Renderer::AddActor) + \param thePointPicker - new picker +*/ void SALOME_Actor ::SetPointPicker(vtkPointPicker* thePointPicker) @@ -706,6 +764,10 @@ SALOME_Actor myPointPicker = thePointPicker; } +/*! + To set up a picker for cell selection (initialized by SVTK_Renderer::AddActor) + \param theCellPicker - new picker +*/ void SALOME_Actor ::SetCellPicker(vtkCellPicker* theCellPicker) @@ -713,6 +775,10 @@ SALOME_Actor myCellPicker = theCellPicker; } +/*! + To set up a picker for point rectangle selection (initialized by SVTK_Renderer::AddActor) + \param theRectPicker - new picker +*/ void SALOME_Actor ::SetPointRectPicker(SVTK_RectPicker* theRectPicker) @@ -720,6 +786,10 @@ SALOME_Actor myPointRectPicker = theRectPicker; } +/*! + To set up a picker for cell rectangle selection (initialized by SVTK_Renderer::AddActor) + \param theRectPicker - new picker +*/ void SALOME_Actor ::SetCellRectPicker(SVTK_RectPicker* theRectPicker) @@ -727,7 +797,9 @@ SALOME_Actor myCellRectPicker = theRectPicker; } -//---------------------------------------------------------------------------- +/*! + To set up a prehighlight property (initialized by SVTK_Renderer::AddActor) +*/ void SALOME_Actor ::SetPreHighlightProperty(vtkProperty* theProperty) @@ -735,6 +807,9 @@ SALOME_Actor myPreHighlightActor->SetProperty(theProperty); } +/*! + To set up a highlight property (initialized by SVTK_Renderer::AddActor) +*/ void SALOME_Actor ::SetHighlightProperty(vtkProperty* theProperty) diff --git a/src/SVTK/SALOME_Actor.h b/src/SVTK/SALOME_Actor.h index d377ff633..3539e4b73 100644 --- a/src/SVTK/SALOME_Actor.h +++ b/src/SVTK/SALOME_Actor.h @@ -100,12 +100,14 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor //! Apply additional position virtual void - SetPosition(float _arg1, float _arg2, float _arg3); + SetPosition(vtkFloatingPointType _arg1, + vtkFloatingPointType _arg2, + vtkFloatingPointType _arg3); //! Apply additional position virtual void - SetPosition(float _arg[3]); + SetPosition(vtkFloatingPointType _arg[3]); //---------------------------------------------------------------------------- //! Visibility management diff --git a/src/SVTK/SVTK.h b/src/SVTK/SVTK.h index d4d8cf530..69bf29c1c 100755 --- a/src/SVTK/SVTK.h +++ b/src/SVTK/SVTK.h @@ -16,17 +16,24 @@ // // See http://www.salome-platform.org/ // -#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 +#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 diff --git a/src/SVTK/SVTK_Actor.cxx b/src/SVTK/SVTK_Actor.cxx index 337075bb1..dbe6aad1b 100644 --- a/src/SVTK/SVTK_Actor.cxx +++ b/src/SVTK/SVTK_Actor.cxx @@ -46,10 +46,11 @@ CopyPoints(vtkUnstructuredGrid* theGrid, vtkDataSet *theSourceDataSet) aPoints->Delete(); } -//======================================================================= - vtkStandardNewMacro(SVTK_Actor); +/*! + Constructor +*/ SVTK_Actor ::SVTK_Actor(): myUnstructuredGrid(vtkUnstructuredGrid::New()) @@ -62,7 +63,6 @@ SVTK_Actor myUnstructuredGrid->Allocate(); } -//---------------------------------------------------------------------------- void SVTK_Actor ::Initialize() @@ -70,8 +70,6 @@ SVTK_Actor SetInput(GetSource()); } - -//---------------------------------------------------------------------------- void SVTK_Actor ::SetSource(vtkUnstructuredGrid* theUnstructuredGrid) @@ -91,15 +89,14 @@ SVTK_Actor return myUnstructuredGrid.GetPointer(); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_Actor ::~SVTK_Actor() { } - -//---------------------------------------------------------------------------- const TColStd_IndexedMapOfInteger& SVTK_Actor ::GetMapIndex() const @@ -107,8 +104,6 @@ SVTK_Actor return myMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapCells(SALOME_Actor* theMapActor, @@ -136,8 +131,6 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapPoints(SALOME_Actor* theMapActor, @@ -151,7 +144,7 @@ SVTK_Actor aPoints->SetNumberOfPoints(aNbOfParts); for(int i = 0; i < aNbOfParts; i++){ int aPartId = theMapIndex( i+1 ); - if(float* aCoord = theMapActor->GetNodeCoord(aPartId)){ + if(vtkFloatingPointType* aCoord = theMapActor->GetNodeCoord(aPartId)){ aPoints->SetPoint(i,aCoord); myUnstructuredGrid->InsertNextCell(VTK_VERTEX,1,&i); } @@ -165,8 +158,6 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- void SVTK_Actor ::MapEdge(SALOME_Actor* theMapActor, @@ -205,5 +196,3 @@ SVTK_Actor myMapIndex = theMapIndex; } - -//---------------------------------------------------------------------------- diff --git a/src/SVTK/SVTK_CubeAxesActor2D.cxx b/src/SVTK/SVTK_CubeAxesActor2D.cxx index 3fdcf72f3..7c2d6ae8c 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.cxx +++ b/src/SVTK/SVTK_CubeAxesActor2D.cxx @@ -48,7 +48,6 @@ vtkCxxRevisionMacro(SVTK_CubeAxesActor2D, "$Revision$"); vtkStandardNewMacro(SVTK_CubeAxesActor2D); -//---------------------------------------------------------------------------- // Instantiate this object. SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D() { @@ -130,7 +129,6 @@ SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D() } -//---------------------------------------------------------------------------- SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D() { this->wireActorXY->Delete(); @@ -146,12 +144,10 @@ SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D() this->rgridMapperXZ->Delete(); } -//---------------------------------------------------------------------------- // Static variable describes connections in cube. static int Conn[8][3] = {{1,2,4}, {0,3,5}, {3,0,6}, {2,1,7}, {5,6,0}, {4,7,1}, {7,4,2}, {6,5,3}}; -//---------------------------------------------------------------------------- // Project the bounding box and compute edges on the border of the bounding // cube. Determine which parts of the edges are visible via intersection // with the boundary of the viewport (minus borders). @@ -198,8 +194,13 @@ int SVTK_CubeAxesActor2D::RenderOverlay(vtkViewport *viewport) return renderedSomething; } -static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRange2,bool theY){ - float tmp=-1000; +static void ChangeValues(vtkFloatingPointType* aArray1, + vtkFloatingPointType* aArray2, + vtkFloatingPointType *aRange1, + vtkFloatingPointType* aRange2, + bool theY) +{ + vtkFloatingPointType tmp=-1000; if (!theY){ for (int i=0; i<4; i++){ tmp = aArray1[i]; aArray1[i] = aArray2[i]; aArray2[i] = tmp; @@ -223,9 +224,15 @@ static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRa } } -static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords, - float* xRange,float* yRange,float* zRange, - const int xAxes,const int yAxes, const int zAxes) +static void ChangeArrays(vtkFloatingPointType* xCoords, + vtkFloatingPointType* yCoords, + vtkFloatingPointType* zCoords, + vtkFloatingPointType* xRange, + vtkFloatingPointType* yRange, + vtkFloatingPointType* zRange, + const int xAxes, + const int yAxes, + const int zAxes) { if ( xAxes == 0 && yAxes == 2 && zAxes == 1) ChangeValues(yCoords,zCoords,yRange,zRange,true); @@ -243,14 +250,13 @@ static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords, ChangeValues(zCoords,xCoords,zRange,xRange,false); } -//---------------------------------------------------------------------------- // Project the bounding box and compute edges on the border of the bounding // cube. Determine which parts of the edges are visible via intersection // with the boundary of the viewport (minus borders). int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) { - float bounds[6], slope = 0.0, minSlope, num, den; - float pts[8][3], d2, d2Min, min; + vtkFloatingPointType bounds[6], slope = 0.0, minSlope, num, den; + vtkFloatingPointType pts[8][3], d2, d2Min, min; int i, idx = 0; int xIdx, yIdx = 0, zIdx = 0, zIdx2, renderedSomething=0; int xAxes = 0, yAxes, zAxes; @@ -308,7 +314,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) } else { - float e1[2], e2[2], e3[2]; + vtkFloatingPointType e1[2], e2[2], e3[2]; // Find distance to origin d2Min = VTK_LARGE_FLOAT; @@ -401,7 +407,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) } // Setup the axes for plotting - float xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2]; + vtkFloatingPointType xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2]; this->AdjustAxes(pts, bounds, idx, xIdx, yIdx, zIdx, zIdx2, xAxes, yAxes, zAxes, xCoords, yCoords, zCoords, xRange, yRange, zRange); @@ -449,7 +455,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } // YCoords coordinates for Y grid @@ -459,7 +465,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } // ZCoords coordinates for Z grid @@ -469,7 +475,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) #else for(i=0;iInsertNextValue(val); } @@ -485,8 +491,8 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) rgrid->Delete(); - float aCPosition[3]; - float aCDirection[3]; + vtkFloatingPointType aCPosition[3]; + vtkFloatingPointType aCDirection[3]; this->Camera->GetPosition(aCPosition); this->Camera->GetDirectionOfProjection(aCDirection); @@ -494,12 +500,12 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) bool replaceXY=false; bool replaceYZ=false; bool replaceXZ=false; - float p[6][3]; // centers of planes - float vecs[6][3]; // 6 vectors from camera position to centers + vtkFloatingPointType p[6][3]; // centers of planes + vtkFloatingPointType vecs[6][3]; // 6 vectors from camera position to centers - float aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2; - float aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2; - float aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2; + vtkFloatingPointType aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2; + vtkFloatingPointType aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2; + vtkFloatingPointType aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2; // plane XY p[0][0] = aMiddleX; // plane X=0.5 Y=0.5 Z=0 @@ -555,7 +561,7 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) YCoords->Delete(); ZCoords->Delete(); - float color[3]; + vtkFloatingPointType color[3]; this->GetProperty()->GetColor(color); this->wireActorXY->GetProperty()->SetColor(color); @@ -644,7 +650,6 @@ int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport) return renderedSomething; } -//---------------------------------------------------------------------------- // Release any graphics resources that are being consumed by this actor. // The parameter window could be used to determine which graphic // resources to release. diff --git a/src/SVTK/SVTK_CubeAxesActor2D.h b/src/SVTK/SVTK_CubeAxesActor2D.h index 1de1c1ce8..44e3e9810 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.h +++ b/src/SVTK/SVTK_CubeAxesActor2D.h @@ -41,7 +41,8 @@ class vtkPolyDataMapper; class vtkRectilinearGridGeometryFilter; class VTKViewer_Transform; -#include +#include "SVTK.h" +#include "VTKViewer.h" #ifndef WNT class VTK_HYBRID_EXPORT SVTK_CubeAxesActor2D : public vtkCubeAxesActor2D diff --git a/src/SVTK/SVTK_CubeAxesDlg.cxx b/src/SVTK/SVTK_CubeAxesDlg.cxx index 57c9e5694..d5c83a39b 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.cxx +++ b/src/SVTK/SVTK_CubeAxesDlg.cxx @@ -54,10 +54,9 @@ * Description : Tab of dialog */ -//======================================================================= -// name : SVTK_AxisWidget::AxisWg -// Purpose : Constructor -//======================================================================= +/*! + Constructor +*/ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) : QFrame(theParent) { @@ -143,6 +142,9 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked())); } +/*! + Destructor +*/ SVTK_AxisWidget::~SVTK_AxisWidget() { } @@ -154,10 +156,6 @@ void SVTK_AxisWidget::updateControlState() onTicksChecked(); } -//======================================================================= -// name : SVTK_AxisWidget::onNameChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) { QObjectList aChildren(*theGrp->children()); @@ -167,55 +165,31 @@ void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) ((QHBox*)anObj)->setEnabled(theState); } -//======================================================================= -// Labels : SVTK_AxisWidget::onLabelsChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onLabelsChecked() { setEnabled(myLabelsGrp, myIsLabelsVisible->isChecked()); } -//======================================================================= -// Labels : SVTK_AxisWidget::onTicksChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onTicksChecked() { setEnabled(myTicksGrp, myIsTicksVisible->isChecked()); } -//======================================================================= -// name : SVTK_AxisWidget::onNameChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::onNameChecked() { setEnabled(myNameGrp, myIsNameVisible->isChecked()); } -//======================================================================= -// name : SVTK_AxisWidget::UseName -// Purpose : -//======================================================================= void SVTK_AxisWidget::UseName(const bool toUse) { myIsNameVisible->setChecked(toUse); } -//======================================================================= -// name : SVTK_AxisWidget::SetName -// Purpose : -//================================================== ===================== void SVTK_AxisWidget::SetName(const QString& theName) { myAxisName->setText(theName); } -//======================================================================= -// name : SVTK_AxisWidget::SetNameFont -// Purpose : -//======================================================================= void SVTK_AxisWidget::SetNameFont(const QColor& theColor, const int theFont, const bool theIsBold, @@ -225,10 +199,6 @@ void SVTK_AxisWidget::SetNameFont(const QColor& theColor, myNameFont->SetData(theColor, theFont, theIsBold, theIsItalic, theIsShadow); } -//======================================================================= -// name : SVTK_AxisWidget::SetNameFont -// Purpose : -//======================================================================= bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) { if (theActor == 0) @@ -248,7 +218,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) vtkTextProperty* aTitleProp = theActor->GetTitleTextProperty(); if (aTitleProp !=0) { - float c[ 3 ]; + vtkFloatingPointType c[ 3 ]; aTitleProp->GetColor(c); aTitleColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255)); aTitleFontFamily = aTitleProp->GetFontFamily(); @@ -276,7 +246,7 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) vtkTextProperty* aLabelsProp = theActor->GetLabelTextProperty(); if (aLabelsProp !=0) { - float c[ 3 ]; + vtkFloatingPointType c[ 3 ]; aLabelsProp->GetColor(c); aLabelsColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255)); aLabelsFontFamily = aLabelsProp->GetFontFamily(); @@ -300,10 +270,6 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) return true; } -//======================================================================= -// name : SVTK_CubeAxesDlg::Apply -// Purpose : -//======================================================================= bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) { if (theActor == 0) @@ -383,31 +349,30 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) Description : Dialog for specifynig cube axes properties */ -//======================================================================= -// name : SVTK_CubeAxesDlg::SVTK_CubeAxesDlg -// Purpose : Constructor -//======================================================================= -SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction): - QDialog(theParent, - theName, - false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), - myMainWindow(theParent), - myAction(theAction) +/*! + Constructor +*/ +SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName): + SVTK_DialogBase(theAction, + theParent, + theName), + myMainWindow(theParent) { setCaption(tr("CAPTION")); QVBoxLayout* aLay = new QVBoxLayout(this, 5, 5); aLay->addWidget(createMainFrame(this)); aLay->addWidget(createButtonFrame(this)); + + connect(theParent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow())); + connect(theParent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide())); } -//======================================================================= -// name : SVTK_CubeAxesDlg::createMainFrame -// Purpose : Create frame containing dialog's input fields -//======================================================================= +/*! + Create frame containing dialog's input fields +*/ QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent) { QFrame* aFrame = new QFrame(theParent); @@ -433,10 +398,9 @@ QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent) return aFrame; } -//======================================================================= -// name : SVTK_CubeAxesDlg::createButtonFrame -// Purpose : Create frame containing buttons -//======================================================================= +/*! + Create frame containing buttons +*/ QWidget* SVTK_CubeAxesDlg::createButtonFrame(QWidget* theParent) { QFrame* aFrame = new QFrame(theParent); @@ -462,18 +426,16 @@ QWidget* SVTK_CubeAxesDlg::createButtonFrame(QWidget* theParent) return aFrame; } -//======================================================================= -// name : SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg() { } -//======================================================================= -// name : SVTK_CubeAxesDlg::Update -// Purpose : Update dialog fields, connect signals and slots, show dialog -//======================================================================= +/*! + Update dialog fields, connect signals and slots, show dialog +*/ void SVTK_CubeAxesDlg::Update() { myActor = myMainWindow->GetCubeAxes(); @@ -485,19 +447,17 @@ void SVTK_CubeAxesDlg::Update() myIsVisible->setChecked(myActor->GetVisibility() ? true : false); } -//======================================================================= -// name : SVTK_CubeAxesDlg::isValid -// Purpose : Verify validity of entry data -//======================================================================= +/*! + Verify validity of entry data +*/ bool SVTK_CubeAxesDlg::isValid() const { return true; } -//======================================================================= -// name : SVTK_CubeAxesDlg::onApply -// Purpose : Verify validity of entry data -//======================================================================= +/*! + Verify validity of entry data +*/ bool SVTK_CubeAxesDlg::onApply() { bool isOk = true; @@ -534,29 +494,19 @@ bool SVTK_CubeAxesDlg::onApply() return isOk; } -//======================================================================= -// name : SVTK_CubeAxesDlg::onOk -// Purpose : SLOT called when "Ok" button pressed. -//======================================================================= +/*! + SLOT called when "Ok" button pressed. +*/ void SVTK_CubeAxesDlg::onOk() { if (onApply()) onClose(); } -//======================================================================= -// name : SVTK_CubeAxesDlg::onClose -// Purpose : SLOT called when "Close" button pressed. Close dialog -//======================================================================= +/*! + SLOT: called when "Close" button pressed. Close dialog +*/ void SVTK_CubeAxesDlg::onClose() { reject(); - - myAction->setOn( false ); -} - -void SVTK_CubeAxesDlg::done( int r ) -{ - myAction->setOn( false ); - QDialog::done( r ); } diff --git a/src/SVTK/SVTK_CubeAxesDlg.h b/src/SVTK/SVTK_CubeAxesDlg.h index 642306084..b8047e201 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.h +++ b/src/SVTK/SVTK_CubeAxesDlg.h @@ -27,7 +27,8 @@ #ifndef SVTK_CubeAxesDlg_H #define SVTK_CubeAxesDlg_H -#include +#include "SVTK_DialogBase.h" + #include class QWidget; @@ -52,14 +53,14 @@ class SVTK_MainWindow; * Class : SVTK_CubeAxesDlg * Description : Dialog for specifynig cube axes properties */ -class SVTK_CubeAxesDlg : public QDialog +class SVTK_CubeAxesDlg : public SVTK_DialogBase { Q_OBJECT public: - SVTK_CubeAxesDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction); + SVTK_CubeAxesDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName); virtual ~SVTK_CubeAxesDlg(); void Update(); @@ -69,8 +70,6 @@ private slots: bool onApply(); void onClose(); - virtual void done( int ); - private: QWidget* createButtonFrame( QWidget* ); QWidget* createMainFrame ( QWidget* ); @@ -79,7 +78,6 @@ private: private: SVTK_MainWindow *myMainWindow; SVTK_CubeAxesActor2D* myActor; - QtxAction* myAction; QTabWidget* myTabWg; QCheckBox* myIsVisible; diff --git a/src/SVTK/SVTK_DeviceActor.cxx b/src/SVTK/SVTK_DeviceActor.cxx index be959115c..21b032c31 100644 --- a/src/SVTK/SVTK_DeviceActor.cxx +++ b/src/SVTK/SVTK_DeviceActor.cxx @@ -46,11 +46,11 @@ using namespace std; -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_DeviceActor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_DeviceActor ::SVTK_DeviceActor() { @@ -77,8 +77,9 @@ SVTK_DeviceActor myPassFilter.push_back(VTKViewer_PassThroughFilter::New()); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_DeviceActor ::~SVTK_DeviceActor() { @@ -96,8 +97,9 @@ SVTK_DeviceActor myPassFilter[i]->Delete(); } - -//---------------------------------------------------------------------------- +/*! + To insert some additional filters and then sets the given vtkMapper +*/ void SVTK_DeviceActor ::SetMapper(vtkMapper* theMapper) @@ -105,6 +107,9 @@ SVTK_DeviceActor InitPipeLine(theMapper); } +/*! + To initialize internal pipeline +*/ void SVTK_DeviceActor ::InitPipeLine(vtkMapper* theMapper) @@ -139,7 +144,9 @@ SVTK_DeviceActor Superclass::SetMapper(theMapper); } -//---------------------------------------------------------------------------- +/*! + Allows to get initial vtkDataSet +*/ vtkDataSet* SVTK_DeviceActor ::GetInput() @@ -147,6 +154,9 @@ SVTK_DeviceActor return myPassFilter.front()->GetOutput(); } +/*! + Allows to set initial vtkDataSet +*/ void SVTK_DeviceActor ::SetInput(vtkDataSet* theDataSet) @@ -155,7 +165,9 @@ SVTK_DeviceActor InitPipeLine(myMapper); } -//---------------------------------------------------------------------------- +/*! + To provide VTK to Object and backward mapping +*/ void SVTK_DeviceActor:: SetStoreMapping(bool theStoreMapping) @@ -164,8 +176,9 @@ SetStoreMapping(bool theStoreMapping) } - -//---------------------------------------------------------------------------- +/*! + \return time of modification +*/ unsigned long int SVTK_DeviceActor ::GetMTime() @@ -185,8 +198,10 @@ SVTK_DeviceActor return mTime; } - -//---------------------------------------------------------------------------- +/*! + Apply a view transformation + \param theTransform - transformation +*/ void SVTK_DeviceActor ::SetTransform(VTKViewer_Transform* theTransform) @@ -194,15 +209,20 @@ SVTK_DeviceActor myTransformFilter->SetTransform(theTransform); } - -//---------------------------------------------------------------------------- +/*! + \return true if actor is shrinkable +*/ bool SVTK_DeviceActor ::IsShrunkable() { return myIsShrinkable; } - + +/*! + Changes shrinkable state of actor + theIsShrinkable - new shrinkable state +*/ void SVTK_DeviceActor ::SetShrinkable(bool theIsShrinkable) @@ -210,6 +230,9 @@ SVTK_DeviceActor myIsShrinkable = theIsShrinkable; } +/*! + \return true if actor is shrunkable +*/ bool SVTK_DeviceActor ::IsShrunk() @@ -217,6 +240,9 @@ SVTK_DeviceActor return myIsShrunk; } +/*! + Insert shrink filter into pipeline +*/ void SVTK_DeviceActor ::SetShrink() @@ -231,6 +257,9 @@ SVTK_DeviceActor } } +/*! + Remove shrink filter from pipeline +*/ void SVTK_DeviceActor ::UnShrink() @@ -243,23 +272,32 @@ SVTK_DeviceActor } } -float +/*! + \return shrink factor +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetShrinkFactor() { return myShrinkFilter->GetShrinkFactor(); } +/*! + Changes shrink factor + \param theValue - new shrink factor +*/ void SVTK_DeviceActor -::SetShrinkFactor(float theValue) +::SetShrinkFactor(vtkFloatingPointType theValue) { myShrinkFilter->SetShrinkFactor(theValue); } - -//---------------------------------------------------------------------------- +/*! + Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on) + param theMode - new mode +*/ void SVTK_DeviceActor ::SetRepresentation(SVTK::Representation::Type theMode) @@ -311,6 +349,9 @@ SVTK_DeviceActor myRepresentation = theMode; } +/*! + \return current representation mode +*/ SVTK::Representation::Type SVTK_DeviceActor ::GetRepresentation() @@ -318,21 +359,29 @@ SVTK_DeviceActor return myRepresentation; } -float +/*! + \return default point size +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetDefaultPointSize() { return 5; } -float +/*! + \return default line width +*/ +vtkFloatingPointType SVTK_DeviceActor ::GetDefaultLineWidth() { return 3; } - +/*! + \return true if actor is shaded +*/ bool SVTK_DeviceActor ::IsShaded() @@ -340,6 +389,10 @@ SVTK_DeviceActor return myIsShaded; } +/*! + Sets shaded state of actor + \param theShaded - new shaded state +*/ void SVTK_DeviceActor ::SetShaded(bool theShaded) @@ -347,8 +400,9 @@ SVTK_DeviceActor myIsShaded = theShaded; } - -//---------------------------------------------------------------------------- +/*! + Maps VTK index of a node to corresponding object index +*/ int SVTK_DeviceActor ::GetNodeObjId(int theVtkID) @@ -356,7 +410,10 @@ SVTK_DeviceActor return theVtkID; } -float* +/*! + Get coordinates of a node for given object index +*/ +vtkFloatingPointType* SVTK_DeviceActor ::GetNodeCoord(int theObjID) { @@ -364,6 +421,9 @@ SVTK_DeviceActor } +/*! + Get corresponding #vtkCell for given object index +*/ vtkCell* SVTK_DeviceActor ::GetElemCell(int theObjID) @@ -371,6 +431,9 @@ SVTK_DeviceActor return GetInput()->GetCell(theObjID); } +/*! + Maps VTK index of a cell to corresponding object index +*/ int SVTK_DeviceActor ::GetElemObjId(int theVtkID) @@ -378,15 +441,16 @@ SVTK_DeviceActor return theVtkID; } - -//---------------------------------------------------------------------------- +/*! + Renders actor +*/ void SVTK_DeviceActor ::Render(vtkRenderer *ren, vtkMapper* m) { if(myIsResolveCoincidentTopology){ int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology(); - float aFactor, aUnit; + vtkFloatingPointType aFactor, aUnit; vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); vtkMapper::SetResolveCoincidentTopologyToPolygonOffset(); @@ -401,18 +465,27 @@ SVTK_DeviceActor } } - +/*! + Set polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void SVTK_DeviceActor -::SetPolygonOffsetParameters(float factor, float units) +::SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units) { myPolygonOffsetFactor = factor; myPolygonOffsetUnits = units; } +/*! + Get polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void SVTK_DeviceActor -::GetPolygonOffsetParameters(float& factor, float& units) +::GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units) { factor = myPolygonOffsetFactor; units = myPolygonOffsetUnits; diff --git a/src/SVTK/SVTK_DeviceActor.h b/src/SVTK/SVTK_DeviceActor.h index f8a49bc36..5eee841f4 100644 --- a/src/SVTK/SVTK_DeviceActor.h +++ b/src/SVTK/SVTK_DeviceActor.h @@ -29,6 +29,9 @@ #ifndef SVTK_DEVICE_ACTOR_H #define SVTK_DEVICE_ACTOR_H +#include "SVTK.h" +#include "VTKViewer.h" + #include #include @@ -44,7 +47,6 @@ class vtkDataSet; class vtkShrinkFilter; class vtkDataSetMapper; -//---------------------------------------------------------------------------- namespace SVTK { namespace Representation @@ -58,8 +60,7 @@ namespace SVTK } -//---------------------------------------------------------------------------- -class SVTK_DeviceActor: public vtkLODActor +class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor { public: vtkTypeMacro(SVTK_DeviceActor,vtkLODActor); @@ -95,7 +96,7 @@ class SVTK_DeviceActor: public vtkLODActor GetNodeObjId(int theVtkID); virtual - float* + vtkFloatingPointType* GetNodeCoord(int theObjID); virtual @@ -118,12 +119,12 @@ class SVTK_DeviceActor: public vtkLODActor /** @name For shrink mamnagement purpose */ //@{ - float + vtkFloatingPointType GetShrinkFactor(); virtual void - SetShrinkFactor(float value); + SetShrinkFactor(vtkFloatingPointType value); virtual void @@ -153,11 +154,11 @@ class SVTK_DeviceActor: public vtkLODActor GetRepresentation(); virtual - float + vtkFloatingPointType GetDefaultPointSize(); virtual - float + vtkFloatingPointType GetDefaultLineWidth(); bool @@ -190,11 +191,13 @@ class SVTK_DeviceActor: public vtkLODActor bool myIsShrunk; bool myIsResolveCoincidentTopology; - float myPolygonOffsetFactor; - float myPolygonOffsetUnits; + vtkFloatingPointType myPolygonOffsetFactor; + vtkFloatingPointType myPolygonOffsetUnits; - void SetPolygonOffsetParameters(float factor, float units); - void GetPolygonOffsetParameters(float& factor, float& units); + void SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units); + void GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units); SVTK_DeviceActor(); ~SVTK_DeviceActor(); diff --git a/src/SVTK/SVTK_DialogBase.cxx b/src/SVTK/SVTK_DialogBase.cxx new file mode 100644 index 000000000..ff35c360b --- /dev/null +++ b/src/SVTK/SVTK_DialogBase.cxx @@ -0,0 +1,84 @@ +// 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 ); +} diff --git a/src/SVTK/SVTK_DialogBase.h b/src/SVTK/SVTK_DialogBase.h new file mode 100644 index 000000000..eb2262fb6 --- /dev/null +++ b/src/SVTK/SVTK_DialogBase.h @@ -0,0 +1,60 @@ +// 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 + +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 diff --git a/src/SVTK/SVTK_FontWidget.cxx b/src/SVTK/SVTK_FontWidget.cxx index edaa9a6c0..92f16923e 100644 --- a/src/SVTK/SVTK_FontWidget.cxx +++ b/src/SVTK/SVTK_FontWidget.cxx @@ -39,10 +39,9 @@ * Description : Dialog for specifynig font */ -//======================================================================= -// name : SVTK_FontWidget -// Purpose : Constructor -//======================================================================= +/*! + Constructor +*/ SVTK_FontWidget::SVTK_FontWidget( QWidget* theParent ) : QHBox( theParent ) { @@ -62,36 +61,23 @@ SVTK_FontWidget::SVTK_FontWidget( QWidget* theParent ) connect( myColorBtn, SIGNAL( clicked() ), SLOT( onColor() ) ); } -//======================================================================= -// name : ~SVTK_FontWidget -// Purpose : Destructor -//======================================================================= +/*! + Destructor +*/ SVTK_FontWidget::~SVTK_FontWidget() { } -//======================================================================= -// name : SetColor -// Purpose : -//======================================================================= void SVTK_FontWidget::SetColor( const QColor& theColor ) { myColorBtn->setPaletteBackgroundColor( theColor ); } -//======================================================================= -// name : GetColor -// Purpose : -//======================================================================= QColor SVTK_FontWidget::GetColor() const { return myColorBtn->paletteBackgroundColor(); } -//======================================================================= -// name : onColor -// Purpose : -//======================================================================= void SVTK_FontWidget::onColor() { QColor aColor = QColorDialog::getColor( GetColor(), this ); @@ -99,10 +85,6 @@ void SVTK_FontWidget::onColor() SetColor( aColor ); } -//======================================================================= -// name : SetData -// Purpose : -//======================================================================= void SVTK_FontWidget::SetData( const QColor& theColor, const int theFamily, const bool theBold, @@ -123,10 +105,6 @@ void SVTK_FontWidget::SetData( const QColor& theColor, myShadow->setChecked( theShadow ); } -//======================================================================= -// name : GetData -// Purpose : -//======================================================================= void SVTK_FontWidget::GetData( QColor& theColor, int& theFamily, bool& theBold, diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx index e3cb3c8e2..4f7cbb599 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx @@ -36,9 +36,11 @@ using namespace std; -//---------------------------------------------------------------------------- vtkStandardNewMacro(QVTK_GenericRenderWindowInteractor); +/*! + Constructor +*/ QVTK_GenericRenderWindowInteractor ::QVTK_GenericRenderWindowInteractor() { @@ -46,14 +48,18 @@ QVTK_GenericRenderWindowInteractor connect(myTimer, SIGNAL(timeout()), this, SLOT(OnTimeOut())) ; } +/*! + Destructor +*/ QVTK_GenericRenderWindowInteractor ::~QVTK_GenericRenderWindowInteractor() { delete myTimer; } - -//---------------------------------------------------------------------------- +/*! + The slot connects to QTimer::timeout signal to invoke vtkCommand::TimerEvent +*/ void QVTK_GenericRenderWindowInteractor ::OnTimeOut() @@ -63,6 +69,9 @@ QVTK_GenericRenderWindowInteractor } } +/*! + Starts the QTimer instance on defined microseconds +*/ int QVTK_GenericRenderWindowInteractor ::CreateTimer(int vtkNotUsed(timertype)) @@ -75,6 +84,9 @@ QVTK_GenericRenderWindowInteractor return 1; } +/*! + Stops the QTimer instance +*/ int QVTK_GenericRenderWindowInteractor ::DestroyTimer(void) @@ -95,20 +107,28 @@ QVTK_GenericRenderWindowInteractor } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_GenericRenderWindowInteractor); +/*! + Constructor +*/ SVTK_GenericRenderWindowInteractor ::SVTK_GenericRenderWindowInteractor(): myRenderWidget(NULL) { } +/*! + Destructor +*/ SVTK_GenericRenderWindowInteractor ::~SVTK_GenericRenderWindowInteractor() { } +/*! + To get access to SVTK_Selector +*/ SVTK_Selector* SVTK_GenericRenderWindowInteractor ::GetSelector() @@ -116,6 +136,10 @@ SVTK_GenericRenderWindowInteractor return mySelector.GetPointer(); } +/*! + To initialize mySelector field + \param theSelector - new selector +*/ void SVTK_GenericRenderWindowInteractor ::SetSelector(SVTK_Selector* theSelector) @@ -123,6 +147,9 @@ SVTK_GenericRenderWindowInteractor mySelector = theSelector; } +/*! + To get access to QWidget, where vtkRenderWindow maps to. +*/ QWidget* SVTK_GenericRenderWindowInteractor ::GetRenderWidget() @@ -130,6 +157,9 @@ SVTK_GenericRenderWindowInteractor return myRenderWidget; } +/*! + To initialize myRenderWidget field. +*/ void SVTK_GenericRenderWindowInteractor ::SetRenderWidget(QWidget* theRenderWidget) diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.h b/src/SVTK/SVTK_GenericRenderWindowInteractor.h index d15fdc557..4e9ab968f 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.h +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.h @@ -42,9 +42,9 @@ class SVTK_Selector; class SVTK_Renderer; -//============================================================================ -//! Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality. /*! + \class QVTK_GenericRenderWindowInteractor + Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality. The class intendes to implement platform indepenedant subclass of vtkRenderWindowInteractor. This is done by usage of Qt library. \note @@ -86,9 +86,9 @@ class SVTK_EXPORT QVTK_GenericRenderWindowInteractor: }; -//============================================================================ -//! This class introduce SALOME specific to the base one /*! + \class SVTK_GenericRenderWindowInteractor + This class introduce SALOME specific to the base one In this class new members is added (#mySelector and #myRenderWidget). They are used for initialization of #SVTK_InteractorStyle by redefinition of #SVTK_InteractorStyle::SetInteractor method diff --git a/src/SVTK/SVTK_InteractorStyle.cxx b/src/SVTK/SVTK_InteractorStyle.cxx index 963aa1894..3bd3cf075 100644 --- a/src/SVTK/SVTK_InteractorStyle.cxx +++ b/src/SVTK/SVTK_InteractorStyle.cxx @@ -98,9 +98,11 @@ namespace } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_InteractorStyle); -//---------------------------------------------------------------------------- + +/*! + Constructor +*/ SVTK_InteractorStyle ::SVTK_InteractorStyle(): mySelectionEvent(new SVTK_SelectionEvent()), @@ -131,13 +133,17 @@ SVTK_InteractorStyle myControllerOnKeyDown->Delete(); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_InteractorStyle ::~SVTK_InteractorStyle() { } -//---------------------------------------------------------------------------- +/*! + \return widget for rendering +*/ QWidget* SVTK_InteractorStyle ::GetRenderWidget() @@ -145,6 +151,9 @@ SVTK_InteractorStyle return myInteractor->GetRenderWidget(); } +/*! + \return selector +*/ SVTK_Selector* SVTK_InteractorStyle ::GetSelector() @@ -152,7 +161,9 @@ SVTK_InteractorStyle return myInteractor->GetSelector(); } -//---------------------------------------------------------------------------- +/*! + Generate special SVTK_SelectionEvent +*/ SVTK_SelectionEvent* SVTK_InteractorStyle ::GetSelectionEvent() @@ -170,7 +181,9 @@ SVTK_InteractorStyle return mySelectionEvent.get(); } -//---------------------------------------------------------------------------- +/*! + Generate special SVTK_SelectionEvent with flipped Y coordinate +*/ SVTK_SelectionEvent* SVTK_InteractorStyle ::GetSelectionEventFlipY() @@ -188,7 +201,6 @@ SVTK_InteractorStyle return mySelectionEvent.get(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::RotateXY(int dx, int dy) @@ -213,7 +225,6 @@ SVTK_InteractorStyle this->Render(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::PanXY(int x, int y, int oldX, int oldY) @@ -223,7 +234,6 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::DollyXY(int dx, int dy) @@ -247,7 +257,6 @@ SVTK_InteractorStyle this->Render(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::SpinXY(int x, int y, int oldX, int oldY) @@ -273,7 +282,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To reset reset view +*/ void SVTK_InteractorStyle ::OnConfigure() @@ -282,8 +293,9 @@ SVTK_InteractorStyle this->GetCurrentRenderer()->InvokeEvent(vtkCommand::ConfigureEvent,NULL); } - -//---------------------------------------------------------------------------- +/*! + To handle mouse move event +*/ void SVTK_InteractorStyle ::OnMouseMove() @@ -295,8 +307,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonDown() @@ -308,8 +321,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonUp() @@ -321,8 +335,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonDown() @@ -334,8 +349,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonUp() @@ -347,8 +363,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle right mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonDown() @@ -360,7 +377,9 @@ SVTK_InteractorStyle x, y ); } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonUp() @@ -372,8 +391,9 @@ SVTK_InteractorStyle x, y ); } - -//---------------------------------------------------------------------------- +/*! + To handle mouse move event +*/ void SVTK_InteractorStyle ::OnMouseMove(int vtkNotUsed(ctrl), @@ -387,8 +407,9 @@ SVTK_InteractorStyle onCursorMove(QPoint(x, y)); } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonDown(int ctrl, int shift, @@ -416,8 +437,9 @@ SVTK_InteractorStyle return; } - -//---------------------------------------------------------------------------- +/*! + To handle left mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnLeftButtonUp(int vtkNotUsed(ctrl), @@ -433,8 +455,9 @@ SVTK_InteractorStyle } } - -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonDown(int ctrl, @@ -462,7 +485,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To handle middle mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnMiddleButtonUp(int vtkNotUsed(ctrl), @@ -479,7 +504,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button down event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonDown(int ctrl, @@ -506,7 +533,9 @@ SVTK_InteractorStyle } } -//---------------------------------------------------------------------------- +/*! + To handle right mouse button up event (reimplemented from vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::OnRightButtonUp(int vtkNotUsed(ctrl), @@ -522,7 +551,6 @@ SVTK_InteractorStyle } } -//---------------------------------------------------------------------------- /* XPM */ const char* imageZoomCursor[] = { "32 32 3 1", @@ -601,8 +629,9 @@ const char* imageRotateCursor[] = { "................................"}; -//---------------------------------------------------------------------------- -// loads cursors for viewer operations - zoom, pan, etc... +/*! + loads cursors for viewer operations - zoom, pan, etc... +*/ void SVTK_InteractorStyle ::loadCursors() @@ -618,8 +647,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Zoom operation (e.g. through menu command) +/*! + Starts Zoom operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startZoom() @@ -634,8 +664,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Pan operation (e.g. through menu command) +/*! + Starts Pan operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startPan() @@ -649,8 +680,9 @@ SVTK_InteractorStyle ForcedState = VTK_INTERACTOR_STYLE_CAMERA_PAN; } -//---------------------------------------------------------------------------- -// starts Rotate operation (e.g. through menu command) +/*! + Starts Rotate operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startRotate() @@ -665,8 +697,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Spin operation (e.g. through menu command) +/*! + Starts Spin operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startSpin() @@ -682,8 +715,9 @@ SVTK_InteractorStyle -//---------------------------------------------------------------------------- -// starts Fit Area operation (e.g. through menu command) +/*! + Starts Fit Area operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startFitArea() @@ -698,8 +732,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts Global Panning operation (e.g. through menu command) +/*! + Starts Global Panning operation (e.g. through menu command) +*/ void SVTK_InteractorStyle ::startGlobalPan() @@ -721,8 +756,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// fits viewer contents to rect +/*! + Fits viewer contents to rect +*/ void SVTK_InteractorStyle ::fitRect(const int left, @@ -758,8 +794,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// starts viewer operation (!internal usage!) +/*! + Starts viewer operation (!internal usage!) +*/ void SVTK_InteractorStyle ::startOperation(int operation) @@ -789,8 +826,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// sets proper cursor for window when viewer operation is activated +/*! + Sets proper cursor for window when viewer operation is activated +*/ void SVTK_InteractorStyle ::setCursor(const int operation) @@ -832,15 +870,20 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// called when viewer operation started (!put necessary initialization here!) +/*! + Called when viewer operation started (!put necessary initialization here!) +*/ void SVTK_InteractorStyle ::onStartOperation() { - if (!GetRenderWidget()) return; - // VSV: LOD actor activisation - // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate()); + if (!GetRenderWidget()) + return; + + vtkRenderWindowInteractor *aRWI = this->Interactor; + vtkRenderWindow *aRenWin = aRWI->GetRenderWindow(); + aRenWin->SetDesiredUpdateRate(aRWI->GetDesiredUpdateRate()); + switch (State) { case VTK_INTERACTOR_STYLE_CAMERA_SELECT: case VTK_INTERACTOR_STYLE_CAMERA_FIT: @@ -861,8 +904,9 @@ SVTK_InteractorStyle } -//---------------------------------------------------------------------------- -// called when viewer operation finished (!put necessary post-processing here!) +/*! + Called when viewer operation finished (!put necessary post-processing here!) +*/ void SVTK_InteractorStyle ::onFinishOperation() @@ -870,8 +914,9 @@ SVTK_InteractorStyle if (!GetRenderWidget()) return; - // VSV: LOD actor activisation - // rwi->GetRenderWindow()->SetDesiredUpdateRate(rwi->GetStillUpdateRate()); + vtkRenderWindowInteractor *aRWI = this->Interactor; + vtkRenderWindow *aRenWin = aRWI->GetRenderWindow(); + aRenWin->SetDesiredUpdateRate(aRWI->GetStillUpdateRate()); SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY(); @@ -909,13 +954,15 @@ SVTK_InteractorStyle // SALOME_Actor* anActor = GetFirstSALOMEActor(myPicker.GetPointer()); aSelectionEvent->myIsRectangle = false; + + if(!myShiftState) + GetSelector()->ClearIObjects(); + if(anActor){ anActor->Highlight( this, aSelectionEvent, true ); }else{ if(myLastHighlitedActor.GetPointer() && myLastHighlitedActor.GetPointer() != anActor) myLastHighlitedActor->Highlight( this, aSelectionEvent, false ); - if(!myShiftState) - GetSelector()->ClearIObjects(); } myLastHighlitedActor = anActor; } @@ -965,8 +1012,9 @@ SVTK_InteractorStyle } -// called during viewer operation when user moves mouse (!put necessary processing here!) -//---------------------------------------------------------------------------- +/*! + Called during viewer operation when user moves mouse (!put necessary processing here!) +*/ void SVTK_InteractorStyle ::onOperation(QPoint mousePos) @@ -1021,9 +1069,10 @@ SVTK_InteractorStyle } } -// called when user moves mouse inside viewer window and there is no active viewer operation -// (!put necessary processing here!) -//---------------------------------------------------------------------------- +/*! + Called when user moves mouse inside viewer window and there is no active viewer operation + (!put necessary processing here!) +*/ void SVTK_InteractorStyle ::onCursorMove(QPoint mousePos) @@ -1053,8 +1102,9 @@ SVTK_InteractorStyle this->Render(); } -// called on finsh GlobalPan operation -//---------------------------------------------------------------------------- +/*! + Called on finsh GlobalPan operation +*/ void SVTK_InteractorStyle ::Place(const int theX, const int theY) @@ -1079,15 +1129,16 @@ SVTK_InteractorStyle -// Translates view from Point to Point -//---------------------------------------------------------------------------- +/*! + Translates view from Point to Point +*/ void SVTK_InteractorStyle ::TranslateView(int toX, int toY, int fromX, int fromY) { vtkCamera *cam = GetCurrentRenderer()->GetActiveCamera(); double viewFocus[4], focalDepth, viewPoint[3]; - float newPickPoint[4], oldPickPoint[4], motionVector[3]; + vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3]; cam->GetFocalPoint(viewFocus); this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1], @@ -1114,7 +1165,6 @@ SVTK_InteractorStyle motionVector[2] + viewPoint[2]); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalPan( const int incrX, const int incrY ) @@ -1122,7 +1172,6 @@ SVTK_InteractorStyle this->PanXY( incrX, incrY, 0, 0 ); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalZoom( const int incr ) @@ -1130,7 +1179,6 @@ SVTK_InteractorStyle this->DollyXY( incr, incr ); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::IncrementalRotate( const int incrX, const int incrY ) @@ -1138,7 +1186,9 @@ SVTK_InteractorStyle this->RotateXY( incrX, -incrY ); } -//---------------------------------------------------------------------------- +/*! + Redefined in order to add an observer (callback) for custorm event (space mouse event) +*/ void SVTK_InteractorStyle ::SetInteractor( vtkRenderWindowInteractor* theInteractor ) @@ -1178,8 +1228,9 @@ SVTK_InteractorStyle } } - -//---------------------------------------------------------------------------- +/*! + To implement cached rendering +*/ void SVTK_InteractorStyle ::OnTimer() @@ -1188,7 +1239,9 @@ SVTK_InteractorStyle this->Interactor->Render(); } -//---------------------------------------------------------------------------- +/*! + To invoke #vtkRenderWindowInteractor::CreateTimer +*/ void SVTK_InteractorStyle ::Render() @@ -1196,7 +1249,6 @@ SVTK_InteractorStyle this->Interactor->CreateTimer(VTKI_TIMER_FIRST); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::onSpaceMouseMove( double* data ) @@ -1212,7 +1264,6 @@ SVTK_InteractorStyle IncrementalRotate( (int)data[3], 0 ); // 5. tilt the control forward/backward = rotate around X axis (Z axis of local coordinate system of space mouse) } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::onSpaceMouseButton( int button ) @@ -1227,7 +1278,6 @@ SVTK_InteractorStyle DominantCombinedSwitch(); } -//---------------------------------------------------------------------------- void SVTK_InteractorStyle ::DominantCombinedSwitch() @@ -1235,7 +1285,9 @@ SVTK_InteractorStyle printf( "\n--DominantCombinedSwitch() NOT IMPLEMENTED--\n" ); } -//---------------------------------------------------------------------------- +/*! + Main process event method (reimplemented from #vtkInteractorStyle) +*/ void SVTK_InteractorStyle ::ProcessEvents( vtkObject* object, @@ -1326,11 +1378,17 @@ SVTK_InteractorStyle Superclass::ProcessEvents( object, event, clientData, callData ); } -//---------------------------------------------------------------------------- + +/*! + To handle keyboard event (reimplemented from #vtkInteractorStyle) +*/ void SVTK_InteractorStyle::OnChar() { } -//---------------------------------------------------------------------------- + +/*! + Redefined vtkInteractorStyle::OnKeyDown +*/ void SVTK_InteractorStyle::OnKeyDown() { bool bInvokeSuperclass=myControllerOnKeyDown->OnKeyDown(this); @@ -1338,7 +1396,10 @@ void SVTK_InteractorStyle::OnKeyDown() Superclass::OnKeyDown(); } } -//---------------------------------------------------------------------------- + +/*! + Provide instructions for Picking +*/ void SVTK_InteractorStyle::ActionPicking() { int x, y; @@ -1351,54 +1412,60 @@ void SVTK_InteractorStyle::ActionPicking() onFinishOperation(); startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); } -//---------------------------------------------------------------------------- + +/*! + To set current increment controller +*/ void SVTK_InteractorStyle::SetControllerOnKeyDown(SVTK_ControllerOnKeyDown* theController) { myControllerOnKeyDown=theController; } -//---------------------------------------------------------------------------- + +/*! + To get current OnKeyDown controller +*/ SVTK_ControllerOnKeyDown* SVTK_InteractorStyle::ControllerOnKeyDown() { return myControllerOnKeyDown.GetPointer(); } -//---------------------------------------------------------------------------- + +/*! + To get current increment controller +*/ void SVTK_InteractorStyle::SetControllerIncrement(SVTK_ControllerIncrement* theController) { myControllerIncrement=theController; } -//---------------------------------------------------------------------------- + +/*! + To get current increment controller +*/ SVTK_ControllerIncrement* SVTK_InteractorStyle::ControllerIncrement() { return myControllerIncrement.GetPointer(); } vtkStandardNewMacro(SVTK_ControllerIncrement); -//---------------------------------------------------------------------------- SVTK_ControllerIncrement::SVTK_ControllerIncrement() { myIncrement=10; } -//---------------------------------------------------------------------------- SVTK_ControllerIncrement::~SVTK_ControllerIncrement() { } -//---------------------------------------------------------------------------- void SVTK_ControllerIncrement::SetStartValue(const int theValue) { myIncrement=theValue; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Current()const { return myIncrement; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Increase() { ++myIncrement; return myIncrement; } -//---------------------------------------------------------------------------- int SVTK_ControllerIncrement::Decrease() { if (myIncrement>1){ @@ -1408,15 +1475,21 @@ int SVTK_ControllerIncrement::Decrease() } vtkStandardNewMacro(SVTK_ControllerOnKeyDown); -//---------------------------------------------------------------------------- + +/*! + Constructor +*/ SVTK_ControllerOnKeyDown::SVTK_ControllerOnKeyDown() { } -//---------------------------------------------------------------------------- + +/*! + Destructor +*/ SVTK_ControllerOnKeyDown::~SVTK_ControllerOnKeyDown() { } -//---------------------------------------------------------------------------- + bool SVTK_ControllerOnKeyDown::OnKeyDown(vtkInteractorStyle* theIS) { return true; diff --git a/src/SVTK/SVTK_InteractorStyle.h b/src/SVTK/SVTK_InteractorStyle.h index 7ea671df4..eebe88ec5 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -45,7 +45,6 @@ #include // -//------------------------------------------- //! Control the value of increment in SALOME way. /*! This class controls of value of increment, @@ -77,7 +76,6 @@ class SVTK_ControllerIncrement : public vtkObject{ void operator=(const SVTK_ControllerIncrement&); //Not implemented }; // -//------------------------------------------- //! Control the behaviour of KeyDown event in SALOME way. /*! This class controls the behaviour of KeyDown event @@ -99,7 +97,6 @@ class SVTK_ControllerOnKeyDown : public vtkObject{ SVTK_ControllerOnKeyDown(const SVTK_ControllerOnKeyDown&);//Not implemented void operator=(const SVTK_ControllerOnKeyDown&); //Not implemented }; -//------------------------------------------- class vtkCell; class vtkPicker; @@ -143,7 +140,7 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle SVTK_SelectionEvent* GetSelectionEventFlipY(); - //! Redefined in order to add an observer (callback) for custorm event (space mouse event) + //! Redefined in order to add an observer (callback) for custom event (space mouse event) virtual void SetInteractor( vtkRenderWindowInteractor* ); diff --git a/src/SVTK/SVTK_MainWindow.cxx b/src/SVTK/SVTK_MainWindow.cxx index 145aa9aa5..be1e25c37 100644 --- a/src/SVTK/SVTK_MainWindow.cxx +++ b/src/SVTK/SVTK_MainWindow.cxx @@ -40,6 +40,7 @@ #include "SUIT_Tools.h" #include "SUIT_ResourceMgr.h" #include "SVTK_NonIsometricDlg.h" +#include "SVTK_UpdateRateDlg.h" #include "SVTK_CubeAxesDlg.h" #include "SVTK_MainWindow.h" @@ -51,8 +52,9 @@ #include - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_MainWindow ::SVTK_MainWindow(QWidget* theParent, const char* theName, @@ -69,6 +71,9 @@ SVTK_MainWindow createToolBar(); } +/*! + To initialize the class +*/ void SVTK_MainWindow ::Initialize(SVTK_RenderWindowInteractor* theInteractor) @@ -82,17 +87,23 @@ SVTK_MainWindow myInteractor->setFocusPolicy(StrongFocus); myInteractor->setFocus(); setFocusProxy(myInteractor); -} + myUpdateRateDlg = new SVTK_UpdateRateDlg(myActionsMap[UpdateRate],this,"SVTK_UpdateRateDlg"); + myNonIsometricDlg = new SVTK_NonIsometricDlg(myActionsMap[NonIsometric],this,"SVTK_NonIsometricDlg"); + myCubeAxesDlg = new SVTK_CubeAxesDlg(myActionsMap[GraduatedAxes],this,"SVTK_CubeAxesDlg"); +} -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_MainWindow ::~SVTK_MainWindow() { } - -//---------------------------------------------------------------------------- +/*! + \return used SVTK_RenderWindowInteractor +*/ SVTK_RenderWindowInteractor* SVTK_MainWindow ::GetInteractor() @@ -100,6 +111,9 @@ SVTK_MainWindow return myInteractor; } +/*! + \return used #vtkRenderWindowInteractor (obsolete) +*/ vtkRenderWindowInteractor* SVTK_MainWindow ::getInteractor() @@ -107,6 +121,9 @@ SVTK_MainWindow return GetInteractor()->GetDevice(); } +/*! + \return used vtkRenderWindow (obsolete) +*/ vtkRenderWindow* SVTK_MainWindow ::getRenderWindow() @@ -114,7 +131,10 @@ SVTK_MainWindow return GetInteractor()->getRenderWindow(); } -//---------------------------------------------------------------------------- +/*! + To repaint the view + \param theUpdateTrihedron - adjust trihedron +*/ void SVTK_MainWindow ::Repaint(bool theUpdateTrihedron) @@ -125,7 +145,9 @@ SVTK_MainWindow GetInteractor()->update(); } -//---------------------------------------------------------------------------- +/*! + To invoke a VTK event on SVTK_RenderWindowInteractor instance +*/ void SVTK_MainWindow ::InvokeEvent(unsigned long theEvent, void* theCallData) @@ -133,7 +155,9 @@ SVTK_MainWindow GetInteractor()->InvokeEvent(theEvent,theCallData); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetInteractorStyle +*/ vtkInteractorStyle* SVTK_MainWindow ::GetInteractorStyle() @@ -141,6 +165,9 @@ SVTK_MainWindow return GetInteractor()->GetInteractorStyle(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::PushInteractorStyle +*/ void SVTK_MainWindow ::PushInteractorStyle(vtkInteractorStyle* theStyle) @@ -148,6 +175,9 @@ SVTK_MainWindow GetInteractor()->PushInteractorStyle(theStyle); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::PopInteractorStyle +*/ void SVTK_MainWindow ::PopInteractorStyle() @@ -155,7 +185,9 @@ SVTK_MainWindow GetInteractor()->PopInteractorStyle(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetSelector +*/ SVTK_Selector* SVTK_MainWindow ::GetSelector() @@ -163,6 +195,9 @@ SVTK_MainWindow return GetInteractor()->GetSelector(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::SelectionMode +*/ Selection_Mode SVTK_MainWindow ::SelectionMode() @@ -170,6 +205,9 @@ SVTK_MainWindow return GetSelector()->SelectionMode(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::SetSelectionMode +*/ void SVTK_MainWindow ::SetSelectionMode(Selection_Mode theMode) @@ -177,8 +215,9 @@ SVTK_MainWindow GetSelector()->SetSelectionMode(theMode); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_RenderWindowInteractor::GetRenderer +*/ SVTK_Renderer* SVTK_MainWindow ::GetRenderer() @@ -186,6 +225,9 @@ SVTK_MainWindow return GetInteractor()->GetRenderer(); } +/*! + Redirect the request to SVTK_RenderWindowInteractor::getRenderer +*/ vtkRenderer* SVTK_MainWindow ::getRenderer() @@ -193,7 +235,10 @@ SVTK_MainWindow return GetInteractor()->getRenderer(); } -//---------------------------------------------------------------------------- +/*! + Sets background color of the view + \param theColor - new background color +*/ void SVTK_MainWindow ::SetBackgroundColor(const QColor& theColor) @@ -203,18 +248,23 @@ SVTK_MainWindow theColor.blue()/255.0); } +/*! + \return background color of the view +*/ QColor SVTK_MainWindow ::BackgroundColor() { - float aBackgroundColor[3]; + vtkFloatingPointType aBackgroundColor[3]; getRenderer()->GetBackground(aBackgroundColor); return QColor(int(aBackgroundColor[0]*255), int(aBackgroundColor[1]*255), int(aBackgroundColor[2]*255)); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetScale +*/ void SVTK_MainWindow ::GetScale( double theScale[3] ) @@ -222,6 +272,9 @@ SVTK_MainWindow GetRenderer()->GetScale( theScale ); } +/*! + Redirect the request to SVTK_Renderer::SetScale +*/ void SVTK_MainWindow ::SetScale( double theScale[3] ) @@ -230,8 +283,9 @@ SVTK_MainWindow Repaint(); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::AddActor +*/ void SVTK_MainWindow ::AddActor(VTKViewer_Actor* theActor, @@ -242,7 +296,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::RemoveActor +*/ void SVTK_MainWindow ::RemoveActor(VTKViewer_Actor* theActor, @@ -253,8 +309,9 @@ SVTK_MainWindow Repaint(); } - -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetTrihedronSize +*/ int SVTK_MainWindow ::GetTrihedronSize() @@ -262,7 +319,9 @@ SVTK_MainWindow return GetRenderer()->GetTrihedronSize(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::SetTrihedronSize +*/ void SVTK_MainWindow ::SetTrihedronSize( const int theSize, const bool theRelative ) @@ -272,7 +331,6 @@ SVTK_MainWindow } -//---------------------------------------------------------------------------- /*! If parameter theIsForcedUpdate is true, recalculate parameters for * trihedron and cube axes, even if trihedron and cube axes is invisible. */ @@ -284,7 +342,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::IsTrihedronDisplayed +*/ bool SVTK_MainWindow ::IsTrihedronDisplayed() @@ -292,7 +352,9 @@ SVTK_MainWindow return GetRenderer()->IsTrihedronDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::IsCubeAxesDisplayed +*/ bool SVTK_MainWindow ::IsCubeAxesDisplayed() @@ -300,7 +362,9 @@ SVTK_MainWindow return GetRenderer()->IsCubeAxesDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetTrihedron +*/ VTKViewer_Trihedron* SVTK_MainWindow ::GetTrihedron() @@ -308,7 +372,9 @@ SVTK_MainWindow return GetRenderer()->GetTrihedron(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::GetCubeAxes +*/ SVTK_CubeAxesActor2D* SVTK_MainWindow ::GetCubeAxes() @@ -316,8 +382,9 @@ SVTK_MainWindow return GetRenderer()->GetCubeAxes(); } - -//---------------------------------------------------------------------------- +/*! + \return toolbar of svtk main window +*/ QToolBar* SVTK_MainWindow ::getToolBar() @@ -325,7 +392,6 @@ SVTK_MainWindow return myToolBar; } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::SetEventDispatcher(vtkObject* theDispatcher) @@ -333,11 +399,13 @@ SVTK_MainWindow myEventDispatcher = theDispatcher; } -//---------------------------------------------------------------------------- #if defined(WIN32) && !defined(_DEBUG) #pragma optimize( "", off ) #endif +/*! + Creates all actions of svtk main window +*/ void SVTK_MainWindow ::createActions(SUIT_ResourceMgr* theResourceMgr) @@ -471,8 +539,6 @@ SVTK_MainWindow connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onNonIsometric(bool))); myActionsMap[ NonIsometric ] = anAction; - myNonIsometricDlg = new SVTK_NonIsometricDlg(this,"SVTK_NonIsometricDlg",anAction); - // onGraduatedAxes: Manage graduated axes params anAction = new QtxAction(tr("MNU_SVTK_GRADUATED_AXES"), theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_GRADUATED_AXES" ) ), @@ -482,14 +548,23 @@ SVTK_MainWindow connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onGraduatedAxes(bool))); myActionsMap[ GraduatedAxes ] = anAction; - myCubeAxesDlg = new SVTK_CubeAxesDlg(this,"SVTK_CubeAxesDlg",anAction); + // onGraduatedAxes: Manage graduated axes params + anAction = new QtxAction(tr("MNU_SVTK_UPDATE_RATE"), + theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_UPDATE_RATE" ) ), + tr( "MNU_SVTK_UPDATE_RATE" ), 0, this); + anAction->setStatusTip(tr("DSC_SVTK_UPDATE_RATE")); + anAction->setToggleAction(true); + connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onUpdateRate(bool))); + myActionsMap[ UpdateRate ] = anAction; } #if defined(WIN32) && !defined(_DEBUG) #pragma optimize( "", on ) #endif -//---------------------------------------------------------------------------- +/*! + Creates toolbar of svtk main window +*/ void SVTK_MainWindow ::createToolBar() @@ -518,11 +593,34 @@ SVTK_MainWindow myActionsMap[ResetId]->addTo(myToolBar); + myActionsMap[UpdateRate]->addTo(myToolBar); myActionsMap[NonIsometric]->addTo(myToolBar); myActionsMap[GraduatedAxes]->addTo(myToolBar); } -//---------------------------------------------------------------------------- +/*! + Custom show event handler +*/ +void +SVTK_MainWindow +::showEvent( QShowEvent * theEvent ) +{ + emit Show( theEvent ); +} + +/*! + Custom hide event handler +*/ +void +SVTK_MainWindow +::hideEvent( QHideEvent * theEvent ) +{ + emit Hide( theEvent ); +} + +/*! + Starts zoom transformation +*/ void SVTK_MainWindow ::activateZoom() @@ -530,7 +628,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartZoom,0); } -//---------------------------------------------------------------------------- +/*! + Starts panning transformation +*/ void SVTK_MainWindow ::activatePanning() @@ -538,7 +638,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartPan,0); } -//---------------------------------------------------------------------------- +/*! + Starts rotation transformation +*/ void SVTK_MainWindow ::activateRotation() @@ -546,7 +648,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartRotate,0); } -//---------------------------------------------------------------------------- +/*! + Starts global panning transformation +*/ void SVTK_MainWindow ::activateGlobalPanning() @@ -554,7 +658,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartGlobalPan,0); } -//---------------------------------------------------------------------------- +/*! + Starts window fit transformation +*/ void SVTK_MainWindow ::activateWindowFit() @@ -562,7 +668,9 @@ SVTK_MainWindow myEventDispatcher->InvokeEvent(SVTK::StartFitArea,0); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "front view" +*/ void SVTK_MainWindow ::onFrontView() @@ -571,7 +679,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "back view" +*/ void SVTK_MainWindow ::onBackView() @@ -580,7 +690,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "top view" +*/ void SVTK_MainWindow ::onTopView() @@ -589,7 +701,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "bottom view" +*/ void SVTK_MainWindow ::onBottomView() @@ -598,7 +712,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "left view" +*/ void SVTK_MainWindow ::onLeftView() @@ -607,7 +723,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "right view" +*/ void SVTK_MainWindow ::onRightView() @@ -616,7 +734,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void SVTK_MainWindow ::onResetView() @@ -625,7 +745,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "fit all" +*/ void SVTK_MainWindow ::onFitAll() @@ -634,7 +756,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Shows trihedron +*/ void SVTK_MainWindow ::onViewTrihedron() @@ -643,7 +767,9 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +/*! + Shows cube axes +*/ void SVTK_MainWindow ::onViewCubeAxes() @@ -652,7 +778,17 @@ SVTK_MainWindow Repaint(); } -//---------------------------------------------------------------------------- +void +SVTK_MainWindow +::onUpdateRate(bool theIsActivate) +{ + if(theIsActivate){ + myUpdateRateDlg->Update(); + myUpdateRateDlg->show(); + }else + myUpdateRateDlg->hide(); +} + void SVTK_MainWindow ::onNonIsometric(bool theIsActivate) @@ -675,7 +811,6 @@ SVTK_MainWindow myCubeAxesDlg->hide(); } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::onAdjustTrihedron() @@ -683,7 +818,6 @@ SVTK_MainWindow GetRenderer()->OnAdjustTrihedron(); } -//---------------------------------------------------------------------------- void SVTK_MainWindow ::onAdjustCubeAxes() @@ -691,7 +825,9 @@ SVTK_MainWindow GetRenderer()->OnAdjustCubeAxes(); } -//---------------------------------------------------------------------------- +/*! + \return QImage, containing all scene rendering in window +*/ QImage SVTK_MainWindow ::dumpView() diff --git a/src/SVTK/SVTK_MainWindow.h b/src/SVTK/SVTK_MainWindow.h index 45f525f28..675d633b4 100644 --- a/src/SVTK/SVTK_MainWindow.h +++ b/src/SVTK/SVTK_MainWindow.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_MAINWINDOW_H #define SVTK_MAINWINDOW_H @@ -25,6 +43,7 @@ class SUIT_ViewWindow; class SVTK_RenderWindowInteractor; class SVTK_NonIsometricDlg; +class SVTK_UpdateRateDlg; class SVTK_CubeAxesActor2D; class SVTK_CubeAxesDlg; @@ -36,7 +55,6 @@ class SVTK_Renderer; class SVTK_Selector; -//---------------------------------------------------------------------------- //! The class is a container for #SVTK_RenderWindowInteractor. /*! The class contains #SVTK_RenderWindowInteractor instance and @@ -175,7 +193,14 @@ public: //---------------------------------------------------------------------------- QToolBar* getToolBar(); + signals: + void Show( QShowEvent * ); + void Hide( QHideEvent * ); + public slots: + virtual void showEvent( QShowEvent * ); + virtual void hideEvent( QHideEvent * ); + void activateZoom(); void activateWindowFit(); void activateRotation(); @@ -195,6 +220,7 @@ public: void onViewTrihedron(); void onViewCubeAxes(); + void onUpdateRate(bool theIsActivate); void onNonIsometric(bool theIsActivate); void onGraduatedAxes(bool theIsActivate); @@ -216,12 +242,13 @@ public: enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, - ViewTrihedronId, NonIsometric, GraduatedAxes}; + ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate}; typedef QMap TActionsMap; SUIT_ViewWindow* myViewWindow; SVTK_NonIsometricDlg* myNonIsometricDlg; + SVTK_UpdateRateDlg* myUpdateRateDlg; SVTK_CubeAxesDlg* myCubeAxesDlg; vtkSmartPointer myEventDispatcher; diff --git a/src/SVTK/SVTK_NonIsometricDlg.cxx b/src/SVTK/SVTK_NonIsometricDlg.cxx index a01bcbdcb..a2e5ed466 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.cxx +++ b/src/SVTK/SVTK_NonIsometricDlg.cxx @@ -44,15 +44,13 @@ using namespace std; Constructor */ SVTK_NonIsometricDlg -::SVTK_NonIsometricDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction): - QDialog(theParent, - theName, - false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), - m_MainWindow(theParent), - m_Action(theAction) +::SVTK_NonIsometricDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName): + SVTK_DialogBase(theAction, + theParent, + theName), + m_MainWindow(theParent) { setCaption(tr("DLG_TITLE")); setSizeGripEnabled(TRUE); @@ -63,66 +61,70 @@ SVTK_NonIsometricDlg layoutDlg->setMargin(11); // Create croup box with grid layout - QGroupBox* GroupBox = new QGroupBox(this, "GroupBox"); - QGridLayout* glGroupBox = new QGridLayout(GroupBox); - glGroupBox->setMargin(11); - glGroupBox->setSpacing(6); + QGroupBox* aGroupBox = new QGroupBox(this, "GroupBox"); + QHBoxLayout* aHBoxLayout = new QHBoxLayout(aGroupBox); + aHBoxLayout->setMargin(11); + aHBoxLayout->setSpacing(6); // "X" scaling - QLabel* TextLabelX = new QLabel (tr("LBL_X"), GroupBox, "TextLabelX"); - m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelX = new QLabel (tr("LBL_X"), aGroupBox, "TextLabelX"); + TextLabelX->setFixedWidth(15); + m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbXcoeff->setMinimumWidth(80); m_sbXcoeff->setValue(1.0); // "Y" scaling - QLabel* TextLabelY = new QLabel (tr("LBL_Y"), GroupBox, "TextLabelY"); - m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelY = new QLabel (tr("LBL_Y"), aGroupBox, "TextLabelY"); + TextLabelY->setFixedWidth(15); + m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbYcoeff->setMinimumWidth(80); m_sbYcoeff->setValue(1.0); // "Z" scaling - QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), GroupBox, "TextLabelZ"); - m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox); + QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), aGroupBox, "TextLabelZ"); + TextLabelZ->setFixedWidth(15); + m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox); m_sbZcoeff->setMinimumWidth(80); m_sbZcoeff->setValue(1.0); // Create 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 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 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 button - QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aWgt, "m_bCancel"); + QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aGroupBox2, "m_bCancel"); m_bCancel->setAutoDefault(TRUE); // Layout buttons - aHBoxLayout->addWidget(m_bOk); - aHBoxLayout->addWidget(m_bApply); - aHBoxLayout->addStretch(); - aHBoxLayout->addWidget(m_bCancel); + aHBoxLayout2->addWidget(m_bOk); + aHBoxLayout2->addWidget(m_bApply); + aHBoxLayout2->addStretch(); + aHBoxLayout2->addWidget(m_bCancel); // Layout top level widgets - layoutDlg->addWidget(GroupBox,0,0); - layoutDlg->addWidget(aWgt,1,0); + layoutDlg->addWidget(aGroupBox,0,0); + layoutDlg->addWidget(aGroupBox2,1,0); // signals and slots connections connect(m_bCancel, SIGNAL(clicked()), this, SLOT(onClickClose())); @@ -187,14 +189,4 @@ SVTK_NonIsometricDlg ::onClickClose() { reject(); - - m_Action->setOn( false ); -} - -void -SVTK_NonIsometricDlg -::done( int r ) -{ - m_Action->setOn( false ); - QDialog::done( r ); } diff --git a/src/SVTK/SVTK_NonIsometricDlg.h b/src/SVTK/SVTK_NonIsometricDlg.h index 6a11a14f6..7043f922e 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.h +++ b/src/SVTK/SVTK_NonIsometricDlg.h @@ -29,7 +29,7 @@ #ifndef SVTK_NONISOMETRICDLG_H #define SVTK_NONISOMETRICDLG_H -#include +#include "SVTK_DialogBase.h" class SVTK_MainWindow; @@ -39,14 +39,14 @@ class QtxAction; class QPushButton; -class SVTK_NonIsometricDlg : public QDialog +class SVTK_NonIsometricDlg : public SVTK_DialogBase { Q_OBJECT; public: - SVTK_NonIsometricDlg(SVTK_MainWindow* theParent, - const char* theName, - QtxAction* theAction); + SVTK_NonIsometricDlg(QtxAction* theAction, + SVTK_MainWindow* theParent, + const char* theName); ~SVTK_NonIsometricDlg(); @@ -54,7 +54,6 @@ public: protected: SVTK_MainWindow *m_MainWindow; - QtxAction* m_Action; QtxDblSpinBox* m_sbXcoeff; QtxDblSpinBox* m_sbYcoeff; @@ -66,8 +65,6 @@ protected slots: void onClickReset(); void onClickOk(); void onClickClose(); - - virtual void done( int ); }; #endif // SVTK_NONISOMETRICDLG_H diff --git a/src/SVTK/SVTK_Prs.cxx b/src/SVTK/SVTK_Prs.cxx index 9db710484..620202f40 100644 --- a/src/SVTK/SVTK_Prs.cxx +++ b/src/SVTK/SVTK_Prs.cxx @@ -29,55 +29,40 @@ #include "SVTK_Prs.h" using namespace std; -//========================================================== /*! - * SVTK_Prs::SVTK_Prs - * Default constructor - */ -//========================================================== + Default constructor +*/ SVTK_Prs::SVTK_Prs() : myObjects( 0 ) { } -//========================================================== /*! - * SVTK_Prs::SVTK_Prs - * tandard constructora - */ -//========================================================== + Standard constructor +*/ SVTK_Prs::SVTK_Prs( const vtkActor* obj ) { AddObject( obj ); } -//========================================================== /*! - * SVTK_Prs::~SVTK_Prs - * Destructor - */ -//========================================================== + Destructor +*/ SVTK_Prs:: ~SVTK_Prs() { if ( myObjects ) myObjects->Delete(); } -//========================================================== /*! - * SVTK_Prs::GetObjects - * Get actors list - */ -//========================================================== + \return actors list +*/ vtkActorCollection* SVTK_Prs::GetObjects() const { return myObjects; } -//========================================================== /*! - * SVTK_Prs::AddObject - * Add actor - */ -//========================================================== + Add actor +*/ void SVTK_Prs::AddObject( const vtkActor* obj ) { if ( !myObjects) @@ -85,13 +70,9 @@ void SVTK_Prs::AddObject( const vtkActor* obj ) myObjects->AddItem( (vtkActor*)obj ); } -//========================================================== /*! - * SVTK_Prs::IsNull - * Return 0 if list of the actors is empty - * [ Reimplemented from SALOME_Prs ] - */ -//========================================================== + \return 0 if list of the actors is empty [ Reimplemented from SALOME_Prs ] +*/ bool SVTK_Prs::IsNull() const { return !myObjects || myObjects->GetNumberOfItems() <= 0; diff --git a/src/SVTK/SVTK_RectPicker.cxx b/src/SVTK/SVTK_RectPicker.cxx index 775782e80..88f085419 100644 --- a/src/SVTK/SVTK_RectPicker.cxx +++ b/src/SVTK/SVTK_RectPicker.cxx @@ -47,12 +47,11 @@ #include #include -//---------------------------------------------------------------------------- namespace { //---------------------------------------------------------------------------- inline - float + vtkFloatingPointType GetZ(float* theZPtr, int theSelection[4], int theDX, @@ -67,13 +66,13 @@ namespace int Check(float* theZPtr, int theSelection[4], - float theTolerance, - float theDZ, + vtkFloatingPointType theTolerance, + vtkFloatingPointType theDZ, int theDX, int theDY) { int aRet = 0; - float aZ = -1.0; + vtkFloatingPointType aZ = -1.0; if(theDX >= theSelection[0] && theDX <= theSelection[2] && theDY >= theSelection[1] && theDY <= theSelection[3]) { @@ -98,7 +97,7 @@ namespace vtkDataSet *theInput, SVTK_RectPicker::TVectorIds& theVisibleIds, SVTK_RectPicker::TVectorIds& theInVisibleIds, - float theTolerance) + vtkFloatingPointType theTolerance) { theVisibleIds.clear(); theInVisibleIds.clear(); @@ -134,10 +133,10 @@ namespace */ for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){ // perform conversion - float aX[4] = {1.0, 1.0, 1.0, 1.0}; + vtkFloatingPointType aX[4] = {1.0, 1.0, 1.0, 1.0}; theInput->GetPoint(aPntId,aX); - float aView[4]; + vtkFloatingPointType aView[4]; aMatrix->MultiplyPoint(aX,aView); if(aView[3] == 0.0) continue; @@ -146,7 +145,7 @@ namespace aView[2]/aView[3]); theRenderer->ViewToDisplay(); - float aDX[3]; + vtkFloatingPointType aDX[3]; theRenderer->GetDisplayPoint(aDX); // check whether visible and in selection window @@ -212,8 +211,8 @@ namespace //---------------------------------------------------------------------------- inline void - GetCenter(const float theBounds[6], - float theCenter[3]) + GetCenter(const vtkFloatingPointType theBounds[6], + vtkFloatingPointType theCenter[3]) { theCenter[0] = (theBounds[1] + theBounds[0]) / 2.0; theCenter[1] = (theBounds[3] + theBounds[2]) / 2.0; @@ -225,7 +224,7 @@ namespace vtkRenderer *theRenderer, vtkDataSet *theInput, SVTK_RectPicker::TVectorIds& theVectorIds, - float theTolerance) + vtkFloatingPointType theTolerance) { theVectorIds.clear(); @@ -260,14 +259,14 @@ namespace for(vtkIdType aCellId = 0; aCellId < aNumCells; aCellId++){ vtkCell* aCell = theInput->GetCell(aCellId); - float aBounds[6]; + vtkFloatingPointType aBounds[6]; aCell->GetBounds(aBounds); - float aCenter[3]; + vtkFloatingPointType aCenter[3]; GetCenter(aBounds,aCenter); - float aView[4]; - float aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0}; + vtkFloatingPointType aView[4]; + vtkFloatingPointType aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0}; aMatrix->MultiplyPoint(aX,aView); if(aView[3] == 0.0) @@ -278,7 +277,7 @@ namespace aView[2]/aView[3]); theRenderer->ViewToDisplay(); - float aDX[3]; + vtkFloatingPointType aDX[3]; theRenderer->GetDisplayPoint(aDX); // check whether visible and in selection window @@ -306,16 +305,16 @@ namespace //---------------------------------------------------------------------------- void CalculatePickPosition(vtkRenderer *theRenderer, - float theSelectionX, - float theSelectionY, - float theSelectionZ, - float thePickPosition[3]) + vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType thePickPosition[3]) { // Convert the selection point into world coordinates. // theRenderer->SetDisplayPoint(theSelectionX, theSelectionY, theSelectionZ); theRenderer->DisplayToWorld(); - float* aWorldCoords = theRenderer->GetWorldPoint(); + vtkFloatingPointType* aWorldCoords = theRenderer->GetWorldPoint(); if ( aWorldCoords[3] != 0.0 ) { for (int i=0; i < 3; i++) { thePickPosition[i] = aWorldCoords[i] / aWorldCoords[3]; @@ -324,10 +323,8 @@ namespace } } -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_RectPicker); -//---------------------------------------------------------------------------- SVTK_RectPicker ::SVTK_RectPicker() { @@ -341,26 +338,33 @@ SVTK_RectPicker int SVTK_RectPicker -::Pick(float, float, float, vtkRenderer*) +::Pick(vtkFloatingPointType, + vtkFloatingPointType, + vtkFloatingPointType, + vtkRenderer*) { return 0; } -//---------------------------------------------------------------------------- int SVTK_RectPicker -::Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer) +::Pick(vtkFloatingPointType theSelection[3], + vtkFloatingPointType theSelection2[3], + vtkRenderer *theRenderer) { return Pick(theSelection[0], theSelection[1], theSelection[2], theSelection2[0], theSelection2[1], theSelection2[2], theRenderer); } -//---------------------------------------------------------------------------- int SVTK_RectPicker -::Pick(float theSelectionX, float theSelectionY, float theSelectionZ, - float theSelectionX2, float theSelectionY2, float theSelectionZ2, +::Pick(vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType theSelectionX2, + vtkFloatingPointType theSelectionY2, + vtkFloatingPointType theSelectionZ2, vtkRenderer *theRenderer) { // Initialize picking process @@ -374,14 +378,14 @@ SVTK_RectPicker // vtkCamera* aCamera = theRenderer->GetActiveCamera(); - float aCameraFP[4]; + vtkFloatingPointType aCameraFP[4]; aCamera->GetFocalPoint(aCameraFP); aCameraFP[3] = 1.0; theRenderer->SetWorldPoint(aCameraFP); theRenderer->WorldToDisplay(); - float* aDisplayCoords = theRenderer->GetDisplayPoint(); - float aSelectionZ = aDisplayCoords[2]; + vtkFloatingPointType* aDisplayCoords = theRenderer->GetDisplayPoint(); + vtkFloatingPointType aSelectionZ = aDisplayCoords[2]; this->SelectionPoint[0] = theSelectionX; this->SelectionPoint[1] = theSelectionY; @@ -472,7 +476,6 @@ SVTK_RectPicker } -//---------------------------------------------------------------------------- const SVTK_RectPicker::TVectorIdsMap& SVTK_RectPicker ::GetPointIdsMap() const diff --git a/src/SVTK/SVTK_RectPicker.h b/src/SVTK/SVTK_RectPicker.h index a9837c2d9..77c9a3b16 100644 --- a/src/SVTK/SVTK_RectPicker.h +++ b/src/SVTK/SVTK_RectPicker.h @@ -29,6 +29,7 @@ #define __SVTK_RectPicker_h #include "SVTK.h" +#include "VTKViewer.h" #include #include @@ -40,7 +41,7 @@ class vtkRenderer; /*! \class vtkAbstractPropPicker * \brief For more information see VTK documentation */ -/*! \class VTKViewer_RectPicker +/*! \class SVTK_RectPicker * \brief Rectangular picker class. */ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker @@ -56,8 +57,8 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker as fraction of rendering window size. (Rendering window size is measured across diagonal.) */ - vtkSetMacro(Tolerance,float); - vtkGetMacro(Tolerance,float); + vtkSetMacro(Tolerance,vtkFloatingPointType); + vtkGetMacro(Tolerance,vtkFloatingPointType); //! Use these methods to pick points or points and cells vtkSetMacro(PickPoints,int); @@ -66,12 +67,18 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker virtual int - Pick(float theSelectionX, float theSelectionY, float theSelectionZ, - float theSelectionX2, float theSelectionY2, float theSelectionZ2, + Pick(vtkFloatingPointType theSelectionX, + vtkFloatingPointType theSelectionY, + vtkFloatingPointType theSelectionZ, + vtkFloatingPointType theSelectionX2, + vtkFloatingPointType theSelectionY2, + vtkFloatingPointType theSelectionZ2, vtkRenderer *theRenderer); int - Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer); + Pick(vtkFloatingPointType theSelection[3], + vtkFloatingPointType theSelection2[3], + vtkRenderer *theRenderer); typedef std::vector TVectorIds; typedef std::map TVectorIdsMap; @@ -87,16 +94,16 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker ~SVTK_RectPicker(); //! tolerance for computation (% of window) - float Tolerance; + vtkFloatingPointType Tolerance; //! use the following to control picking mode int PickPoints; //! second rectangle selection point in window (pixel) coordinates - float SelectionPoint2[3]; + vtkFloatingPointType SelectionPoint2[3]; //! second rectangle selection point in world coordinates - float PickPosition2[3]; + vtkFloatingPointType PickPosition2[3]; TVectorIdsMap myPointIdsMap; TVectorIdsMap myCellIdsMap; @@ -104,7 +111,10 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker private: virtual int - Pick(float, float, float, vtkRenderer*); + Pick(vtkFloatingPointType, + vtkFloatingPointType, + vtkFloatingPointType, + vtkRenderer*); }; #endif diff --git a/src/SVTK/SVTK_RenderWindowInteractor.cxx b/src/SVTK/SVTK_RenderWindowInteractor.cxx index 0d4142995..4921f63f9 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_RenderWindowInteractor.cxx @@ -61,7 +61,9 @@ static bool GENERATE_SUIT_EVENTS = false; static bool FOCUS_UNDER_MOUSE = false; -//---------------------------------------------------------------------------- +/*! + Constructor +*/ QVTK_RenderWindowInteractor ::QVTK_RenderWindowInteractor(QWidget* theParent, const char* theName): @@ -79,7 +81,9 @@ QVTK_RenderWindowInteractor myRenderWindow->SetWindowId((void*)winId()); } - +/*! + To initialize by vtkGenericRenderWindowInteractor instance +*/ void QVTK_RenderWindowInteractor ::Initialize(vtkGenericRenderWindowInteractor* theDevice) @@ -93,7 +97,9 @@ QVTK_RenderWindowInteractor theDevice->SetRenderWindow(getRenderWindow()); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ QVTK_RenderWindowInteractor ::~QVTK_RenderWindowInteractor() { @@ -103,7 +109,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + \return corresponding render window interactor +*/ vtkGenericRenderWindowInteractor* QVTK_RenderWindowInteractor ::GetDevice() @@ -111,7 +119,9 @@ QVTK_RenderWindowInteractor return myDevice.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + \return corresponding render window +*/ vtkRenderWindow* QVTK_RenderWindowInteractor ::getRenderWindow() @@ -119,7 +129,9 @@ QVTK_RenderWindowInteractor return myRenderWindow.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + Just to simplify usage of its device (vtkGenericRenderWindowInteractor) +*/ void QVTK_RenderWindowInteractor ::InvokeEvent(unsigned long theEvent, void* theCallData) @@ -127,7 +139,9 @@ QVTK_RenderWindowInteractor GetDevice()->InvokeEvent(theEvent,theCallData); } -//---------------------------------------------------------------------------- +/*! + Need for initial contents display on Win32 +*/ void QVTK_RenderWindowInteractor ::show() @@ -136,7 +150,9 @@ QVTK_RenderWindowInteractor update(); // needed for initial contents display on Win32 } -//---------------------------------------------------------------------------- +/*! + To implement final initialization, just before the widget is displayed +*/ void QVTK_RenderWindowInteractor ::polish() @@ -149,7 +165,9 @@ QVTK_RenderWindowInteractor } } -//---------------------------------------------------------------------------- +/*! + To adjust widget and vtkRenderWindow size +*/ void QVTK_RenderWindowInteractor ::resize(int w, int h) @@ -157,7 +175,9 @@ QVTK_RenderWindowInteractor GetDevice()->UpdateSize(w,h); } -//---------------------------------------------------------------------------- +/*! + Custom paint event handler +*/ void QVTK_RenderWindowInteractor ::paintEvent( QPaintEvent* theEvent ) @@ -166,7 +186,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom resize event handler +*/ void QVTK_RenderWindowInteractor ::resizeEvent( QResizeEvent* theEvent ) @@ -198,14 +220,18 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- + +/*! + Custom context menu event handler +*/ void QVTK_RenderWindowInteractor ::contextMenuEvent( QContextMenuEvent* event ) {} - -//---------------------------------------------------------------------------- +/*! + Custom mouse move event handler +*/ void QVTK_RenderWindowInteractor ::mouseMoveEvent( QMouseEvent* event ) @@ -218,7 +244,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void QVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -236,7 +264,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void QVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -255,14 +285,18 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse double click event handler +*/ void QVTK_RenderWindowInteractor ::mouseDoubleClickEvent( QMouseEvent* event ) {} -//---------------------------------------------------------------------------- +/*! + Custom mouse wheel event handler +*/ void QVTK_RenderWindowInteractor ::wheelEvent( QWheelEvent* event ) @@ -272,7 +306,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void QVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -284,7 +320,9 @@ QVTK_RenderWindowInteractor GetDevice()->CharEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void QVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -296,7 +334,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom enter event handler +*/ void QVTK_RenderWindowInteractor ::enterEvent( QEvent* event ) @@ -308,7 +348,9 @@ QVTK_RenderWindowInteractor GetDevice()->EnterEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom leave event handler +*/ void QVTK_RenderWindowInteractor ::leaveEvent( QEvent * ) @@ -316,8 +358,10 @@ QVTK_RenderWindowInteractor GetDevice()->LeaveEvent(); } - -//---------------------------------------------------------------------------- +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ void QVTK_RenderWindowInteractor ::focusInEvent( QFocusEvent* event ) @@ -334,7 +378,10 @@ QVTK_RenderWindowInteractor } } -//---------------------------------------------------------------------------- +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ void QVTK_RenderWindowInteractor ::focusOutEvent ( QFocusEvent* event ) @@ -349,7 +396,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + To handle native X11 events (from such devices as SpaceMouse) +*/ bool QVTK_RenderWindowInteractor ::x11Event( XEvent *xEvent ) @@ -376,8 +425,9 @@ QVTK_RenderWindowInteractor return QWidget::x11Event( xEvent ); } - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_RenderWindowInteractor ::SVTK_RenderWindowInteractor(QWidget* theParent, const char* theName): @@ -392,6 +442,9 @@ SVTK_RenderWindowInteractor myEventCallbackCommand->SetCallback(SVTK_RenderWindowInteractor::ProcessEvents); } +/*! + To initialize properly the class +*/ void SVTK_RenderWindowInteractor ::Initialize(vtkGenericRenderWindowInteractor* theDevice, @@ -403,7 +456,9 @@ SVTK_RenderWindowInteractor SetSelector(theSelector); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_RenderWindowInteractor ::~SVTK_RenderWindowInteractor() { @@ -421,7 +476,9 @@ SVTK_RenderWindowInteractor GetDevice()->SetRenderWindow(NULL); } -//---------------------------------------------------------------------------- +/*! + To get corresponding SVTK_Renderer instance +*/ SVTK_Renderer* SVTK_RenderWindowInteractor ::GetRenderer() @@ -429,6 +486,9 @@ SVTK_RenderWindowInteractor return myRenderer.GetPointer(); } +/*! + To get corresponding SVTK_Renderer device (just to simplify collobaration with SVTK_Renderer) +*/ vtkRenderer* SVTK_RenderWindowInteractor ::getRenderer() @@ -436,6 +496,10 @@ SVTK_RenderWindowInteractor return GetRenderer()->GetDevice(); } +/*! + Changes renderer + \param theRenderer - new renderer +*/ void SVTK_RenderWindowInteractor ::SetRenderer(SVTK_Renderer* theRenderer) @@ -453,7 +517,10 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Changes interactor style + \param theStyle - new interactor style +*/ void SVTK_RenderWindowInteractor ::InitInteractorStyle(vtkInteractorStyle* theStyle) @@ -461,8 +528,9 @@ SVTK_RenderWindowInteractor GetDevice()->SetInteractorStyle(theStyle); } - -//---------------------------------------------------------------------------- +/*! + To change current interactor style by pushing the new one into the container +*/ void SVTK_RenderWindowInteractor ::PushInteractorStyle(vtkInteractorStyle* theStyle) @@ -471,8 +539,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(theStyle); } - -//---------------------------------------------------------------------------- +/*! + To restore previous interactor style +*/ void SVTK_RenderWindowInteractor ::PopInteractorStyle() @@ -484,8 +553,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(GetInteractorStyle()); } - -//---------------------------------------------------------------------------- +/*! + To get current interactor style +*/ vtkInteractorStyle* SVTK_RenderWindowInteractor ::GetInteractorStyle() @@ -494,7 +564,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + To get current selector +*/ SVTK_Selector* SVTK_RenderWindowInteractor ::GetSelector() @@ -503,6 +575,10 @@ SVTK_RenderWindowInteractor } +/*! + Changes selector + \param theSelector - new selector +*/ void SVTK_RenderWindowInteractor ::SetSelector(SVTK_Selector* theSelector) @@ -518,8 +594,9 @@ SVTK_RenderWindowInteractor myPriority); } - -//---------------------------------------------------------------------------- +/*! + Main process VTK event method +*/ void SVTK_RenderWindowInteractor ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -536,8 +613,9 @@ SVTK_RenderWindowInteractor } } - -//---------------------------------------------------------------- +/*! + To change selection mode (just to simplify collobaration with SVTK_Selector) +*/ void SVTK_RenderWindowInteractor ::SetSelectionMode(Selection_Mode theMode) @@ -545,8 +623,9 @@ SVTK_RenderWindowInteractor mySelector->SetSelectionMode(theMode); } - -//---------------------------------------------------------------- +/*! + To get current selection mode (just to simplify collobaration with SVTK_Selector) +*/ Selection_Mode SVTK_RenderWindowInteractor ::SelectionMode() const @@ -555,7 +634,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------- +/*! + Emits signal selectionChanged() +*/ void SVTK_RenderWindowInteractor ::onEmitSelectionChanged() @@ -564,7 +645,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse move event handler +*/ void SVTK_RenderWindowInteractor ::mouseMoveEvent( QMouseEvent* event ) @@ -576,7 +659,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void SVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -588,7 +673,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void SVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -600,7 +687,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse double click event handler +*/ void SVTK_RenderWindowInteractor ::mouseDoubleClickEvent( QMouseEvent* event ) @@ -612,7 +701,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse wheel event handler +*/ void SVTK_RenderWindowInteractor ::wheelEvent( QWheelEvent* event ) @@ -628,8 +719,9 @@ SVTK_RenderWindowInteractor emit WheelMoved( event ); } - -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void SVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -640,7 +732,9 @@ SVTK_RenderWindowInteractor emit KeyPressed( event ); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void SVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -651,7 +745,9 @@ SVTK_RenderWindowInteractor emit KeyReleased( event ); } -//---------------------------------------------------------------------------- +/*! + Custom context menu event handler +*/ void SVTK_RenderWindowInteractor ::contextMenuEvent( QContextMenuEvent* event ) diff --git a/src/SVTK/SVTK_RenderWindowInteractor.h b/src/SVTK/SVTK_RenderWindowInteractor.h index bc0020ddf..c67f86313 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.h +++ b/src/SVTK/SVTK_RenderWindowInteractor.h @@ -52,9 +52,9 @@ class vtkObject; class SVTK_Selector; class SVTK_Renderer; -//============================================================================ -//! Implemements Qt based vtkRenderWindowInteractor. /*! + \class QVTK_RenderWindowInteractor + Implements Qt based vtkRenderWindowInteractor. The class inherits #QWidget class in order to be possible process Qt events. It invokes corresponding VTK events through usage of its device - a #vtkGenericRenderWindowInteractor. Also, it creates, initialize and holds vtkRenderWindow instance. @@ -124,9 +124,9 @@ class SVTK_EXPORT QVTK_RenderWindowInteractor: public QWidget }; -//============================================================================ //! Extends QVTK_RenderWindowInteractor functionality. /*! + \class SVTK_RenderWindowInteractor Implements such features as support of selection, run-time interactor style management, diff --git a/src/SVTK/SVTK_Renderer.cxx b/src/SVTK/SVTK_Renderer.cxx index 8302903a3..853ad34ca 100644 --- a/src/SVTK/SVTK_Renderer.cxx +++ b/src/SVTK/SVTK_Renderer.cxx @@ -55,10 +55,11 @@ #undef max -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_Renderer); -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_Renderer ::SVTK_Renderer(): myDevice(vtkRenderer::New()), @@ -152,6 +153,9 @@ SVTK_Renderer myPriority); } +/*! + Destructor +*/ SVTK_Renderer ::~SVTK_Renderer() { @@ -176,6 +180,9 @@ SVTK_Renderer } +/*! + Main process event method +*/ void SVTK_Renderer ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -198,7 +205,9 @@ SVTK_Renderer } } -//---------------------------------------------------------------------------- +/*! + \return renderer's device +*/ vtkRenderer* SVTK_Renderer ::GetDevice() @@ -206,6 +215,9 @@ SVTK_Renderer return myDevice.GetPointer(); } +/*! + Initialize renderer +*/ void SVTK_Renderer ::Initialize(vtkRenderWindowInteractor* theInteractor, @@ -215,7 +227,9 @@ SVTK_Renderer mySelector = theSelector; } -//---------------------------------------------------------------------------- +/*! + Publishes pointed actor into the renderer +*/ void SVTK_Renderer ::AddActor(VTKViewer_Actor* theActor) @@ -239,6 +253,9 @@ SVTK_Renderer } } +/*! + Removes pointed actor from the renderer +*/ void SVTK_Renderer ::RemoveActor(VTKViewer_Actor* theActor) @@ -264,6 +281,9 @@ SVTK_Renderer } } +/*! + Get special container that keeps scaling of the scene +*/ VTKViewer_Transform* SVTK_Renderer ::GetTransform() @@ -271,6 +291,9 @@ SVTK_Renderer return myTransform.GetPointer(); } +/*! + Allows to get a scale that is applied on the whole scene +*/ void SVTK_Renderer ::GetScale( double theScale[3] ) @@ -278,6 +301,9 @@ SVTK_Renderer myTransform->GetMatrixScale( theScale ); } +/*! + Allows to apply a scale on the whole scene +*/ void SVTK_Renderer ::SetScale( double theScale[3] ) @@ -286,8 +312,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + Applies color and size (PointSize and LineWidth) of primitives in selection mode +*/ void SVTK_Renderer ::SetSelectionProp(const double& theRed, @@ -300,7 +327,9 @@ SVTK_Renderer myHighlightProperty->SetPointSize( theWidth ); } -//---------------------------------------------------------------------------- +/*! + Applies color and size (PointSize and LineWidth) of primitives in preselection mode +*/ void SVTK_Renderer ::SetPreselectionProp(const double& theRed, @@ -313,7 +342,9 @@ SVTK_Renderer myPreHighlightProperty->SetPointSize( theWidth ); } -//---------------------------------------------------------------------------- +/*! + Setup requested tolerance for the picking +*/ void SVTK_Renderer ::SetSelectionTolerance(const double& theTolNodes, @@ -327,14 +358,13 @@ SVTK_Renderer } -//---------------------------------------------------------------------------- /*! If parameter theIsForcedUpdate is true, recalculate parameters for * trihedron and cube axes, even if trihedron and cube axes is invisible. */ inline bool -CheckBndBox(const float theBounds[6]) +CheckBndBox(const vtkFloatingPointType theBounds[6]) { if(theBounds[0] > -VTK_LARGE_FLOAT && theBounds[1] < VTK_LARGE_FLOAT && theBounds[2] > -VTK_LARGE_FLOAT && theBounds[3] < VTK_LARGE_FLOAT && @@ -343,6 +373,9 @@ CheckBndBox(const float theBounds[6]) return false; } +/*! + Adjusts size of actors +*/ bool SVTK_Renderer ::OnAdjustActors() @@ -350,7 +383,7 @@ SVTK_Renderer bool aTDisplayed = IsTrihedronDisplayed(); bool aCDisplayed = IsCubeAxesDisplayed(); - float aNewBndBox[6]; + vtkFloatingPointType aNewBndBox[6]; aNewBndBox[ 0 ] = aNewBndBox[ 2 ] = aNewBndBox[ 4 ] = VTK_LARGE_FLOAT; aNewBndBox[ 1 ] = aNewBndBox[ 3 ] = aNewBndBox[ 5 ] = -VTK_LARGE_FLOAT; @@ -363,7 +396,7 @@ SVTK_Renderer 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); @@ -380,7 +413,7 @@ SVTK_Renderer if(anActor->IsResizable()) anActor->SetSize(0.5*aSize); if(anActor->GetVisibility() && !anActor->IsInfinitive()){ - float *aBounds = anActor->GetBounds(); + vtkFloatingPointType *aBounds = anActor->GetBounds(); if(CheckBndBox(aBounds)) for(int i = 0; i < 5; i = i + 2){ if(aBounds[i] < aNewBndBox[i]) @@ -414,6 +447,9 @@ SVTK_Renderer return false; } +/*! + Adjusts size of actors +*/ void SVTK_Renderer ::AdjustActors() @@ -422,6 +458,12 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } +/*! + Set size of the trihedron + \param theSize - new size + \param theRelative - if it is true, then size is mesured in percents from bounding box of the scene, + otherwise - in viewer units +*/ void SVTK_Renderer ::SetTrihedronSize(int theSize, const bool theRelative) @@ -433,6 +475,9 @@ SVTK_Renderer } } +/*! + \return size of the trihedron in percents from bounding box of the scene +*/ int SVTK_Renderer ::GetTrihedronSize() const @@ -440,6 +485,9 @@ SVTK_Renderer return myTrihedronSize; } +/*! + \return true if the size of the trihedron is relative +*/ bool SVTK_Renderer ::IsTrihedronRelative() const @@ -447,7 +495,9 @@ SVTK_Renderer return myIsTrihedronRelative; } -//---------------------------------------------------------------------------- +/*! + \return trihedron control +*/ VTKViewer_Trihedron* SVTK_Renderer ::GetTrihedron() @@ -455,6 +505,9 @@ SVTK_Renderer return myTrihedron.GetPointer(); } +/*! + \return true if trihedron is displayed +*/ bool SVTK_Renderer ::IsTrihedronDisplayed() @@ -462,6 +515,9 @@ SVTK_Renderer return myTrihedron->GetVisibility() == VTKViewer_Trihedron::eOn; } +/*! + Toggle trihedron visibility +*/ void SVTK_Renderer ::OnViewTrihedron() @@ -472,6 +528,9 @@ SVTK_Renderer myTrihedron->VisibilityOn(); } +/*! + Adjust size of the trihedron to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustTrihedron() @@ -479,8 +538,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + \return graduated rules control +*/ SVTK_CubeAxesActor2D* SVTK_Renderer ::GetCubeAxes() @@ -488,6 +548,9 @@ SVTK_Renderer return myCubeAxes.GetPointer(); } +/*! + \return true if graduated rules displayed +*/ bool SVTK_Renderer ::IsCubeAxesDisplayed() @@ -495,6 +558,9 @@ SVTK_Renderer return myCubeAxes->GetVisibility() == 1; } +/*! + Toggle graduated rules visibility +*/ void SVTK_Renderer ::OnViewCubeAxes() @@ -505,6 +571,9 @@ SVTK_Renderer myCubeAxes->VisibilityOn(); } +/*! + Adjust size of the graduated rules to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustCubeAxes() @@ -512,8 +581,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + Sets camera into predefined state +*/ void SVTK_Renderer ::OnResetView() @@ -540,12 +610,13 @@ SVTK_Renderer else myCubeAxes->VisibilityOff(); - static float aCoeff = 3.0; + static vtkFloatingPointType aCoeff = 3.0; aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale()); } - -//---------------------------------------------------------------------------- +/*! + Fit all presentation in the scene into the window +*/ void SVTK_Renderer ::OnFitAll() @@ -584,8 +655,9 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } - -//---------------------------------------------------------------------------- +/*! + Reset camera clipping range to adjust the range to the bounding box of the scene +*/ void SVTK_Renderer ::OnResetClippingRange() @@ -594,8 +666,9 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } - -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to front view +*/ void SVTK_Renderer ::OnFrontView() @@ -607,7 +680,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to back view +*/ void SVTK_Renderer ::OnBackView() @@ -619,7 +694,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to top view +*/ void SVTK_Renderer ::OnTopView() @@ -631,7 +708,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to bottom view +*/ void SVTK_Renderer ::OnBottomView() @@ -643,7 +722,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to left view +*/ void SVTK_Renderer ::OnLeftView() @@ -655,7 +736,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to right view +*/ void SVTK_Renderer ::OnRightView() diff --git a/src/SVTK/SVTK_Renderer.h b/src/SVTK/SVTK_Renderer.h index 5532ea852..6012689ec 100644 --- a/src/SVTK/SVTK_Renderer.h +++ b/src/SVTK/SVTK_Renderer.h @@ -30,6 +30,7 @@ #define SVTK_Renderer_h #include "SVTK.h" +#include "VTKViewer.h" #include #include @@ -52,13 +53,13 @@ class VTKViewer_Actor; class SVTK_Selector; -//! The class is a container for #vtkRenderer instance. -/*! +/*! + \class SVTK_Renderer + The class is a container for #vtkRenderer instance. Main goal of the class is to apply common behaviour to all #SALOME_Actor, like selection and preselection colors. Also, the class is responsible for management of internal actors like trihedron an so on. */ -//============================================================================ class SVTK_EXPORT SVTK_Renderer : public vtkObject { public: @@ -77,12 +78,12 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject SVTK_Selector* theSelector); //---------------------------------------------------------------------------- - //! This method publishes pointed actor into the renderer + //! Publishes pointed actor into the renderer virtual void AddActor(VTKViewer_Actor* theActor); - //! This method removes pointed actor from the renderer + //! Removes pointed actor from the renderer virtual void RemoveActor(VTKViewer_Actor* theActor); @@ -91,12 +92,12 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject VTKViewer_Transform* GetTransform(); - //! This method allow to apply a scale on the whole scene + //! Allows to apply a scale on the whole scene virtual void SetScale( double theScale[3] ); - //! This method allow to get a scale that is applied on the whole scene + //! Allows to get a scale that is applied on the whole scene void GetScale( double theScale[3] ); @@ -115,7 +116,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject const double& theBlue = 1, const int& theWidth = 5); - //! Setup requested tollerance for the picking + //! Setup requested tolerance for the picking void SetSelectionTolerance(const double& theTolNodes = 0.025, const double& theTolCell = 0.001); @@ -209,7 +210,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject //---------------------------------------------------------------------------- // Priority at which events are processed - float myPriority; + vtkFloatingPointType myPriority; // Used to process events vtkSmartPointer myEventCallbackCommand; @@ -244,7 +245,7 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject vtkSmartPointer myTrihedron; int myTrihedronSize; bool myIsTrihedronRelative; - float myBndBox[6]; + vtkFloatingPointType myBndBox[6]; }; #endif diff --git a/src/SVTK/SVTK_Selector.cxx b/src/SVTK/SVTK_Selector.cxx index bc6dad148..b2813a41c 100644 --- a/src/SVTK/SVTK_Selector.cxx +++ b/src/SVTK/SVTK_Selector.cxx @@ -36,6 +36,9 @@ #include +/*! + \return new SVTK_Selector +*/ SVTK_Selector* SVTK_Selector ::New() @@ -43,19 +46,26 @@ SVTK_Selector return new SVTK_SelectorDef(); } -//---------------------------------------------------------------------------- +/*! + Default constructor +*/ SVTK_SelectorDef ::SVTK_SelectorDef() { mySelectionMode = ActorSelection; } +/*! + Destructor +*/ SVTK_SelectorDef ::~SVTK_SelectorDef() { } -//---------------------------------------------------------------------------- +/*! + To invoke selectionChanged signals +*/ void SVTK_SelectorDef ::StartPickCallback() @@ -63,7 +73,9 @@ SVTK_SelectorDef this->InvokeEvent(vtkCommand::StartPickEvent,NULL); } -//---------------------------------------------------------------------------- +/*! + To invoke selectionChanged signals +*/ void SVTK_SelectorDef ::EndPickCallback() @@ -71,7 +83,9 @@ SVTK_SelectorDef this->InvokeEvent(vtkCommand::EndPickEvent,NULL); } -//---------------------------------------------------------------------------- +/*! + To change current Selection_Mode (as outside effect, it invokes selectionChange signal) +*/ void SVTK_SelectorDef ::SetSelectionMode(Selection_Mode theMode) @@ -83,6 +97,9 @@ SVTK_SelectorDef } } +/*! + Clear selection +*/ void SVTK_SelectorDef ::ClearIObjects() @@ -92,7 +109,9 @@ SVTK_SelectorDef myMapIOSubIndex.clear(); } -//---------------------------------------------------------------------------- +/*! + \return true if the SALOME_InteractiveObject presents into selection +*/ bool SVTK_SelectorDef ::IsSelected(const Handle(SALOME_InteractiveObject)& theIO) const @@ -100,6 +119,9 @@ SVTK_SelectorDef return !theIO.IsNull() && (myIObjects.find(theIO) != myIObjects.end()); } +/*! + \return true if the SALOME_Actor presents into selection +*/ bool SVTK_SelectorDef ::IsSelected(SALOME_Actor* theActor) const @@ -108,6 +130,10 @@ SVTK_SelectorDef return IsSelected(anIO) && myIO2Actors.find(anIO) != myIO2Actors.end(); } +/*! + \return corresponding SALOME_Actor for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject +*/ SALOME_Actor* SVTK_SelectorDef ::GetActor(const Handle(SALOME_InteractiveObject)& theIO) const @@ -118,7 +144,10 @@ SVTK_SelectorDef return NULL; } -//---------------------------------------------------------------------------- +/*! + Adds SALOME_InteractiveObject into selection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::AddIObject(const Handle(SALOME_InteractiveObject)& theIO) @@ -130,6 +159,10 @@ SVTK_SelectorDef return false; } +/*! + Adds SALOME_Actor into selection + \param theActor - SALOME_Actor +*/ bool SVTK_SelectorDef ::AddIObject(SALOME_Actor* theActor) @@ -147,7 +180,10 @@ SVTK_SelectorDef return !anIsIOBound || !anIsActorBound; } -//---------------------------------------------------------------------------- +/*! + Removes SALOME_InteractiveObject from selection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::RemoveIObject(const Handle(SALOME_InteractiveObject)& theIO) @@ -161,6 +197,10 @@ SVTK_SelectorDef return anIsIOBound; } +/*! + Removes SALOME_Actor from selection + \param theActor - SALOME_Actor +*/ bool SVTK_SelectorDef ::RemoveIObject(SALOME_Actor* theActor) @@ -174,7 +214,9 @@ SVTK_SelectorDef return RemoveIObject(anIO) || anIsActorBound; } -//---------------------------------------------------------------------------- +/*! + \return list of all SALOME_InteractiveObject presenting in selection +*/ const SALOME_ListIO& SVTK_SelectorDef ::StoredIObjects() const @@ -188,6 +230,9 @@ SVTK_SelectorDef return myIObjectList; } +/*! + \return number of selected objects +*/ int SVTK_SelectorDef ::IObjectCount() const @@ -195,6 +240,10 @@ SVTK_SelectorDef return myIObjects.size(); } +/*! + \return true if the SALOME_InteractiveObject has a subselection + \param theIO - SALOME_InteractiveObject +*/ bool SVTK_SelectorDef ::HasIndex( const Handle(SALOME_InteractiveObject)& theIO) const @@ -202,6 +251,10 @@ SVTK_SelectorDef return myMapIOSubIndex.find(theIO) != myMapIOSubIndex.end(); } +/*! + Gets indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject +*/ void SVTK_SelectorDef ::GetIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -214,6 +267,11 @@ SVTK_SelectorDef 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, @@ -253,7 +311,12 @@ removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, 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, @@ -283,6 +346,12 @@ SVTK_SelectorDef } +/*! + Changes indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndices - indices + \param theIsModeShift - if it is false, then map will be cleared before indices are added +*/ bool SVTK_SelectorDef ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -313,6 +382,12 @@ SVTK_SelectorDef } +/*! + Changes indices of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndex - index + \param theIsModeShift - if it is false, then map will be cleared before indices are added +*/ bool SVTK_SelectorDef ::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -344,6 +419,11 @@ SVTK_SelectorDef } +/*! + Removes index of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndex - index +*/ void SVTK_SelectorDef ::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -356,6 +436,9 @@ SVTK_SelectorDef } } +/*! + Clears all indices of subselection +*/ void SVTK_SelectorDef ::ClearIndex() @@ -363,7 +446,10 @@ SVTK_SelectorDef myMapIOSubIndex.clear(); } -//---------------------------------------------------------------------------- +/*! + To apply a filter on the selection + \param theFilter - new filter +*/ void SVTK_SelectorDef ::SetFilter(const Handle(VTKViewer_Filter)& theFilter) @@ -371,7 +457,10 @@ SVTK_SelectorDef myFilters.insert(TFilters::value_type(theFilter->GetId(),theFilter)); } -//---------------------------------------------------------------------------- +/*! + \return true if filter with given number is applyed + \param theId - filter id +*/ bool SVTK_SelectorDef ::IsFilterPresent(const TFilterID theId) const @@ -379,7 +468,10 @@ SVTK_SelectorDef return myFilters.find(theId) != myFilters.end(); } -//---------------------------------------------------------------------------- +/*! + To remove a filter from the selection + \param theId - filter id +*/ void SVTK_SelectorDef ::RemoveFilter(const TFilterID theId) @@ -388,7 +480,12 @@ SVTK_SelectorDef myFilters.erase(theId); } -//---------------------------------------------------------------------------- +/*! + \return true if the index satisfy installed filters + \param theActor - actor + \param theId - filter id + \param theIsNode - whether it is node +*/ bool SVTK_SelectorDef ::IsValid(SALOME_Actor* theActor, @@ -405,7 +502,10 @@ SVTK_SelectorDef return true; } -//---------------------------------------------------------------------------- +/*! + \return filter by it's id + \param theId - filter id +*/ Handle(VTKViewer_Filter) SVTK_SelectorDef ::GetFilter(const TFilterID theId) const diff --git a/src/SVTK/SVTK_Selector.h b/src/SVTK/SVTK_Selector.h index 37ec0acb1..f476ae786 100644 --- a/src/SVTK/SVTK_Selector.h +++ b/src/SVTK/SVTK_Selector.h @@ -127,7 +127,7 @@ public: GetIndex( const Handle(SALOME_InteractiveObject)& theIO, TColStd_IndexedMapOfInteger& theIndex ) = 0; - //! Change indexes of subslection for given #SALOME_InteractiveObject + //! Change indices of subselection for given #SALOME_InteractiveObject virtual bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -154,7 +154,7 @@ public: RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, int theIndex) = 0; - //! Check, if the given index is present in subslection + //! Check, if the given index is present in subselection virtual bool IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, diff --git a/src/SVTK/SVTK_SpaceMouse.cxx b/src/SVTK/SVTK_SpaceMouse.cxx index 620e97ec0..bc73352fa 100644 --- a/src/SVTK/SVTK_SpaceMouse.cxx +++ b/src/SVTK/SVTK_SpaceMouse.cxx @@ -38,10 +38,11 @@ #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 ) @@ -49,14 +50,18 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance() 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 ); @@ -78,7 +83,6 @@ int SVTK_SpaceMouse::initialize( Display *display, Window window ) return spaceMouseOn; } -//--------------------------------------------- static int errorCallback( Display *display, XErrorEvent *Error ) { char msg[ 128 ]; @@ -89,7 +93,9 @@ static int errorCallback( Display *display, XErrorEvent *Error ) return 0; } -//--------------------------------------------- +/*! + Initialize by window +*/ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) { XTextProperty winName; @@ -146,7 +152,9 @@ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) return result; } -//--------------------------------------------- +/*! + Close +*/ int SVTK_SpaceMouse::close(Display *display) { initialize( display, (Window)InputFocus ); @@ -155,7 +163,9 @@ int SVTK_SpaceMouse::close(Display *display) return 1; } -//--------------------------------------------- +/*! + Custom event handler +*/ int SVTK_SpaceMouse::translateEvent( Display* display, XEvent* xEvent, MoveEvent* spaceMouseEvent, double scale, double rScale ) { diff --git a/src/SVTK/SVTK_Trihedron.cxx b/src/SVTK/SVTK_Trihedron.cxx index ea8783a07..4e6d78c99 100644 --- a/src/SVTK/SVTK_Trihedron.cxx +++ b/src/SVTK/SVTK_Trihedron.cxx @@ -23,16 +23,20 @@ #include #include -//**************************************************************** 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) diff --git a/src/SVTK/SVTK_UpdateRateDlg.cxx b/src/SVTK/SVTK_UpdateRateDlg.cxx new file mode 100644 index 000000000..b9f487488 --- /dev/null +++ b/src/SVTK/SVTK_UpdateRateDlg.cxx @@ -0,0 +1,380 @@ +// 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 + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +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<GetVisibility()){ + myVTKMultiplier += theActor->GetAllocatedRenderTime(); + if(dynamic_cast(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(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(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(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(); +} diff --git a/src/SVTK/SVTK_UpdateRateDlg.h b/src/SVTK/SVTK_UpdateRateDlg.h new file mode 100644 index 000000000..7b32674cc --- /dev/null +++ b/src/SVTK/SVTK_UpdateRateDlg.h @@ -0,0 +1,93 @@ +// 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 + +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 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 diff --git a/src/SVTK/SVTK_View.cxx b/src/SVTK/SVTK_View.cxx index 966ff2340..34e8b82b8 100644 --- a/src/SVTK/SVTK_View.cxx +++ b/src/SVTK/SVTK_View.cxx @@ -40,8 +40,9 @@ #include #include - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_SignalHandler ::SVTK_SignalHandler(SVTK_MainWindow* theMainWindow): QObject(theMainWindow), @@ -67,11 +68,17 @@ SVTK_SignalHandler this,SIGNAL(selectionChanged())); } +/*! + Destructor +*/ SVTK_SignalHandler ::~SVTK_SignalHandler() { } +/*! + \return corresponding svtk main window +*/ SVTK_MainWindow* SVTK_SignalHandler ::GetMainWindow() @@ -80,7 +87,9 @@ SVTK_SignalHandler } -//---------------------------------------------------------------- +/*! + Redirect the request to #SVTK_MainWindow::Repaint (just for flexibility) +*/ void SVTK_SignalHandler ::Repaint(bool theUpdateTrihedron) @@ -88,7 +97,9 @@ SVTK_SignalHandler myMainWindow->Repaint(theUpdateTrihedron); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_MainWindow::GetRenderer (just for flexibility) +*/ SVTK_Renderer* SVTK_SignalHandler ::GetRenderer() @@ -96,6 +107,9 @@ SVTK_SignalHandler return myMainWindow->GetRenderer(); } +/*! + Redirect the request to #SVTK_MainWindow::getRenderer (just for flexibility) +*/ vtkRenderer* SVTK_SignalHandler ::getRenderer() @@ -103,7 +117,6 @@ SVTK_SignalHandler return myMainWindow->getRenderer(); } -//---------------------------------------------------------------- namespace SVTK { struct THighlightAction @@ -123,6 +136,9 @@ namespace SVTK }; } +/*! + SLOT: called on selection change +*/ void SVTK_SignalHandler ::onSelectionChanged() @@ -144,21 +160,26 @@ SVTK_SignalHandler myMainWindow->Repaint(false); } - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_View ::SVTK_View(SVTK_MainWindow* theMainWindow) : SVTK_SignalHandler(theMainWindow) { } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_View ::~SVTK_View() { } -//---------------------------------------------------------------- +/*! + Unhilights all objects in viewer +*/ void SVTK_View ::unHighlightAll() @@ -169,7 +190,12 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------- +/*! + Hilights/unhilights object in viewer + \param theIO - object to be updated + \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param theIsUpdate - update current viewer +*/ void SVTK_View ::highlight( const Handle(SALOME_InteractiveObject)& theIO, @@ -183,7 +209,27 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- +/*! + Display object + \param theEntry - entry that corresponds to intractive objects +*/ +Handle(SALOME_InteractiveObject) +SVTK_View +::FindIObject(const char* theEntry) +{ + using namespace SVTK; + SALOME_Actor* anActor = + Find(getRenderer()->GetActors(), + TIsSameEntry(theEntry)); + if(anActor != NULL) + return anActor->getIO(); + + return NULL; +} + +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetSelectionProp(const double& theRed, @@ -194,7 +240,9 @@ SVTK_View GetRenderer()->SetSelectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetPreselectionProp(const double& theRed, @@ -205,7 +253,9 @@ SVTK_View GetRenderer()->SetPreselectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetPreselectionProp +*/ void SVTK_View ::SetSelectionTolerance(const double& theTolNodes, @@ -214,7 +264,10 @@ SVTK_View GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell); } -//---------------------------------------------------------------------------- +/*! + \return true if object is in viewer or in collector + \param theIO - object to be checked +*/ bool SVTK_View ::isInViewer(const Handle(SALOME_InteractiveObject)& theIObject) @@ -226,7 +279,10 @@ SVTK_View return anActor != NULL; } -//---------------------------------------------------------------------------- +/*! + \return true if object is displayed in viewer + \param theIO - object to be checked +*/ bool SVTK_View ::isVisible(const Handle(SALOME_InteractiveObject)& theIObject) @@ -238,7 +294,11 @@ SVTK_View return anActor != NULL && anActor->GetVisibility(); } -//---------------------------------------------------------------------------- +/*! + Changes name of object + \param theIObject - object to be renamed + \param theName - new name +*/ void SVTK_View ::rename(const Handle(SALOME_InteractiveObject)& theIObject, @@ -251,7 +311,9 @@ SVTK_View (&SALOME_Actor::setName,theName.latin1())); } -//---------------------------------------------------------------------------- +/*! + \return current display mode (obsolete) +*/ int SVTK_View ::GetDisplayMode() @@ -259,6 +321,10 @@ SVTK_View return myDisplayMode; } +/*! + Set current display mode + \param theMode - new display mode +*/ void SVTK_View ::SetDisplayMode(int theMode) @@ -270,6 +336,11 @@ SVTK_View myDisplayMode = theMode; } +/*! + Set current display mode + \param theIObject - object + \param theMode - new display mode +*/ void SVTK_View ::SetDisplayMode(const Handle(SALOME_InteractiveObject)& theIObject, @@ -282,7 +353,9 @@ SVTK_View (&SALOME_Actor::setDisplayMode,theMode)); } -//---------------------------------------------------------------------------- +/*! + Change all actors to wireframe +*/ void SVTK_View ::ChangeRepresentationToWireframe() @@ -290,6 +363,9 @@ SVTK_View ChangeRepresentationToWireframe(getRenderer()->GetActors()); } +/*! + Change all actors to shading +*/ void SVTK_View ::ChangeRepresentationToSurface() @@ -297,7 +373,10 @@ SVTK_View ChangeRepresentationToSurface(getRenderer()->GetActors()); } - +/*! + Change to wireframe a list of vtkactor + theCollection - list of vtkactor +*/ void SVTK_View ::ChangeRepresentationToWireframe(vtkActorCollection* theCollection) @@ -309,6 +388,10 @@ SVTK_View Repaint(); } +/*! + Change to shading a list of vtkactor + theCollection - list of vtkactor +*/ void SVTK_View ::ChangeRepresentationToSurface(vtkActorCollection* theCollection) @@ -320,7 +403,6 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- namespace SVTK { struct TErase @@ -342,6 +424,9 @@ namespace SVTK }; } +/*! + To erase all existing VTK presentations +*/ void SVTK_View ::EraseAll() @@ -352,6 +437,9 @@ SVTK_View Repaint(); } +/*! + To display all existing VTK presentations +*/ void SVTK_View ::DisplayAll() @@ -362,7 +450,11 @@ SVTK_View Repaint(); } - +/*! + To erase VTK presentation + \param theActor - actor + \param theIsUpdate - updates current viewer +*/ void SVTK_View ::Erase(SALOME_Actor* theActor, @@ -375,6 +467,11 @@ SVTK_View } +/*! + To erase VTK presentation + \param theIObject - object + \param theIsUpdate - updates current viewer +*/ void SVTK_View ::Erase(const Handle(SALOME_InteractiveObject)& theIObject, @@ -388,7 +485,9 @@ SVTK_View Repaint(); } -//---------------------------------------------------------------------------- +/*! + To display the VTK presentation +*/ void SVTK_View ::Display(SALOME_Actor* theActor, @@ -401,6 +500,9 @@ SVTK_View Repaint(); } +/*! + To display the VTK presentation +*/ void SVTK_View ::Display(const Handle(SALOME_InteractiveObject)& theIObject, @@ -415,6 +517,9 @@ SVTK_View Repaint(); } +/*! + To display VTK presentation with defined #SALOME_InteractiveObject and erase all others +*/ void SVTK_View ::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIObject) @@ -424,7 +529,6 @@ SVTK_View } -//---------------------------------------------------------------------------- namespace SVTK { struct TRemoveAction @@ -441,6 +545,9 @@ namespace SVTK }; } +/*! + To remove the VTK presentation +*/ void SVTK_View ::Remove(const Handle(SALOME_InteractiveObject)& theIObject, @@ -454,6 +561,9 @@ SVTK_View Repaint(); } +/*! + To remove the VTK presentation +*/ void SVTK_View ::Remove(SALOME_Actor* theActor, @@ -464,6 +574,9 @@ SVTK_View Repaint(); } +/*! + To remove all VTK presentations +*/ void SVTK_View ::RemoveAll(bool theIsUpdate) @@ -483,7 +596,10 @@ SVTK_View } } -//---------------------------------------------------------------------------- +/*! + \return current transparency + \param theIObject - object +*/ float SVTK_View ::GetTransparency(const Handle(SALOME_InteractiveObject)& theIObject) @@ -498,35 +614,48 @@ SVTK_View } +/*! + Sets current transparency + \param theIObject - object + \param theTrans - new transparency +*/ void SVTK_View ::SetTransparency(const Handle(SALOME_InteractiveObject)& theIObject, float theTrans) { - float anOpacity = 1.0 - theTrans; + vtkFloatingPointType anOpacity = 1.0 - theTrans; using namespace SVTK; ForEachIf(getRenderer()->GetActors(), TIsSameIObject(theIObject), - TSetFunction + TSetFunction (&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(getRenderer()->GetActors(), TIsSameIObject(theIObject), - TSetFunction + TSetFunction (&SALOME_Actor::SetColor,aColor)); } +/*! + \return object color + \param theIObject - object +*/ QColor SVTK_View ::GetColor(const Handle(SALOME_InteractiveObject)& theIObject) @@ -536,7 +665,7 @@ SVTK_View Find(getRenderer()->GetActors(), TIsSameIObject(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)); } diff --git a/src/SVTK/SVTK_View.h b/src/SVTK/SVTK_View.h index 2512c3497..2a8fe4c8b 100644 --- a/src/SVTK/SVTK_View.h +++ b/src/SVTK/SVTK_View.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_VIEW_H #define SVTK_VIEW_H @@ -18,7 +36,6 @@ class SVTK_Renderer; class SALOME_Actor; -//---------------------------------------------------------------------------- //! Main purpose of the class is to provide a way to customize #SVTK_MainWindow. /*! This class is initialized by #SVTK_MainWindow and just pass Qt signals from @@ -78,7 +95,6 @@ public: }; -//---------------------------------------------------------------------------- //! This class is introduced just for compatibility with old code. /*! This class contains frequantly used functionality in old code. @@ -106,7 +122,7 @@ public: void unHighlightAll(); - /* Selection Management */ + //! Try to find a SALOME_InteractiveObject in the view that corresponds to the entry Handle(SALOME_InteractiveObject) FindIObject(const char* Entry); diff --git a/src/SVTK/SVTK_ViewManager.cxx b/src/SVTK/SVTK_ViewManager.cxx index 4822bf639..44c4e72be 100644 --- a/src/SVTK/SVTK_ViewManager.cxx +++ b/src/SVTK/SVTK_ViewManager.cxx @@ -21,7 +21,9 @@ int SVTK_ViewManager::_SVTKViewMgr_Id = 0; -//*************************************************************** +/*! + Constructor +*/ SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop ) : SUIT_ViewManager( study, theDesktop ) @@ -30,12 +32,24 @@ SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, setViewModel( new SVTK_Viewer() ); } -//*************************************************************** +/*! + Destructor +*/ SVTK_ViewManager::~SVTK_ViewManager() { } -//*************************************************************** +/*! + \return corresponding main window +*/ +SUIT_Desktop* SVTK_ViewManager::getDesktop() +{ + return myDesktop; +} + +/*! + Sets default name of view +*/ void SVTK_ViewManager::setViewName(SUIT_ViewWindow* theView) { int aPos = myViews.find(theView); diff --git a/src/SVTK/SVTK_ViewManager.h b/src/SVTK/SVTK_ViewManager.h index b200ccc5b..977a286ff 100644 --- a/src/SVTK/SVTK_ViewManager.h +++ b/src/SVTK/SVTK_ViewManager.h @@ -36,6 +36,8 @@ public: //! Destroy the view manager virtual ~SVTK_ViewManager(); + SUIT_Desktop* getDesktop(); + protected: void setViewName( SUIT_ViewWindow* theView ); diff --git a/src/SVTK/SVTK_ViewModel.cxx b/src/SVTK/SVTK_ViewModel.cxx index 03b8ca4a1..c1354eeab 100644 --- a/src/SVTK/SVTK_ViewModel.cxx +++ b/src/SVTK/SVTK_ViewModel.cxx @@ -59,18 +59,25 @@ // 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 @@ -78,6 +85,10 @@ SVTK_Viewer return myBgColor; } +/*! + Changes background color + \param theColor - new background color +*/ void SVTK_Viewer ::setBackgroundColor( const QColor& theColor ) @@ -97,7 +108,9 @@ SVTK_Viewer 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 ) @@ -111,16 +124,27 @@ 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; @@ -136,7 +160,10 @@ void SVTK_Viewer::setTrihedronSize( const int theSize, const bool theRelative ) } } -//========================================================== +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -154,7 +181,9 @@ void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager) this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*))); } -//========================================================== +/*! + Builds popup for vtk viewer +*/ void SVTK_Viewer ::contextMenuPopup( QPopupMenu* thePopup ) @@ -171,25 +200,34 @@ SVTK_Viewer } } -//========================================================== +/*! + 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) @@ -198,7 +236,10 @@ SVTK_Viewer //!! To be done for view windows } -//========================================================== +/*! + Enables/disables selection of many object + \param isEnabled - new state +*/ void SVTK_Viewer ::enableMultiselection(bool isEnable) @@ -207,6 +248,9 @@ SVTK_Viewer //!! To be done for view windows } +/*! + SLOT: called on dump view operation is activated, stores scene to raster file +*/ void SVTK_Viewer ::onDumpView() @@ -215,7 +259,9 @@ SVTK_Viewer aView->onDumpView(); } -//========================================================== +/*! + SLOT: called if background color is to be changed changed, passes new color to view port +*/ void SVTK_Viewer ::onChangeBgColor() @@ -226,7 +272,9 @@ SVTK_Viewer } } -//========================================================== +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ void SVTK_Viewer ::onShowToolbar() @@ -239,7 +287,10 @@ SVTK_Viewer } } -//========================================================== +/*! + Display presentation + \param prs - presentation +*/ void SVTK_Viewer ::Display( const SALOME_VTKPrs* prs ) @@ -284,7 +335,11 @@ SVTK_Viewer } } -//========================================================== +/*! + Erase presentation + \param prs - presentation + \param forced - removes object from view +*/ void SVTK_Viewer ::Erase( const SALOME_VTKPrs* prs, const bool forced ) @@ -324,8 +379,11 @@ SVTK_Viewer } } } - -//========================================================== + +/*! + Erase all presentations + \param forced - removes all objects from view +*/ void SVTK_Viewer ::EraseAll( const bool forced ) @@ -370,7 +428,10 @@ SVTK_Viewer Repaint(); } -//========================================================== +/*! + Create presentation corresponding to the entry + \param entry - entry +*/ SALOME_Prs* SVTK_Viewer ::CreatePrs( const char* entry ) @@ -394,7 +455,9 @@ SVTK_Viewer return prs; } -//========================================================== +/*! + Auxiliary method called before displaying of objects +*/ void SVTK_Viewer ::BeforeDisplay( SALOME_Displayer* d ) @@ -402,14 +465,19 @@ SVTK_Viewer d->BeforeDisplay( this, SALOME_VTKViewType() ); } -//========================================================== +/*! + Auxiliary method called after displaying of objects +*/ void SVTK_Viewer::AfterDisplay( SALOME_Displayer* d ) { d->AfterDisplay( this, SALOME_VTKViewType() ); } -//========================================================== +/*! + \return true if object is displayed in viewer + \param obj - object to be checked +*/ bool SVTK_Viewer ::isVisible( const Handle(SALOME_InteractiveObject)& io ) @@ -425,7 +493,9 @@ SVTK_Viewer return true; } -//========================================================== +/*! + Updates current viewer +*/ void SVTK_Viewer ::Repaint() diff --git a/src/SVTK/SVTK_ViewModelBase.h b/src/SVTK/SVTK_ViewModelBase.h index d58827229..f45ed5e2f 100644 --- a/src/SVTK/SVTK_ViewModelBase.h +++ b/src/SVTK/SVTK_ViewModelBase.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef SVTK_SELECTIONCHANGED_H #define SVTK_SELECTIONCHANGED_H diff --git a/src/SVTK/SVTK_ViewWindow.cxx b/src/SVTK/SVTK_ViewWindow.cxx index 69e5eae4a..af284a64b 100755 --- a/src/SVTK/SVTK_ViewWindow.cxx +++ b/src/SVTK/SVTK_ViewWindow.cxx @@ -28,6 +28,7 @@ #include #include #include +#include #include "QtxAction.h" @@ -53,13 +54,16 @@ #include "SVTK_InteractorStyle.h" #include "SVTK_RenderWindowInteractor.h" #include "SVTK_GenericRenderWindowInteractor.h" +#include "SVTK_CubeAxesActor2D.h" #include "SALOME_ListIteratorOfListIO.hxx" #include "VTKViewer_Algorithm.h" #include "SVTK_Functor.h" -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_ViewWindow ::SVTK_ViewWindow(SUIT_Desktop* theDesktop): SUIT_ViewWindow(theDesktop), @@ -67,6 +71,9 @@ SVTK_ViewWindow myView(NULL) {} +/*! + To initialize #SVTK_ViewWindow instance +*/ void SVTK_ViewWindow ::Initialize(SVTK_ViewModelBase* theModel) @@ -106,6 +113,9 @@ SVTK_ViewWindow } } +/*! + To initialize #SVTK_ViewWindow instance +*/ void SVTK_ViewWindow ::Initialize(SVTK_View* theView, @@ -129,12 +139,17 @@ SVTK_ViewWindow theModel,SLOT(onSelectionChanged())); } +/*! + Destructor +*/ SVTK_ViewWindow ::~SVTK_ViewWindow() {} -//---------------------------------------------------------------------------- +/*! + \return corresponding view +*/ SVTK_View* SVTK_ViewWindow ::getView() @@ -142,6 +157,9 @@ SVTK_ViewWindow return myView; } +/*! + \return corresponding vtk main window +*/ SVTK_MainWindow* SVTK_ViewWindow ::getMainWindow() @@ -149,6 +167,9 @@ SVTK_ViewWindow return myMainWindow; } +/*! + \return corresponding vtk render window +*/ vtkRenderWindow* SVTK_ViewWindow ::getRenderWindow() @@ -156,6 +177,9 @@ SVTK_ViewWindow return getMainWindow()->getRenderWindow(); } +/*! + \return corresponding vtk render window interactor +*/ vtkRenderWindowInteractor* SVTK_ViewWindow ::getInteractor() @@ -163,6 +187,9 @@ SVTK_ViewWindow return getMainWindow()->getInteractor(); } +/*! + \return corresponding vtk renderer +*/ vtkRenderer* SVTK_ViewWindow ::getRenderer() @@ -170,6 +197,9 @@ SVTK_ViewWindow return myMainWindow->getRenderer(); } +/*! + \return corresponding vtk selector +*/ SVTK_Selector* SVTK_ViewWindow ::GetSelector() @@ -177,8 +207,9 @@ SVTK_ViewWindow return myMainWindow->GetSelector(); } - -//---------------------------------------------------------------------------- +/*! + Processes transformation "front view" +*/ void SVTK_ViewWindow ::onFrontView() @@ -186,7 +217,9 @@ SVTK_ViewWindow myMainWindow->onFrontView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "back view" +*/ void SVTK_ViewWindow ::onBackView() @@ -194,7 +227,9 @@ SVTK_ViewWindow myMainWindow->onBackView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "top view" +*/ void SVTK_ViewWindow ::onTopView() @@ -202,7 +237,9 @@ SVTK_ViewWindow myMainWindow->onTopView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "bottom view" +*/ void SVTK_ViewWindow ::onBottomView() @@ -210,7 +247,9 @@ SVTK_ViewWindow myMainWindow->onBottomView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "left view" +*/ void SVTK_ViewWindow ::onLeftView() @@ -218,7 +257,9 @@ SVTK_ViewWindow myMainWindow->onLeftView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "right view" +*/ void SVTK_ViewWindow ::onRightView() @@ -226,7 +267,9 @@ SVTK_ViewWindow myMainWindow->onRightView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "reset view": sets default orientation of viewport camera +*/ void SVTK_ViewWindow ::onResetView() @@ -234,7 +277,9 @@ SVTK_ViewWindow myMainWindow->onResetView(); } -//---------------------------------------------------------------------------- +/*! + Processes transformation "fit all" +*/ void SVTK_ViewWindow ::onFitAll() @@ -242,7 +287,9 @@ SVTK_ViewWindow myMainWindow->onFitAll(); } -//---------------------------------------------------------------- +/*! + SLOT: called if selection is changed +*/ void SVTK_ViewWindow ::onSelectionChanged() @@ -250,7 +297,10 @@ SVTK_ViewWindow myView->onSelectionChanged(); } -//---------------------------------------------------------------- +/*! + Change selection mode + \param theMode - new selection mode +*/ void SVTK_ViewWindow ::SetSelectionMode(Selection_Mode theMode) @@ -258,7 +308,9 @@ SVTK_ViewWindow myMainWindow->SetSelectionMode( theMode ); } -//---------------------------------------------------------------- +/*! + \return selection mode +*/ Selection_Mode SVTK_ViewWindow ::SelectionMode() const @@ -266,7 +318,9 @@ SVTK_ViewWindow return myMainWindow->SelectionMode(); } -//---------------------------------------------------------------- +/*! + Unhilights all objects in viewer +*/ void SVTK_ViewWindow ::unHighlightAll() @@ -274,7 +328,12 @@ SVTK_ViewWindow myView->unHighlightAll(); } -//---------------------------------------------------------------- +/*! + Hilights/unhilights object in viewer + \param theIO - object to be updated + \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted + \param theIsUpdate - update current viewer +*/ void SVTK_ViewWindow ::highlight(const Handle(SALOME_InteractiveObject)& theIO, @@ -284,7 +343,10 @@ SVTK_ViewWindow myView->highlight( theIO, theIsHighlight, theIsUpdate ); } -//---------------------------------------------------------------- +/*! + \return true if object is in viewer or in collector + \param theIO - object to be checked +*/ bool SVTK_ViewWindow ::isInViewer( const Handle(SALOME_InteractiveObject)& theIO ) @@ -292,7 +354,10 @@ SVTK_ViewWindow return myView->isInViewer( theIO ); } -//---------------------------------------------------------------- +/*! + \return true if object is displayed in viewer + \param theIO - object to be checked +*/ bool SVTK_ViewWindow ::isVisible( const Handle(SALOME_InteractiveObject)& theIO ) @@ -300,7 +365,22 @@ SVTK_ViewWindow return myView->isVisible( theIO ); } -//---------------------------------------------------------------- +/*! + Display object + \param theEntry - entry that corresponds to intractive objects +*/ +Handle(SALOME_InteractiveObject) +SVTK_ViewWindow +::FindIObject(const char* theEntry) +{ + return myView->FindIObject(theEntry); +} + +/*! + Display object + \param theIO - object + \param theImmediatly - update viewer +*/ void SVTK_ViewWindow ::Display(const Handle(SALOME_InteractiveObject)& theIO, @@ -309,6 +389,11 @@ SVTK_ViewWindow myView->Display(theIO,theImmediatly); } +/*! + Erase object + \param theIO - object + \param theImmediatly - update viewer +*/ void SVTK_ViewWindow ::Erase(const Handle(SALOME_InteractiveObject)& theIO, @@ -317,6 +402,10 @@ SVTK_ViewWindow myView->Erase(theIO,theImmediatly); } +/*! + Display only passed object + \param theIO - object +*/ void SVTK_ViewWindow ::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIO) @@ -324,6 +413,9 @@ SVTK_ViewWindow myView->DisplayOnly(theIO); } +/*! + Display all objects in view +*/ void SVTK_ViewWindow ::DisplayAll() @@ -331,6 +423,9 @@ SVTK_ViewWindow myView->DisplayAll(); } +/*! + Erase all objects in view +*/ void SVTK_ViewWindow ::EraseAll() @@ -338,7 +433,10 @@ SVTK_ViewWindow myView->EraseAll(); } -//---------------------------------------------------------------------------- +/*! + Sets background color + \param color - new background color +*/ void SVTK_ViewWindow ::setBackgroundColor( const QColor& color ) @@ -346,7 +444,9 @@ SVTK_ViewWindow myMainWindow->SetBackgroundColor( color ); } -//---------------------------------------------------------------------------- +/*! + \return background color of viewer +*/ QColor SVTK_ViewWindow ::backgroundColor() const @@ -354,7 +454,9 @@ SVTK_ViewWindow return myMainWindow->BackgroundColor(); } -//---------------------------------------------------------------------------- +/*! + Updates current viewer +*/ void SVTK_ViewWindow ::Repaint(bool theUpdateTrihedron) @@ -362,7 +464,9 @@ SVTK_ViewWindow myMainWindow->Repaint( theUpdateTrihedron ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::GetScale +*/ void SVTK_ViewWindow ::GetScale( double theScale[3] ) @@ -370,7 +474,9 @@ SVTK_ViewWindow myMainWindow->GetScale( theScale ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetScale +*/ void SVTK_ViewWindow ::SetScale( double theScale[3] ) @@ -378,7 +484,9 @@ SVTK_ViewWindow myMainWindow->SetScale( theScale ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::IsTrihedronDisplayed +*/ bool SVTK_ViewWindow ::isTrihedronDisplayed() @@ -386,6 +494,9 @@ SVTK_ViewWindow return myMainWindow->IsTrihedronDisplayed(); } +/*! + Redirect the request to #SVTK_Renderer::IsCubeAxesDisplayed +*/ bool SVTK_ViewWindow ::isCubeAxesDisplayed() @@ -393,7 +504,9 @@ SVTK_ViewWindow return myMainWindow->IsCubeAxesDisplayed(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::OnViewTrihedron +*/ void SVTK_ViewWindow ::onViewTrihedron() @@ -401,6 +514,9 @@ SVTK_ViewWindow myMainWindow->onViewTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::OnViewCubeAxes +*/ void SVTK_ViewWindow ::onViewCubeAxes() @@ -408,7 +524,9 @@ SVTK_ViewWindow myMainWindow->onViewCubeAxes(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::GetTrihedron +*/ VTKViewer_Trihedron* SVTK_ViewWindow:: GetTrihedron() @@ -416,6 +534,9 @@ GetTrihedron() return myMainWindow->GetTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::GetCubeAxes +*/ SVTK_CubeAxesActor2D* SVTK_ViewWindow ::GetCubeAxes() @@ -423,6 +544,9 @@ SVTK_ViewWindow return myMainWindow->GetCubeAxes(); } +/*! + \return trihedron size +*/ int SVTK_ViewWindow ::GetTrihedronSize() const @@ -430,6 +554,11 @@ SVTK_ViewWindow 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) @@ -447,7 +576,9 @@ SVTK_ViewWindow myMainWindow->AdjustActors(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::OnAdjustTrihedron +*/ void SVTK_ViewWindow ::onAdjustTrihedron() @@ -455,6 +586,9 @@ SVTK_ViewWindow myMainWindow->onAdjustTrihedron(); } +/*! + Redirect the request to #SVTK_Renderer::OnAdjustCubeAxes +*/ void SVTK_ViewWindow ::onAdjustCubeAxes() @@ -462,7 +596,9 @@ SVTK_ViewWindow myMainWindow->onAdjustCubeAxes(); } -//======================================================================= +/*! + Emits key pressed +*/ void SVTK_ViewWindow ::onKeyPressed(QKeyEvent* event) @@ -470,7 +606,9 @@ SVTK_ViewWindow emit keyPressed( this, event ); } -//======================================================================= +/*! + Emits key released +*/ void SVTK_ViewWindow ::onKeyReleased(QKeyEvent* event) @@ -478,7 +616,9 @@ SVTK_ViewWindow emit keyReleased( this, event ); } -//======================================================================= +/*! + Emits mouse pressed +*/ void SVTK_ViewWindow ::onMousePressed(QMouseEvent* event) @@ -486,7 +626,9 @@ SVTK_ViewWindow emit mousePressed(this, event); } -//======================================================================= +/*! + Emits mouse released +*/ void SVTK_ViewWindow ::onMouseReleased(QMouseEvent* event) @@ -494,7 +636,9 @@ SVTK_ViewWindow emit mouseReleased( this, event ); } -//======================================================================= +/*! + Emits mouse moving +*/ void SVTK_ViewWindow ::onMouseMoving(QMouseEvent* event) @@ -502,7 +646,9 @@ SVTK_ViewWindow emit mouseMoving( this, event ); } -//======================================================================= +/*! + Emits mouse double clicked +*/ void SVTK_ViewWindow ::onMouseDoubleClicked( QMouseEvent* event ) @@ -510,7 +656,9 @@ SVTK_ViewWindow emit mouseDoubleClicked( this, event ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::AddActor +*/ void SVTK_ViewWindow ::AddActor( VTKViewer_Actor* theActor, @@ -519,7 +667,9 @@ SVTK_ViewWindow myMainWindow->AddActor( theActor, theUpdate ); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::RemoveActor +*/ void SVTK_ViewWindow ::RemoveActor( VTKViewer_Actor* theActor, @@ -528,7 +678,9 @@ SVTK_ViewWindow myMainWindow->RemoveActor( theActor, theUpdate ); } -//---------------------------------------------------------------------------- +/*! + \return QImage, containing all scene rendering in window +*/ QImage SVTK_ViewWindow ::dumpView() @@ -536,7 +688,9 @@ SVTK_ViewWindow return myMainWindow->dumpView(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionProp +*/ void SVTK_ViewWindow ::SetSelectionProp(const double& theRed, @@ -547,7 +701,9 @@ SVTK_ViewWindow myView->SetSelectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionProp +*/ void SVTK_ViewWindow ::SetPreselectionProp(const double& theRed, @@ -558,7 +714,9 @@ SVTK_ViewWindow myView->SetPreselectionProp(theRed,theGreen,theBlue,theWidth); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to #SVTK_Renderer::SetSelectionTolerance +*/ void SVTK_ViewWindow ::SetSelectionTolerance(const double& theTolNodes, @@ -567,7 +725,6 @@ SVTK_ViewWindow myView->SetSelectionTolerance(theTolNodes,theTolItems); } -//---------------------------------------------------------------------------- int convertAction( const int accelAction ) { switch ( accelAction ) { @@ -585,17 +742,155 @@ int convertAction( const int accelAction ) return accelAction; } -//---------------------------------------------------------------------------- -void +/*! + Performs action + \param accelAction - action +*/ +bool SVTK_ViewWindow ::action( const int accelAction ) { + if ( !myMainWindow->hasFocus() ) + return false; if ( accelAction == SUIT_Accel::ZoomFit ) onFitAll(); else { int anEvent = convertAction( accelAction ); myMainWindow->InvokeEvent( anEvent, 0 ); } + return true; +} + +// old visual parameters had 13 values. New format added additional +// 76 values for graduated axes, so both numbers are processed. +const int nNormalParams = 13; // number of view windows parameters excluding graduated axes params +const int nGradAxisParams = 25; // number of parameters of ONE graduated axis (X, Y, or Z) +const int nAllParams = nNormalParams + 3*nGradAxisParams + 1; // number of all visual parameters + +/*! The method returns visual parameters of a graduated axis actor (x,y,z axis of graduated axes) + */ +QString getGradAxisVisualParams( vtkAxisActor2D* actor ) +{ + QString params; + if ( !actor ) + return params; + + // Name + bool isVisible = actor->GetTitleVisibility(); + QString title ( actor->GetTitle() ); + vtkFloatingPointType color[ 3 ]; + int font = VTK_ARIAL; + int bold = 0; + int italic = 0; + int shadow = 0; + + vtkTextProperty* txtProp = actor->GetTitleTextProperty(); + if ( txtProp ) + { + txtProp->GetColor( color ); + font = txtProp->GetFontFamily(); + bold = txtProp->GetBold(); + italic = txtProp->GetItalic(); + shadow = txtProp->GetShadow(); + } + params.sprintf( "* Graduated Axis: * Name *%u*%s*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible, + title.latin1(), color[0], color[1], color[2], font, bold, italic, shadow ); + + // Labels + isVisible = actor->GetLabelVisibility(); + int labels = actor->GetNumberOfLabels(); + int offset = actor->GetTickOffset(); + font = VTK_ARIAL; + bold = false; + italic = false; + shadow = false; + + txtProp = actor->GetLabelTextProperty(); + if ( txtProp ) + { + txtProp->GetColor( color ); + font = txtProp->GetFontFamily(); + bold = txtProp->GetBold(); + italic = txtProp->GetItalic(); + shadow = txtProp->GetShadow(); + } + params += QString().sprintf( "* Labels *%u*%u*%u*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible, labels, offset, + color[0], color[1], color[2], font, bold, italic, shadow ); + + // Tick marks + isVisible = actor->GetTickVisibility(); + int length = actor->GetTickLength(); + + params += QString().sprintf( "* Tick marks *%u*%u", isVisible, length ); + + return params; +} + +/*! The method restores visual parameters of a graduated axis actor (x,y,z axis) + */ +void setGradAxisVisualParams( vtkAxisActor2D* actor, const QString& params ) +{ + if ( !actor ) + return; + + QStringList paramsLst = QStringList::split( '*', params, true ); + + if ( paramsLst.size() == nGradAxisParams ) { // altogether name, lable, ticks parameters make up 25 values + + // retrieve and set name parameters + bool isVisible = paramsLst[2].toUShort(); + QString title = paramsLst[3]; + vtkFloatingPointType color[3]; + color[0] = paramsLst[4].toDouble(); + color[1] = paramsLst[5].toDouble(); + color[2] = paramsLst[6].toDouble(); + int font = paramsLst[7].toInt(); + int bold = paramsLst[8].toInt(); + int italic = paramsLst[9].toInt(); + int shadow = paramsLst[10].toInt(); + + actor->SetTitleVisibility( isVisible ); + actor->SetTitle( title.latin1() ); + vtkTextProperty* txtProp = actor->GetTitleTextProperty(); + if ( txtProp ) { + txtProp->SetColor( color ); + txtProp->SetFontFamily( font ); + txtProp->SetBold( bold ); + txtProp->SetItalic( italic ); + txtProp->SetShadow( shadow ); + } + + // retrieve and set lable parameters + isVisible = paramsLst[12].toUShort(); + int labels = paramsLst[13].toInt(); + int offset = paramsLst[14].toInt(); + color[0] = paramsLst[15].toDouble(); + color[1] = paramsLst[16].toDouble(); + color[2] = paramsLst[17].toDouble(); + font = paramsLst[18].toInt(); + bold = paramsLst[19].toInt(); + italic = paramsLst[20].toInt(); + shadow = paramsLst[21].toInt(); + + actor->SetLabelVisibility( isVisible ); + actor->SetNumberOfLabels( labels ); + actor->SetTickOffset( offset ); + txtProp = actor->GetLabelTextProperty(); + if ( txtProp ) { + txtProp->SetColor( color ); + txtProp->SetFontFamily( font ); + txtProp->SetBold( bold ); + txtProp->SetItalic( italic ); + txtProp->SetShadow( shadow ); + } + + // retrieve and set tick marks properties + isVisible = paramsLst[23].toUShort(); + int length = paramsLst[24].toInt(); + + actor->SetTickVisibility( isVisible ); + actor->SetTickLength( length ); + } } /*! The method returns the visual parameters of this view as a formated string @@ -605,7 +900,8 @@ SVTK_ViewWindow ::getVisualParameters() { double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; - + + // save position, focal point, viewUp, scale vtkCamera* camera = getRenderer()->GetActiveCamera(); camera->GetPosition( pos ); camera->GetFocalPoint( focalPnt ); @@ -613,15 +909,28 @@ SVTK_ViewWindow 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 ) @@ -636,14 +945,15 @@ SVTK_ViewWindow } } -/* 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(); @@ -668,20 +978,29 @@ SVTK_ViewWindow 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" ) ) { diff --git a/src/SVTK/SVTK_ViewWindow.h b/src/SVTK/SVTK_ViewWindow.h index 51e50ac45..7e9c83972 100755 --- a/src/SVTK/SVTK_ViewWindow.h +++ b/src/SVTK/SVTK_ViewWindow.h @@ -136,7 +136,7 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow bool isVisible(const Handle(SALOME_InteractiveObject)& theIObject); - /* selection */ + //! Redirect the request to #SVTK_View::FindIObject (to support old code) //---------------------------------------------------------------------------- Handle(SALOME_InteractiveObject) FindIObject(const char* theEntry); @@ -343,7 +343,7 @@ protected: doSetVisualParameters( const QString& ); QImage dumpView(); - virtual void action( const int ); + virtual bool action( const int ); SVTK_View* myView; SVTK_MainWindow* myMainWindow; diff --git a/src/SVTK/resources/SVTK_images.po b/src/SVTK/resources/SVTK_images.po new file mode 100644 index 000000000..4790e54ee --- /dev/null +++ b/src/SVTK/resources/SVTK_images.po @@ -0,0 +1,43 @@ +# 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 \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" diff --git a/src/SVTK/resources/SVTK_msg_en.po b/src/SVTK/resources/SVTK_msg_en.po index eb7db7c20..b7059b2f1 100755 --- a/src/SVTK/resources/SVTK_msg_en.po +++ b/src/SVTK/resources/SVTK_msg_en.po @@ -131,9 +131,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "SVTK_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." @@ -151,3 +148,130 @@ msgstr "Show/Hide trihedron" msgid "DSC_SHOW_TRIHEDRON" msgstr "Show/Hide trihedron in the current view" + +msgid "SVTK_NonIsometricDlg::MEN_SCALING" +msgstr "Scaling" + +msgid "SVTK_NonIsometricDlg::O&K" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Apply" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Cancel" +msgstr "" + +msgid "SVTK_NonIsometricDlg::&Reset" +msgstr "" + +msgid "SVTK_NonIsometricDlg::DLG_TITLE" +msgstr "Scaling" + +msgid "SVTK_NonIsometricDlg::LBL_X" +msgstr "X :" + +msgid "SVTK_NonIsometricDlg::LBL_Y" +msgstr "Y :" + +msgid "SVTK_NonIsometricDlg::LBL_Z" +msgstr "Z :" + +msgid "SVTK_MainWindow::MNU_SVTK_SCALING" +msgstr "Scaling" + +msgid "SVTK_MainWindow::DSC_SVTK_SCALING" +msgstr "Scaling" + +msgid "SVTK_FontWidget::ARIAL" +msgstr "Arial" + +msgid "SVTK_FontWidget::COURIER" +msgstr "Courier" + +msgid "SVTK_FontWidget::TIMES" +msgstr "Times" + +msgid "SVTK_FontWidget::BOLD" +msgstr "Bold" + +msgid "SVTK_FontWidget::ITALIC" +msgstr "Italic" + +msgid "SVTK_FontWidget::SHADOW" +msgstr "Shadow" + +msgid "SVTK_CubeAxesDlg::CAPTION" +msgstr "Graduated axes" + +msgid "SVTK_CubeAxesDlg::X_AXIS" +msgstr "X axis" + +msgid "SVTK_CubeAxesDlg::Y_AXIS" +msgstr "Y axis" + +msgid "SVTK_CubeAxesDlg::Z_AXIS" +msgstr "Z axis" + +msgid "SVTK_CubeAxesDlg::IS_VISIBLE" +msgstr "Is visible" + +msgid "SVTK_AxisWidget::AXIS_NAME" +msgstr "Axis name" + +msgid "SVTK_AxisWidget::IS_VISIBLE" +msgstr "Is visible" + +msgid "SVTK_AxisWidget::NAME" +msgstr "Name" + +msgid "SVTK_AxisWidget::FONT" +msgstr "Font" + +msgid "SVTK_AxisWidget::LABELS" +msgstr "Labels" + +msgid "SVTK_AxisWidget::NUMBER" +msgstr "Number" + +msgid "SVTK_AxisWidget::OFFSET" +msgstr "Offset" + +msgid "SVTK_AxisWidget::TICK_MARKS" +msgstr "Tick marks" + +msgid "SVTK_AxisWidget::LENGTH" +msgstr "Length" + +msgid "SVTK_MainWindow::MNU_SVTK_GRADUATED_AXES" +msgstr "Graduated axes" + +msgid "SVTK_MainWindow::DSC_SVTK_GRADUATED_AXES" +msgstr "Graduated axes" + +msgid "SVTK_MainWindow::MNU_SVTK_UPDATE_RATE" +msgstr "Update rate" + +msgid "SVTK_MainWindow::DSC_SVTK_UPDATE_RATE" +msgstr "Update rate" + +msgid "SVTK_UpdateRateDlg::DLG_TITLE" +msgstr "Update Rate" + +msgid "SVTK_UpdateRateDlg::INPUT_FRAME_TITLE" +msgstr "Enable" + +msgid "SVTK_UpdateRateDlg::DESIRED" +msgstr "Desired Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::STILL" +msgstr "Still Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::INFORMATION_FRAME_TITLE" +msgstr "Rendering Metrics" + +msgid "SVTK_UpdateRateDlg::CURRENT_FPS" +msgstr "Current Update Rate, FPS" + +msgid "SVTK_UpdateRateDlg::NUMBER_CELLS" +msgstr "Number of Cells, -" + diff --git a/src/SalomeApp/Makefile.in b/src/SalomeApp/Makefile.in index 8913a2b44..dc92a6e5b 100755 --- a/src/SalomeApp/Makefile.in +++ b/src/SalomeApp/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : SalomeApp @@ -67,10 +85,10 @@ LIB_CLIENT_IDL = SALOMEDS.idl \ RESOURCES_FILES = SalomeApp.ini \ SalomeApp.xml -CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS) -LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lSalomePrs -L$(KERNEL_ROOT_DIR)/lib/salome -lOpUtil -lSALOMELocalTrace -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@ diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index 9d17c32e6..12dfcd782 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -52,9 +52,8 @@ #include #include -#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" @@ -70,11 +69,6 @@ extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication() return new SalomeApp_Application(); } -/* - Class : SalomeApp_Application - Description : Application containing SalomeApp module or LightApp module -*/ - /*!Constructor.*/ SalomeApp_Application::SalomeApp_Application() : LightApp_Application() @@ -106,10 +100,11 @@ void SalomeApp_Application::createActions() 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" ), @@ -137,7 +132,10 @@ void SalomeApp_Application::createActions() 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 ); @@ -339,6 +337,14 @@ void SalomeApp_Application::onPaste() _PTR(Study) stdDS = study->studyDS(); if(!stdDS) return; + if ( stdDS->GetProperties()->IsLocked() ) { + SUIT_MessageBox::warn1 ( desktop(), + QObject::tr("WRN_WARNING"), + QObject::tr("WRN_STUDY_LOCKED"), + QObject::tr("BUT_OK") ); + return; + } + SALOME_ListIteratorOfListIO it( list ); if(it.More()) { @@ -374,12 +380,8 @@ void SalomeApp_Application::onSelectionChanged() _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry()); if ( so ) { - SALOMEDS_SObject* aSO = dynamic_cast(so.get()); - - if ( aSO ) { canCopy = studyMgr()->CanCopy(so); canPaste = studyMgr()->CanPaste(so); - } } } } @@ -436,10 +438,9 @@ void SalomeApp_Application::onOpenWith() QApplication::restoreOverrideCursor(); } -//======================================================================= -// name : createNewStudy -/*! Purpose : Create new study*/ -//======================================================================= +/*! + Creates new study +*/ SUIT_Study* SalomeApp_Application::createNewStudy() { SalomeApp_Study* aStudy = new SalomeApp_Study( this ); @@ -453,10 +454,9 @@ SUIT_Study* SalomeApp_Application::createNewStudy() return aStudy; } -//======================================================================= -// name : updateCommandsStatus -/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/ -//======================================================================= +/*! + Enable/Disable menu items and toolbar buttons. Rebuild menu +*/ void SalomeApp_Application::updateCommandsStatus() { LightApp_Application::updateCommandsStatus(); @@ -485,10 +485,10 @@ void SalomeApp_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 { @@ -530,11 +530,12 @@ void SalomeApp_Application::onDumpStudy( ) 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 ) @@ -588,6 +589,7 @@ void SalomeApp_Application::onSaveGUIState() updateSavePointDataObjects( study ); objectBrowser()->updateTree( study->root() ); } + updateActions(); } /*!Gets file filter. @@ -845,16 +847,13 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels ) //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 */ @@ -917,6 +916,10 @@ void SalomeApp_Application::onDblClick( QListViewItem* it ) } } +/*! + Creates new view manager + \param type - type of view manager +*/ SUIT_ViewManager* SalomeApp_Application::newViewManager(const QString& type) { return createViewManager(type); @@ -961,6 +964,7 @@ void SalomeApp_Application::onRenameGUIState() if ( !newName.isNull() && !newName.isEmpty() ) { study->setNameOfSavePoint( savePoint, newName ); updateSavePointDataObjects( study ); + objectBrowser()->updateTree( study->root() ); } } @@ -1052,11 +1056,10 @@ void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study ) // 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 @@ -1074,15 +1077,11 @@ void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study ) 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::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 ); } diff --git a/src/SalomeApp/SalomeApp_Application.h b/src/SalomeApp/SalomeApp_Application.h index e8ba1d4b4..083cd6a90 100644 --- a/src/SalomeApp/SalomeApp_Application.h +++ b/src/SalomeApp/SalomeApp_Application.h @@ -38,7 +38,8 @@ class QListViewItem; #endif /*! - Description : Application containing SalomeApp module or LightApp module + \class SalomeApp_Application + \brief Application containing SalomeApp module or LightApp module */ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application @@ -77,6 +78,7 @@ public slots: virtual bool onLoadDoc( const QString& ); virtual void onCopy(); virtual void onPaste(); + void onSaveGUIState();// called from VISU protected slots: void onStudySaved( SUIT_Study* ); @@ -99,14 +101,14 @@ private slots: 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 diff --git a/src/SalomeApp/SalomeApp_DataModel.cxx b/src/SalomeApp/SalomeApp_DataModel.cxx index 79e75ca10..21c0b4aba 100644 --- a/src/SalomeApp/SalomeApp_DataModel.cxx +++ b/src/SalomeApp/SalomeApp_DataModel.cxx @@ -25,14 +25,13 @@ #include #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: @@ -54,13 +53,18 @@ private: SUIT_DataObject* myRoot; }; - +/*! + Constructor +*/ SalomeApp_DataModelSync::SalomeApp_DataModelSync( _PTR( Study ) aStudy, SUIT_DataObject* aRoot ) : myStudy( aStudy ), myRoot( aRoot ) { } +/*! + \return true if kernel object is correct (has non empty name or is reference) +*/ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const { kerPtr refObj; @@ -69,6 +73,13 @@ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const 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, @@ -100,6 +111,10 @@ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so, return nitem; } +/*! + Deletes object with all children + \param p - SUIT object +*/ void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const { if( !p ) @@ -113,22 +128,43 @@ void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const delete p; } +/*! + \return true if objects correspond each other at all + \param p - kernel object + \param q - suit object +*/ bool SalomeApp_DataModelSync::isEqual( const kerPtr& p, const suitPtr& q ) const { - LightApp_DataObject* obj = dynamic_cast( q ); - return ( !p && !q ) || ( obj && isCorrect( p ) && p->GetID().c_str()==obj->entry() ); + LightApp_ModuleObject* lobj = dynamic_cast( q ); + SalomeApp_DataObject* sobj = dynamic_cast( 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& ch ) const { ch.clear(); @@ -137,6 +173,11 @@ void SalomeApp_DataModelSync::children( const kerPtr& obj, QValueList& c ch.append( it->Value() ); } +/*! + Fills list with children of SUIT object + \param p - SUIT object + \param ch - list to be filled +*/ void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList& ch ) const { DataObjectList l; @@ -149,15 +190,26 @@ void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList& c } } +/*! + \return parent of SUIT object + \param p - SUIT object +*/ suitPtr SalomeApp_DataModelSync::parent( const suitPtr& p ) const { return p ? p->parent(): 0; } +/*! + Updates SUIT object + \param p - SUIT object +*/ void SalomeApp_DataModelSync::updateItem( const suitPtr& ) const { } +/*! + Auxiliary function, shows SUIT tree +*/ void showTree( SUIT_DataObject* root ) { qDebug( root ? "" : "" ); @@ -173,27 +225,24 @@ void showTree( SUIT_DataObject* root ) } } -//======================================================================= -// name : SalomeApp_DataModel::SalomeApp_DataModel -/*!Purpose : Constructor*/ -//======================================================================= +/*! + Constructor +*/ SalomeApp_DataModel::SalomeApp_DataModel( CAM_Module* theModule ) : LightApp_DataModel( theModule ) { } -//======================================================================= -// name : SalomeApp_DataModel::~SalomeApp_DataModel -/*! Purpose : Destructor*/ -//======================================================================= +/*! + Destructor +*/ SalomeApp_DataModel::~SalomeApp_DataModel() { } -//================================================================ -// Function : open -/*! Purpose : Open data model*/ -//================================================================ +/*! + Opens data model +*/ bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringList ) { SalomeApp_Study* aDoc = dynamic_cast( study ); @@ -214,20 +263,18 @@ bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringLi return true; } -//================================================================ -// Function : create -/*! Purpose : Create data model*/ -//================================================================ +/*! + Creates data model +*/ bool SalomeApp_DataModel::create( CAM_Study* theStudy ) { update(NULL, (LightApp_Study*)theStudy); return true; } -//================================================================ -// Function : update -/*! Purpose : Update application.*/ -//================================================================ +/*! + Updates application. +*/ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study ) { SalomeApp_Study* aSStudy = dynamic_cast(study); @@ -261,10 +308,9 @@ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study ) updateTree( sobj, aSStudy ); } -//================================================================ -// Function : synchronize -/*! Purpose : synchronizes kernel tree and suit data tree starting from component 'sobj' */ -//================================================================ +/*! + Synchronizes kernel tree and suit data tree starting from component 'sobj' +*/ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sobj, SalomeApp_Study* study ) { if( !study || !study->root() || !sobj ) @@ -272,11 +318,11 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob DataObjectList ch; study->root()->children( ch ); DataObjectList::const_iterator anIt = ch.begin(), aLast = ch.end(); - SalomeApp_DataObject* suitObj = 0; + SUIT_DataObject* suitObj = 0; for( ; anIt!=aLast; anIt++ ) { - SalomeApp_DataObject* dobj = dynamic_cast( *anIt ); - if( dobj && dobj->name()==sobj->GetName().c_str() ) + LightApp_DataObject* dobj = dynamic_cast( *anIt ); + if( dobj && dobj->name() == sobj->GetName().c_str() ) { suitObj = dobj; break; @@ -285,13 +331,15 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob SalomeApp_DataModelSync sync( study->studyDS(), study->root() ); - return ::synchronize( sobj, suitObj, sync ); + if( !suitObj || dynamic_cast( suitObj ) ) + return ::synchronize( 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( synchronize( comp, study ) ); @@ -302,20 +350,17 @@ void SalomeApp_DataModel::updateTree( const _PTR( SComponent )& comp, SalomeApp_ } } -//================================================================ -// Function : getModule -/*! Purpose : gets module*/ -//================================================================ - +/*! + \return module +*/ SalomeApp_Module* SalomeApp_DataModel::getModule() const { return dynamic_cast( module() ); } -//================================================================ -// Function : getStudy -/*! Purpose : gets study */ -//================================================================ +/*! + \return study +*/ SalomeApp_Study* SalomeApp_DataModel::getStudy() const { if(!root()) return 0; @@ -328,10 +373,9 @@ SalomeApp_Study* SalomeApp_DataModel::getStudy() const return aStudy; } -//================================================================ -// Function : getRootEntry -/*! Purpose : returns study entry corresponding to this data model*/ -//================================================================ +/*! + \return study entry corresponding to this data model +*/ QString SalomeApp_DataModel::getRootEntry( SalomeApp_Study* study ) const { QString anEntry; diff --git a/src/SalomeApp/SalomeApp_DataObject.cxx b/src/SalomeApp/SalomeApp_DataObject.cxx index 5bb857865..04d9aaf07 100644 --- a/src/SalomeApp/SalomeApp_DataObject.cxx +++ b/src/SalomeApp/SalomeApp_DataObject.cxx @@ -35,10 +35,6 @@ #include #include -/* - Class: SalomeApp_DataObject - Level: Public -*/ /*!Constructor. Initialize by \a parent*/ SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent ) : LightApp_DataObject( parent ), @@ -333,10 +329,9 @@ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const return val; } -/* - Class: SalomeApp_ModuleObject - Level: Public -*/ + + + /*!Constructor.Initialize by \a parent.*/ SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent ) @@ -373,10 +368,8 @@ QString SalomeApp_ModuleObject::name() const 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 ) @@ -410,11 +403,13 @@ QString SalomeApp_SavePointObject::name() const return myStudy->getNameOfSavePoint( myId ); } +/*!Gets icon picture of object.*/ QPixmap SalomeApp_SavePointObject::icon() const { return QPixmap(); } +/*!Gets tooltip.*/ QString SalomeApp_SavePointObject::toolTip() const { return QObject::tr( "SAVE_POINT_OBJECT_TOOLTIP" ).arg( name() ); diff --git a/src/SalomeApp/SalomeApp_Displayer.cxx b/src/SalomeApp/SalomeApp_Displayer.cxx index 6e2caeda2..03d1f1f78 100644 --- a/src/SalomeApp/SalomeApp_Displayer.cxx +++ b/src/SalomeApp/SalomeApp_Displayer.cxx @@ -30,14 +30,26 @@ #include +/*! + Default constructor +*/ SalomeApp_Displayer::SalomeApp_Displayer() { } +/*! + Destructor +*/ SalomeApp_Displayer::~SalomeApp_Displayer() { } +/*! + Displays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::Display( const QString& entry, const bool updateViewer, SALOME_View* theViewFrame ) { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -59,6 +71,11 @@ void SalomeApp_Displayer::Display( const QString& entry, const bool updateViewer } } +/*! + Redisplays object in view + \param entry - object entry + \param updateViewer - is it necessary to update viewer +*/ void SalomeApp_Displayer::Redisplay( const QString& entry, const bool updateViewer ) { // Remove the object permanently ( == true) @@ -89,6 +106,13 @@ void SalomeApp_Displayer::Redisplay( const QString& entry, const bool updateView } } +/*! + Erases object in view + \param entry - object entry + \param forced - deletes object from viewer (otherwise it will be erased, but cached) + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::Erase( const QString& entry, const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) { @@ -105,6 +129,12 @@ void SalomeApp_Displayer::Erase( const QString& entry, const bool forced, } } +/*! + Erases all objects in view + \param forced - deletes objects from viewer + \param updateViewer - is it necessary to update viewer + \param theViewFrame - view +*/ void SalomeApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -116,6 +146,11 @@ void SalomeApp_Displayer::EraseAll( const bool forced, const bool updateViewer, } } +/*! + \return true if object is displayed in viewer + \param entry - object entry + \param theViewFrame - view +*/ bool SalomeApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); @@ -129,6 +164,9 @@ bool SalomeApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theVie return false; } +/*! + Updates active view +*/ void SalomeApp_Displayer::UpdateViewer() const { SALOME_View* vf = GetActiveView(); @@ -136,6 +174,12 @@ void SalomeApp_Displayer::UpdateViewer() const vf->Repaint(); } +/*! + \return presentation of object, built with help of CreatePrs method + \param entry - object entry + \param theViewFrame - view + \sa CreatePrs() +*/ SALOME_Prs* SalomeApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) { SALOME_Prs* prs = 0; @@ -148,6 +192,9 @@ SALOME_Prs* SalomeApp_Displayer::buildPresentation( const QString& entry, SALOME return prs; } +/*! + \return active view +*/ SALOME_View* SalomeApp_Displayer::GetActiveView() { SUIT_Session* session = SUIT_Session::session(); diff --git a/src/SalomeApp/SalomeApp_EventFilter.cxx b/src/SalomeApp/SalomeApp_EventFilter.cxx index 0db6f5fe3..e21971eaf 100755 --- a/src/SalomeApp/SalomeApp_EventFilter.cxx +++ b/src/SalomeApp/SalomeApp_EventFilter.cxx @@ -38,6 +38,9 @@ SalomeApp_EventFilter::~SalomeApp_EventFilter() qApp->removeEventFilter( this ); } +/*! + Custom event filter +*/ bool SalomeApp_EventFilter::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == SALOME_EVENT ) diff --git a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx index 16b5004ce..6059ff19b 100644 --- a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx +++ b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx @@ -77,5 +77,17 @@ bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e ) /*!Create new SUIT_ExceptionHandler*/ extern "C" SALOMEAPP_EXPORT SUIT_ExceptionHandler* getExceptionHandler() { - return new SalomeApp_ExceptionHandler( true ); + // MSV 2006-04-26: work around PAL12004 "VTK window => SIGFPE Arithmetic Exception Detected" + // We disable FPE signal as it was in earlier versions of SALOME. It is enabled + // only in debug mode if the environment variable DISABLE_FPE is not set to 1. + bool raiseFPE; +#ifdef _DEBUG_ + raiseFPE = true; + char* envDisableFPE = getenv("DISABLE_FPE"); + if (envDisableFPE && atoi(envDisableFPE)) + raiseFPE = false; +#else + raiseFPE = false; +#endif + return new SalomeApp_ExceptionHandler( raiseFPE ); } diff --git a/src/SalomeApp/SalomeApp_ListView.cxx b/src/SalomeApp/SalomeApp_ListView.cxx index 6f3bd20e1..776c83b1b 100644 --- a/src/SalomeApp/SalomeApp_ListView.cxx +++ b/src/SalomeApp/SalomeApp_ListView.cxx @@ -27,14 +27,9 @@ using namespace std; -////////////////////////////////////////////////////////////////////// -// SalomeApp_ListView class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : computeEditGeometry -/*! Purpose : static function - used for resizing editing widget*/ -//================================================================ +/*! + Used for resizing editing widget +*/ void computeEditGeometry(SalomeApp_ListViewItem* theItem, SalomeApp_EntityEdit* theWidget) { @@ -61,10 +56,9 @@ void computeEditGeometry(SalomeApp_ListViewItem* theItem, theWidget->setGeometry(aX, aY, aW, aH); } -//================================================================ -// Function : SalomeApp_ListView::SalomeApp_ListView -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListView::SalomeApp_ListView( QWidget* parent ) : QtxListView( parent ) { @@ -88,10 +82,9 @@ SalomeApp_ListView::SalomeApp_ListView( QWidget* parent ) this, SLOT(onHeaderSizeChange(int, int, int))); } -//================================================================ -// Function : SalomeApp_ListView::~SalomeApp_ListView -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_ListView::~SalomeApp_ListView() { if (myEdit) { @@ -101,10 +94,9 @@ SalomeApp_ListView::~SalomeApp_ListView() myEditedItem = 0; } -//================================================================ -// Function : SalomeApp_ListView::updateViewer -/*! Purpose : updates all data viewer*/ -//================================================================ +/*! + Updates all data viewer +*/ void SalomeApp_ListView::updateViewer() { // temporary disconnecting selection changed SIGNAL @@ -118,10 +110,9 @@ void SalomeApp_ListView::updateViewer() emit selectionChanged(); } -//================================================================ -// Function : SalomeApp_ListView::updateSelected -/*! Purpose : updates currently selected item(s)*/ -//================================================================ +/*! + Updates currently selected item(s) +*/ void SalomeApp_ListView::updateSelected() { // temporary disconnecting selection changed SIGNAL @@ -135,19 +126,17 @@ void SalomeApp_ListView::updateSelected() emit selectionChanged(); } -//================================================================ -// Function : SalomeApp_ListView::popupClientType -/*! Purpose : returns popup client type*/ -//================================================================ +/*! + Returns popup client type +*/ QString SalomeApp_ListView::popupClientType() const { return "SalomeApp_ListView"; } -//================================================================ -// Function : SalomeApp_ListView::contextMenuPopup -/*! Purpose : fills popup menu with items*/ -//================================================================ +/*! + Fills popup menu with items +*/ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup ) { if (aPopup) { @@ -155,10 +144,9 @@ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup ) } } -//================================================================ -// Function : SalomeApp_ListView::clear -/*! Purpose : clears view*/ -//================================================================ +/*! + Clears view +*/ void SalomeApp_ListView::clear() { if (myEdit) { @@ -169,28 +157,25 @@ void SalomeApp_ListView::clear() QListView::clear(); } -//================================================================ -// Function : SalomeApp_ListView::isMouseEnabled -/*! Purpose : returms true if mouse events are enabled*/ -//================================================================ +/*! + \return true if mouse events are enabled +*/ bool SalomeApp_ListView::isMouseEnabled() { return myMouseEnabled; } -//================================================================ -// Function : SalomeApp_ListView::enableMouse -// Purpose : enabled/disables mouse events (excluding MouseMove) -//================================================================ +/*! + Enables/disables mouse events (excluding MouseMove) +*/ void SalomeApp_ListView::enableMouse(bool enable) { myMouseEnabled = enable; } -//================================================================ -// Function : SalomeApp_ListView::eventFilter -/*! Purpose : event filter*/ -//================================================================ +/*! + Event filter +*/ bool SalomeApp_ListView::eventFilter(QObject* object, QEvent* event) { if (object == viewport() && @@ -203,10 +188,9 @@ bool SalomeApp_ListView::eventFilter(QObject* object, QEvent* event) return QListView::eventFilter(object, event); } -//================================================================ -// Function : SalomeApp_ListView::enableEditing -/*! Purpose : setting editing of items availbale/not available*/ -//================================================================ +/*! + Setting editing of items availbale/not available +*/ void SalomeApp_ListView::enableEditing(bool theFlag) { myEditingEnabled = theFlag; @@ -219,28 +203,25 @@ void SalomeApp_ListView::enableEditing(bool theFlag) } } -//================================================================ -// Function : SalomeApp_ListView::isEnableEditing -/*! Purpose : says if editing is enabled*/ -//================================================================ +/*! + Says if editing is enabled +*/ bool SalomeApp_ListView::isEnableEditing() { return myEditingEnabled; } -//================================================================ -// Function : SalomeApp_ListView::accept -/*! Purpose : calls finishEditing(true)...*/ -//================================================================ +/*! + Calls finishEditing(true)... +*/ void SalomeApp_ListView::accept() { finishEditing(true); } -//================================================================ -// Function : QAD_ListView::onSelectionChanged -/*! Purpose : slot, called when selection changed in List Viewer*/ -//================================================================ +/*! + Slot, called when selection changed in List Viewer +*/ void SalomeApp_ListView::onSelectionChanged() { if (myEdit) { @@ -271,10 +252,9 @@ void SalomeApp_ListView::onSelectionChanged() } } -//================================================================ -// Function : SalomeApp_ListView::resizeEvent -/*! Purpose : called when Data Viewer is resized*/ -//================================================================ +/*! + Called when Data Viewer is resized +*/ void SalomeApp_ListView::resizeEvent( QResizeEvent * e) { QListView::resizeEvent(e); @@ -285,10 +265,9 @@ void SalomeApp_ListView::resizeEvent( QResizeEvent * e) updateContents(); } -//================================================================ -// Function : SalomeApp_ListView::onHeaderSizeChange -/*! Purpose : slot, called when columns sizes are changed*/ -//================================================================ +/*! + Slot, called when columns sizes are changed +*/ void SalomeApp_ListView::onHeaderSizeChange(int, int, int) { int aW = columnWidth(columns()-1); @@ -297,10 +276,9 @@ void SalomeApp_ListView::onHeaderSizeChange(int, int, int) setColumnWidth(columns()-1, width() - frameWidth() * 2 - aX - 1); } -//================================================================ -// Function : SalomeApp_ListView::viewportPaintEvent -/*! Purpose : handler for paint event*/ -//================================================================ +/*! + Handler for paint event +*/ void SalomeApp_ListView::viewportPaintEvent(QPaintEvent* e) { QListView::viewportPaintEvent(e); @@ -309,28 +287,25 @@ void SalomeApp_ListView::viewportPaintEvent(QPaintEvent* e) } } -//================================================================ -// Function : SalomeApp_ListView::onEditOk -/*! Purpose : called when user finishes in editing of item*/ -//================================================================ +/*! + Called when user finishes in editing of item +*/ void SalomeApp_ListView::onEditOk() { finishEditing(true); } -//================================================================ -// Function : SalomeApp_ListView::onEditCancel -/*! Purpose : called when user cancels item editing*/ -//================================================================ +/*! + Called when user cancels item editing +*/ void SalomeApp_ListView::onEditCancel() { finishEditing(false); } -//================================================================ -// Function : SalomeApp_ListView::finishEditing -/*! Purpose : finishes editing of entity*/ -//================================================================ +/*! + Finishes editing of entity +*/ UpdateType SalomeApp_ListView::finishEditing(bool ok) { UpdateType aNeedsUpdate = utCancel; @@ -392,12 +367,10 @@ UpdateType SalomeApp_ListView::finishEditing(bool ok) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListView::tip -/*! Purpose : gets current tooltip for list view - * \retval valid rect in success - */ -//================================================================ +/*! + \return current tooltip for list view + \retval valid rect in success +*/ QRect SalomeApp_ListView::tip(QPoint aPos, QString& aText, QRect& dspRect, @@ -429,24 +402,18 @@ QRect SalomeApp_ListView::tip(QPoint aPos, return result; } -////////////////////////////////////////////////////////////////////// -// SalomeApp_ListViewItem Class Implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent) : QListViewItem( parent ) { init(); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after) : QListViewItem( parent, after ) @@ -454,10 +421,9 @@ QListViewItem( parent, after ) init(); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, const QString& theName, const bool theEditable) : @@ -467,10 +433,9 @@ QListViewItem(parent, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, const QString& theName, const QString& theValue, @@ -481,10 +446,9 @@ QListViewItem(parent, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, const QString& theName, const bool theEditable) : @@ -494,10 +458,9 @@ QListViewItem(parent, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -508,10 +471,9 @@ QListViewItem(parent, after, theName) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -523,10 +485,9 @@ QListViewItem(parent, after, theName) } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, const QString& theName, const QString& theValue, @@ -538,10 +499,9 @@ QListViewItem(parent, theName, theValue) } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -553,10 +513,9 @@ QListViewItem(parent, after, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent, SalomeApp_ListViewItem* after, const QString& theName, @@ -568,18 +527,16 @@ QListViewItem(parent, after, theName, theValue) setEditable(theEditable); } -//================================================================ -// Function : SalomeApp_ListViewItem::~SalomeApp_ListViewItem -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_ListViewItem::~SalomeApp_ListViewItem() { } -//================================================================ -// Function : SalomeApp_ListViewItem::init -/*! Purpose : initialization*/ -//================================================================ +/*! + Initialization +*/ void SalomeApp_ListViewItem::init() { myEditable = false; @@ -590,19 +547,17 @@ void SalomeApp_ListViewItem::init() myUserType = -1; } -//================================================================ -// Function : SalomeApp_ListViewItem::getName -/*! Purpose : as default returns text in the first column*/ -//================================================================ +/*! + \return text in the first column +*/ QString SalomeApp_ListViewItem::getName() const { return ( listView()->columns() > 0 ) ? text(0) : QString(""); } -//================================================================ -// Function : SalomeApp_ListViewItem::setName -/*! Purpose : as default sets text in the first column*/ -//================================================================ +/*! + Sets text in the first column +*/ UpdateType SalomeApp_ListViewItem::setName(const QString& theName) { UpdateType aNeedsUpdate = utCancel; @@ -613,19 +568,17 @@ UpdateType SalomeApp_ListViewItem::setName(const QString& theName) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::getValue -/*! Purpose : as default returns text in the second column*/ -//================================================================ +/*! + \return text in the second column +*/ QString SalomeApp_ListViewItem::getValue() const { return ( listView()->columns() > 1 ) ? text(1) : QString(""); } -//================================================================ -// Function : SalomeApp_ListViewItem::setValue -/*! Purpose : as default sets text in the second column*/ -//================================================================ +/*! + Sets text in the second column +*/ UpdateType SalomeApp_ListViewItem::setValue(const QString& theValue) { UpdateType aNeedsUpdate = utCancel; @@ -636,10 +589,9 @@ UpdateType SalomeApp_ListViewItem::setValue(const QString& theValue) return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::fullName -/*! Purpose : returns full path to the entity from the root*/ -//================================================================ +/*! + \return full path to the entity from the root +*/ QString SalomeApp_ListViewItem::fullName() { QString aFullName = getName(); @@ -651,10 +603,9 @@ QString SalomeApp_ListViewItem::fullName() return aFullName; } -//================================================================ -// Function : SalomeApp_ListViewItem::openAllLevels -/*! Purpose : expands all entities beginning from this level*/ -//================================================================ +/*! + expands all entities beginning from this level +*/ void SalomeApp_ListViewItem::openAllLevels() { setOpen(true); @@ -665,10 +616,9 @@ void SalomeApp_ListViewItem::openAllLevels() } } -//================================================================ -// Function : SalomeApp_ListViewItem::updateAllLevels -/*! Purpose : update all entites beginning from this level*/ -//================================================================ +/*! + update all entites beginning from this level +*/ void SalomeApp_ListViewItem::updateAllLevels() { SalomeApp_ListViewItem* aChild = (SalomeApp_ListViewItem*)firstChild(); @@ -678,145 +628,121 @@ void SalomeApp_ListViewItem::updateAllLevels() } } -//================================================================ -// Function : SalomeApp_EditBox::isEditable -/*! Purpose : return true if entity is editable*/ -//================================================================ +/*! + \return true if entity is editable +*/ bool SalomeApp_ListViewItem::isEditable() const { return myEditable; } -//================================================================ -// Function : SalomeApp_ListViewItem::setEditable -/*! Purpose : sets editable flag fo the entity*/ -//================================================================ +/*! + Sets editable flag fo the entity +*/ void SalomeApp_ListViewItem::setEditable(bool theEditable) { myEditable = theEditable; } -//================================================================ -// Function : SalomeApp_ListViewItem::isAccepted -/*! Purpose : returns true if entitiy is accepted after editing*/ -//================================================================ +/*! + \return true if entitiy is accepted after editing +*/ bool SalomeApp_ListViewItem::isAccepted() const { return myAccepted; } -//================================================================ -// Function : SalomeApp_ListViewItem::setAccepted -/*! Purpose : set entitiy accepted or not after editing*/ -//================================================================ +/*! + Sets entitiy accepted or not after editing +*/ void SalomeApp_ListViewItem::setAccepted(bool theAccepted) { myAccepted = theAccepted; } -//================================================================ -// Function : SalomeApp_ListViewItem::getEditingType -/*! Purpose : - * \retval type of edit control (default is edit box) - * \li 0 - edit box - * \li 1 - combo box - * \li 2 - editable combo box - */ -//================================================================ +/*! + \retval type of edit control (default is edit box) + \li 0 - edit box + \li 1 - combo box + \li 2 - editable combo box +*/ int SalomeApp_ListViewItem::getEditingType() { return myEditingType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setEditingType -/*! Purpose : - * \retval type of edit control (negative value means none) - * \li 0 - edit box - * \li 1 - combo box - * \li 2 - editable combo box - */ -//================================================================ +/*! + \retval type of edit control (negative value means none) + \li 0 - edit box + \li 1 - combo box + \li 2 - editable combo box +*/ void SalomeApp_ListViewItem::setEditingType(const int type) { myEditingType = type; } -//================================================================ -// Function : SalomeApp_ListViewItem::getEditedColumn -// Purpose : /*! \retval edited column, default is last column - * negative value means there are no editable columns - */ -//================================================================ + negative value means there are no editable columns +*/ int SalomeApp_ListViewItem::getEditedColumn() { return listView()->columns()-1; } -//================================================================ -// Function : SalomeApp_ListViewItem::getValueType -// Purpose : -/*!\retval type of edited value (string, int, double) - * default is string - */ -//================================================================ +/*! + \retval type of edited value (string, int, double) + default is string +*/ int SalomeApp_ListViewItem::getValueType() { return myValueType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setValueType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ void SalomeApp_ListViewItem::setValueType(const int valueType) { myValueType = valueType; } -//================================================================ -// Function : SalomeApp_ListViewItem::getUserType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ int SalomeApp_ListViewItem::getUserType() { return myUserType; } -//================================================================ -// Function : SalomeApp_ListViewItem::setUserType -/*! Purpose : sets type of edited value*/ -//================================================================ +/*! + Sets type of edited value +*/ void SalomeApp_ListViewItem::setUserType(const int userType) { myUserType = userType; } -//================================================================ -// Function : SalomeApp_ListViewItem::getButtons -/*! Purpose : returns buttons for editing widget (Apply (V), Cancel (X)) - * default is both buttons - */ -//================================================================ +/*! + \return buttons for editing widget (Apply (V), Cancel (X)) + default is both buttons +*/ int SalomeApp_ListViewItem::getButtons() { return myButtons; } -//================================================================ -// Function : SalomeApp_ListViewItem::getButtons -/*! Purpose : sets buttons for editing widget (Apply (V), Cancel (X))*/ -//================================================================ +/*! + Sets buttons for editing widget (Apply (V), Cancel (X)) +*/ void SalomeApp_ListViewItem::setButtons(const int buttons) { myButtons = buttons; } -//================================================================ -// Function : SalomeApp_ListViewItem::startEditing -/*! Purpose : creates control for editing and fills it with values*/ -//================================================================ +/*! + Creates control for editing and fills it with values +*/ SalomeApp_EntityEdit* SalomeApp_ListViewItem::startEditing() { SalomeApp_EntityEdit* aWidget = 0; @@ -842,10 +768,9 @@ SalomeApp_EntityEdit* SalomeApp_ListViewItem::startEditing() return aWidget; } -//================================================================ -// Function : SalomeApp_ListViewItem::fillWidgetWithValues -/*! Purpose : fills widget with initial values (list or single value)*/ -//================================================================ +/*! + Fills widget with initial values (list or single value) +*/ void SalomeApp_ListViewItem::fillWidgetWithValues(SalomeApp_EntityEdit* theWidget) { int anEditColumn = getEditedColumn(); @@ -853,10 +778,9 @@ void SalomeApp_ListViewItem::fillWidgetWithValues(SalomeApp_EntityEdit* theWidge theWidget->insertItem(text(anEditColumn), true); } -//================================================================ -// Function : SalomeApp_ListViewItem::finishEditing -/*! Purpose : finishes editing of entity*/ -//================================================================ +/*! + Finishes editing of entity +*/ UpdateType SalomeApp_ListViewItem::finishEditing(SalomeApp_EntityEdit* theWidget) { UpdateType aNeedsUpdate = utCancel; @@ -881,10 +805,9 @@ UpdateType SalomeApp_ListViewItem::finishEditing(SalomeApp_EntityEdit* theWidget return aNeedsUpdate; } -//================================================================ -// Function : SalomeApp_ListViewItem::tipRect -/*! Purpose : calculates rectangle which should contain item's tip*/ -//================================================================ +/*! + Calculates rectangle which should contain item's tip +*/ QRect SalomeApp_ListViewItem::tipRect() { QRect aRect = QRect(-1, -1, -1, -1); @@ -906,10 +829,9 @@ QRect SalomeApp_ListViewItem::tipRect() return aRect; } -//================================================================ -// Function : SalomeApp_ListViewItem::tipText -/*! Purpose : returns text for tooltip*/ -//================================================================ +/*! + \return text for tooltip +*/ QString SalomeApp_ListViewItem::tipText() { QString aText = getName(); @@ -918,10 +840,9 @@ QString SalomeApp_ListViewItem::tipText() return aText; } -//================================================================ -// Function : SalomeApp_ListViewItem::textRect -/*! Purpose : calculates rect of item text in viewport coordinates*/ -//================================================================ +/*! + Calculates rect of item text in viewport coordinates +*/ QRect SalomeApp_ListViewItem::textRect(const int column) const { QRect aItemRect = listView()->itemRect( this ); @@ -956,10 +877,9 @@ QRect SalomeApp_ListViewItem::textRect(const int column) const return theResult; } -//================================================================ -// Function : SalomeApp_ListViewItem::itemRect -/*! Purpose : calculates rect of item data in viewport coordinates*/ -//================================================================ +/*! + Calculates rect of item data in viewport coordinates +*/ QRect SalomeApp_ListViewItem::itemRect(const int column) const { QRect aItemRect = listView()->itemRect( this ); @@ -991,23 +911,17 @@ QRect SalomeApp_ListViewItem::itemRect(const int column) const return theResult; } -////////////////////////////////////////////////////////////////////// -// SalomeApp_EditBox class implementation -////////////////////////////////////////////////////////////////////// - -//================================================================ -// Function : SalomeApp_EditBox::SalomeApp_EditBox -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_EditBox::SalomeApp_EditBox(QWidget* parent) : QLineEdit(parent) { } -//================================================================ -// Function : SalomeApp_EditBox::keyPressEvent -/*! Purpose : event filter for key pressing*/ -//================================================================ +/*! + Event filter for key pressing +*/ void SalomeApp_EditBox::keyPressEvent( QKeyEvent *e ) { if ( e->key() == Key_Escape ) @@ -1017,23 +931,18 @@ void SalomeApp_EditBox::keyPressEvent( QKeyEvent *e ) e->accept(); } -////////////////////////////////////////////////////////////////////// -// SalomeApp_ComboBox class implementation -////////////////////////////////////////////////////////////////////// -//================================================================ -// Function : SalomeApp_ComboBox::SalomeApp_ComboBox -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_ComboBox::SalomeApp_ComboBox(bool rw, QWidget* parent, const char* name) : QComboBox(rw, parent, name) { } -//================================================================ -// Function : SalomeApp_ComboBox::findItem -/*! Purpose : searches item in list and returns its index*/ -//================================================================ +/*! + Searches item in list and returns its index +*/ int SalomeApp_ComboBox::findItem(const QString& theText) { for (int i = 0; i < count(); i++) @@ -1042,10 +951,9 @@ int SalomeApp_ComboBox::findItem(const QString& theText) return -1; } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const QString& theValue, int theIndex) { @@ -1053,20 +961,18 @@ void SalomeApp_ComboBox::insertItem(const QString& theValue, QComboBox::insertItem(theValue, theIndex); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const QStringList& theList) { for (unsigned i = 0; i < theList.count(); i++) insertItem(theList[i]); } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const int theValue) { int aNum; @@ -1083,20 +989,18 @@ void SalomeApp_ComboBox::insertItem(const int theValue) insertItem(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const TColStd_ListOfInteger& theList) { for (TColStd_ListIteratorOfListOfInteger aIter(theList); aIter.More(); aIter.Next()) insertItem(aIter.Value()); } -//================================================================ -// Function : SalomeApp_ComboBox::insertItem -/*! Purpose : adds item in combo box*/ -//================================================================ +/*! + Adds item in combo box +*/ void SalomeApp_ComboBox::insertItem(const double theValue) { double aNum; @@ -1113,29 +1017,23 @@ void SalomeApp_ComboBox::insertItem(const double theValue) insertItem(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_ComboBox::insertList -/*! Purpose : adds list of items in combo box*/ -//================================================================ +/*! + Adds list of items in combo box +*/ void SalomeApp_ComboBox::insertList(const TColStd_ListOfReal& theList) { for (TColStd_ListIteratorOfListOfReal aIter(theList); aIter.More(); aIter.Next()) insertItem(aIter.Value()); } -////////////////////////////////////////////////////////////////////// -// SalomeApp_EntityEdit class implementation -////////////////////////////////////////////////////////////////////// - #include #define MIN_COMBO_WIDTH 1 #define MIN_EDIT_WIDTH 1 -//================================================================ -// Function : SalomeApp_EntityEdit::SalomeApp_EntityEdit -/*! Purpose : constructor*/ -//================================================================ +/*! + Constructor +*/ SalomeApp_EntityEdit::SalomeApp_EntityEdit(QWidget* parent, int controlType, int valueType, @@ -1224,18 +1122,16 @@ myCancelBtn(0) } } -//================================================================ -// Function : SalomeApp_EntityEdit::~SalomeApp_EntityEdit -/*! Purpose : destructor*/ -//================================================================ +/*! + Destructor +*/ SalomeApp_EntityEdit::~SalomeApp_EntityEdit() { } -//================================================================ -// Function : SalomeApp_EntityEdit::clear -/*! Purpose : clears edit/combo box*/ -//================================================================ +/*! + Clears edit/combo box +*/ void SalomeApp_EntityEdit::clear() { if (myEdit) @@ -1244,10 +1140,9 @@ void SalomeApp_EntityEdit::clear() myCombo->clear(); } -//================================================================ -// Function : SalomeApp_EntityEdit::getText -/*! Purpose : returns current text in edit box or combo box*/ -//================================================================ +/*! + \return current text in edit box or combo box +*/ QString SalomeApp_EntityEdit::getText() { if (myEdit) @@ -1258,10 +1153,9 @@ QString SalomeApp_EntityEdit::getText() return ""; } -//================================================================ -// Function : SalomeApp_EntityEdit::setText -/*! Purpose : sets text*/ -//================================================================ +/*! + Sets text +*/ void SalomeApp_EntityEdit::setText(const QString& theText) { myString = theText; @@ -1276,12 +1170,9 @@ void SalomeApp_EntityEdit::setText(const QString& theText) } } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -/*! Purpose : adds item in combo box, - * sets it current if theSetCurrent is true - */ -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const QString& theValue, bool theSetCurrent, int theOrder) @@ -1302,12 +1193,9 @@ void SalomeApp_EntityEdit::insertItem(const QString& theValue, setText(theValue); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const QStringList& theList, const int theCurrent) { @@ -1317,12 +1205,9 @@ void SalomeApp_EntityEdit::insertList(const QStringList& theList, setText(theList[theCurrent]); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -/*! Purpose : adds item in combo box, - * sets it current if theSetCurrent is true - */ -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const int theValue, bool theSetCurrent) { @@ -1333,12 +1218,9 @@ void SalomeApp_EntityEdit::insertItem(const int theValue, setText(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfInteger& theList, const int theCurrent) { @@ -1354,11 +1236,9 @@ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfInteger& theList, } } -//================================================================ -// Function : SalomeApp_EntityEdit::insertItem -// Purpose : adds item in combo box, -// sets it current if theSetCurrent is true -//================================================================ +/*! + Adds item in combo box, sets it current if theSetCurrent is true +*/ void SalomeApp_EntityEdit::insertItem(const double theValue, bool theSetCurrent) { @@ -1369,12 +1249,9 @@ void SalomeApp_EntityEdit::insertItem(const double theValue, setText(QString::number(theValue)); } -//================================================================ -// Function : SalomeApp_EntityEdit::insertList -/*! Purpose : adds items in combo box, - * sets item theCurrent as current - */ -//================================================================ +/*! + Adds items in combo box, sets item theCurrent as current +*/ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfReal& theList, const int theCurrent) { @@ -1390,10 +1267,9 @@ void SalomeApp_EntityEdit::insertList(const TColStd_ListOfReal& theList, } } -//================================================================ -// Function : SalomeApp_EntityEdit::getControl -/*! Purpose : gets actual widget*/ -//================================================================ +/*! + \return actual widget +*/ QWidget* SalomeApp_EntityEdit::getControl() { if (myEdit) @@ -1404,10 +1280,9 @@ QWidget* SalomeApp_EntityEdit::getControl() return 0; } -//================================================================ -// Function : SalomeApp_EntityEdit::setFocus -/*! Purpose : redirect focus to corresponding widget*/ -//================================================================ +/*! + redirect focus to corresponding widget +*/ void SalomeApp_EntityEdit::setFocus() { if (myEdit) { @@ -1420,10 +1295,9 @@ void SalomeApp_EntityEdit::setFocus() } } -//================================================================ -// Function : SalomeApp_EntityEdit::setValidator -/*! Purpose : sets validator for the control*/ -//================================================================ +/*! + Sets validator for the control +*/ void SalomeApp_EntityEdit::setValidator(const QValidator* theValidator) { if (myEdit) @@ -1432,10 +1306,9 @@ void SalomeApp_EntityEdit::setValidator(const QValidator* theValidator) myCombo->setValidator(theValidator); } -//================================================================ -// Function : SalomeApp_EntityEdit::keyPressEvent -/*! Purpose : event filter for KeyPress event*/ -//================================================================ +/*! + Event filter for KeyPress event +*/ void SalomeApp_EntityEdit::keyPressEvent( QKeyEvent * e) { if ( (e->key() == Key_Enter || @@ -1445,19 +1318,17 @@ void SalomeApp_EntityEdit::keyPressEvent( QKeyEvent * e) onCancel(); } -//================================================================ -// Function : SalomeApp_EntityEdit::onComboActivated -/*! Purpose : called when item activated in combo box*/ -//================================================================ +/*! + Called when item activated in combo box +*/ void SalomeApp_EntityEdit::onComboActivated(const QString& theText) { onTextChanged(theText); } -//================================================================ -// Function : SalomeApp_EntityEdit::onTextChanged -/*! Purpose : slot, called when text changed in line edit*/ -//================================================================ +/*! + Slot, called when text changed in line edit +*/ void SalomeApp_EntityEdit::onTextChanged(const QString& theText) { if (myApplyBtn) @@ -1466,10 +1337,9 @@ void SalomeApp_EntityEdit::onTextChanged(const QString& theText) myCancelBtn->setEnabled(!(theText == myString)); } -//================================================================ -// Function : SalomeApp_EntityEdit::onCancel -/*! Purpose : slot, called when user presses Cancel button*/ -//================================================================ +/*! + Slot, called when user presses Cancel button +*/ void SalomeApp_EntityEdit::onCancel() { setText(myString); @@ -1480,10 +1350,9 @@ void SalomeApp_EntityEdit::onCancel() emit escapePressed(); } -//================================================================ -// Function : SalomeApp_EntityEdit::onApply -/*! Purpose : slot, called when user presses Apply button*/ -//================================================================ +/*! + Slot, called when user presses Apply button +*/ void SalomeApp_EntityEdit::onApply() { myString = getText(); @@ -1494,10 +1363,9 @@ void SalomeApp_EntityEdit::onApply() emit returnPressed(); } -//================================================================ -// Function : SalomeApp_EntityEdit::showButtons -/*! Purpose : shows/hides buttons*/ -//================================================================ +/*! + Shows/hides buttons +*/ void SalomeApp_EntityEdit::showButtons(bool show) { if (myApplyBtn) @@ -1506,10 +1374,9 @@ void SalomeApp_EntityEdit::showButtons(bool show) show ? myCancelBtn->show() : myCancelBtn->hide(); } -//================================================================ -// Function : SalomeApp_EntityEdit::setDuplicatesEnabled -/*! Purpose : enables/disables data duplication (for combo box)*/ -//================================================================ +/*! + Enables/disables data duplication (for combo box) +*/ void SalomeApp_EntityEdit::setDuplicatesEnabled(bool enabled) { if (myCombo) diff --git a/src/SalomeApp/SalomeApp_ListView.h b/src/SalomeApp/SalomeApp_ListView.h index e7b7552cf..4e54e423c 100644 --- a/src/SalomeApp/SalomeApp_ListView.h +++ b/src/SalomeApp/SalomeApp_ListView.h @@ -44,10 +44,10 @@ enum UpdateType { class SalomeApp_ListViewItem; class SalomeApp_EntityEdit; -//================================================================ -// Class : SalomeApp_ListView -// Description : parent class for Data Viewer and Properties Viewer -//================================================================ +/*! + \class SalomeApp_ListView + parent class for Data Viewer and Properties Viewer +*/ class SalomeApp_ListView : public QtxListView , public SUIT_PopupClient { Q_OBJECT diff --git a/src/SalomeApp/SalomeApp_Module.cxx b/src/SalomeApp/SalomeApp_Module.cxx index b22992cf4..9afbe27e4 100644 --- a/src/SalomeApp/SalomeApp_Module.cxx +++ b/src/SalomeApp/SalomeApp_Module.cxx @@ -22,8 +22,6 @@ #include //#include -//#include "SALOMEDS_IParameters.hxx" - #include #include @@ -67,6 +65,12 @@ LightApp_Selection* SalomeApp_Module::createSelection() const return LightApp_Module::createSelection(); } +/*! + Converts objects-containers to list of objects, those are contained + Other objects must be added without conversion + \param source - source list of objects + \param dest - list of converted objects +*/ void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_ListIO& dest ) const { SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); diff --git a/src/SalomeApp/SalomeApp_PyInterp.cxx b/src/SalomeApp/SalomeApp_PyInterp.cxx index 19bc57559..88c6b5fa5 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.cxx +++ b/src/SalomeApp/SalomeApp_PyInterp.cxx @@ -108,12 +108,12 @@ bool SalomeApp_PyInterp::initContext() return true; } +/*! + Do nothing + The initialization has been done in main + */ void SalomeApp_PyInterp::init_python() { - /* - * Do nothing - * The initialization has been done in main - */ MESSAGE("PyInterp_base::init_python"); ASSERT(KERNEL_PYTHON::_gtstate); // initialisation in main SCRUTE(KERNEL_PYTHON::_gtstate); diff --git a/src/SalomeApp/SalomeApp_Study.cxx b/src/SalomeApp/SalomeApp_Study.cxx index fa686e4b2..3d693f374 100644 --- a/src/SalomeApp/SalomeApp_Study.cxx +++ b/src/SalomeApp/SalomeApp_Study.cxx @@ -44,7 +44,8 @@ #include "SALOMEDS_Tool.hxx" -#include "SALOMEDS_IParameters.hxx" +#include "SALOMEDSClient_ClientFactory.hxx" +#include "SALOMEDSClient_IParameters.hxx" #include #include CORBA_SERVER_HEADER(SALOME_Exception) @@ -108,10 +109,10 @@ void SalomeApp_Study::createDocument() emit created( this ); } -//======================================================================= -// name : openDocument -/*! Purpose : Open document*/ -//======================================================================= +/*! + Opens document + \param theFileName - name of file +*/ bool SalomeApp_Study::openDocument( const QString& theFileName ) { MESSAGE( "openDocument" ); @@ -151,10 +152,10 @@ bool SalomeApp_Study::openDocument( const QString& theFileName ) 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" ); @@ -197,10 +198,10 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName ) 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 ); @@ -223,13 +224,14 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) if( !resMgr ) return false; - bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ), - isAscii = resMgr->booleanValue( "Study", "ascii_file", false ), - res = isAscii ? - SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) : - SalomeApp_Application::studyMgr()->SaveAs ( theFileName.latin1(), studyDS(), isMultiFile ) && - CAM_Study::saveDocumentAs( theFileName ) && //SRN: BugID IPAL9377, removed usage of uninitialized variable - 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 ); @@ -237,10 +239,9 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) return res; } -//======================================================================= -// name : saveDocument -/*! Purpose : Save document*/ -//======================================================================= +/*! + Saves previously opened document +*/ bool SalomeApp_Study::saveDocument() { bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); @@ -263,11 +264,11 @@ bool SalomeApp_Study::saveDocument() if( !resMgr ) return false; - bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ), - isAscii = resMgr->booleanValue( "Study", "ascii_file", false ), - res = isAscii ? - SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) : - SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile ) && CAM_Study::saveDocument(); + bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ); + bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false ); + bool res = (isAscii ? + SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) : + SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile )) && CAM_Study::saveDocument(); res = res && saveStudyData(studyName()); if ( res ) @@ -276,10 +277,9 @@ bool SalomeApp_Study::saveDocument() return res; } -//================================================================ -// Function : closeDocument -/*! Purpose : Close document*/ -//================================================================ +/*! + Closes document +*/ void SalomeApp_Study::closeDocument(bool permanently) { LightApp_Study::closeDocument(permanently); @@ -294,10 +294,9 @@ void SalomeApp_Study::closeDocument(bool permanently) } } -//================================================================ -// Function : isModified -// Purpose : -//================================================================ +/*! + \return true, if study is modified in comparison with last open/save +*/ bool SalomeApp_Study::isModified() const { bool isAnyChanged = studyDS() && studyDS()->IsModified(); @@ -307,23 +306,23 @@ bool SalomeApp_Study::isModified() const return isAnyChanged; } -//================================================================ -// Function : isSaved -/*! Purpose : Check: data model is saved?*/ -//================================================================ +/*! + \return if data model is saved +*/ bool SalomeApp_Study::isSaved() const { bool isAllSaved = studyDS() && studyDS()->GetPersistentReference().size(); if (!isAllSaved) - isAllSaved = LightApp_Study::isModified(); + isAllSaved = LightApp_Study::isSaved(); return isAllSaved; } -//======================================================================= -// name : saveModuleData -/*! Purpose : save list file for module 'theModuleName' */ -//======================================================================= +/*! + Saves data of module + \param theModuleName - name of module + \param theListOfFiles - list of files to be saved +*/ void SalomeApp_Study::saveModuleData( QString theModuleName, QStringList theListOfFiles ) { int aNb = theListOfFiles.count(); @@ -341,10 +340,11 @@ void SalomeApp_Study::saveModuleData( QString theModuleName, QStringList theList SetListOfFiles(theModuleName, aListOfFiles); } -//======================================================================= -// name : openModuleData -/*! Purpose : gets list of file for module 'theModuleNam' */ -//======================================================================= +/*! + Loads data of module + \param theModuleName - name of module + \param theListOfFiles - list of files to be loaded +*/ void SalomeApp_Study::openModuleData( QString theModuleName, QStringList& theListOfFiles ) { std::vector aListOfFiles = GetListOfFiles( theModuleName ); @@ -360,10 +360,9 @@ void SalomeApp_Study::openModuleData( QString theModuleName, QStringList& theLis theListOfFiles.append(aListOfFiles[i+1].c_str()); } -//======================================================================= -// name : saveStudyData -/*! Purpose : save data from study */ -//======================================================================= +/*! + Saves data from study +*/ bool SalomeApp_Study::saveStudyData( const QString& theFileName ) { ModelList list; dataModels( list ); @@ -374,10 +373,9 @@ bool SalomeApp_Study::saveStudyData( const QString& theFileName ) return true; } -//======================================================================= -// name : openStudyData -/*! Purpose : open data for study */ -//======================================================================= +/*! + Loads data for study +*/ bool SalomeApp_Study::openStudyData( const QString& theFileName ) { return true; @@ -404,7 +402,7 @@ void SalomeApp_Study::dataModelInserted (const CAM_DataModel* dm) } /*! - Create SComponent for module, using default engine (CORBAless) + Create SComponent for module, using default engine (CORBAless) */ void SalomeApp_Study::addComponent(const CAM_DataModel* dm) { @@ -522,10 +520,10 @@ QString SalomeApp_Study::newStudyName() const return newName; } -//================================================================ -// Function : GetListOfFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + \return list of files used by module: to be used by CORBAless modules + \param theModuleName - name of module +*/ std::vector SalomeApp_Study::GetListOfFiles( const char* theModuleName ) const { SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance(); @@ -536,10 +534,11 @@ std::vector SalomeApp_Study::GetListOfFiles( const char* theModuleN return aListOfFiles; } -//================================================================ -// Function : SetListOfFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + Sets list of files used by module: to be used by CORBAless modules + \param theModuleName - name of module + \param theListOfFiles - list of files +*/ void SalomeApp_Study::SetListOfFiles ( const char* theModuleName, const std::vector theListOfFiles ) { @@ -548,10 +547,9 @@ void SalomeApp_Study::SetListOfFiles ( const char* theModuleName, aDefaultEngine->SetListOfFiles(theListOfFiles, id(), theModuleName); } -//================================================================ -// Function : GetTmpDir -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + \return temporary directory for saving files of modules +*/ std::string SalomeApp_Study::GetTmpDir ( const char* theURL, const bool isMultiFile ) { std::string anURLDir = SALOMEDS_Tool::GetDirFromPath(theURL); @@ -559,10 +557,9 @@ std::string SalomeApp_Study::GetTmpDir ( const char* theURL, const bool isMulti return aTmpDir; } -//================================================================ -// Function : RemoveTemporaryFiles -/*! Purpose : to be used by CORBAless modules*/ -//================================================================ +/*! + Removes temporary files +*/ void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, const bool isMultiFile ) const { if (isMultiFile) @@ -582,8 +579,10 @@ void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, const bo } } -// END: methods to be used by CORBAless modules - +/*! + Deletes all references to object + \param obj - object +*/ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj ) { _PTR(StudyBuilder) sb = studyDS()->NewBuilder(); @@ -599,10 +598,10 @@ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj ) } } -//================================================================ -// Function : referencedToEntry -/*! Purpose : Return referenced entry from entry*/ -//================================================================ +/*! + \return real entry by entry of reference + \param entry - entry of reference object +*/ QString SalomeApp_Study::referencedToEntry( const QString& entry ) const { _PTR(SObject) obj = studyDS()->FindObjectID( entry.latin1() ); @@ -613,10 +612,9 @@ QString SalomeApp_Study::referencedToEntry( const QString& entry ) const return LightApp_Study::referencedToEntry( entry ); } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return component data type for entry +*/ QString SalomeApp_Study::componentDataType( const QString& entry ) const { _PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) ); @@ -625,20 +623,18 @@ QString SalomeApp_Study::componentDataType( const QString& entry ) const return obj->GetFatherComponent()->ComponentDataType().c_str(); } -//================================================================ -// Function : componentDataType -/*! Purpose : Return component data type from entry*/ -//================================================================ +/*! + \return true if entry corresponds to component +*/ bool SalomeApp_Study::isComponent( const QString& entry ) const { _PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) ); return obj && QString( obj->GetID().c_str() ) == obj->GetFatherComponent()->GetID().c_str(); } -//================================================================ -// Function : children -/*! Purpose : Return entries of children of object*/ -//================================================================ +/*! + \return entries of object children +*/ void SalomeApp_Study::children( const QString& entry, QStringList& child_entries ) const { _PTR(SObject) SO = studyDS()->FindObjectID( entry.latin1() ); @@ -652,6 +648,10 @@ void SalomeApp_Study::children( const QString& entry, QStringList& child_entries } } +/*! + Fills list with components names + \param comp - list to be filled +*/ void SalomeApp_Study::components( QStringList& comps ) const { for( _PTR(SComponentIterator) it ( studyDS()->NewComponentIterator() ); it->More(); it->Next() ) @@ -663,11 +663,9 @@ void SalomeApp_Study::components( QStringList& comps ) const } } -//================================================================ -// Function : getSavePoints -/*! Purpose : returns a list of saved points' IDs +/*! + \return a list of saved points' IDs */ -//================================================================ std::vector SalomeApp_Study::getSavePoints() { std::vector v; @@ -687,11 +685,9 @@ std::vector SalomeApp_Study::getSavePoints() 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; @@ -701,45 +697,37 @@ void SalomeApp_Study::removeSavePoint(int savePoint) 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 ); diff --git a/src/SalomeApp/SalomeApp_VisualState.cxx b/src/SalomeApp/SalomeApp_VisualState.cxx index ffb35f74d..88a0b888c 100644 --- a/src/SalomeApp/SalomeApp_VisualState.cxx +++ b/src/SalomeApp/SalomeApp_VisualState.cxx @@ -31,7 +31,8 @@ #include #include -#include +#include +#include #include #include @@ -51,18 +52,16 @@ SalomeApp_VisualState::~SalomeApp_VisualState() { } -//================================================================ -// 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 viewersCounter; // map viewerType - to - index_of_this_viewer_type @@ -89,11 +88,9 @@ void nameViewWindows( const ViewManagerList& lst ) } } -//================================================================ -// 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( myApp->activeStudy() ); @@ -107,7 +104,7 @@ int SalomeApp_VisualState::storeState() 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 ); @@ -120,7 +117,7 @@ int SalomeApp_VisualState::storeState() // 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; @@ -131,12 +128,12 @@ int SalomeApp_VisualState::storeState() 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 views = vm->getViews(); for(int i = 0; icaption().latin1() ); - ip.append( viewerEntry, views[i]->getVisualParameters().latin1() ); + ip->append( viewerEntry, views[i]->caption().latin1() ); + ip->append( viewerEntry, views[i]->getVisualParameters().latin1() ); } } @@ -145,12 +142,12 @@ int SalomeApp_VisualState::storeState() 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 mlist; @@ -158,7 +155,7 @@ int SalomeApp_VisualState::storeState() CAM_Module* module = 0; for ( module = mlist.first(); module; module = mlist.next() ) { if ( SalomeApp_Module* sModule = dynamic_cast( module ) ) { - ip.append( "AP_MODULES_LIST", sModule->moduleName().latin1() ); + ip->append( "AP_MODULES_LIST", sModule->moduleName().latin1() ); sModule->storeVisualParameters( savePoint ); } } @@ -169,11 +166,9 @@ int SalomeApp_VisualState::storeState() 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( myApp->activeStudy() ); @@ -181,28 +176,32 @@ void SalomeApp_VisualState::restoreState(int savePoint) 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 it(lst); it.current(); ++it ) + for ( QPtrListIterator 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 viewersParameters; + for ( int i = 0; i < nbViewers; i++ ) { - std::string viewerEntry = ip.getValue( "AP_VIEWERS_LIST", i ); - std::vector veiewerParams = ip.parseValue(viewerEntry,'_'); + std::string viewerEntry = ip->getValue( "AP_VIEWERS_LIST", i ); + std::vector 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++ ) { @@ -227,69 +226,80 @@ void SalomeApp_VisualState::restoreState(int savePoint) 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 v = ip.getValues("AP_MODULES_LIST"); + std::vector 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( 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 it( lst ); + for ( ; it.current(); ++it ) { + int view_count = it.current()->getViewsCount(); + QPtrVector 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 viewersParameters; - QPtrListIterator it( lst ); - for ( ; it.current(); ++it ) { - int view_count = it.current()->getViewsCount(); - QPtrVector 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 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::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 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 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 views = it.current()->getViews(); + // for ( int i = 0; i < view_count; i++ ) { + // if ( activeViewName == views[i]->name() ) + // views[i]->setFocus(); + // } + // } } diff --git a/src/SalomeApp/Test/Makefile.in b/src/SalomeApp/Test/Makefile.in index 93e6b8dcd..850cc4f5a 100644 --- a/src/SalomeApp/Test/Makefile.in +++ b/src/SalomeApp/Test/Makefile.in @@ -51,8 +51,8 @@ BIN_SRC = 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@ diff --git a/src/SalomeApp/Test/TestSalomeApp.py b/src/SalomeApp/Test/TestSalomeApp.py index 03daaf27b..eed29fa56 100644 --- a/src/SalomeApp/Test/TestSalomeApp.py +++ b/src/SalomeApp/Test/TestSalomeApp.py @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# import sys, os,signal,string,commands import runSalome diff --git a/src/SalomeApp/resources/SalomeApp.xml b/src/SalomeApp/resources/SalomeApp.xml index 3fa77b587..c5dd443bc 100644 --- a/src/SalomeApp/resources/SalomeApp.xml +++ b/src/SalomeApp/resources/SalomeApp.xml @@ -1,12 +1,6 @@ -
    - - - - - -
    + @@ -23,10 +17,19 @@
    +
    +
    + + + + + +
    + @@ -40,241 +43,76 @@ - - - - - - - - - - - + - -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - - + +
    - - -
    - - +
    + + + + + +
    - - - - - - + + + + + + + +
    +
    + + +
    - - - - + + + + +
    - - - + + + +
    -
    - -
    - - - - - - - + + + + + + + +
    - - - + + + +
    -
    - - - +
    + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    + + +
    - -
    - - +
    + +
    diff --git a/src/SalomeApp/resources/SalomeApp_msg_en.po b/src/SalomeApp/resources/SalomeApp_msg_en.po index 0e484c4e9..9b177ac89 100644 --- a/src/SalomeApp/resources/SalomeApp_msg_en.po +++ b/src/SalomeApp/resources/SalomeApp_msg_en.po @@ -13,9 +13,6 @@ msgstr "" //======================================================================================= -msgid "BUT_OK" -msgstr "&OK" - msgid "BUT_NEW" msgstr "&New" @@ -25,9 +22,6 @@ msgstr "&Open" msgid "BUT_LOAD" msgstr "&Load" -msgid "BUT_CANCEL" -msgstr "&Cancel" - //======================================================================================= msgid "SalomeApp_Application::PYTHON_CONSOLE" @@ -46,7 +40,7 @@ msgid "SalomeApp_Application::TOT_DESK_FILE_SAVE_GUI_STATE" msgstr "Save GUI state" msgid "SalomeApp_Application::MEN_DESK_FILE_SAVE_GUI_STATE" -msgstr "Save GUI state..." +msgstr "Save GUI state" msgid "SalomeApp_Application::PRP_DESK_FILE_SAVE_GUI_STATE" msgstr "Saves current state of viewers, displayed objects, etc." diff --git a/src/Session/InquireServersQThread.cxx b/src/Session/InquireServersQThread.cxx index 3a4b9ddd6..b022744f7 100755 --- a/src/Session/InquireServersQThread.cxx +++ b/src/Session/InquireServersQThread.cxx @@ -49,6 +49,9 @@ using namespace std; #define MARGIN_SIZE 5 #define SPACING_SIZE 3 +/*! + Constructor +*/ InquireServersGUI::InquireServersGUI() : QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder | WType_TopLevel | WStyle_StaysOnTop | WX11BypassWM ) { @@ -137,6 +140,10 @@ InquireServersGUI::InquireServersGUI() myThread->start(); } +/*! + Sets pixmap of splash screen + \param pix - new pixmap +*/ void InquireServersGUI::setPixmap( QPixmap pix ) { if ( !pix.isNull() ) @@ -148,21 +155,28 @@ void InquireServersGUI::setPixmap( QPixmap pix ) } } +/*! + Destructor +*/ InquireServersGUI::~InquireServersGUI() { delete myThread; } +/*! + Gets parameters from qApp + \param _argc - variable to return number of arguments + \param _argv - variable to return array of arguments +*/ void InquireServersGUI::getArgs( int& _argc, char *** _argv) { _argc = qApp->argc(); *_argv = qApp->argv(); } -//================================================================================= -// function : ClickOnCancel() -// purpose : cancel loading of SALOME -//================================================================================= +/*! + Cancel loading of SALOME +*/ void InquireServersGUI::ClickOnCancel() { myThread->stop(); //it's necessary to stop asking servers @@ -170,6 +184,9 @@ void InquireServersGUI::ClickOnCancel() qApp->exit( 1 ); } +/*! + Custom event filter +*/ void InquireServersGUI::customEvent( QCustomEvent* pe ) { switch( pe->type() ) @@ -204,11 +221,17 @@ void InquireServersGUI::customEvent( QCustomEvent* pe ) } } +/*! + \return status of thread exit +*/ int InquireServersGUI::getExitStatus() { return myThread->getExitStatus(); } +/*! + Constructor +*/ InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) : receiver(r), myExitStatus(0) { @@ -258,6 +281,9 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) } } +/*! + The main loop of this thread +*/ void InquireServersQThread::run() { while ( IsChecking && receiver ) @@ -305,12 +331,18 @@ void InquireServersQThread::run() qApp->exit( myExitStatus ); } +/*! + Stops this thread +*/ void InquireServersQThread::stop() { IsChecking = false; myExitStatus = 1; } +/*! + Destructor +*/ InquireServersQThread::~InquireServersQThread() { } diff --git a/src/Session/InquireServersQThread.h b/src/Session/InquireServersQThread.h index b97bfd012..9aada570c 100755 --- a/src/Session/InquireServersQThread.h +++ b/src/Session/InquireServersQThread.h @@ -17,11 +17,10 @@ #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: diff --git a/src/Session/Makefile.in b/src/Session/Makefile.in index 22837fbc8..27974b91f 100755 --- a/src/Session/Makefile.in +++ b/src/Session/Makefile.in @@ -38,6 +38,7 @@ VPATH=.:@srcdir@:@top_srcdir@/idl EXPORT_HEADERS= Session_Session_i.hxx \ Session_ServerLauncher.hxx \ Session_ServerThread.hxx \ + Session_ServerCheck.hxx \ SalomeApp_Engine_i.hxx # Libraries targets @@ -46,10 +47,10 @@ LIB = libSalomeSession.la 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 @@ -58,9 +59,9 @@ LIB_SERVER_IDL = SALOME_Session.idl SalomeApp_Engine.idl BIN_SERVER_IDL = BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Registry.idl SALOME_ModuleCatalog.idl SALOME_Exception.idl SALOME_GenericObj.idl -CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(OCC_INCLUDES) +CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -I$(OCC_INCLUDES) CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) -LDFLAGS += $(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lsuit -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lwith_loggerTraceCollector -lEvent -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 diff --git a/src/Session/SALOME_Session_Server.cxx b/src/Session/SALOME_Session_Server.cxx index dbc9e1633..55985e7ee 100755 --- a/src/Session/SALOME_Session_Server.cxx +++ b/src/Session/SALOME_Session_Server.cxx @@ -31,8 +31,6 @@ #include "SALOME_NamingService.hxx" #include "SALOMETraceCollector.hxx" -#include "InquireServersQThread.h" // splash - #include #ifndef WNT #include @@ -42,6 +40,7 @@ #include #include #include +#include #include "Utils_SALOME_Exception.hxx" #include "Utils_CorbaException.hxx" @@ -54,13 +53,15 @@ #include #include "Session_Session_i.hxx" #include "Session_ServerLauncher.hxx" +#include "Session_ServerCheck.hxx" +#include #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. @@ -180,10 +181,39 @@ public: QString version() const { return myExtAppVersion; } protected: - QString userFileName( const QString& appName ) const + QString userFileName( const QString& appName, const bool for_load ) const { if ( version().isNull() ) return ""; - return SUIT_ResourceMgr::userFileName( myExtAppName ); + return SUIT_ResourceMgr::userFileName( myExtAppName, for_load ); + } + + virtual int userFileId( const QString& _fname ) const + { + QRegExp exp( "\\.SalomeApprc\\.([a-zA-Z0-9.]+)$" ); + QRegExp vers_exp( "^([0-9]+)([A-Za-z]?)([0-9]*)$" ); + + QString fname = QFileInfo( _fname ).fileName(); + if( exp.exactMatch( fname ) ) + { + QStringList vers = QStringList::split( ".", exp.cap( 1 ) ); + int major=0, minor=0; + major = vers[0].toInt(); + minor = vers[1].toInt(); + if( vers_exp.search( vers[2] )==-1 ) + return -1; + int release = 0, dev1 = 0, dev2 = 0; + release = vers_exp.cap( 1 ).toInt(); + dev1 = vers_exp.cap( 2 )[ 0 ].latin1(); + dev2 = vers_exp.cap( 3 ).toInt(); + + int dev = dev1*100+dev2, id = major; + id*=100; id+=minor; + id*=100; id+=release; + id*=10000; id+=dev; + return id; + } + + return -1; } public: @@ -231,7 +261,10 @@ private: class GetInterfaceThread : public QThread { public: - GetInterfaceThread( SALOME::Session_var s ) : session ( s ) {} + GetInterfaceThread( SALOME::Session_var s ) : session ( s ) + { + start(); + } protected: virtual void run() { @@ -256,19 +289,87 @@ bool isFound( const char* str, int argc, char** argv ) // ---------------------------- MAIN ----------------------- int main( int argc, char **argv ) { + // Install Qt debug messages handler qInstallMsgHandler( MessageOutput ); - - // QApplication should be create before all other operations - // When uses QApplication::libraryPaths() ( example, QFile::encodeName() ) - // qApp used for detection of the executable dir path. + + // Create Qt application instance; + // this should be done the very first! SALOME_QApplication _qappl( argc, argv ); ASSERT( QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) ) ); + // Add application library path (to search style plugin etc...) QString path = QDir::convertSeparators( SUIT_Tools::addSlash( QString( ::getenv( "GUI_ROOT_DIR" ) ) ) + QString( "bin/salome" ) ); _qappl.addLibraryPath( path ); + // Set SALOME style to the application _qappl.setStyle( "salome" ); + bool isGUI = isFound( "GUI", argc, argv ); + bool isSplash = isFound( "SPLASH", argc, argv ); + // Show splash screen (only if both the "GUI" and "SPLASH" parameters are set) + QtxSplash* splash = 0; + if ( isGUI && isSplash ) { + // ...create resource manager + SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) ); + resMgr.setCurrentFormat( "xml" ); + resMgr.loadLanguage( "LightApp", "en" ); + // ...get splash preferences + QString splashIcon, splashInfo, splashTextColors, splashProgressColors; + resMgr.value( "splash", "image", splashIcon ); + resMgr.value( "splash", "info", splashInfo, false ); + resMgr.value( "splash", "text_colors", splashTextColors ); + resMgr.value( "splash", "progress_colors", splashProgressColors ); + QPixmap px( splashIcon ); + if ( px.isNull() ) // try to get splash pixmap from resources + px = resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) ); + if ( !px.isNull() ) { + // ...set splash pixmap + splash = QtxSplash::splash( px ); + // ...set splash text colors + if ( !splashTextColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashTextColors ); + QColor c1, c2; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + splash->setTextColors( c1, c2 ); + } + else { + splash->setTextColors( Qt::white, Qt::black ); + } + // ...set splash progress colors + if ( !splashProgressColors.isEmpty() ) { + QStringList colors = QStringList::split( "|", splashProgressColors ); + QColor c1, c2; + int gradType = QtxSplash::Vertical; + if ( colors.count() > 0 ) c1 = QColor( colors[0] ); + if ( colors.count() > 1 ) c2 = QColor( colors[1] ); + if ( colors.count() > 2 ) gradType = colors[2].toInt(); + splash->setProgressColors( c1, c2, gradType ); + } + // ...set splash text font + QFont f = splash->font(); + f.setBold( true ); + splash->setFont( f ); + // ...show splash initial status + if ( !splashInfo.isEmpty() ) { + splashInfo.replace( QRegExp( "%A" ), QObject::tr( "APP_NAME" ) ); + splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( salomeVersion() ) ); + splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) ); + splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) ); + splashInfo.replace( QRegExp( "\\\\n" ), "\n" ); + splash->message( splashInfo ); + } + // ...set 'hide on click' flag +#ifdef _DEBUG_ + splash->setHideOnClick( true ); +#endif + // ...show splash + splash->show(); + qApp->processEvents(); + } + } + + // Initialization int result = -1; CORBA::ORB_var orb; @@ -280,29 +381,26 @@ int main( int argc, char **argv ) Session_ServerLauncher* myServerLauncher = 0; try { - - // Python initialisation : only once - - int _argc = 1; + // ...initialize Python (only once) + int _argc = 1; char* _argv[] = {""}; KERNEL_PYTHON::init_python( _argc,_argv ); PyEval_RestoreThread( KERNEL_PYTHON::_gtstate ); if ( !KERNEL_PYTHON::salome_shared_modules_module ) // import only once KERNEL_PYTHON::salome_shared_modules_module = PyImport_ImportModule( "salome_shared_modules" ); - if ( !KERNEL_PYTHON::salome_shared_modules_module ) - { + if ( !KERNEL_PYTHON::salome_shared_modules_module ) { INFOS( "salome_shared_modules_module == NULL" ); PyErr_Print(); } PyEval_ReleaseThread( KERNEL_PYTHON::_gtstate ); - // Create ORB, get RootPOA object, NamingService, etc. + // ...create ORB, get RootPOA object, NamingService, etc. ORB_INIT &init = *SINGLETON_::Instance(); ASSERT( SINGLETON_::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" ); @@ -337,70 +435,67 @@ int main( int argc, char **argv ) INFOS( "Caught unknown exception." ); } - // CORBA Servant Launcher - QMutex _GUIMutex; - QWaitCondition _ServerLaunch, _SessionStarted; - - if ( !result ) - { - _GUIMutex.lock(); // to block Launch server thread until wait( mutex ) - - // Activate embedded CORBA servers: Registry, SALOMEDS, etc. - myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionStarted ); - myServerLauncher->start(); - - _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready: + QMutex _GUIMutex, _SessionMutex, _SplashMutex; + QWaitCondition _ServerLaunch, _SessionStarted, _SplashStarted; + + // lock session mutex to ensure that GetInterface is not called + // until all initialization is done + _SessionMutex.lock(); + + if ( !result ) { + // Start embedded servers launcher (Registry, SALOMEDS, etc.) + // ...lock mutex to block embedded servers launching thread until wait( mutex ) + _GUIMutex.lock(); + // ...create launcher + myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionMutex, &_SessionStarted ); + // ...block this thread until launcher is ready + _ServerLaunch.wait( &_GUIMutex ); - // show splash screen if "SPLASH" parameter was passed ( default ) - if ( isFound( "SPLASH", argc, argv ) ) - { - // create temporary resource manager just to load splash icon - SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) ); - resMgr.setCurrentFormat( "xml" ); - resMgr.loadLanguage( "LightApp", "en" ); - - // create splash object: widget ( splash with progress bar ) and "pinging" thread - InquireServersGUI splash; - splash.setPixmap( resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) ) ); - SUIT_Tools::centerWidget( &splash, _qappl.desktop() ); - - _qappl.setMainWidget( &splash ); - QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) ); - splash.show(); // display splash with running progress bar - _qappl.exec(); // wait untill splash closes ( progress runs till end or Cancel is pressed ) - - result = splash.getExitStatus(); // 1 is error + // Start servers check thread (splash) + if ( splash ) { + // ...lock mutex to block splash thread until wait( mutex ) + _SplashMutex.lock(); + // ...create servers checking thread + Session_ServerCheck sc( &_SplashMutex, &_SplashStarted ); + // ...block this thread until servers checking is finished + _SplashStarted.wait( &_SplashMutex ); + // ...unlock mutex 'cause it is no more needed + _SplashMutex.unlock(); + // get servers checking thread status + result = splash->error(); + QString info = splash->message().isEmpty() ? "%1" : QString( "%1\n%2" ).arg( splash->message() ); + splash->setStatus( info.arg( "Activating desktop..." ) ); } - else - _SessionStarted.wait(); - } - // call Session::GetInterface() if "GUI" parameter was passed ( default ) - if ( !result && isFound( "GUI", argc, argv ) ) - { - CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" ); - SALOME::Session_var session = SALOME::Session::_narrow( obj ) ; - ASSERT ( ! CORBA::is_nil( session ) ); - - INFOS( "Session activated, Launch IAPP..." ); - guiThread = new GetInterfaceThread( session ); - guiThread->start(); + // Finalize embedded servers launcher + // ...block this thread until launcher is finished + _ServerLaunch.wait( &_GUIMutex ); + // ...unlock mutex 'cause it is no more needed + _GUIMutex.unlock(); } - if ( !result ) - { + if ( !result ) { + // Launch GUI activator + if ( isGUI ) { + // ...retrieve Session interface reference + CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" ); + SALOME::Session_var session = SALOME::Session::_narrow( obj ) ; + ASSERT ( ! CORBA::is_nil( session ) ); + // ...create GUI launcher + INFOS( "Session activated, Launch IAPP..." ); + guiThread = new GetInterfaceThread( session ); + } // GUI activation // Allow multiple activation/deactivation of GUI - while ( true ) - { + while ( true ) { MESSAGE( "waiting wakeAll()" ); - _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready: + _SessionStarted.wait( &_SessionMutex ); // to be reseased by Launch server thread when ready: // atomic operation lock - unlock on mutex // unlock mutex: serverThread runs, calls _ServerLaunch->wakeAll() // this thread wakes up, and lock mutex - _GUIMutex.unlock(); + _SessionMutex.unlock(); // SUIT_Session creation aGUISession = new SALOME_Session(); @@ -415,7 +510,15 @@ int main( int argc, char **argv ) // aGUISession contains SalomeApp_ExceptionHandler // Run GUI loop MESSAGE( "run(): starting the main event loop" ); + + if ( splash ) + splash->finish( aGUIApp->desktop() ); + result = _qappl.exec(); + + if ( splash ) + delete splash; + splash = 0; if ( result == SUIT_Session::FROM_GUI ) // desktop is closed by user from GUI break; @@ -425,10 +528,13 @@ int main( int argc, char **argv ) aGUISession = 0; // Prepare _GUIMutex for a new GUI activation - _GUIMutex.lock(); + _SessionMutex.lock(); } } + // unlock Session mutex + _SessionMutex.unlock(); + if ( myServerLauncher ) myServerLauncher->KillAll(); // kill embedded servers diff --git a/src/Session/SalomeApp_Engine_i.cxx b/src/Session/SalomeApp_Engine_i.cxx index 27cc1cdd3..d23e815df 100644 --- a/src/Session/SalomeApp_Engine_i.cxx +++ b/src/Session/SalomeApp_Engine_i.cxx @@ -38,11 +38,17 @@ using namespace std; SalomeApp_Engine_i* SalomeApp_Engine_i::myInstance = NULL; +/*! + Constructor +*/ SalomeApp_Engine_i::SalomeApp_Engine_i() { myInstance = this; } +/*! + Destructor +*/ SalomeApp_Engine_i::~SalomeApp_Engine_i() { } @@ -163,6 +169,9 @@ void SalomeApp_Engine_i::SetListOfFiles (const ListOfFiles theListOfFiles, mapOfListOfFiles[componentName] = theListOfFiles; } +/*! + \return shared instance of engine +*/ SalomeApp_Engine_i* SalomeApp_Engine_i::GetInstance() { return myInstance; diff --git a/src/Session/Session_ServerCheck.cxx b/src/Session/Session_ServerCheck.cxx new file mode 100644 index 000000000..ac4c59c1b --- /dev/null +++ b/src/Session/Session_ServerCheck.cxx @@ -0,0 +1,509 @@ +// 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 + +#include +#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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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_::Instance(); + ASSERT( SINGLETON_::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 ); +} diff --git a/src/Session/Session_ServerCheck.hxx b/src/Session/Session_ServerCheck.hxx new file mode 100644 index 000000000..e4d7a83d4 --- /dev/null +++ b/src/Session/Session_ServerCheck.hxx @@ -0,0 +1,62 @@ +// 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 +#else +#define SALOME_WNT_EXPORT +#endif + +#include +#include + +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 diff --git a/src/Session/Session_ServerLauncher.cxx b/src/Session/Session_ServerLauncher.cxx index b15f682a5..b73bebeab 100755 --- a/src/Session/Session_ServerLauncher.cxx +++ b/src/Session/Session_ServerLauncher.cxx @@ -31,29 +31,24 @@ #include "Utils_SALOME_Exception.hxx" #include "utilities.h" using namespace std; -//============================================================================= /*! - * default constructor not for use + default constructor not for use */ -//============================================================================= - Session_ServerLauncher::Session_ServerLauncher() { ASSERT(0); // must not be called } -//============================================================================= /*! - * constructor - */ -//============================================================================= - + constructor +*/ Session_ServerLauncher::Session_ServerLauncher(int argc, char ** argv, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, QMutex *GUIMutex, QWaitCondition *ServerLaunch, + QMutex *SessionMutex, QWaitCondition *SessionStarted) { _argc = argc; @@ -62,45 +57,51 @@ Session_ServerLauncher::Session_ServerLauncher(int argc, _root_poa = PortableServer::POA::_duplicate(poa); _GUIMutex = GUIMutex; _ServerLaunch = ServerLaunch; + _SessionMutex = SessionMutex; _SessionStarted = SessionStarted; + + // start thread + start(); } -//============================================================================= /*! - * destructor - */ -//============================================================================= - + destructor +*/ Session_ServerLauncher::~Session_ServerLauncher() { } -//============================================================================= /*! - * Check args and activate servers - */ -//============================================================================= - + Check args and activate servers +*/ void Session_ServerLauncher::run() { - _GUIMutex->lock(); // lock released by calling thread when ready: wait(mutex) - _GUIMutex->unlock(); + // wait until main thread is ready + _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread + // wait condition's wait(mutex) + _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed + + // wake main thread _ServerLaunch->wakeAll(); CheckArgs(); ActivateAll(); - _SessionStarted->wakeAll(); // wake main thread + // wait until main thread is ready + _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread + // wait condition's wait(mutex) + _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed - _orb->run(); // this thread wait, during omniORB process events + // wake main thread + _ServerLaunch->wakeAll(); + + // run ORB + _orb->run(); // this thread waits, during omniORB process events } -//============================================================================= /*! - * controls and dispatchs arguments given with command - */ -//============================================================================= - + controls and dispatchs arguments given with command +*/ void Session_ServerLauncher::CheckArgs() { int argState = 0; @@ -175,12 +176,6 @@ void Session_ServerLauncher::CheckArgs() throw SALOME_Exception(LOCALIZED("Error in command arguments, missing parenthesis ')'")); } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerLauncher::ActivateAll() { list::iterator itServ; @@ -201,7 +196,7 @@ void Session_ServerLauncher::ActivateAll() std::cout << "*** activating [" << argc << "] : " << argv[0] << std::endl; Session_ServerThread* aServerThread - = new Session_ServerThread(argc, argv, _orb,_root_poa,_GUIMutex); + = new Session_ServerThread(argc, argv, _orb,_root_poa); _serverThreads.push_front(aServerThread); aServerThread->Init(); @@ -214,18 +209,15 @@ void Session_ServerLauncher::ActivateAll() char** argv = new char*[argc]; argv[0] = "Session"; Session_SessionThread* aServerThread - = new Session_SessionThread(argc, argv, _orb,_root_poa,_GUIMutex,_ServerLaunch); + = new Session_SessionThread(argc, argv, _orb,_root_poa,_SessionMutex,_SessionStarted); _serverThreads.push_front(aServerThread); aServerThread->Init(); } -//============================================================================= /*! - * Destruction des classes serveur dans l'ordre inverse de creation - */ -//============================================================================= - + Destruction des classes serveur dans l'ordre inverse de creation +*/ void Session_ServerLauncher::KillAll() { MESSAGE("Session_ServerLauncher::KillAll()"); diff --git a/src/Session/Session_ServerLauncher.hxx b/src/Session/Session_ServerLauncher.hxx index 8791b6698..7c97199fe 100755 --- a/src/Session/Session_ServerLauncher.hxx +++ b/src/Session/Session_ServerLauncher.hxx @@ -70,6 +70,7 @@ public: PortableServer::POA_ptr poa, QMutex *GUIMutex, QWaitCondition *ServerLaunch, + QMutex *SessionMutex, QWaitCondition *SessionStarted); virtual ~Session_ServerLauncher(); void run(); @@ -82,13 +83,14 @@ protected: private: int _argc; char ** _argv; - CORBA::ORB_var _orb; - PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; - QWaitCondition *_ServerLaunch; - QWaitCondition *_SessionStarted; - list _argServToLaunch; - vector _argCopy; + CORBA::ORB_var _orb; + PortableServer::POA_var _root_poa; + QMutex* _GUIMutex; + QWaitCondition* _ServerLaunch; + QMutex* _SessionMutex; + QWaitCondition* _SessionStarted; + list _argServToLaunch; + vector _argCopy; list _serverThreads; }; diff --git a/src/Session/Session_ServerThread.cxx b/src/Session/Session_ServerThread.cxx index a0d00d9ea..9538b4de2 100755 --- a/src/Session/Session_ServerThread.cxx +++ b/src/Session/Session_ServerThread.cxx @@ -62,58 +62,44 @@ const char* Session_ServerThread::_serverTypes[NB_SRV_TYP] = {"Container", "SalomeAppEngine", "ContainerManager"}; -//============================================================================= /*! - * default constructor not for use - */ -//============================================================================= - + default constructor not for use +*/ Session_ServerThread::Session_ServerThread() { ASSERT(0); // must not be called } -//============================================================================= /*! - * constructor - */ -//============================================================================= - + constructor +*/ Session_ServerThread::Session_ServerThread(int argc, char ** argv, CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex) + PortableServer::POA_ptr poa) { //MESSAGE("Session_ServerThread Constructor " << argv[0]); _argc = argc; _argv = argv; _orb = CORBA::ORB::_duplicate(orb); _root_poa = PortableServer::POA::_duplicate(poa); - _GUIMutex = GUIMutex; _servType =-1; _NS = new SALOME_NamingService(_orb); // one instance per server to limit // multi thread coherence problems } -//============================================================================= /*! - * destructor - */ -//============================================================================= - + destructor +*/ Session_ServerThread::~Session_ServerThread() { //MESSAGE("~Session_ServerThread "<< _argv[0]); } -//============================================================================= /*! - * run the thread : activate one servant, the servant type is given by - * argument _argv[0] - */ -//============================================================================= - + run the thread : activate one servant, the servant type is given by + argument _argv[0] +*/ void Session_ServerThread::Init() { MESSAGE("Session_ServerThread::Init "<< _argv[0]); @@ -186,12 +172,6 @@ void Session_ServerThread::Init() } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateModuleCatalog(int argc, char ** argv) { @@ -231,12 +211,6 @@ void Session_ServerThread::ActivateModuleCatalog(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateSALOMEDS(int argc, char ** argv) { @@ -270,12 +244,6 @@ void Session_ServerThread::ActivateSALOMEDS(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateRegistry(int argc, char ** argv) { @@ -332,12 +300,6 @@ void Session_ServerThread::ActivateRegistry(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainerManager(int argc, char ** argv) { @@ -370,12 +332,6 @@ void Session_ServerThread::ActivateContainerManager(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainer(int argc, char ** argv) { @@ -460,12 +416,6 @@ void Session_ServerThread::ActivateContainer(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/) { try @@ -493,29 +443,30 @@ void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/) } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateSession(int argc, char ** argv) { MESSAGE("Session_ServerThread::ActivateSession() not implemented!"); } +/*! + constructor +*/ Session_SessionThread::Session_SessionThread(int argc, char** argv, CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, QMutex* GUIMutex, QWaitCondition* GUILauncher) -: Session_ServerThread(argc, argv, orb, poa, GUIMutex), +: Session_ServerThread(argc, argv, orb, poa), + _GUIMutex( GUIMutex ), _GUILauncher( GUILauncher ) { } +/*! + destructor +*/ Session_SessionThread::~Session_SessionThread() { } diff --git a/src/Session/Session_ServerThread.hxx b/src/Session/Session_ServerThread.hxx index a10ab0ce6..de87612ed 100755 --- a/src/Session/Session_ServerThread.hxx +++ b/src/Session/Session_ServerThread.hxx @@ -50,8 +50,7 @@ public: Session_ServerThread(int argc, char ** argv, CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, - QMutex *GUIMutex); + PortableServer::POA_ptr poa); virtual ~Session_ServerThread(); void Init(); protected: @@ -68,7 +67,6 @@ protected: int _servType; CORBA::ORB_var _orb; PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; SALOME_NamingService * _NS; }; @@ -88,6 +86,7 @@ public: protected: virtual void ActivateSession ( int argc, char ** argv ); private: + QMutex* _GUIMutex; QWaitCondition* _GUILauncher; }; diff --git a/src/Session/Session_Session_i.cxx b/src/Session/Session_Session_i.cxx index 1a9662eea..1e337b035 100755 --- a/src/Session/Session_Session_i.cxx +++ b/src/Session/Session_Session_i.cxx @@ -45,12 +45,9 @@ using namespace std; -//============================================================================= -/*! SALOME_Session_i - * constructor - */ -//============================================================================= - +/*! + constructor +*/ SALOME_Session_i::SALOME_Session_i(int argc, char ** argv, CORBA::ORB_ptr orb, @@ -69,12 +66,9 @@ SALOME_Session_i::SALOME_Session_i(int argc, //MESSAGE("constructor end"); } -//============================================================================= -/*! GetVisuComponent - * returns Visu component - */ -//============================================================================= - +/*! + returns Visu component +*/ Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName) { typedef Engines::Component_ptr TGetImpl(CORBA::ORB_ptr, @@ -87,24 +81,18 @@ Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName return Engines::Component::_nil(); } -//============================================================================= -/*! ~SALOME_Session_i - * destructor - */ -//============================================================================= - +/*! + destructor +*/ SALOME_Session_i::~SALOME_Session_i() { //MESSAGE("destructor end"); } -//============================================================================= -/*! NSregister - * tries to find the Corba Naming Service and to register the session, - * gives naming service interface to _IAPPThread - */ -//============================================================================= - +/*! + tries to find the Corba Naming Service and to register the session, + gives naming service interface to _IAPPThread +*/ void SALOME_Session_i::NSregister() { SALOME::Session_ptr pSession = SALOME::Session::_narrow(_this()); @@ -125,13 +113,10 @@ void SALOME_Session_i::NSregister() //MESSAGE("Session registered in Naming Service"); } -//============================================================================= -/*! GetInterface - * Launches the GUI if there is none. - * The Corba method is oneway (corba client does'nt wait for GUI completion) - */ -//============================================================================= - +/*! + Launches the GUI if there is none. + The Corba method is oneway (corba client does'nt wait for GUI completion) +*/ void SALOME_Session_i::GetInterface() { _GUIMutex->lock(); @@ -143,11 +128,9 @@ void SALOME_Session_i::GetInterface() } } -//============================================================================= -/*! StopSession - * Kills the session if there are no active studies nore GUI - */ -//============================================================================= +/*! + Kills the session if there are no active studies nore GUI +*/ class CloseEvent : public SALOME_Event { public: @@ -159,18 +142,18 @@ public: } }; +/*! + Processes event to close session +*/ void SALOME_Session_i::StopSession() { ProcessVoidEvent( new CloseEvent() ); } -//============================================================================= -/*! StatSession - * Send a SALOME::StatSession structure (see idl) to the client - * (number of running studies and presence of GUI) - */ -//============================================================================= - +/*! + Send a SALOME::StatSession structure (see idl) to the client + (number of running studies and presence of GUI) +*/ class QtLock { public: @@ -209,7 +192,8 @@ CORBA::Long SALOME_Session_i::GetActiveStudyId() { long aStudyId=-1; if ( SUIT_Session::session() && SUIT_Session::session()->activeApplication() ) { - aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id(); + if ( SUIT_Session::session()->activeApplication()->activeStudy() ) // mkr : IPAL12128 + aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id(); } return aStudyId; } diff --git a/src/Style/Makefile.in b/src/Style/Makefile.in index 1c79d2891..a7ffaf27f 100644 --- a/src/Style/Makefile.in +++ b/src/Style/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : SalomeApp @@ -55,7 +73,7 @@ $(INSTALL_PLUGINDIR): mkdir -p $@ $(INSTALL_COPYLIB): - (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib/salome/%.so, $(filter %.la, $(LIB))) $@) || true + (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.la, $(LIB))) $@) || true @CONCLUDE@ diff --git a/src/Style/SalomeStyle.cxx b/src/Style/SalomeStyle.cxx index 8126eb8ec..a7f0479f5 100644 --- a/src/Style/SalomeStyle.cxx +++ b/src/Style/SalomeStyle.cxx @@ -129,16 +129,25 @@ static const char* const minimize_xpm[] = { Descr: Style for SALOME platform */ +/*! + Constructor +*/ SalomeStyle::SalomeStyle() : myTitleParent( 0 ) { qApp->installEventFilter( this ); } +/*! + Destructor +*/ SalomeStyle::~SalomeStyle() { } +/*! + Delayed initialization of style +*/ void SalomeStyle::polish( QWidget* w ) { if ( !w ) @@ -182,6 +191,9 @@ void SalomeStyle::polish( QWidget* w ) PARENT_STYLE::polish( w ); } +/*! + Custom event filter +*/ bool SalomeStyle::eventFilter( QObject* o, QEvent* e ) { if ( e->type() == QEvent::FocusIn || e->type() == QEvent::FocusOut ) @@ -223,6 +235,12 @@ double linear( double x ) return x; } +/*! + Mixes two colors, part of first is 1-t, part of second is t + \param t - part parameter + \param c1, c2 - colors + \param res - result color +*/ void SalomeStyle::mix( const double t, const QColor& c1, const QColor& c2, QColor& res ) { if( t<0.0 || t>1.0 ) @@ -234,6 +252,11 @@ void SalomeStyle::mix( const double t, const QColor& c1, const QColor& c2, QColo res.setRgb( r, g, b ); } +/*! + Mixes two colors, part of first is 1-t, part of second is t + \param t - part parameter + \param rgb1, rgb2 - colors (result is stored in rgb1) +*/ void SalomeStyle::mix( const double t, QRgb& rgb1, const QRgb& rgb2 ) { if( t<0.0 || t>1.0 ) @@ -247,6 +270,12 @@ void SalomeStyle::mix( const double t, QRgb& rgb1, const QRgb& rgb2 ) rgb1 = qRgba( c[0][0], c[0][1], c[0][2], qAlpha( rgb1 ) ); } +/*! + Mixes colors of pixmap points with other color + \param t - part parameter + \param pix - pixmap to be processed + \param col - other color +*/ void SalomeStyle::mix( const double t, QPixmap& pix, const QColor& col ) { if( t<0.0 || t>1.0 ) @@ -277,6 +306,11 @@ void SalomeStyle::mix( const double t, QPixmap& pix, const QColor& col ) pix = anImage; } +/*! + Converts pixmap to grayscale + \param pix - pixmap to be processed + \param k - factor (gray value after conversion will be multiplied on it and truncated by 255.0) +*/ void SalomeStyle::toGrayscale( QPixmap& pix, double k ) { QImage anImage = pix.convertToImage(); @@ -306,6 +340,14 @@ void SalomeStyle::toGrayscale( QPixmap& pix, double k ) pix = anImage; } +/*! + Draws gradient filling + \param p - painter + \param r - rect + \param c1, c2 - two colors of gradient + \param d - direction of gradient + \param f - gradient function (maps co-ordinate to part parameter) +*/ void SalomeStyle::drawGradient( QPainter* p, const QRect& r, const QColor& c1, const QColor& c2, const Direction d, gradient_func f ) const @@ -338,6 +380,15 @@ void SalomeStyle::drawGradient( QPainter* p, const QRect& r, p->restore(); } +/*! + Draws primitive element + \param pe - type of primitive element + \param p - painter + \param r - rect + \param cg - group of colors + \param flags - is used to control how the PrimitiveElement is drawn + \param opt - can be used to control how various PrimitiveElements are drawn +*/ void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect& r, const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const { @@ -551,6 +602,16 @@ void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect& } } +/*! + Draws control element + \param element - type of control element + \param p - painter + \param widget - widget + \param r - rect + \param cg - group of colors + \param flags - is used to control how the element is drawn + \param opt - can be used to control how various elements are drawn +*/ void SalomeStyle::drawControl( ControlElement element, QPainter* p, const QWidget* widget, const QRect& r, const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const { @@ -1058,6 +1119,11 @@ void SalomeStyle::drawControl( ControlElement element, QPainter* p, const QWidge } } +/*! + \return the sub-area for the widget in logical coordinates + \param subrect - type of sub area + \param w - widget +*/ QRect SalomeStyle::subRect( SubRect subrect, const QWidget* w ) const { QRect r = PARENT_STYLE::subRect( subrect, w ); @@ -1076,6 +1142,16 @@ QRect SalomeStyle::subRect( SubRect subrect, const QWidget* w ) const return r; } +/*! + Draws the ComplexControl + \param control - type of complex control element + \param p - painter + \param widget - widget + \param r - rect + \param cg - group of colors + \param flags, controls, active - is used to control how the element is drawn + \param opt - can be used to control how various elements are drawn +*/ void SalomeStyle::drawComplexControl( ComplexControl control, QPainter* p, const QWidget* widget, const QRect& r, const QColorGroup& cg, SFlags flags, SCFlags controls, SCFlags active, const QStyleOption& opt ) const @@ -1127,6 +1203,12 @@ void SalomeStyle::drawComplexControl( ComplexControl control, QPainter* p, const } } +/*! + \return pixmap by type + \param st - type of pixmap + \param w - widget + \param opt - style option flags +*/ QPixmap SalomeStyle::stylePixmap( StylePixmap st, const QWidget* w, const QStyleOption& opt ) const { switch ( st ) @@ -1145,6 +1227,11 @@ QPixmap SalomeStyle::stylePixmap( StylePixmap st, const QWidget* w, const QStyle } } +/*! + \return the pixel size + \param pm - type of pixel metrics + \param widget - widget +*/ int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const { int ret = 0; @@ -1186,6 +1273,12 @@ int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const return ret; } +/*! + \return corrected title text + \param txt - title text + \param w - possible width + \param fm - font metrics +*/ QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetrics& fm ) const { QString res = txt.stripWhiteSpace(); @@ -1205,22 +1298,31 @@ QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetr /*! Class: SalomeStylePlugin [Internal] - Descr: Plugin for Qt style mechanism + Constructor */ - SalomeStylePlugin::SalomeStylePlugin() { } +/*! + Destructor +*/ SalomeStylePlugin::~SalomeStylePlugin() { } +/*! + \return keys of styles of plugin +*/ QStringList SalomeStylePlugin::keys() const { return QStringList() << "salome"; } +/*! + \return just created style + \param str - style key +*/ QStyle* SalomeStylePlugin::create( const QString& str ) { if ( str == "salome" ) diff --git a/src/TOOLSGUI/Makefile.in b/src/TOOLSGUI/Makefile.in index e8e183e7f..f90f432e3 100755 --- a/src/TOOLSGUI/Makefile.in +++ b/src/TOOLSGUI/Makefile.in @@ -57,10 +57,10 @@ LIB_MOC = ToolsGUI_CatalogGeneratorDlg.h \ LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl -CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome +CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) +CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil +LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil @CONCLUDE@ diff --git a/src/TOOLSGUI/ToolsGUI.cxx b/src/TOOLSGUI/ToolsGUI.cxx index ac2ca02a7..f83f45111 100755 --- a/src/TOOLSGUI/ToolsGUI.cxx +++ b/src/TOOLSGUI/ToolsGUI.cxx @@ -28,10 +28,9 @@ #include "ToolsGUI.h" -//======================================================================= -// name : GetVisibility -// Purpose : Verify whether object is visible or not -//======================================================================= +/*! + \return true if object is visible +*/ bool ToolsGUI::GetVisibility( _PTR(Study) theStudy, _PTR(SObject) theObj, void* theId ) @@ -46,10 +45,13 @@ bool ToolsGUI::GetVisibility( _PTR(Study) theStudy, return false; } -//======================================================================= -// name : SetVisibility -// Purpose : Set flag visibility of object -//======================================================================= +/*! + Set flag visibility of object + \param theStudy - study + \param theEntry - entry + \param theValue - flag visibility + \param theId - id +*/ bool ToolsGUI::SetVisibility( _PTR(Study) theStudy, const char* theEntry, const bool theValue, @@ -77,8 +79,3 @@ bool ToolsGUI::SetVisibility( _PTR(Study) theStudy, return false; } - - - - - diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx index d06d2e0e3..4c93fa4da 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx @@ -59,10 +59,9 @@ using namespace std; #define MARGIN_SIZE 11 #define MIN_EDIT_SIZE 250 -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg() -// purpose : Constructor -//================================================================================= +/*! + Constructor +*/ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, const char* name ) : QDialog( parent, name, TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) { @@ -202,98 +201,88 @@ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, con updateButtonState(); } -//================================================================================= -// function : ~ToolsGUI_CatalogGeneratorDlg() -// purpose : destructor -//================================================================================= +/*! + destructor +*/ ToolsGUI_CatalogGeneratorDlg::~ToolsGUI_CatalogGeneratorDlg() { } -//================================================================================= -// function : getIdlFile() -// purpose : gets IDL file name entered -//================================================================================= +/*! + \return IDL file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getIdlFile() { return myIdlEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getXmlFile() -// purpose : gets XML file name entered -//================================================================================= +/*! + \return XML file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getXmlFile() { return myXmlEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getPngFile() -// purpose : gets PNG file name entered -//================================================================================= +/*! + \return PNG file name entered +*/ QString ToolsGUI_CatalogGeneratorDlg::getPngFile() { return myPngEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getAuthor() -// purpose : gets author -//================================================================================= +/*! + \return author +*/ QString ToolsGUI_CatalogGeneratorDlg::getAuthor() { return myAuthorEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getVersion() -// purpose : gets version number -//================================================================================= +/*! + \return version number +*/ QString ToolsGUI_CatalogGeneratorDlg::getVersion() { return myVersionEdit->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompName() -// purpose : gets name of the component -//================================================================================= +/*! + \return name of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompName() { return myCompName->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompUserName() -// purpose : gets username of the component -//================================================================================= +/*! + \return username of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompUserName() { return myCompUserName->text().stripWhiteSpace(); } -//================================================================================= -// function : getCompType() -// purpose : gets type of the component -//================================================================================= +/*! + \return type of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompMultiStd() { return myCompMultiStd->text().stripWhiteSpace(); } -//================================================================================= -// function : getComptype() -// purpose : gets type of the component -//================================================================================= + +/*! + \return type of the component +*/ QString ToolsGUI_CatalogGeneratorDlg::getCompType() { return myCompType->text().stripWhiteSpace(); } -//================================================================================= -// function : getIdlPath() -// purpose : gets IDL path of modules -//================================================================================= +/*! + \return IDL path of modules +*/ QString ToolsGUI_CatalogGeneratorDlg::getIdlPath() { cout << "QAD_Desktop::getCatalogue() is not implemented!!"; @@ -325,10 +314,9 @@ QString ToolsGUI_CatalogGeneratorDlg::getIdlPath() */ } -//================================================================================= -// function : onBrowseBtnClicked() -// purpose : <...> (Browse) buttons slot -//================================================================================= +/*! + SLOT: called on Browse button click +*/ void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked() { QPushButton* send = (QPushButton*)sender(); @@ -356,20 +344,18 @@ void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked() updateButtonState(); } -//================================================================================= -// function : updateButtonState() -// purpose : Updates button's state -//================================================================================= +/*! + Updates button's state +*/ void ToolsGUI_CatalogGeneratorDlg::updateButtonState() { myApplyBtn->setEnabled( !myIdlEdit->text().stripWhiteSpace().isEmpty() && !myXmlEdit->text().stripWhiteSpace().isEmpty() ); } -//================================================================================= -// function : onApply() -// purpose : button slot, performs IDL->XML conversion -//================================================================================= +/*! + button slot, performs IDL->XML conversion +*/ void ToolsGUI_CatalogGeneratorDlg::onApply() { QString IDLpath = getIdlPath(); diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h index 5da0d5cc6..cf88f1417 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h @@ -36,10 +36,6 @@ class QLineEdit; class QPushButton; -//================================================================================= -// class : ToolsGUI_CatalogGeneratorDlg -// purpose : -//================================================================================= class Standard_EXPORT ToolsGUI_CatalogGeneratorDlg : public QDialog { Q_OBJECT diff --git a/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx b/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx index bd1ed427a..cb5ad63f5 100755 --- a/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx @@ -36,6 +36,9 @@ using namespace std; +/*! + Constructor +*/ ToolsGUI_HelpWindow::ToolsGUI_HelpWindow(QWidget* parent, const char* name ) : QMainWindow( parent, name, WType_TopLevel | WDestructiveClose ) { diff --git a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx index 04d96c00a..4e122af79 100755 --- a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx @@ -20,8 +20,11 @@ #define SPACING_SIZE 6 #define MIN_SPIN_WIDTH 100 +/*! + Constructor +*/ ToolsGUI_IntervalWindow::ToolsGUI_IntervalWindow ( QWidget* parent ) - : QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) +: QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) { BEGIN_OF("ToolsGUI_IntervalWindow constructor") setCaption( tr( "Refresh Interval" ) ); @@ -73,8 +76,13 @@ ToolsGUI_IntervalWindow::ToolsGUI_IntervalWindow ( QWidget* parent ) END_OF("ToolsGUI_IntervalWindow constructor") } + +/*! + Destructor +*/ ToolsGUI_IntervalWindow::~ToolsGUI_IntervalWindow() {} -/* + +/*! Sets start interval size */ void ToolsGUI_IntervalWindow::setValue(const int size) @@ -82,24 +90,24 @@ void ToolsGUI_IntervalWindow::setValue(const int size) mySpinBox->setValue(size); } -/* - Gets interval size +/*! + \return interval size */ int ToolsGUI_IntervalWindow::getValue() { return mySpinBox->value(); } -/* - gets a pointer to myButtonOk +/*! + \return a pointer to myButtonOk */ QPushButton* ToolsGUI_IntervalWindow::Ok() { return myButtonOk; } -/* - gets a pointer to myButtonCancel +/*! + \return a pointer to myButtonCancel */ QPushButton* ToolsGUI_IntervalWindow::Cancel() { diff --git a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx index b36f8fdda..4692797f5 100755 --- a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx +++ b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx @@ -356,9 +356,11 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) a.append( BOLD( QString::number( int( c_info.uid ) ) ) ); a.append( QString( " )
    " ) + tr( "in directory" ) + QString( " " )); a.append( BOLD( c_info.cdir ) ); - + + time_t aTime; a.append( QString( "
    " ) + tr( "begins" ) + QString( " " ) ); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; a.append( BOLD( t1 ) ); delete [] t1; @@ -366,7 +368,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) if (c_info.tc_hello != 0 ) { - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; a.append( tr( "last signal" ) + QString(" : ") ); a.append( BOLD( t2 ) ); @@ -375,7 +378,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info) } if ((c_info.tc_end - c_info.difftime) != 0) { - char * t3 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t3 = (char * )duplicate(ctime(&aTime)); t3 [strlen(t3) -1 ] = ' '; a.append( tr( "ends" ) + QString( " " ) ); a.append( BOLD( t3 ) ); @@ -463,6 +467,7 @@ void ToolsGUI_RegWidget::InfoHistory() _history->clear(); try { + time_t aTime; _serverhistory = _VarComponents->history(); for (CORBA::ULong i=0; i<_serverhistory->length(); i++) { @@ -470,9 +475,11 @@ void ToolsGUI_RegWidget::InfoHistory() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_end)); + aTime = time_t(c_info.tc_end); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -503,6 +510,7 @@ void ToolsGUI_RegWidget::InfoReg() _clients->clear(); try { + time_t aTime; _serverclients = _VarComponents->getall(); for (CORBA::ULong i=0; i<_serverclients->length(); i++) { @@ -510,9 +518,11 @@ void ToolsGUI_RegWidget::InfoReg() ASSERT( c_info.name!=NULL); QString a; a.setNum(int(c_info.pid)); - char * t1 = (char * )duplicate(ctime(&c_info.tc_start)); + aTime = time_t(c_info.tc_start); + char * t1 = (char * )duplicate(ctime(&aTime)); t1 [strlen(t1) -1 ] = ' '; - char * t2 = (char * )duplicate(ctime(&c_info.tc_hello)); + aTime = time_t(c_info.tc_hello); + char * t2 = (char * )duplicate(ctime(&aTime)); t2 [strlen(t2) -1 ] = ' '; QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\ a, QString(c_info.pwname), QString(c_info.machine), \ @@ -567,6 +577,9 @@ void ToolsGUI_RegWidget::slotSelectRefresh() END_OF("slotSelectRefresh"); } +/*! + SLOT: called when IntervalWindow's OK button is clicked +*/ void ToolsGUI_RegWidget::slotIntervalOk() { BEGIN_OF("slotIntervalOk"); diff --git a/src/VTKViewer/Makefile.in b/src/VTKViewer/Makefile.in index dd5f7ea29..b22592c52 100755 --- a/src/VTKViewer/Makefile.in +++ b/src/VTKViewer/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : VTKViewer @@ -12,18 +30,18 @@ VPATH=.:@srcdir@:@srcdir@/resources @COMMENCE@ # header files -EXPORT_HEADERS= VTKViewer_Actor.h \ - VTKViewer_CellRectPicker.h \ +EXPORT_HEADERS= \ + VTKViewer.h \ + VTKViewer_CellLocationsArray.h \ + VTKViewer_Actor.h \ VTKViewer_ExtractUnstructuredGrid.h \ VTKViewer_ConvexTool.h \ VTKViewer_Filter.h \ VTKViewer_GeometryFilter.h \ VTKViewer_AppendFilter.h \ VTKViewer_Algorithm.h \ - VTKViewer.h \ VTKViewer_InteractorStyle.h \ VTKViewer_PassThroughFilter.h \ - VTKViewer_RectPicker.h \ VTKViewer_RenderWindow.h \ VTKViewer_RenderWindowInteractor.h \ VTKViewer_ShrinkFilter.h \ @@ -39,48 +57,46 @@ EXPORT_HEADERS= VTKViewer_Actor.h \ PO_FILES = \ VTKViewer_images.po \ - VTKViewer_msg_en.po \ - VTKViewerM_images.po \ - VTKViewerM_msg_en.po - + VTKViewer_msg_en.po + # Libraries targets LIB = libVTKViewer.la -LIB_SRC= VTKViewer_Actor.cxx \ - VTKViewer_CellRectPicker.cxx \ - VTKViewer_ExtractUnstructuredGrid.cxx \ - VTKViewer_Filter.cxx \ - VTKViewer_GeometryFilter.cxx \ - VTKViewer_AppendFilter.cxx \ - VTKViewer_InteractorStyle.cxx \ - VTKViewer_PassThroughFilter.cxx \ - VTKViewer_RectPicker.cxx \ - VTKViewer_RenderWindow.cxx \ - VTKViewer_RenderWindowInteractor.cxx \ - VTKViewer_ShrinkFilter.cxx \ - VTKViewer_Transform.cxx \ - VTKViewer_TransformFilter.cxx \ - VTKViewer_Trihedron.cxx \ - VTKViewer_Utilities.cxx \ - VTKViewer_VectorText.cxx \ - VTKViewer_ViewManager.cxx \ - VTKViewer_ViewModel.cxx \ - VTKViewer_ConvexTool.cxx \ - VTKViewer_ViewWindow.cxx +LIB_SRC= \ + VTKViewer_CellLocationsArray.cxx \ + VTKViewer_Actor.cxx \ + VTKViewer_ExtractUnstructuredGrid.cxx \ + VTKViewer_Filter.cxx \ + VTKViewer_GeometryFilter.cxx \ + VTKViewer_AppendFilter.cxx \ + VTKViewer_InteractorStyle.cxx \ + VTKViewer_PassThroughFilter.cxx \ + VTKViewer_RenderWindow.cxx \ + VTKViewer_RenderWindowInteractor.cxx \ + VTKViewer_ShrinkFilter.cxx \ + VTKViewer_Transform.cxx \ + VTKViewer_TransformFilter.cxx \ + VTKViewer_Trihedron.cxx \ + VTKViewer_Utilities.cxx \ + VTKViewer_VectorText.cxx \ + VTKViewer_ViewManager.cxx \ + VTKViewer_ViewModel.cxx \ + VTKViewer_ConvexTool.cxx \ + VTKViewer_ViewWindow.cxx LIB_MOC = \ - VTKViewer_RenderWindow.h \ - VTKViewer_RenderWindowInteractor.h \ - VTKViewer_ViewManager.h \ - VTKViewer_ViewModel.h \ - VTKViewer_ViewWindow.h + VTKViewer_RenderWindow.h \ + VTKViewer_RenderWindowInteractor.h \ + VTKViewer_ViewManager.h \ + VTKViewer_ViewModel.h \ + VTKViewer_ViewWindow.h BIN = VTKViewer CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) -LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) +LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) -lqtx -lsuit -LDFLAGSFORBIN=$(LDFLAGS) -lqtx -lsuit +LDFLAGSFORBIN=$(LDFLAGS) @CONCLUDE@ \ No newline at end of file diff --git a/src/VTKViewer/VTKViewer.h b/src/VTKViewer/VTKViewer.h index 27934b610..a4b51d18c 100755 --- a/src/VTKViewer/VTKViewer.h +++ b/src/VTKViewer/VTKViewer.h @@ -16,12 +16,25 @@ // // 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 + +#if !defined(vtkFloatingPointType) +# define vtkFloatingPointType vtkFloatingPointType + typedef float vtkFloatingPointType; +#endif + #endif diff --git a/src/VTKViewer/VTKViewer_Actor.cxx b/src/VTKViewer/VTKViewer_Actor.cxx index d2f72e2b8..5181ccd07 100755 --- a/src/VTKViewer/VTKViewer_Actor.cxx +++ b/src/VTKViewer/VTKViewer_Actor.cxx @@ -60,11 +60,11 @@ int VTKViewer_POINT_SIZE = 5; int VTKViewer_LINE_WIDTH = 3; -//---------------------------------------------------------------------------- vtkStandardNewMacro(VTKViewer_Actor); - -//---------------------------------------------------------------------------- +/*! + Constructor +*/ VTKViewer_Actor ::VTKViewer_Actor(): myIsHighlighted(false), @@ -86,8 +86,9 @@ VTKViewer_Actor myPassFilter.push_back(VTKViewer_PassThroughFilter::New()); } - -//---------------------------------------------------------------------------- +/*! + Destructor +*/ VTKViewer_Actor ::~VTKViewer_Actor() { @@ -104,8 +105,9 @@ VTKViewer_Actor myProperty->Delete(); } - -//---------------------------------------------------------------------------- +/*! + \return name +*/ const char* VTKViewer_Actor ::getName() @@ -113,6 +115,10 @@ VTKViewer_Actor return myName.c_str(); } +/*! + Sets name + \param theName - new name +*/ void VTKViewer_Actor ::setName(const char* theName) @@ -120,8 +126,9 @@ VTKViewer_Actor myName = theName; } - -//---------------------------------------------------------------------------- +/*! + To publish the actor an all its internal devices +*/ void VTKViewer_Actor ::AddToRender(vtkRenderer* theRenderer) @@ -129,6 +136,9 @@ VTKViewer_Actor theRenderer->AddActor(this); } +/*! + To remove the actor an all its internal devices +*/ void VTKViewer_Actor ::RemoveFromRender(vtkRenderer* theRenderer) @@ -136,13 +146,18 @@ VTKViewer_Actor theRenderer->RemoveActor(this); } +/*! + Used to obtain all dependent actors +*/ void VTKViewer_Actor ::GetChildActors(vtkActorCollection*) {} - -//---------------------------------------------------------------------------- +/*! + Apply view transformation + \param theTransform - view transformation +*/ void VTKViewer_Actor ::SetTransform(VTKViewer_Transform* theTransform) @@ -151,6 +166,9 @@ VTKViewer_Actor } +/*! + To insert some additional filters and then sets the given #vtkMapper +*/ void VTKViewer_Actor ::SetMapper(vtkMapper* theMapper) @@ -158,6 +176,9 @@ VTKViewer_Actor InitPipeLine(theMapper); } +/*! + Initialization +*/ void VTKViewer_Actor ::InitPipeLine(vtkMapper* theMapper) @@ -192,15 +213,23 @@ VTKViewer_Actor Superclass::SetMapper(theMapper); } - -//---------------------------------------------------------------------------- +/*! + Renders actor +*/ void VTKViewer_Actor ::Render(vtkRenderer *ren, vtkMapper* m) { + if(vtkDataSet* aDataSet = GetInput()){ + static vtkFloatingPointType PERCENTS_OF_DETAILS = 0.50; + vtkIdType aNbOfPoints = vtkIdType(aDataSet->GetNumberOfPoints()*PERCENTS_OF_DETAILS); + if(aNbOfPoints > 0) + SetNumberOfCloudPoints(aNbOfPoints); + } + if(myIsResolveCoincidentTopology){ int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology(); - float aFactor, aUnit; + vtkFloatingPointType aFactor, aUnit; vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit); vtkMapper::SetResolveCoincidentTopologyToPolygonOffset(); @@ -215,7 +244,10 @@ VTKViewer_Actor } } - +/*! + Set ResolveCoincidentTopology flag + \param theIsResolve - new flag value +*/ void VTKViewer_Actor ::SetResolveCoincidentTopology(bool theIsResolve) @@ -223,31 +255,45 @@ VTKViewer_Actor myIsResolveCoincidentTopology = theIsResolve; } +/*! + Set polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void VTKViewer_Actor -::SetPolygonOffsetParameters(float factor, float units) +::SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units) { myPolygonOffsetFactor = factor; myPolygonOffsetUnits = units; } +/*! + Get polygon offset parameters + \param factor, units - Opengl polygon offset parameters +*/ void VTKViewer_Actor -::GetPolygonOffsetParameters(float& factor, float& units) +::GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units) { factor = myPolygonOffsetFactor; units = myPolygonOffsetUnits; } - -//---------------------------------------------------------------------------- -float +/*! + \return shrink factor +*/ +vtkFloatingPointType VTKViewer_Actor ::GetShrinkFactor() { return 1.0; } +/*! + \return true if the actor is shrunkable +*/ bool VTKViewer_Actor ::IsShrunkable() @@ -255,6 +301,9 @@ VTKViewer_Actor return false; } +/*! + \return true if the actor is shrunk +*/ bool VTKViewer_Actor ::IsShrunk() @@ -262,18 +311,25 @@ VTKViewer_Actor return false; } +/*! + Insert shrink filter into pipeline +*/ void VTKViewer_Actor ::SetShrink() {} +/*! + Remove shrink filter from pipeline +*/ void VTKViewer_Actor ::UnShrink() {} - -//---------------------------------------------------------------------------- +/*! + Allows to get initial #vtkDataSet +*/ vtkDataSet* VTKViewer_Actor ::GetInput() @@ -281,7 +337,9 @@ VTKViewer_Actor return myPassFilter.front()->GetOutput(); } - +/*! + To calculatate last modified time +*/ unsigned long int VTKViewer_Actor ::GetMTime() @@ -296,8 +354,10 @@ VTKViewer_Actor return mTime; } - -//---------------------------------------------------------------------------- +/*! + Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on) + param theMode - new mode +*/ void VTKViewer_Actor ::SetRepresentation(int theMode) @@ -305,18 +365,25 @@ VTKViewer_Actor switch(myRepresentation){ case VTK_POINTS : case VTK_SURFACE : - myProperty->DeepCopy(GetProperty()); + myProperty->SetAmbient(GetProperty()->GetAmbient()); + myProperty->SetDiffuse(GetProperty()->GetDiffuse()); + myProperty->SetSpecular(GetProperty()->GetSpecular()); + break; } + switch(theMode){ case VTK_POINTS : case VTK_SURFACE : - GetProperty()->DeepCopy(myProperty); + GetProperty()->SetAmbient(myProperty->GetAmbient()); + GetProperty()->SetDiffuse(myProperty->GetDiffuse()); + GetProperty()->SetSpecular(myProperty->GetSpecular()); break; default: GetProperty()->SetAmbient(1.0); GetProperty()->SetDiffuse(0.0); GetProperty()->SetSpecular(0.0); } + switch(theMode){ case 3 : myGeomFilter->SetInside(true); @@ -340,9 +407,13 @@ VTKViewer_Actor myGeomFilter->SetInside(false); break; } + myRepresentation = theMode; } +/*! + \return current representation mode +*/ int VTKViewer_Actor ::GetRepresentation() @@ -350,8 +421,9 @@ VTKViewer_Actor return myRepresentation; } - -//---------------------------------------------------------------------------- +/*! + Maps VTK index of a node to corresponding object index +*/ int VTKViewer_Actor ::GetNodeObjId(int theVtkID) @@ -359,13 +431,19 @@ VTKViewer_Actor return theVtkID; } -float* +/*! + Get coordinates of a node for given object index +*/ +vtkFloatingPointType* VTKViewer_Actor ::GetNodeCoord(int theObjID) { return GetInput()->GetPoint(theObjID); } +/*! + Get corresponding #vtkCell for given object index +*/ vtkCell* VTKViewer_Actor ::GetElemCell(int theObjID) @@ -373,6 +451,9 @@ VTKViewer_Actor return GetInput()->GetCell(theObjID); } +/*! + Maps VTK index of a cell to corresponding object index +*/ int VTKViewer_Actor ::GetElemObjId(int theVtkID) @@ -381,11 +462,9 @@ VTKViewer_Actor } -//================================================================================= -// function : GetObjDimension -// purpose : Return object dimension. -// Virtual method shoulb be redifined by derived classes -//================================================================================= +/*! + \return object dimension. Virtual method should be redifined by derived classes +*/ int VTKViewer_Actor ::GetObjDimension( const int theObjId ) @@ -395,7 +474,10 @@ VTKViewer_Actor return 0; } - +/*! + Infinitive means actor without size (point for example), + which is not taken into account in calculation of boundaries of the scene +*/ void VTKViewer_Actor ::SetInfinitive(bool theIsInfinite) @@ -403,21 +485,34 @@ VTKViewer_Actor 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() { @@ -425,15 +520,17 @@ VTKViewer_Actor } +/*! + \return current bounding box +*/ void VTKViewer_Actor -::GetBounds(float theBounds[6]) +::GetBounds(vtkFloatingPointType theBounds[6]) { Superclass::GetBounds(theBounds); } -//---------------------------------------------------------------------------- bool VTKViewer_Actor ::IsSetCamera() const @@ -450,7 +547,7 @@ VTKViewer_Actor void VTKViewer_Actor -::SetSize( const float ) +::SetSize( const vtkFloatingPointType ) {} @@ -459,16 +556,16 @@ VTKViewer_Actor ::SetCamera( vtkCamera* ) {} -//---------------------------------------------------------------------------- + void VTKViewer_Actor -::SetOpacity(float theOpacity) +::SetOpacity(vtkFloatingPointType theOpacity) { myOpacity = theOpacity; GetProperty()->SetOpacity(theOpacity); } -float +vtkFloatingPointType VTKViewer_Actor ::GetOpacity() { @@ -476,25 +573,38 @@ VTKViewer_Actor } +/*! + Change color +*/ void VTKViewer_Actor -::SetColor(float r,float g,float b) +::SetColor(vtkFloatingPointType r, + vtkFloatingPointType g, + vtkFloatingPointType b) { GetProperty()->SetColor(r,g,b); } +/*! + Change color +*/ void VTKViewer_Actor -::SetColor(const float theRGB[3]) +::SetColor(const vtkFloatingPointType theRGB[3]) { SetColor(theRGB[0],theRGB[1],theRGB[2]); } +/*! + Get color +*/ void VTKViewer_Actor -::GetColor(float& r,float& g,float& b) +::GetColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b) { - float aColor[3]; + vtkFloatingPointType aColor[3]; GetProperty()->GetColor(aColor); r = aColor[0]; g = aColor[1]; @@ -502,7 +612,9 @@ VTKViewer_Actor } -//---------------------------------------------------------------------------- +/*! + \return display mode +*/ int VTKViewer_Actor ::getDisplayMode() @@ -510,6 +622,9 @@ VTKViewer_Actor return myDisplayMode; } +/*! + Change display mode +*/ void VTKViewer_Actor ::setDisplayMode(int theMode) @@ -519,7 +634,9 @@ VTKViewer_Actor } -//---------------------------------------------------------------------------- +/*! + \return true if the descendant of the VTKViewer_Actor will implement its own highlight or not +*/ bool VTKViewer_Actor ::hasHighlight() @@ -527,6 +644,9 @@ VTKViewer_Actor return false; } +/*! + \return true if the VTKViewer_Actor is already highlighted +*/ bool VTKViewer_Actor ::isHighlighted() @@ -534,6 +654,9 @@ VTKViewer_Actor return myIsHighlighted; } +/*! + Set preselection mode +*/ void VTKViewer_Actor ::SetPreSelected(bool thePreselect) @@ -541,8 +664,9 @@ VTKViewer_Actor myIsPreselected = thePreselect; } - -//---------------------------------------------------------------- +/*! + Just to update visibility of the highlight devices +*/ void VTKViewer_Actor ::highlight(bool theIsHighlight) diff --git a/src/VTKViewer/VTKViewer_Actor.h b/src/VTKViewer/VTKViewer_Actor.h index 55711a8c0..37d109da6 100755 --- a/src/VTKViewer/VTKViewer_Actor.h +++ b/src/VTKViewer/VTKViewer_Actor.h @@ -77,27 +77,31 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Change opacity virtual void - SetOpacity(float theOpacity); + SetOpacity(vtkFloatingPointType theOpacity); //! Get current opacity virtual - float + vtkFloatingPointType GetOpacity(); //! Change color virtual void - SetColor(float r,float g,float b); + SetColor(vtkFloatingPointType r, + vtkFloatingPointType g, + vtkFloatingPointType b); //! Get current color virtual void - GetColor(float& r,float& g,float& b); + GetColor(vtkFloatingPointType& r, + vtkFloatingPointType& g, + vtkFloatingPointType& b); //! Change color virtual void - SetColor(const float theRGB[3]); + SetColor(const vtkFloatingPointType theRGB[3]); //---------------------------------------------------------------------------- // For selection mapping purpose @@ -108,7 +112,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Get coordinates of a node for given object index virtual - float* + vtkFloatingPointType* GetNodeCoord(int theObjID); //! Maps VTK index of a cell to corresponding object index @@ -184,12 +188,12 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! To calcualte current bounding box virtual - float* + vtkFloatingPointType* GetBounds(); //! To calcualte current bounding box void - GetBounds(float bounds[6]); + GetBounds(vtkFloatingPointType bounds[6]); //---------------------------------------------------------------------------- virtual @@ -202,7 +206,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor virtual void - SetSize( const float ); + SetSize( const vtkFloatingPointType ); virtual void @@ -215,11 +219,13 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //! Set ResolveCoincidentTopology parameters void - SetPolygonOffsetParameters(float factor, float units); + SetPolygonOffsetParameters(vtkFloatingPointType factor, + vtkFloatingPointType units); //! Get current ResolveCoincidentTopology parameters void - GetPolygonOffsetParameters(float& factor, float& units); + GetPolygonOffsetParameters(vtkFloatingPointType& factor, + vtkFloatingPointType& units); virtual void @@ -228,7 +234,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor //---------------------------------------------------------------------------- //! Get current shrink factor virtual - float + vtkFloatingPointType GetShrinkFactor(); //! Is the actor is shrunkable @@ -295,12 +301,12 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor protected: //---------------------------------------------------------------------------- bool myIsResolveCoincidentTopology; - float myPolygonOffsetFactor; - float myPolygonOffsetUnits; + vtkFloatingPointType myPolygonOffsetFactor; + vtkFloatingPointType myPolygonOffsetUnits; std::string myName; - float myOpacity; + vtkFloatingPointType myOpacity; int myDisplayMode; bool myIsInfinite; diff --git a/src/VTKViewer/VTKViewer_AppendFilter.cxx b/src/VTKViewer/VTKViewer_AppendFilter.cxx index 222d2f1ab..34967f086 100644 --- a/src/VTKViewer/VTKViewer_AppendFilter.cxx +++ b/src/VTKViewer/VTKViewer_AppendFilter.cxx @@ -109,10 +109,6 @@ VTKViewer_AppendFilter } -//================================================================== -// function: DoMapping -// purpose : -//================================================================== void VTKViewer_AppendFilter ::DoMapping() @@ -138,7 +134,6 @@ VTKViewer_AppendFilter } } -//--------------------------------------------------------------- namespace { inline @@ -170,7 +165,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- vtkIdType VTKViewer_AppendFilter ::GetCellOutputID(vtkIdType theInputID, @@ -183,7 +177,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- namespace { void @@ -238,7 +231,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- void VTKViewer_AppendFilter ::GetCellInputID(vtkIdType theOutputID, @@ -254,7 +246,6 @@ VTKViewer_AppendFilter } -//--------------------------------------------------------------- void VTKViewer_AppendFilter ::MakeOutput() diff --git a/src/VTKViewer/VTKViewer_AppendFilter.h b/src/VTKViewer/VTKViewer_AppendFilter.h index ceaa3d323..fde327316 100644 --- a/src/VTKViewer/VTKViewer_AppendFilter.h +++ b/src/VTKViewer/VTKViewer_AppendFilter.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// #ifndef VTKVIEWER_APPENDFILTER_H #define VTKVIEWER_APPENDFILTER_H diff --git a/src/VTKViewer/VTKViewer_CellLocationsArray.cxx b/src/VTKViewer/VTKViewer_CellLocationsArray.cxx new file mode 100644 index 000000000..777b7d960 --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellLocationsArray.cxx @@ -0,0 +1,33 @@ +// 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 + +vtkStandardNewMacro(VTKViewer_CellLocationsArray); diff --git a/src/VTKViewer/VTKViewer_CellLocationsArray.h b/src/VTKViewer/VTKViewer_CellLocationsArray.h new file mode 100644 index 000000000..67228ca4f --- /dev/null +++ b/src/VTKViewer/VTKViewer_CellLocationsArray.h @@ -0,0 +1,42 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// + +#ifndef VTKVIEWER_CELLLOCATIONS_H +#define VTKVIEWER_CELLLOCATIONS_H + +#include "VTKViewer.h" + +#if (VTK_MAJOR_VERSION >= 4) && (VTK_MINOR_VERSION >= 4) +# include +# define TCellLocationsArray vtkIdTypeArray +#else +# include +# define TCellLocationsArray vtkIntArray +#endif + +struct VTKVIEWER_EXPORT VTKViewer_CellLocationsArray : TCellLocationsArray +{ + static VTKViewer_CellLocationsArray* New(); + + vtkTypeMacro(VTKViewer_CellLocationsArray,TCellLocationsArray); +}; + +#undef TCellLocationsArray + +#endif diff --git a/src/VTKViewer/VTKViewer_ConvexTool.cxx b/src/VTKViewer/VTKViewer_ConvexTool.cxx index 679e48428..5e0ede055 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.cxx +++ b/src/VTKViewer/VTKViewer_ConvexTool.cxx @@ -29,862 +29,561 @@ #include "VTKViewer_ConvexTool.h" -#include -#include -#include -#include -#include -#include - #include -#include -#include -#include - -typedef vtkUnstructuredGrid TInput; +#include -typedef std::set TUIDS; // unique ids -typedef std::map TPTOIDS; // id points -> unique ids - -namespace CONVEX_TOOL -{ - // all pairs - typedef std::pair TPair; - typedef std::set 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -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 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 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& 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 = "<(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 = "<"; - 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 = "<=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="< 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 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 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 << "========================================="<(cout, " ")); - if(MYDEBUG) cout << "\tv2:"; - if(MYDEBUG) std::copy(v2.begin(), v2.end(), std::ostream_iterator(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(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(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 <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] << ":"< 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] << ","<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="<"< RemoveAllUnneededPoints(vtkConvexPointSet* convex){ - vtkSmartPointer 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;iGetId(aFirId) << "," << aSecId <<":"<GetId(aSecId)<< " --- "; - for(vtkIdType k=aSecId+1;kGetId(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 ================" <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(theGrid->GetCell(cellId))){ - vtkSmartPointer 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="<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 = "<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 ["<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 = "< 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 = {"<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 << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<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 << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<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 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 = "<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 << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<GetPoint(anId,aPntCoord); + vtkFloatingPointType aDist = vtkPlane::Evaluate(aNormal,anOrigin,aPntCoord); + //cout<<"\t\taPntId = "<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]; } diff --git a/src/VTKViewer/VTKViewer_ConvexTool.h b/src/VTKViewer/VTKViewer_ConvexTool.h index ed303af03..356d5f623 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.h +++ b/src/VTKViewer/VTKViewer_ConvexTool.h @@ -21,28 +21,183 @@ #ifndef _VTKViewer_ConvexTool_H #define _VTKViewer_ConvexTool_H -#include +#include "VTKViewer.h" + #include -#include -typedef std::vector TCell; // ptsIds -typedef std::map TCellArray; // CellId, TCell +#include + +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& 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 diff --git a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx index 19672b782..5dc5a4333 100755 --- a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx +++ b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx @@ -26,13 +26,12 @@ #include "VTKViewer_ExtractUnstructuredGrid.h" -//#include "utilities.h" +#include "VTKViewer_CellLocationsArray.h" #include #include #include #include -#include #include #include @@ -234,7 +233,7 @@ void VTKViewer_ExtractUnstructuredGrid::Execute(){ } } if((aNbElems = aConnectivity->GetNumberOfCells())){ - vtkIntArray* aCellLocationsArray = vtkIntArray::New(); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents(1); aCellLocationsArray->SetNumberOfTuples(aNbElems); aConnectivity->InitTraversal(); @@ -323,7 +322,7 @@ void VTKViewer_ExtractUnstructuredGrid::Execute(){ } } if((aNbElems = aConnectivity->GetNumberOfCells())){ - vtkIntArray* aCellLocationsArray = vtkIntArray::New(); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents(1); aCellLocationsArray->SetNumberOfTuples(aNbElems); aConnectivity->InitTraversal(); diff --git a/src/VTKViewer/VTKViewer_GeometryFilter.cxx b/src/VTKViewer/VTKViewer_GeometryFilter.cxx index df096cf7a..5c8cbf1af 100755 --- a/src/VTKViewer/VTKViewer_GeometryFilter.cxx +++ b/src/VTKViewer/VTKViewer_GeometryFilter.cxx @@ -27,6 +27,7 @@ // $Header$ #include "VTKViewer_GeometryFilter.h" +#include "VTKViewer_ConvexTool.h" #include #include @@ -45,11 +46,6 @@ #include #include -#include -#include -#include -#include - #include #include #include @@ -62,9 +58,8 @@ #endif #endif -#define USE_ROBUST_TRIANGULATION +//#define USE_ROBUST_TRIANGULATION -//---------------------------------------------------------------------------- vtkCxxRevisionMacro(VTKViewer_GeometryFilter, "$Revision$"); vtkStandardNewMacro(VTKViewer_GeometryFilter); @@ -81,7 +76,6 @@ VTKViewer_GeometryFilter {} -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::Execute() @@ -102,7 +96,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::UnstructuredGridExecute() @@ -128,28 +121,19 @@ VTKViewer_GeometryFilter vtkPolyData *output = this->GetOutput(); vtkPointData *outputPD = output->GetPointData(); -#ifdef USE_ROBUST_TRIANGULATION - vtkUnstructuredGrid* anUnstructuredGrid = vtkUnstructuredGrid::New(); - vtkPoints* aDelaunayPoints = vtkPoints::New(); - - vtkDelaunay3D* aDelaunay3D = vtkDelaunay3D::New(); - aDelaunay3D->SetInput(anUnstructuredGrid); - - vtkGeometryFilter* aGeometryFilter = vtkGeometryFilter::New(); - aGeometryFilter->SetInput(aDelaunay3D->GetOutput()); -#endif + VTKViewer_OrderedTriangulator anOrderedTriangulator; + VTKViewer_DelaunayTriangulator aDelaunayTriangulator; vtkCellData *outputCD = output->GetCellData(); vtkGenericCell *cell = vtkGenericCell::New(); - vtkIdList *cellIds = vtkIdList::New(); vtkIdList *faceIds = vtkIdList::New(); char *cellVis; vtkIdType newCellId; int faceId, *faceVerts, numFacePts; - float *x; + vtkFloatingPointType *x; int PixelConvert[4], aNewPts[VTK_CELL_SIZE]; // ghost cell stuff unsigned char updateLevel = (unsigned char)(output->GetUpdateGhostLevel()); @@ -306,299 +290,30 @@ VTKViewer_GeometryFilter break; case VTK_CONVEX_POINT_SET: { - //cout<<"cellId = "<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 = "<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 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 TFace2Visibility; - TFace2Visibility aFace2Visibility; - - typedef std::set 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 = "<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 = "< 0){ - aCross21[0] = -aCross21[0]; - aCross21[1] = -aCross21[1]; - aCross21[2] = -aCross21[2]; - } - - vtkMath::Normalize(aVector0); - - //cout<<"\t\taCenter = {"< 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 = "< aConnectivities(numFacePts); - TSortedPointIds::const_iterator anIter = aSortedPointIds.begin(); - TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end(); - for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){ - vtkIdType aPntId = anIter->second; -#ifdef USE_ROBUST_TRIANGULATION - aConnectivities[anId] = aPts[aPntId]; -#else - aConnectivities[anId] = aPntId; -#endif - } - newCellId = output->InsertNextCell(aCellType,numFacePts,&aConnectivities[0]); - if(myStoreMapping) - myVTK2ObjIds.push_back(cellId); - outputCD->CopyData(cd,cellId,newCellId); - } - } - } - } - break; } case VTK_TETRA: { @@ -1029,14 +744,6 @@ VTKViewer_GeometryFilter vtkDebugMacro(<<"Extracted " << input->GetNumberOfPoints() << " points," << output->GetNumberOfCells() << " cells."); -#ifdef USE_ROBUST_TRIANGULATION - anUnstructuredGrid->Delete(); - aDelaunayPoints->Delete(); - - aDelaunay3D->Delete(); - aGeometryFilter->Delete(); -#endif - cell->Delete(); cellIds->Delete(); @@ -1049,7 +756,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetInside(int theShowInside) @@ -1069,7 +775,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetWireframeMode(int theIsWireframeMode) @@ -1089,7 +794,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetStoreMapping(int theStoreMapping) @@ -1109,7 +813,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){ if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1; #if defined __GNUC_2__ diff --git a/src/VTKViewer/VTKViewer_InteractorStyle.cxx b/src/VTKViewer/VTKViewer_InteractorStyle.cxx index 1f69e6085..c40cf8d90 100644 --- a/src/VTKViewer/VTKViewer_InteractorStyle.cxx +++ b/src/VTKViewer/VTKViewer_InteractorStyle.cxx @@ -30,10 +30,8 @@ #include "VTKViewer_Actor.h" #include "VTKViewer_Utilities.h" #include "VTKViewer_Trihedron.h" -#include "VTKViewer_RectPicker.h" #include "VTKViewer_ViewWindow.h" #include "VTKViewer_RenderWindow.h" -#include "VTKViewer_CellRectPicker.h" #include "VTKViewer_RenderWindowInteractor.h" //#include "SALOME_Actor.h" @@ -86,10 +84,10 @@ static int GetEdgeId(vtkPicker *thePicker, SALOME_Actor *theActor, int theObjId) return anEdgeId; } */ -//---------------------------------------------------------------------------- + vtkStandardNewMacro(VTKViewer_InteractorStyle); -//---------------------------------------------------------------------------- + /*!Constructor.*/ VTKViewer_InteractorStyle::VTKViewer_InteractorStyle() { @@ -108,14 +106,14 @@ VTKViewer_InteractorStyle::VTKViewer_InteractorStyle() OnSelectionModeChanged(); } -//---------------------------------------------------------------------------- + /*!Destructor.*/ VTKViewer_InteractorStyle::~VTKViewer_InteractorStyle() { m_ViewWnd->RemoveActor(myPreSelectionActor); } -//---------------------------------------------------------------------------- + /*!Set preselection properties. *\param theRed - red color. *\param theGreen - green color. @@ -132,7 +130,7 @@ void VTKViewer_InteractorStyle::setPreselectionProp(const double& theRed, const myPreSelectionActor->GetProperty()->SetPointSize(theWidth); } -//---------------------------------------------------------------------------- + /*!Set render window interactor *\param theInteractor - interactor. */ @@ -141,7 +139,7 @@ void VTKViewer_InteractorStyle::SetInteractor(vtkRenderWindowInteractor *theInte Superclass::SetInteractor(theInteractor); } -//---------------------------------------------------------------------------- + /*!Set view window. *\param theViewWnd - SALOME VTKViewer_ViewWindow */ @@ -151,7 +149,7 @@ void VTKViewer_InteractorStyle::setViewWnd(VTKViewer_ViewWindow* theViewWnd ){ myPreSelectionActor->Delete(); } -//---------------------------------------------------------------------------- + /*!Set GUI window. *\param theWindow - QWidget window. */ @@ -159,15 +157,14 @@ void VTKViewer_InteractorStyle::setGUIWindow(QWidget* theWindow){ myGUIWindow = theWindow; } -//---------------------------------------------------------------------------- -/*!Set triedron. + +/*!Set trihedron. *\param theTrihedron - SALOME VTKViewer_Trihedron */ void VTKViewer_InteractorStyle::setTriedron(VTKViewer_Trihedron* theTrihedron){ m_Trihedron = theTrihedron; } -//---------------------------------------------------------------------------- /*!Rotate camera. *\param dx - *\param dy - @@ -199,7 +196,6 @@ void VTKViewer_InteractorStyle::RotateXY(int dx, int dy) myGUIWindow->update(); } -//---------------------------------------------------------------------------- void VTKViewer_InteractorStyle::PanXY(int x, int y, int oldX, int oldY) { TranslateView(x, y, oldX, oldY); @@ -208,7 +204,6 @@ void VTKViewer_InteractorStyle::PanXY(int x, int y, int oldX, int oldY) } -//---------------------------------------------------------------------------- /*! Move the position of the camera along the direction of projection. (dx,dy)*/ void VTKViewer_InteractorStyle::DollyXY(int dx, int dy) { @@ -231,8 +226,6 @@ void VTKViewer_InteractorStyle::DollyXY(int dx, int dy) myGUIWindow->update(); } -//---------------------------------------------------------------------------- -/*!*/ void VTKViewer_InteractorStyle::SpinXY(int x, int y, int oldX, int oldY) { vtkCamera *cam; @@ -259,7 +252,6 @@ void VTKViewer_InteractorStyle::SpinXY(int x, int y, int oldX, int oldY) } -//---------------------------------------------------------------------------- /*!On mouse move event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -278,7 +270,6 @@ void VTKViewer_InteractorStyle::OnMouseMove(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On Left button down event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -315,7 +306,6 @@ void VTKViewer_InteractorStyle::OnLeftButtonDown(int ctrl, int shift, } -//---------------------------------------------------------------------------- /*!On left button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -336,7 +326,6 @@ void VTKViewer_InteractorStyle::OnLeftButtonUp(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On left button up event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -374,7 +363,6 @@ void VTKViewer_InteractorStyle::OnMiddleButtonDown(int ctrl, } -//---------------------------------------------------------------------------- /*!On middle button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -395,7 +383,6 @@ void VTKViewer_InteractorStyle::OnMiddleButtonUp(int vtkNotUsed(ctrl), } -//---------------------------------------------------------------------------- /*!On right button down event. *\param ctrl - CTRL (on/off - integer 0/1) *\param shift - SHIFT (on/off - integer 0/1) @@ -432,7 +419,6 @@ void VTKViewer_InteractorStyle::OnRightButtonDown(int ctrl, } } -//---------------------------------------------------------------------------- /*!On right button up event. *\param ctrl - CTRL (not used) *\param shift - SHIFT (on/off - integer 0/1) @@ -452,8 +438,7 @@ void VTKViewer_InteractorStyle::OnRightButtonUp(int vtkNotUsed(ctrl), } } -//---------------------------------------------------------------------------- -/** @name XPM - x pixmaps. */ +/*! @name XPM - x pixmaps. */ //@{ /*!Image Zoom cursor*/ const char* imageZoomCursor[] = { @@ -534,7 +519,6 @@ const char* imageRotateCursor[] = { "................................"}; //@} -//---------------------------------------------------------------------------- /*! Loads cursors for viewer operations - zoom, pan, etc...*/ void VTKViewer_InteractorStyle::loadCursors() { @@ -549,7 +533,6 @@ void VTKViewer_InteractorStyle::loadCursors() } -//---------------------------------------------------------------------------- /*! event filter - controls mouse and keyboard events during viewer operations*/ bool VTKViewer_InteractorStyle::eventFilter(QObject* object, QEvent* event) { @@ -563,7 +546,6 @@ bool VTKViewer_InteractorStyle::eventFilter(QObject* object, QEvent* event) } -//---------------------------------------------------------------------------- /*! starts Zoom operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startZoom() { @@ -578,7 +560,6 @@ void VTKViewer_InteractorStyle::startZoom() } -//---------------------------------------------------------------------------- /*! starts Pan operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startPan() { @@ -592,7 +573,6 @@ void VTKViewer_InteractorStyle::startPan() qApp->installEventFilter(this); } -//---------------------------------------------------------------------------- /*! starts Rotate operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startRotate() { @@ -607,7 +587,6 @@ void VTKViewer_InteractorStyle::startRotate() } -//---------------------------------------------------------------------------- /*! starts Spin operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startSpin() { @@ -623,7 +602,6 @@ void VTKViewer_InteractorStyle::startSpin() -//---------------------------------------------------------------------------- /*! starts Fit Area operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startFitArea() { @@ -638,7 +616,6 @@ void VTKViewer_InteractorStyle::startFitArea() } -//---------------------------------------------------------------------------- /*!View fit all.*/ void VTKViewer_InteractorStyle::ViewFitAll() { int aTriedronWasVisible = false; @@ -660,7 +637,6 @@ void VTKViewer_InteractorStyle::ViewFitAll() { } -//---------------------------------------------------------------------------- /*! starts Global Panning operation (e.g. through menu command)*/ void VTKViewer_InteractorStyle::startGlobalPan() { @@ -684,7 +660,6 @@ void VTKViewer_InteractorStyle::startGlobalPan() } -//---------------------------------------------------------------------------- /*!\retval TRUE if needs redrawing*/ bool VTKViewer_InteractorStyle::needsRedrawing() { @@ -696,7 +671,6 @@ bool VTKViewer_InteractorStyle::needsRedrawing() } -//---------------------------------------------------------------------------- /*! fits viewer contents to rectangle *\param left - left side *\param top - top side @@ -735,7 +709,6 @@ void VTKViewer_InteractorStyle::fitRect(const int left, } -//---------------------------------------------------------------------------- /*! starts viewer operation (!internal usage!)*/ void VTKViewer_InteractorStyle::startOperation(int operation) { @@ -764,7 +737,6 @@ void VTKViewer_InteractorStyle::startOperation(int operation) } -//---------------------------------------------------------------------------- /*! sets proper cursor for window when viewer operation is activated*/ void VTKViewer_InteractorStyle::setCursor(const int operation) { @@ -805,7 +777,6 @@ void VTKViewer_InteractorStyle::setCursor(const int operation) } -//---------------------------------------------------------------------------- /*! called when viewer operation started (!put necessary initialization here!)*/ void VTKViewer_InteractorStyle::onStartOperation() { @@ -832,7 +803,6 @@ void VTKViewer_InteractorStyle::onStartOperation() } -//---------------------------------------------------------------------------- /*! called when viewer operation finished (!put necessary post-processing here!)*/ void VTKViewer_InteractorStyle::onFinishOperation() { @@ -1366,17 +1336,17 @@ void VTKViewer_InteractorStyle::Place(const int theX, const int theY) void VTKViewer_InteractorStyle::TranslateView(int toX, int toY, int fromX, int fromY) { vtkCamera *cam = this->CurrentRenderer->GetActiveCamera(); - double viewFocus[4], focalDepth, viewPoint[3]; - float newPickPoint[4], oldPickPoint[4], motionVector[3]; + vtkFloatingPointType viewFocus[4], focalDepth, viewPoint[3]; + vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3]; cam->GetFocalPoint(viewFocus); this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1], viewFocus[2], viewFocus); focalDepth = viewFocus[2]; - this->ComputeDisplayToWorld(double(toX), double(toY), + this->ComputeDisplayToWorld(vtkFloatingPointType(toX), vtkFloatingPointType(toY), focalDepth, newPickPoint); - this->ComputeDisplayToWorld(double(fromX),double(fromY), + this->ComputeDisplayToWorld(vtkFloatingPointType(fromX),vtkFloatingPointType(fromY), focalDepth, oldPickPoint); // camera motion is reversed @@ -1400,17 +1370,17 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkActor* theActor, const int left, const int top, const int right, const int bottom) { - float* aBounds = theActor->GetBounds(); - float aMin[3], aMax[3]; + vtkFloatingPointType* aBounds = theActor->GetBounds(); + vtkFloatingPointType aMin[3], aMax[3]; ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; + vtkFloatingPointType aBuf = aMin[0]; aMin[0] = aMax[0]; aMax[0] = aBuf; } if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; + vtkFloatingPointType aBuf = aMin[1]; aMin[1] = aMax[1]; aMax[1] = aBuf; } @@ -1424,17 +1394,17 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkCell* theCell, const int left, const int top, const int right, const int bottom) { - float* aBounds = theCell->GetBounds(); - float aMin[3], aMax[3]; + vtkFloatingPointType* aBounds = theCell->GetBounds(); + vtkFloatingPointType aMin[3], aMax[3]; ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin); ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax); if (aMin[0] > aMax[0]) { - float aBuf = aMin[0]; + vtkFloatingPointType aBuf = aMin[0]; aMin[0] = aMax[0]; aMax[0] = aBuf; } if (aMin[1] > aMax[1]) { - float aBuf = aMin[1]; + vtkFloatingPointType aBuf = aMin[1]; aMin[1] = aMax[1]; aMax[1] = aBuf; } @@ -1443,11 +1413,11 @@ bool VTKViewer_InteractorStyle::IsInRect(vtkCell* theCell, } /*!Checks: is given point \a thePoint in rectangle*/ -bool VTKViewer_InteractorStyle::IsInRect(float* thePoint, - const int left, const int top, - const int right, const int bottom) +bool VTKViewer_InteractorStyle::IsInRect(vtkFloatingPointType* thePoint, + const int left, const int top, + const int right, const int bottom) { - float aPnt[3]; + vtkFloatingPointType aPnt[3]; ComputeWorldToDisplay(thePoint[0], thePoint[1], thePoint[2], aPnt); return ((aPnt[0]>left) && (aPnt[0]bottom) && (aPnt[1]GetRenderers(); theRenderers->InitTraversal(); diff --git a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx index daf93e15c..2c15afb72 100755 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx +++ b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx @@ -118,6 +118,11 @@ VTKViewer_RenderWindowInteractor::~VTKViewer_RenderWindowInteractor() myPointPicker->Delete(); } +/*! + Print interactor to stream + \param os - stream + \param indent +*/ void VTKViewer_RenderWindowInteractor::PrintSelf(ostream& os, vtkIndent indent) { vtkRenderWindowInteractor::PrintSelf(os, indent) ; @@ -214,34 +219,6 @@ void VTKViewer_RenderWindowInteractor::SetInteractorStyle(vtkInteractorObserver vtkRenderWindowInteractor::SetInteractorStyle(theInteractor); } - -/* -void VTKViewer_RenderWindowInteractor::SetSelectionMode(Selection_Mode theMode) -{ - myCellActor->SetVisibility(false); - myEdgeActor->SetVisibility(false); - myPointActor->SetVisibility(false); - - switch(theMode){ - case ActorSelection: - this->SetPicker(myBasicPicker); - break; - case NodeSelection: - this->SetPicker(myPointPicker); - break; - case CellSelection: - case EdgeSelection: - case FaceSelection: - case VolumeSelection: - case EdgeOfCellSelection: - this->SetPicker(myCellPicker); - break; - } - - myInteractorStyle->OnSelectionModeChanged(); -} -*/ - /*!Sets selection properties. *\param theRed - red component of color *\param theGreen - green component of color @@ -351,8 +328,9 @@ int VTKViewer_RenderWindowInteractor::CreateTimer(int vtkNotUsed(timertype)) return 1 ; } -/**@see CreateTimer(int ) - *\retval 1 +/*! + \sa CreateTimer(int ) + \retval 1 */ int VTKViewer_RenderWindowInteractor::DestroyTimer(void) { @@ -623,6 +601,9 @@ void VTKViewer_RenderWindowInteractor::Display( VTKViewer_Actor* theActor, bool emit RenderWindowModified(); } +/*! + default key press event (empty implementation) +*/ void VTKViewer_RenderWindowInteractor::KeyPressed(QKeyEvent *event) { /// NOT_IMPLEMENTED @@ -698,7 +679,7 @@ void VTKViewer_RenderWindowInteractor::setActorData(const TColStd_IndexedMapOfIn TUpdateActor theFun) { (*theFun)(theMapIndex,theMapActor,theActor); - float aPos[3]; + vtkFloatingPointType aPos[3]; theMapActor->GetPosition(aPos); theActor->SetPosition(aPos); } diff --git a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx index c65699a9a..c485a7092 100755 --- a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx +++ b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx @@ -55,13 +55,13 @@ void VTKViewer_ShrinkFilter::Execute() int i, j, numIds, abort=0; vtkIdType cellId, numCells, numPts; vtkIdType oldId, newId; - float center[3], *p, pt[3]; + vtkFloatingPointType center[3], *p, pt[3]; vtkPointData *pd, *outPD;; vtkIdList *ptIds, *newPtIds; vtkDataSet *input= this->GetInput(); vtkUnstructuredGrid *output = this->GetOutput(); vtkIdType tenth; - float decimal; + vtkFloatingPointType decimal; vtkDebugMacro(<<"Shrinking cells"); diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx index a6670cb87..daf3997d5 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.cxx +++ b/src/VTKViewer/VTKViewer_Trihedron.cxx @@ -44,7 +44,10 @@ VTKViewer_UnScaledActor::VTKViewer_UnScaledActor() Bounds[1] = Bounds[3] = Bounds[5] = -VTK_LARGE_FLOAT; } -float* +/*! + \return bounding box +*/ +vtkFloatingPointType* VTKViewer_UnScaledActor ::GetBounds() { @@ -65,19 +68,20 @@ void VTKViewer_UnScaledActor::SetSize(int theSize) void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer) { if(theRenderer){ - float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}}; + vtkFloatingPointType P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}}; theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]); theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]); - float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+ - (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+ - (P[1][2]-P[0][2])*(P[1][2]-P[0][2])); + vtkFloatingPointType aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+ + (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+ + (P[1][2]-P[0][2])*(P[1][2]-P[0][2])); int* aSize = theRenderer->GetRenderWindow()->GetSize(); - float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1])); + vtkFloatingPointType aWinDiag = sqrt(vtkFloatingPointType(aSize[0]*aSize[0]+aSize[1]*aSize[1])); vtkDataSet* aDataSet = GetMapper()->GetInput(); - float aLength = aDataSet->GetLength(); - float aPrecision = 1.0E-3; - float anOldScale = GetScale()[0]; - float aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1])); + aDataSet->Update(); + vtkFloatingPointType aLength = aDataSet->GetLength(); + vtkFloatingPointType aPrecision = 1.0E-3; + vtkFloatingPointType anOldScale = GetScale()[0]; + vtkFloatingPointType aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[0])/vtkFloatingPointType(aSize[1])); if(fabs(aScale - anOldScale)/aScale > aPrecision){ SetScale(aScale); } @@ -104,6 +108,9 @@ void VTKViewer_LineActor::Render(vtkRenderer *theRenderer) vtkFollower::Render(theRenderer); } +/*! + Constructor +*/ VTKViewer_Axis::VTKViewer_Axis() { /*! \li Initialize the Line pipe-line representation*/ @@ -152,6 +159,9 @@ VTKViewer_Axis::VTKViewer_Axis() myVisibility = VTKViewer_Trihedron::eOn; } +/*! + Destructor +*/ VTKViewer_Axis::~VTKViewer_Axis() { /*! \li Destroy of the Label pipe-line representation */ @@ -179,6 +189,9 @@ VTKViewer_Axis::~VTKViewer_Axis() myLineSource->Delete(); } +/*! Add to renderer + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Axis::AddToRender(vtkRenderer* theRenderer){ /*! \li Order of the calls are important*/ theRenderer->AddActor(myLineActor); @@ -186,6 +199,9 @@ void VTKViewer_Axis::AddToRender(vtkRenderer* theRenderer){ theRenderer->AddActor(myArrowActor); } +/*! Remove actor of acis from \a theRenderer which are in myPresent. + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Axis::RemoveFromRender(vtkRenderer* theRenderer){ /*! \li Order of the calls are important*/ theRenderer->RemoveActor(myLineActor); @@ -193,6 +209,7 @@ void VTKViewer_Axis::RemoveFromRender(vtkRenderer* theRenderer){ theRenderer->RemoveActor(myArrowActor); } +/*! Sets visibility for all Axis to \a theVis*/ void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis) { switch(theVis){ @@ -213,20 +230,25 @@ void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis) myVisibility = theVis; } -//**************************************************************** +/*! Set camera for myLabelActor + */ void VTKViewer_Axis::SetCamera(vtkCamera* theCamera){ myLabelActor->SetCamera(theCamera); } +/*! Sets \a theProperty for actors: myLineActor,myLabelActor,myArrowActor + */ void VTKViewer_Axis::SetProperty(vtkProperty* theProperty){ myLabelActor->SetProperty(theProperty); myArrowActor->SetProperty(theProperty); myLineActor->SetProperty(theProperty); } -void VTKViewer_Axis::SetSize(float theSize) +/*! Set size of VTKViewer_Axis + */ +void VTKViewer_Axis::SetSize(vtkFloatingPointType theSize) { - float aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize}; + vtkFloatingPointType aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize}; myLineSource->SetPoint2(aPosition); myArrowActor->SetPosition(0.0,0.0,0.0); @@ -318,16 +340,22 @@ VTKViewer_ZAxis::VTKViewer_ZAxis() vtkStandardNewMacro(VTKViewer_Trihedron); +/*! + Constructor +*/ VTKViewer_Trihedron::VTKViewer_Trihedron() { myPresent = vtkActorCollection::New(); myAxis[0] = VTKViewer_XAxis::New(); myAxis[1] = VTKViewer_YAxis::New(); myAxis[2] = VTKViewer_ZAxis::New(); - static float aSize = 100; + static vtkFloatingPointType aSize = 100; SetSize(aSize); } +/*! + Destructor +*/ VTKViewer_Trihedron::~VTKViewer_Trihedron() { myPresent->RemoveAllItems(); @@ -336,24 +364,34 @@ VTKViewer_Trihedron::~VTKViewer_Trihedron() myAxis[i]->Delete(); } -void VTKViewer_Trihedron::SetSize(float theSize) +/*! Set size of axes + */ +void VTKViewer_Trihedron::SetSize(vtkFloatingPointType theSize) { mySize = theSize; for(int i = 0; i < 3; i++) myAxis[i]->SetSize(theSize); } +/*! Set visibility of axes + */ void VTKViewer_Trihedron::SetVisibility(TVisibility theVis) { for(int i = 0; i < 3; i++) myAxis[i]->SetVisibility(theVis); } +/*! + \return visibility of first axis +*/ VTKViewer_Trihedron::TVisibility VTKViewer_Trihedron::GetVisibility() { return myAxis[0]->GetVisibility(); } +/*! Add to render all Axis + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer) { vtkCamera* aCamera = theRenderer->GetActiveCamera(); @@ -363,6 +401,9 @@ void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer) } } +/*! Remove all actors from \a theRenderer which are in myPresent. + * \param theRenderer - vtkRenderer pointer + */ void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer) { myPresent->InitTraversal(); @@ -372,6 +413,9 @@ void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer) myAxis[i]->RemoveFromRender(theRenderer); } +/*! Return count of visible actors. + * \param theRenderer - vtkRenderer pointer + */ int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer) { //TVisibility aVis = GetVisibility(); diff --git a/src/VTKViewer/VTKViewer_Trihedron.h b/src/VTKViewer/VTKViewer_Trihedron.h index e40e3bc90..b92cf02f6 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.h +++ b/src/VTKViewer/VTKViewer_Trihedron.h @@ -52,7 +52,7 @@ public: /*!Create new instance of VTKViewer_UnScaledActor.*/ static VTKViewer_UnScaledActor *New(); - virtual float* GetBounds(); + virtual vtkFloatingPointType* GetBounds(); virtual void SetSize(int theSize); virtual void Render(vtkRenderer *theRenderer); @@ -111,7 +111,6 @@ protected: VTKViewer_UnScaledActor* ArrowActor; }; -//**************************************************************** /*!This class provide support trihedron object in vtk viewer.*/ class VTKVIEWER_EXPORT VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject { @@ -133,14 +132,14 @@ public: static VTKViewer_Trihedron *New(); /*!Sets size of trihedron. - * \param theSize - float value + * \param theSize - vtkFloatingPointType value */ - virtual void SetSize(float theSize); + virtual void SetSize(vtkFloatingPointType theSize); /*! Get size of trihedron. - * \retval mySize - float value + * \retval mySize - vtkFloatingPointType value */ - virtual float GetSize() { return mySize;} + virtual vtkFloatingPointType GetSize() { return mySize;} enum TVisibility{eOff, eOn, eOnlyLineOn}; @@ -182,10 +181,9 @@ protected: VTKViewer_Axis* myAxis[3]; /*! Common size for trihedron, for each axis.*/ - float mySize; + vtkFloatingPointType mySize; }; -//**************************************************************** /*!The base class for concreate Axis. * Its only duty is to give correct initialization and destruction * of its pipe-lines @@ -225,7 +223,7 @@ public: /*! Set size of VTKViewer_Axis */ - virtual void SetSize(float theSize); + virtual void SetSize(vtkFloatingPointType theSize); /*! Get label actor. * \retval Return myLabelActor. @@ -248,7 +246,7 @@ protected: /*! \var myRot[3] * Orientation vector */ - float myDir[3], myRot[3]; + vtkFloatingPointType myDir[3], myRot[3]; /*! VTKViewer_LineActor actor pointer */ diff --git a/src/VTKViewer/VTKViewer_Utilities.cxx b/src/VTKViewer/VTKViewer_Utilities.cxx index 723eea3fc..6f5a701ff 100755 --- a/src/VTKViewer/VTKViewer_Utilities.cxx +++ b/src/VTKViewer/VTKViewer_Utilities.cxx @@ -16,18 +16,24 @@ // // See http://www.salome-platform.org/ // + +#include "VTKViewer_Utilities.h" #include "VTKViewer_Actor.h" +#include + // VTK Includes #include #include #include #include -#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; @@ -36,20 +42,20 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) 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])); @@ -57,10 +63,10 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) 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; @@ -68,11 +74,11 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) } 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]); @@ -85,7 +91,7 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) // 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); @@ -97,10 +103,11 @@ void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint) } /*! 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; @@ -108,53 +115,40 @@ int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]) // loop through all props vtkActorCollection* aCollection = theRenderer->GetActors(); aCollection->InitTraversal(); - while (vtkActor* prop = aCollection->GetNextActor()) { + while (vtkActor* aProp = aCollection->GetNextActor()) { // if it's invisible, or has no geometry, we can skip the rest - if ( prop->GetVisibility() ) - { - if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(prop)) - if(anActor->IsInfinitive()) continue; - bounds = prop->GetBounds(); - // make sure we haven't got bogus bounds - if ( bounds != NULL && - bounds[0] > -VTK_LARGE_FLOAT && bounds[1] < VTK_LARGE_FLOAT && - bounds[2] > -VTK_LARGE_FLOAT && bounds[3] < VTK_LARGE_FLOAT && - bounds[4] > -VTK_LARGE_FLOAT && bounds[5] < VTK_LARGE_FLOAT ) - { - aCount++; - - if (bounds[0] < theBounds[0]) - { - theBounds[0] = bounds[0]; - } - if (bounds[1] > theBounds[1]) - { - theBounds[1] = bounds[1]; - } - if (bounds[2] < theBounds[2]) - { - theBounds[2] = bounds[2]; - } - if (bounds[3] > theBounds[3]) - { - theBounds[3] = bounds[3]; - } - if (bounds[4] < theBounds[4]) - { - theBounds[4] = bounds[4]; - } - if (bounds[5] > theBounds[5]) - { - theBounds[5] = bounds[5]; - } - }//not bogus + if(aProp->GetVisibility() && aProp->GetMapper()){ + if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(aProp)) + if(anActor->IsInfinitive()) + continue; + + vtkFloatingPointType *aBounds = aProp->GetBounds(); + static vtkFloatingPointType MAX_DISTANCE = 0.9*VTK_LARGE_FLOAT; + // make sure we haven't got bogus bounds + if ( aBounds != NULL && + aBounds[0] > -MAX_DISTANCE && aBounds[1] < MAX_DISTANCE && + aBounds[2] > -MAX_DISTANCE && aBounds[3] < MAX_DISTANCE && + aBounds[4] > -MAX_DISTANCE && aBounds[5] < MAX_DISTANCE ) + { + aCount++; + + theBounds[0] = min(aBounds[0],theBounds[0]); + theBounds[2] = min(aBounds[2],theBounds[2]); + theBounds[4] = min(aBounds[4],theBounds[4]); + + theBounds[1] = max(aBounds[1],theBounds[1]); + theBounds[3] = max(aBounds[3],theBounds[3]); + theBounds[5] = max(aBounds[5],theBounds[5]); + + }//not bogus } } return aCount; } -/*!@see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method*/ -void ResetCameraClippingRange(vtkRenderer* theRenderer) +/*!@see vtkRenderer::ResetCameraClippingRange(vtkFloatingPointType bounds[6]) method*/ +void +ResetCameraClippingRange(vtkRenderer* theRenderer) { if(!theRenderer || !theRenderer->VisibleActorCount()) return; @@ -164,28 +158,28 @@ void ResetCameraClippingRange(vtkRenderer* theRenderer) } // Find the plane equation for the camera view plane - double vn[3]; + vtkFloatingPointType vn[3]; anActiveCamera->GetViewPlaneNormal(vn); - double position[3]; + vtkFloatingPointType position[3]; anActiveCamera->GetPosition(position); - float bounds[6]; + vtkFloatingPointType bounds[6]; theRenderer->ComputeVisiblePropBounds(bounds); - double center[3]; + vtkFloatingPointType center[3]; center[0] = (bounds[0] + bounds[1])/2.0; center[1] = (bounds[2] + bounds[3])/2.0; center[2] = (bounds[4] + bounds[5])/2.0; - double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + + vtkFloatingPointType width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) + (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) + (bounds[5]-bounds[4])*(bounds[5]-bounds[4])); - double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + + vtkFloatingPointType distance = sqrt((position[0]-center[0])*(position[0]-center[0]) + (position[1]-center[1])*(position[1]-center[1]) + (position[2]-center[2])*(position[2]-center[2])); - float range[2] = {distance - width/2.0, distance + width/2.0}; + vtkFloatingPointType range[2] = {distance - width/2.0, distance + width/2.0}; // Do not let the range behind the camera throw off the calculation. if (range[0] < 0.0) range[0] = 0.0; @@ -194,23 +188,26 @@ void ResetCameraClippingRange(vtkRenderer* theRenderer) } /*!Compute trihedron size.*/ -bool ComputeTrihedronSize( vtkRenderer* theRenderer,double& theNewSize, - const double theSize, const float theSizeInPercents ) +bool +ComputeTrihedronSize( vtkRenderer* theRenderer, + vtkFloatingPointType& theNewSize, + const vtkFloatingPointType theSize, + const vtkFloatingPointType theSizeInPercents ) { // calculating diagonal of visible props of the renderer - float bnd[ 6 ]; + vtkFloatingPointType bnd[ 6 ]; if ( ComputeVisiblePropBounds( theRenderer, bnd ) == 0 ) { bnd[ 1 ] = bnd[ 3 ] = bnd[ 5 ] = 100; bnd[ 0 ] = bnd[ 2 ] = bnd[ 4 ] = 0; } - float aLength = 0; + vtkFloatingPointType aLength = 0; aLength = bnd[ 1 ]-bnd[ 0 ]; aLength = max( ( bnd[ 3 ] - bnd[ 2 ] ),aLength ); aLength = max( ( bnd[ 5 ] - bnd[ 4 ] ),aLength ); - static float EPS_SIZE = 5.0E-3; + static vtkFloatingPointType EPS_SIZE = 5.0E-3; theNewSize = aLength * theSizeInPercents / 100.0; // if the new trihedron size have sufficient difference, then apply the value diff --git a/src/VTKViewer/VTKViewer_Utilities.h b/src/VTKViewer/VTKViewer_Utilities.h index 6341e885d..a189fd89c 100755 --- a/src/VTKViewer/VTKViewer_Utilities.h +++ b/src/VTKViewer/VTKViewer_Utilities.h @@ -19,22 +19,32 @@ #ifndef VTKVIEWER_UTILITIES_H #define VTKVIEWER_UTILITIES_H -#include +#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 diff --git a/src/VTKViewer/VTKViewer_VectorText.cxx b/src/VTKViewer/VTKViewer_VectorText.cxx index b4e62266a..31ea54391 100755 --- a/src/VTKViewer/VTKViewer_VectorText.cxx +++ b/src/VTKViewer/VTKViewer_VectorText.cxx @@ -1751,6 +1751,11 @@ void VTKViewer_VectorText::Execute() newPolys->Delete(); } +/*! + Print text to stream + \param os - stream + \param indent +*/ void VTKViewer_VectorText::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os,indent); diff --git a/src/VTKViewer/VTKViewer_ViewWindow.cxx b/src/VTKViewer/VTKViewer_ViewWindow.cxx index 144590803..44eef236b 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.cxx +++ b/src/VTKViewer/VTKViewer_ViewWindow.cxx @@ -387,7 +387,7 @@ void VTKViewer_ViewWindow::onResetView() ::ResetCamera(myRenderer,true); if(aTriedronIsVisible) myTrihedron->VisibilityOn(); else myTrihedron->VisibilityOff(); - static float aCoeff = 3.0; + static vtkFloatingPointType aCoeff = 3.0; aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale()); Repaint(); } @@ -409,7 +409,7 @@ void VTKViewer_ViewWindow::setBackgroundColor( const QColor& color ) /*!Returns background of the viewport*/ QColor VTKViewer_ViewWindow::backgroundColor() const { - float backint[3]; + vtkFloatingPointType backint[3]; if ( myRenderer ) { myRenderer->GetBackground( backint ); return QColor(int(backint[0]*255), int(backint[1]*255), int(backint[2]*255)); @@ -443,11 +443,11 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){ int aVisibleNum = myTrihedron->GetVisibleActorCount(myRenderer); if(aVisibleNum){ // calculating diagonal of visible props of the renderer - float bnd[6]; + vtkFloatingPointType bnd[6]; myTrihedron->VisibilityOff(); ::ComputeVisiblePropBounds(myRenderer,bnd); myTrihedron->VisibilityOn(); - float aLength = 0; + vtkFloatingPointType aLength = 0; static bool CalcByDiag = false; if(CalcByDiag){ aLength = sqrt((bnd[1]-bnd[0])*(bnd[1]-bnd[0])+ @@ -459,13 +459,13 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){ aLength = max((bnd[5]-bnd[4]),aLength); } - static float aSizeInPercents = 105; + static vtkFloatingPointType aSizeInPercents = 105; QString aSetting;// = SUIT_CONFIG->getSetting("Viewer:TrihedronSize"); if(!aSetting.isEmpty()) aSizeInPercents = aSetting.toFloat(); - static float EPS_SIZE = 5.0E-3; - float aSize = myTrihedron->GetSize(); - float aNewSize = aLength*aSizeInPercents/100.0; + static vtkFloatingPointType EPS_SIZE = 5.0E-3; + vtkFloatingPointType aSize = myTrihedron->GetSize(); + vtkFloatingPointType aNewSize = aLength*aSizeInPercents/100.0; // if the new trihedron size have sufficient difference, then apply the value if(fabs(aNewSize-aSize) > aSize*EPS_SIZE || fabs(aNewSize-aSize) > aNewSize*EPS_SIZE){ myTrihedron->SetSize(aNewSize); @@ -580,7 +580,7 @@ QString VTKViewer_ViewWindow::getVisualParameters() 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 ) { diff --git a/src/VTKViewer/resources/VTKViewerM_images.po b/src/VTKViewer/resources/VTKViewerM_images.po deleted file mode 100644 index ce2c6c728..000000000 --- a/src/VTKViewer/resources/VTKViewerM_images.po +++ /dev/null @@ -1,40 +0,0 @@ -# VISU VISUGUI : GUI of VISU component -# -# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -# -# -# -# File : -# Module : - -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n" -"PO-Revision-Date: 2005-05-10 15:20+0400\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - - -msgid "ICON_SVTK_SCALING" -msgstr "view_scaling.png" - -msgid "ICON_GRADUATED_AXES" -msgstr "view_graduated_axes.png" diff --git a/src/VTKViewer/resources/VTKViewerM_msg_en.po b/src/VTKViewer/resources/VTKViewerM_msg_en.po deleted file mode 100644 index d5e8cc22d..000000000 --- a/src/VTKViewer/resources/VTKViewerM_msg_en.po +++ /dev/null @@ -1,108 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-02-22 16:56:46 CET\n" -"PO-Revision-Date: 2005-06-27 12:38+0400\n" -"Last-Translator: FULLNAME \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 diff --git a/src/VTKViewer/resources/VTKViewer_msg_en.po b/src/VTKViewer/resources/VTKViewer_msg_en.po index 603fbb3c0..8d0210f4a 100755 --- a/src/VTKViewer/resources/VTKViewer_msg_en.po +++ b/src/VTKViewer/resources/VTKViewer_msg_en.po @@ -131,9 +131,6 @@ msgstr "Cannot save file" msgid "ERROR" msgstr "Error" -msgid "BUT_OK" -msgstr "Ok" - msgid "VTKViewer_Viewer::MEN_DUMP_VIEW" msgstr "Dump view..." diff --git a/src/VTKViewer/resources/view_update_rate.png b/src/VTKViewer/resources/view_update_rate.png new file mode 100755 index 000000000..3d01ad184 Binary files /dev/null and b/src/VTKViewer/resources/view_update_rate.png differ