From: ouv Date: Thu, 15 Jun 2006 08:33:53 +0000 (+0000) Subject: Merge from BR_DEBUG_3_2_0b1 X-Git-Tag: LAST_STABLE_VERSION_21_09_2006_ON_3_2_0~71 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=0502b958a1a44d689feee1535dccf548d459fbd4;p=modules%2Fgui.git Merge from BR_DEBUG_3_2_0b1 --- diff --git a/INSTALL b/INSTALL index 2f6965076..31600814e 100644 --- a/INSTALL +++ b/INSTALL @@ -1,3 +1 @@ -This is the version 3.2.0a1 of SALOMEGUI -Compatible with : - - KERNEL 3.2.0a1 +SALOME2 : GUI module diff --git a/Makefile.in b/Makefile.in index 989c6a476..81a618ac4 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/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # # Author : Patrick GOLDBRONN (CEA) @@ -14,7 +32,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top @COMMENCE@ -SUBDIRS = idl src doc +SUBDIRS = src doc adm_local RESOURCES_FILES = \ back.xpm \ @@ -81,22 +99,25 @@ runLightSalome.sh # copy header files in common directory OWN_CONFIG_H=@OWN_CONFIG_H@ +include_list = include/salome/SALOMEconfig.h \ + include/salome/GUI_version.h + ifeq ($(OWN_CONFIG_H),yes) - ifeq ($(HAVE_SSTREAM),yes) - include_list=include/salome/SALOMEconfig.h include/salome/config.h - else - include_list=include/salome/SALOMEconfig.h include/salome/config.h include/salome/sstream - endif -else - ifeq ($(HAVE_SSTREAM),yes) - include_list=include/salome/SALOMEconfig.h - else - include_list=include/salome/SALOMEconfig.h include/salome/sstream - endif + include_list += include/salome/config.h +endif + +ifneq ($(HAVE_SSTREAM),yes) + include_list += include/salome/sstream endif inc: idl $(include_list) +bin: bin/salome/VERSION + +bin/salome/VERSION : bin/VERSION + -$(RM) $@ + $(LN_S) ../../$< $@ + include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref -$(RM) $@ $(LN_S) ../../$< $@ @@ -118,10 +139,14 @@ include/salome/sstream: salome_adm/unix/sstream -$(RM) $@ $(LN_S) ../../$< $@ -depend: depend_idl +include/salome/GUI_version.h: GUI_version.h + -$(RM) $@ + $(LN_S) ../../$< $@ -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: @@ -150,10 +175,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/unix/make_commence.in b/adm_local/unix/make_commence.in index cb1d7e470..0a5de34a2 100644 --- a/adm_local/unix/make_commence.in +++ b/adm_local/unix/make_commence.in @@ -1,6 +1,14 @@ # common directories to put headerfiles inc_builddir=$(top_builddir)/include/salome +GUI_DISABLE_CORBA=@GUI_DISABLE_CORBA@ +DISABLE_GLVIEWER=@DISABLE_GLVIEWER@ +DISABLE_PYCONSOLE=@DISABLE_PYCONSOLE@ +DISABLE_PLOT2DVIEWER=@DISABLE_PLOT2DVIEWER@ +DISABLE_SUPERVGRAPHVIEWER=@DISABLE_SUPERVGRAPHVIEWER@ +DISABLE_OCCVIEWER=@DISABLE_OCCVIEWER@ +DISABLE_VTKVIEWER=@DISABLE_VTKVIEWER@ +DISABLE_SALOMEOBJECT=@DISABLE_SALOMEOBJECT@ @SET_MAKE@ SHELL=/bin/sh @@ -11,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++ @@ -54,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@ @@ -108,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@ @@ -123,6 +125,7 @@ CAS_VIEWER=@CAS_VIEWER@ CAS_MODELER=@CAS_MODELER@ CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ CAS_LDPATH=@CAS_LDPATH@ + # MPICH MPICH_INCLUDES=@MPICH_INCLUDES@ @@ -175,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@ @@ -201,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 @@ -238,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 :-) @@ -254,14 +267,9 @@ $(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base ACLOCAL_SRC = \ -ac_cxx_bool.m4 check_corba.m4 check_vtk.m4 \ -ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ -ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ -ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ -ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \ -ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ -ac_cc_warnings.m4 check_qt.m4 check_swig.m4 \ -check_boost.m4 check_msg2qm.m4 - -$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) - cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files +check_qt.m4 check_vtk.m4 check_qwt.m4 \ +check_sip.m4 check_msg2qm.m4 check_pyqt.m4 \ +check_opengl.m4 + +$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm_local/unix/config_files/%) + cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files diff --git a/bin/VERSION b/bin/VERSION deleted file mode 100755 index e7134d951..000000000 --- a/bin/VERSION +++ /dev/null @@ -1 +0,0 @@ -THIS IS SALOME - SALOMEGUI VERSION: 3.2.0a1 diff --git a/bin/runLightSalome.sh b/bin/runLightSalome.sh index f99a8125f..b2f67d65e 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/ or email : webmaster.salome@opencascade.com +# #!/bin/bash -f if [ -z "$SUITRoot" ] ; then diff --git a/build_configure b/build_configure index ec5cce644..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 " ./salome_adm/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 @@ -202,7 +202,7 @@ else echo -n "Creating 'configure' script ... " fi -aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files +aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files if autoconf then echo "done" diff --git a/configure.in.base b/configure.in.base index e6be9b20d..4b7af75f9 100644 --- a/configure.in.base +++ b/configure.in.base @@ -23,8 +23,45 @@ AC_CANONICAL_HOST PACKAGE=salome AC_SUBST(PACKAGE) -VERSION=0.0.1 +VERSION=3.2.0 +XVERSION=0x030200 AC_SUBST(VERSION) +AC_SUBST(XVERSION) + +######################################################################## +# Check --disable-corba-gen and other --disable-* options + +GUI_DISABLE_CORBA="no" +DISABLE_PYCONSOLE="no" +DISABLE_GLVIEWER="no" +DISABLE_PLOT2DVIEWER="no" +DISABLE_SUPERVGRAPHVIEWER="no" +DISABLE_OCCVIEWER="no" +DISABLE_VTKVIEWER="no" +DISABLE_SALOMEOBJECT="no" + +for option +do + case $option in + -disable-corba-gen=yes | --disable-corba-gen=yes | -disable-corba-gen | --disable-corba-gen) + GUI_DISABLE_CORBA="yes";; + -disable-pyConsole=yes | --disable-pyConsole=yes | -disable-pyConsole | --disable-pyConsole) + DISABLE_PYCONSOLE="yes";; + -disable-glViewer=yes | --disable-glViewer=yes | -disable-glViewer | --disable-glViewer) + DISABLE_GLVIEWER="yes";; + -disable-plot2dViewer=yes | --disable-plot2dViewer=yes | -disable-plot2dViewer | --disable-plot2dViewer) + DISABLE_PLOT2DVIEWER="yes";; + -disable-supervGraphViewer=yes | --disable-supervGraphViewer=yes | \ + -disable-supervGraphViewer | --disable-supervGraphViewer) + DISABLE_SUPERVGRAPHVIEWER="yes";; + -disable-occViewer=yes | --disable-occViewer=yes | -disable-occViewer | --disable-occViewer) + DISABLE_OCCVIEWER="yes";; + -disable-vtkViewer=yes | --disable-vtkViewer=yes | -disable-vtkViewer | --disable-vtkViewer) + DISABLE_VTKVIEWER="yes";; + -disable-salomeObject=yes | --disable-salomeObject=yes | -disable-salomeObject | --disable-salomeObject) + DISABLE_SALOMEOBJECT="yes";; + esac +done dnl dnl Initialize source and build root directories @@ -151,6 +188,17 @@ dnl echo dnl CHECK_JAVA +echo +echo --------------------------------------------- +echo Testing Disable Corba +echo --------------------------------------------- +echo + +CHECK_DISABLE_CORBA +echo "GUI_DISABLE_CORBA = "$GUI_DISABLE_CORBA + +if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then + echo echo --------------------------------------------- echo testing swig @@ -158,6 +206,7 @@ echo --------------------------------------------- echo CHECK_SWIG +fi echo echo --------------------------------------------- @@ -167,6 +216,7 @@ echo ENABLE_PTHREADS +if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then echo echo --------------------------------------------- echo testing omniORB @@ -190,12 +240,20 @@ echo --------------------------------------------- echo DEFAULT_ORB=omniORB + +echo +echo --------------------------------------------- +echo testing Corba +echo --------------------------------------------- +echo + CHECK_CORBA AC_SUBST_FILE(CORBA) corba=make_$ORB CORBA=adm_local/unix/$corba +fi echo echo --------------------------------------------- echo testing openGL @@ -276,6 +334,100 @@ echo CHECK_QWT +echo +echo --------------------------------------------- +echo Testing PyConsole +echo --------------------------------------------- +echo + +CHECK_PYCONSOLE +echo "DISABLE_PYCONSOLE = "$DISABLE_PYCONSOLE + +echo +echo --------------------------------------------- +echo Testing GlViewer +echo --------------------------------------------- +echo + +CHECK_GLVIEWER +echo "DISABLE_GLVIEWER = "$DISABLE_GLVIEWER + +echo +echo --------------------------------------------- +echo Testing Plot2dViewer +echo --------------------------------------------- +echo + +CHECK_PLOT2DVIEWER +echo "DISABLE_PLOT2DVIEWER = "$DISABLE_PLOT2DVIEWER + +echo +echo --------------------------------------------- +echo Testing SupervGraphViewer +echo --------------------------------------------- +echo + +CHECK_SUPERVGRAPHVIEWER +echo "DISABLE_SUPERVGRAPHVIEWER = "$DISABLE_SUPERVGRAPHVIEWER + +echo +echo --------------------------------------------- +echo Testing OCCViewer +echo --------------------------------------------- +echo + +CHECK_OCCVIEWER +echo "DISABLE_OCCVIEWER = "$DISABLE_OCCVIEWER + +echo +echo --------------------------------------------- +echo Testing VTKViewer +echo --------------------------------------------- +echo + +CHECK_VTKVIEWER +echo "DISABLE_VTKVIEWER = "$DISABLE_VTKVIEWER + +echo +echo --------------------------------------------- +echo Testing SalomeObject +echo --------------------------------------------- +echo + +CHECK_SALOMEOBJECT +echo "DISABLE_SALOMEOBJECT = "$DISABLE_SALOMEOBJECT + +if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then + if test "x${DISABLE_PYCONSOLE}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable PyConsole !" + exit + fi + if test "x${DISABLE_GLVIEWER}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable GlViewer !" + exit + fi + if test "x${DISABLE_PLOT2DVIEWER}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable Plot2dViewer !" + exit + fi + if test "x${DISABLE_SUPERVGRAPHVIEWER}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable SupervGraphViewer !" + exit + fi + if test "x${DISABLE_OCCVIEWER}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable OCCViewer !" + exit + fi + if test "x${DISABLE_VTKVIEWER}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable VTKViewer !" + exit + fi + if test "x${DISABLE_SALOMEOBJECT}" == "xyes" ; then + echo "failed : for full configuration of GUI module necessary enable SalomeObject !" + exit + fi +fi + echo echo --------------------------------------------- echo Testing html generators @@ -289,17 +441,34 @@ echo --------------------------------------------- echo Testing Kernel echo --------------------------------------------- echo - CHECK_KERNEL +echo +echo --------------------------------------------- +echo Testing CPPUNIT only required for unit testing +echo --------------------------------------------- +echo + +CHECK_CPPUNIT + echo echo --------------------------------------------- echo Summary echo --------------------------------------------- echo -echo Configure +if test "$GUI_DISABLE_CORBA" == "yes"; then + echo "Configure (without Corba)" +else + echo Configure +fi + + +if test "$GUI_DISABLE_CORBA" != "yes"; then variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok msg2qm_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok" +else +variables="cc_ok lex_yacc_ok python_ok threads_ok OpenGL_ok qt_ok msg2qm_ok vtk_ok hdf5_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok" +fi for var in $variables do @@ -307,14 +476,27 @@ do eval echo \$$var done +echo "---Optional:" +variables="cppunit_ok" + +for var in $variables +do + eval toto=\$$var + if test x$toto != "x"; then + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$$var + fi +done + +if test "$GUI_DISABLE_CORBA" != "yes"; then echo echo "Default ORB : $DEFAULT_ORB" echo - +fi dnl generals files which could be included in every makefile AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence -AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude +AC_SUBST_FILE(CONCLUDE) CONCLUDE=adm_local/unix/make_conclude AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module dnl les dependences @@ -329,7 +511,13 @@ else fi # make other build directories -for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl +if test "$GUI_DISABLE_CORBA" == "yes"; then + dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl" +else + dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources" +fi + +for rep in $dir_variables do # if test ! -d $rep ; then # eval mkdir $rep diff --git a/doc/Makefile.in b/doc/Makefile.in index 7295ede75..4a62d64a2 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/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # @@ -19,6 +37,17 @@ docs: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ done + +usr_docs: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + +dev_docs: + @@SETX@; for d in $(SUBDIRS); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done + clean: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ diff --git a/doc/salome/GUI_index.html b/doc/salome/GUI_index.html deleted file mode 100755 index 465e3ea9d..000000000 --- a/doc/salome/GUI_index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - Gui Module Documentation - - - -
  -
-
                   -   
- - - - - - - - - -
- - - -
- -
-
-
-

GUI MODULE Documentation

-
-
- - - - - -
-
- -
-

Application-About.png -     

-
- -
- - - - -
-
-
-
-
- -
- -
GUI Documentation
- -
- -
- -

-
- -
- -
TUI Documentation
- -
- -
- -

-
-
-
-
-
-
- - diff --git a/doc/salome/GUI_index_v3.1.0.html b/doc/salome/GUI_index_v3.1.0.html deleted file mode 100755 index 465e3ea9d..000000000 --- a/doc/salome/GUI_index_v3.1.0.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - Gui Module Documentation - - - -
  -
-
                   -   
- - - - - - - - - -
- - - -
- -
-
-
-

GUI MODULE Documentation

-
-
- - - - - -
-
- -
-

Application-About.png -     

-
- -
- - - - -
-
-
-
-
- -
- -
GUI Documentation
- -
- -
- -

-
- -
- -
TUI Documentation
- -
- -
- -

-
-
-
-
-
-
- - diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in index ca1d6f282..72b2d98ad 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/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # @@ -12,33 +30,48 @@ srcdir=@srcdir@ VPATH=.:@srcdir@ SUBDIRS= tui gui +SUBDIRSTUI= tui +SUBDIRSGUI= gui @COMMENCE@ -docs: - @@SETX@; for d in $(SUBDIRS); do \ +usr_docs: + @@SETX@; for d in $(SUBDIRSGUI); do \ + (cd $$d && $(MAKE) $@) || exit 1; \ + done; \ + +docs: usr_docs + +dev_docs: + @@SETX@; for d in $(SUBDIRSTUI); do \ (cd $$d && $(MAKE) $@) || exit 1; \ done; \ - cp -f $(srcdir)/GUI_index_v3.1.0.html GUI_index_v3.1.0.html clean: @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/GUI; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done distclean: clean @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/GUI; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done install: $(MAKE) docs - (cd tui && $(MAKE) install); - (cd gui && $(MAKE) install); - cp -f GUI_index_v3.1.0.html $(docdir) + @@SETX@; for d in $(SUBDIRS); do \ + if test -d $$d/GUI; then \ + (cd $$d && $(MAKE) $@); \ + fi; \ + done uninstall: @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/GUI; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done; \ - rm -fr $(docdir)/GUI_index_v3.1.0.html diff --git a/doc/salome/tui/GUI/sources/Application-About.png b/doc/salome/tui/GUI/sources/Application-About.png index 7b58330d5..df0d5a187 100755 Binary files a/doc/salome/tui/GUI/sources/Application-About.png and b/doc/salome/tui/GUI/sources/Application-About.png differ diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in index 0372e6a1f..dc94bcbb7 100644 --- a/doc/salome/tui/Makefile.in +++ b/doc/salome/tui/Makefile.in @@ -1,11 +1,24 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) # Module : doc -# $Header: top_srcdir=@top_srcdir@ top_builddir=../../.. @@ -16,18 +29,35 @@ doxygen=@DOXYGEN@ @COMMENCE@ -docs: - cp -fr $(srcdir)/SUIT ./INPUT; \ +dev_docs: + cp -fr $(srcdir)/GUI ./INPUT; \ + cp -f ./GUI/doxyfile ./INPUT; \ cd INPUT; \ sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \ + sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + echo "DOXYGEN SUPPORT PYTHON - @DOXYGEN_WITH_PYTHON@"; \ + if( test "x@DOXYGEN_WITH_PYTHON@" = "xyes"); then \ + sed 's|python_extension_must_be_here|*.py|' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + $(doxygen) -u ./doxyfile1; \ + else \ + sed 's|python_extension_must_be_here||' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + fi; \ + if( test "x@DOXYGEN_WITH_STL@" = "xyes"); then \ + sed -e 's|BUILTIN_STL_SUPPORT = NO|BUILTIN_STL_SUPPORT = YES|' ./doxyfile1 > ./doxyfile2; \ + mv -f doxyfile2 doxyfile1; \ + fi; \ mv -f doxyfile1 doxyfile; \ + echo "Running doxygen in directory:"`pwd`; \ $(doxygen) ./doxyfile; \ cd ../; \ - cp -fr $(srcdir)/SUIT/sources/ SUIT ; \ + cp -fr $(srcdir)/GUI/sources/ GUI ; \ rm -fr INPUT clean: - rm -fr SUIT + rm -fr GUI distclean: clean rm -fr INPUT @@ -35,7 +65,7 @@ distclean: clean install: $(INSTALL) -d $(docdir); \ mkdir -p $(docdir)/tui - cp -fr SUIT $(docdir)/tui + cp -fr GUI $(docdir)/tui uninstall: - rm -fr $(docdir)/tui/SUIT + rm -fr $(docdir)/tui/GUI diff --git a/doc/salome/tui/SUIT/doxyfile b/doc/salome/tui/SUIT/doxyfile deleted file mode 100755 index bb5e49fb6..000000000 --- a/doc/salome/tui/SUIT/doxyfile +++ /dev/null @@ -1,229 +0,0 @@ -# Doxyfile 1.3.7 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME v.3.2.0a1" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -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 -TAB_SIZE = 5 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -SHOW_USED_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../../../share/salome/src \ - ../../../share/salome/idl -FILE_PATTERNS = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = YES -IMAGE_PATH = sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = SUIT -HTML_FILE_EXTENSION = .html -HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -MAX_DOT_GRAPH_DEPTH = 0 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/doc/salome/tui/SUIT/sources/Application-About.png b/doc/salome/tui/SUIT/sources/Application-About.png deleted file mode 100755 index 7b58330d5..000000000 Binary files a/doc/salome/tui/SUIT/sources/Application-About.png and /dev/null differ diff --git a/doc/salome/tui/SUIT/sources/application.gif b/doc/salome/tui/SUIT/sources/application.gif deleted file mode 100755 index 0b05d5c18..000000000 Binary files a/doc/salome/tui/SUIT/sources/application.gif and /dev/null differ diff --git a/doc/salome/tui/SUIT/sources/html_comments.gif b/doc/salome/tui/SUIT/sources/html_comments.gif deleted file mode 100755 index f0c0f0b47..000000000 Binary files a/doc/salome/tui/SUIT/sources/html_comments.gif and /dev/null differ diff --git a/doc/salome/tui/SUIT/sources/logocorp.gif b/doc/salome/tui/SUIT/sources/logocorp.gif deleted file mode 100755 index 7697e0837..000000000 Binary files a/doc/salome/tui/SUIT/sources/logocorp.gif and /dev/null differ diff --git a/doc/salome/tui/SUIT/sources/myheader.html b/doc/salome/tui/SUIT/sources/myheader.html deleted file mode 100755 index 83ca543cd..000000000 --- a/doc/salome/tui/SUIT/sources/myheader.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Main Page - - - -  -
- - - - - - -
-
-
- - - - diff --git a/idl/SalomeApp_Engine.idl b/idl/SalomeApp_Engine.idl index d52b2eac2..abce369ff 100644 --- a/idl/SalomeApp_Engine.idl +++ b/idl/SalomeApp_Engine.idl @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SalomeApp_Engine.idl // Author : Alexander SLADKOV diff --git a/src/CAF/CAF.h b/src/CAF/CAF.h index 0eee94656..d70c01d80 100755 --- a/src/CAF/CAF.h +++ b/src/CAF/CAF.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAF_H #define CAF_H diff --git a/src/CAF/CAF_Application.cxx b/src/CAF/CAF_Application.cxx index 823d09355..78bc1d566 100755 --- a/src/CAF/CAF_Application.cxx +++ b/src/CAF/CAF_Application.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAF_Application.h" @@ -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..81a16413d 100755 --- a/src/CAF/CAF_Application.h +++ b/src/CAF/CAF_Application.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAF_APPLICATION_H #define 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..67fd2785f 100755 --- a/src/CAF/CAF_Operation.cxx +++ b/src/CAF/CAF_Operation.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAF_Operation.h" @@ -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..d6ae43694 100755 --- a/src/CAF/CAF_Operation.h +++ b/src/CAF/CAF_Operation.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAF_OPERATION_H #define 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..7acc291dc 100755 --- a/src/CAF/CAF_Study.cxx +++ b/src/CAF/CAF_Study.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAF_Study.h" @@ -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..0e5980cc9 100755 --- a/src/CAF/CAF_Study.h +++ b/src/CAF/CAF_Study.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAF_STUDY_H #define 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..f637a3e87 100755 --- a/src/CAF/CAF_Tools.cxx +++ b/src/CAF/CAF_Tools.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : CAF_Tools.cxx // Author : UI team @@ -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..c0183586e 100755 --- a/src/CAF/CAF_Tools.h +++ b/src/CAF/CAF_Tools.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : CAF_Tools.h // Author : UI team @@ -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..d50233a40 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/ or email : webmaster.salome@opencascade.com +# # 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..083e77506 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..de9372fed 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/CAM/CAM.h b/src/CAM/CAM.h index 427fb53ce..b953c9927 100755 --- a/src/CAM/CAM.h +++ b/src/CAM/CAM.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_H #define CAM_H diff --git a/src/CAM/CAM_Application.cxx b/src/CAM/CAM_Application.cxx index ef7cd09e4..baabb3970 100755 --- a/src/CAM/CAM_Application.cxx +++ b/src/CAM/CAM_Application.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_Application.h" @@ -179,9 +179,13 @@ void CAM_Application::loadModules() CAM_Module* mod = loadModule( (*it).title ); if ( mod ) addModule( mod ); - else - SUIT_MessageBox::error1( desktop(), tr( "Loading modules" ), - tr( "Can not load module %1" ).arg( (*it).title ), tr( "Ok" ) ); + else { + if ( desktop() && desktop()->isShown() ) + SUIT_MessageBox::error1( desktop(), tr( "Loading modules" ), + tr( "Can not load module %1" ).arg( (*it).title ), tr( "Ok" ) ); + else + qWarning( tr( "Can not load module %1" ).arg( (*it).title ).latin1() ); + } } } @@ -250,13 +254,17 @@ CAM_Module* CAM_Application::loadModule( const QString& modName ) module->setName( moduleName( modName ) ); } - if ( !err.isEmpty() ) - SUIT_MessageBox::warn1( desktop(), tr( "Error" ), err, tr( "Ok" ) ); + if ( !err.isEmpty() ) { + if ( desktop() && desktop()->isShown() ) + SUIT_MessageBox::warn1( desktop(), tr( "Error" ), err, tr( "Ok" ) ); + else + qWarning( err.latin1() ); + } return module; } -/**@name Activate module group.*/ +/*! @name Activate module group. */ //@{ /*!Activate module with name \a modName. *\param modName - module name. @@ -315,7 +323,10 @@ bool CAM_Application::activateModule( CAM_Module* mod ) { myModule->setMenuShown( false ); myModule->setToolShown( false ); - SUIT_MessageBox::error1( desktop(), tr( "ERROR_TLT" ), tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ), tr( "BUT_OK" ) ); + if ( desktop() && desktop()->isShown() ) + SUIT_MessageBox::error1( desktop(), tr( "ERROR_TLT" ), tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ), tr( "BUT_OK" ) ); + else + qWarning( tr( "ERROR_ACTIVATE_MODULE_MSG" ).arg( myModule->moduleName() ).latin1() ); myModule = 0; return false; } @@ -484,8 +495,12 @@ void CAM_Application::readModuleList() myInfoList.append( inf ); } - if ( myInfoList.isEmpty() ) - SUIT_MessageBox::error1( 0, tr( "Error" ), tr( "Can not load modules configuration file " ), tr( "Ok" ) ); + if ( myInfoList.isEmpty() ) { + if ( desktop() && desktop()->isShown() ) + SUIT_MessageBox::warn1( desktop(), tr( "Warning" ), tr( "Modules list is empty" ), tr( "&OK" ) ); + else + qWarning( tr( "Modules list is empty" ).latin1() ); + } } /*!Add common items for popup menu ( if they are exist ) @@ -503,7 +518,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..c31e90523 100755 --- a/src/CAM/CAM_Application.h +++ b/src/CAM/CAM_Application.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_APPLICATION_H #define 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..559901279 100755 --- a/src/CAM/CAM_DataModel.cxx +++ b/src/CAM/CAM_DataModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_DataModel.h" @@ -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..4cbc8ab93 100755 --- a/src/CAM/CAM_DataModel.h +++ b/src/CAM/CAM_DataModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_DATAMODEL_H #define 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.cxx b/src/CAM/CAM_DataObject.cxx index 2109bccac..62a3d3b13 100755 --- a/src/CAM/CAM_DataObject.cxx +++ b/src/CAM/CAM_DataObject.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_DataObject.h" diff --git a/src/CAM/CAM_DataObject.h b/src/CAM/CAM_DataObject.h index 1b89a8e60..1e4e414b2 100755 --- a/src/CAM/CAM_DataObject.h +++ b/src/CAM/CAM_DataObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_DATAOBJECT_H #define 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 885f6e05d..9b37b3347 100755 --- a/src/CAM/CAM_Module.cxx +++ b/src/CAM/CAM_Module.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_Module.h" @@ -26,6 +26,9 @@ #include #include +#include +#include + /*!Icon.*/ static const char* ModuleIcon[] = { "20 20 2 1", @@ -84,6 +87,11 @@ CAM_Module::~CAM_Module() void CAM_Module::initialize( CAM_Application* app ) { myApp = app; + if (myApp) { + SUIT_Session* aSession = SUIT_Session::session(); + connect(aSession, SIGNAL( applicationClosed( SUIT_Application* ) ), + this, SLOT( onApplicationClosed( SUIT_Application* ) )); + } } /*!\retval Module icon.*/ @@ -159,6 +167,13 @@ void CAM_Module::studyChanged( SUIT_Study* , SUIT_Study* ) { } +/*!Public slot, nullify application pointer if the application was closed.*/ +void CAM_Module::onApplicationClosed( SUIT_Application* theApp ) +{ + if (myApp == theApp) + myApp = NULL; +} + /*!Create and return new instance of CAM_DataModel.*/ CAM_DataModel* CAM_Module::createDataModel() { @@ -254,9 +269,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 +286,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. @@ -299,12 +312,13 @@ int CAM_Module::createTool( const int id, const QString& tBar, const int idx ) *\retval Return -1 if something wrong. */ int CAM_Module::createMenu( const QString& subMenu, const int menu, - const int id, const int group, const int index ) + const int id, const int group, const int index, + const bool enableEmpty ) { if ( !menuMgr() ) return -1; - return menuMgr()->insert( subMenu, menu, group, index ); + return menuMgr()->insert( subMenu, menu, group, id, index, enableEmpty ); } /*! Create menu. @@ -318,12 +332,13 @@ int CAM_Module::createMenu( const QString& subMenu, const int menu, *\retval Return -1 if something wrong. */ int CAM_Module::createMenu( const QString& subMenu, const QString& menu, - const int id, const int group, const int index ) + const int id, const int group, const int index, + const bool enableEmpty ) { if ( !menuMgr() ) return -1; - return menuMgr()->insert( subMenu, menu, group, index ); + return menuMgr()->insert( subMenu, menu, group, id, index, enableEmpty ); } @@ -572,6 +587,40 @@ int CAM_Module::registerAction( const int id, QAction* a ) return ident; } +/*! Unregister an action. + * \param id - id for action. + * \retval true if succeded, false if action is used + */ +bool CAM_Module::unregisterAction( const int id ) +{ + return unregisterAction( action( id ) ); +} + +/*! Unregister an action. + * \param a - action + * \retval true if succeded, false if action is used + */ +bool CAM_Module::unregisterAction( QAction* a ) +{ + if ( !a ) + return false; + if ( menuMgr() ) { + int id = menuMgr()->actionId( a ); + if ( id != -1 && menuMgr()->containsMenu( id, -1 ) ) + return false; + } + if ( toolMgr() ) { + int id = toolMgr()->actionId( a ); + if ( id != -1 && toolMgr()->containsAction( id ) ) + return false; + } + if ( menuMgr() ) + menuMgr()->unRegisterAction( menuMgr()->actionId( a ) ); + if ( toolMgr() ) + toolMgr()->unRegisterAction( toolMgr()->actionId( a ) ); + return true; +} + /*! Return qt action manager separator.*/ QAction* CAM_Module::separator() { diff --git a/src/CAM/CAM_Module.h b/src/CAM/CAM_Module.h index 7b525996c..3409905e7 100755 --- a/src/CAM/CAM_Module.h +++ b/src/CAM/CAM_Module.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_MODULE_H #define CAM_MODULE_H @@ -28,6 +28,7 @@ class QAction; class SUIT_Study; +class SUIT_Application; class CAM_Study; class CAM_DataModel; class CAM_Application; @@ -65,14 +66,14 @@ public: /** @name Set Menu Shown*/ //@{ - void setMenuShown( const bool ); + virtual void setMenuShown( const bool ); void setMenuShown( QAction*, const bool ); void setMenuShown( const int, const bool ); //@} /** @name Set Tool Shown*/ //@{ - void setToolShown( const bool ); + virtual void setToolShown( const bool ); void setToolShown( QAction*, const bool ); void setToolShown( const int, const bool ); //@} @@ -86,6 +87,8 @@ public slots: virtual void studyClosed( SUIT_Study* ); virtual void studyChanged( SUIT_Study*, SUIT_Study* ); + virtual void onApplicationClosed( SUIT_Application* ); + protected: virtual CAM_DataModel* createDataModel(); @@ -106,8 +109,8 @@ protected: /** @name Create menu methods.*/ //@{ - int createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1 ); - int createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1 ); + int createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1, const bool = false ); + int createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1, const bool = false ); int createMenu( const int, const int, const int = -1, const int = -1 ); int createMenu( const int, const QString&, const int = -1, const int = -1 ); int createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1 ); @@ -123,6 +126,8 @@ protected: //@} int registerAction( const int, QAction* ); + bool unregisterAction( const int ); + bool unregisterAction( QAction* ); QAction* createAction( const int, const QString&, const QIconSet&, const QString&, const QString&, const int, QObject* = 0, const bool = false, QObject* = 0, const char* = 0 ); diff --git a/src/CAM/CAM_RootObject.cxx b/src/CAM/CAM_RootObject.cxx index a45fcadeb..e1d9771e3 100755 --- a/src/CAM/CAM_RootObject.cxx +++ b/src/CAM/CAM_RootObject.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_RootObject.h" diff --git a/src/CAM/CAM_RootObject.h b/src/CAM/CAM_RootObject.h index 3ab434021..8456e7628 100755 --- a/src/CAM/CAM_RootObject.h +++ b/src/CAM/CAM_RootObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_ROOTOBJECT_H #define CAM_ROOTOBJECT_H diff --git a/src/CAM/CAM_Study.cxx b/src/CAM/CAM_Study.cxx index 26f7504b3..d874e5a3f 100755 --- a/src/CAM/CAM_Study.cxx +++ b/src/CAM/CAM_Study.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "CAM_Study.h" diff --git a/src/CAM/CAM_Study.h b/src/CAM/CAM_Study.h index 29106776b..18839617a 100755 --- a/src/CAM/CAM_Study.h +++ b/src/CAM/CAM_Study.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef CAM_STUDY_H #define 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..6c02e685b 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/ or email : webmaster.salome@opencascade.com +# # 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..4377dfc56 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..4e32211d2 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/ or email : webmaster.salome@opencascade.com +// #ifndef DDS_H #define DDS_H diff --git a/src/DDS/DDS_DicGroup.cxx b/src/DDS/DDS_DicGroup.cxx index ac7f4ad6b..4ecf18b3e 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/ or email : webmaster.salome@opencascade.com +// #include "DDS_DicGroup.h" #include "DDS_Dictionary.h" @@ -76,7 +94,10 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM LDOM_NodeList systemList = systems.getElementsByTagName( DDS_Dictionary::KeyWord( "UNIT_SYSTEM" ) ); for ( Standard_Integer i = 0; i < systemList.getLength(); i++ ) { - LDOM_Element aSystem = (const LDOM_Element &)systemList.item( i ); + //const LDOM_Element& aSystem = (const LDOM_Element &)systemList.item( i ); + LDOM_Node aNode = systemList.item( i ); + const LDOM_Element& anElem = (const LDOM_Element&) aNode; + LDOM_Element aSystem(anElem); TCollection_AsciiString aName = aSystem.getAttribute( DDS_Dictionary::KeyWord( "UNIT_SYSTEM_NAME" ) ); TCollection_ExtendedString aLabel = aSystem.getAttribute( DDS_Dictionary::KeyWord( "UNIT_SYSTEM_LABEL" ) ); @@ -103,7 +124,10 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM for ( Standard_Integer i = 0; i < aData.getLength(); i++ ) { - LDOM_Element aQuantity = (const LDOM_Element&)aData.item( i ); + //LDOM_Element aQuantity = (const LDOM_Element&)aData.item( i ); + LDOM_Node aNode = aData.item( i ); + const LDOM_Element& anElem = (const LDOM_Element&) aNode; + LDOM_Element aQuantity(anElem); // 1. Attributes (id,label,units?,format?,required?) TCollection_AsciiString anID = aQuantity.getAttribute( DDS_Dictionary::KeyWord( "DATUM_ID" ) ); diff --git a/src/DDS/DDS_DicGroup.h b/src/DDS/DDS_DicGroup.h index d1c633fab..a804776ea 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/ or email : webmaster.salome@opencascade.com +// #ifndef DDS_DICGROUP_H #define DDS_DICGROUP_H diff --git a/src/DDS/DDS_DicItem.cxx b/src/DDS/DDS_DicItem.cxx index 0c8b01c6d..1582aab3f 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/ or email : webmaster.salome@opencascade.com +// #include "DDS_DicItem.h" #include "DDS_Dictionary.h" @@ -506,7 +524,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element if ( aListValueID.IsIntegerValue() ) { // Read the text in the element "value" - LDOM_Text aListItemTxt = (const LDOM_Text&)aListItemValue.getFirstChild(); + //LDOM_Text aListItemTxt = (const LDOM_Text&)aListItemValue.getFirstChild(); + LDOM_Node aNode = aListItemValue.getFirstChild(); + const LDOM_Text& aText = (const LDOM_Text&) aNode; + LDOM_Text aListItemTxt(aText); if ( !aListItemTxt.isNull() ) { // adding ID and text value to sequence @@ -533,7 +554,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element if ( !aShDescr.isNull() ) { // text is always a sub-node of element, containing it - LDOM_Text aShDescrTxt = (const LDOM_Text&)aShDescr.getFirstChild(); + //LDOM_Text aShDescrTxt = (const LDOM_Text&)aShDescr.getFirstChild(); + LDOM_Node aNode = aShDescr.getFirstChild(); + const LDOM_Text& aText = (const LDOM_Text&) aNode; + LDOM_Text aShDescrTxt(aText); if ( !aShDescrTxt.isNull() ) aShortD = aShDescrTxt.getData(); } @@ -543,7 +567,10 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element if ( !aLDescr.isNull() ) { // text is always a sub-node of element, containing it - LDOM_Text aLDescrTxt = (const LDOM_Text&)aLDescr.getFirstChild(); + //LDOM_Text aLDescrTxt = (const LDOM_Text&)aLDescr.getFirstChild(); + LDOM_Node aNode = aLDescr.getFirstChild(); + const LDOM_Text& aText = (const LDOM_Text&) aNode; + LDOM_Text aLDescrTxt(aText); if ( !aLDescrTxt.isNull() ) aLongD = aLDescrTxt.getData(); } diff --git a/src/DDS/DDS_DicItem.h b/src/DDS/DDS_DicItem.h index dbbedc0a7..36b30811e 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/ or email : webmaster.salome@opencascade.com +// #ifndef DDS_DICITEM_H #define DDS_DICITEM_H diff --git a/src/DDS/DDS_Dictionary.cxx b/src/DDS/DDS_Dictionary.cxx index 3656a3949..adaff0469 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/ or email : webmaster.salome@opencascade.com +// #include "DDS_Dictionary.h" #include "DDS_KeyWords.h" diff --git a/src/DDS/DDS_Dictionary.h b/src/DDS/DDS_Dictionary.h index d58a15f76..427e08e1e 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/ or email : webmaster.salome@opencascade.com +// #ifndef DDS_DICTIONARY_H #define DDS_DICTIONARY_H diff --git a/src/DDS/DDS_KeyWords.cxx b/src/DDS/DDS_KeyWords.cxx index 2f53d2a92..8ea7f6a97 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/ or email : webmaster.salome@opencascade.com +// #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..daee727ba 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/ or email : webmaster.salome@opencascade.com +// #ifndef DDS_KEYWORDS_H #define DDS_KEYWORDS_H diff --git a/src/DDS/Makefile.in b/src/DDS/Makefile.in index a3b9eb89f..1d42a6c75 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : DDS diff --git a/src/Event/Event.h b/src/Event/Event.h index 9bed806af..8df1a71b1 100755 --- a/src/Event/Event.h +++ b/src/Event/Event.h @@ -1,3 +1,23 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// // File: SalomeApp.h // Created: November, 2004 // Author: OCC team diff --git a/src/Event/Makefile.in b/src/Event/Makefile.in index b9fde9c86..02aaa2bca 100755 --- a/src/Event/Makefile.in +++ b/src/Event/Makefile.in @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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..928cd2341 100755 --- a/src/Event/SALOME_Event.cxx +++ b/src/Event/SALOME_Event.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..99cdbcd97 100644 --- a/src/GLViewer/GLViewer_AspectLine.h +++ b/src/GLViewer/GLViewer_AspectLine.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..80dfa1329 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.cxx +++ b/src/GLViewer/GLViewer_BaseDrawers.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..d06311cf3 100644 --- a/src/GLViewer/GLViewer_BaseDrawers.h +++ b/src/GLViewer/GLViewer_BaseDrawers.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 e5489fdcb..338543ee3 100644 --- a/src/GLViewer/GLViewer_BaseObjects.cxx +++ b/src/GLViewer/GLViewer_BaseObjects.cxx @@ -14,18 +14,11 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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..c0f45d328 100644 --- a/src/GLViewer/GLViewer_BaseObjects.h +++ b/src/GLViewer/GLViewer_BaseObjects.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..00fae1c1f 100644 --- a/src/GLViewer/GLViewer_Compass.cxx +++ b/src/GLViewer/GLViewer_Compass.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..62dd4f257 100644 --- a/src/GLViewer/GLViewer_Compass.h +++ b/src/GLViewer/GLViewer_Compass.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..0383b0325 100644 --- a/src/GLViewer/GLViewer_Context.cxx +++ b/src/GLViewer/GLViewer_Context.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..5a9df2ceb 100644 --- a/src/GLViewer/GLViewer_Context.h +++ b/src/GLViewer/GLViewer_Context.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..3889bdfe5 100644 --- a/src/GLViewer/GLViewer_CoordSystem.cxx +++ b/src/GLViewer/GLViewer_CoordSystem.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..6db89583b 100644 --- a/src/GLViewer/GLViewer_CoordSystem.h +++ b/src/GLViewer/GLViewer_CoordSystem.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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_Defs.h b/src/GLViewer/GLViewer_Defs.h index 68d1f7d3f..411fb4a7a 100644 --- a/src/GLViewer/GLViewer_Defs.h +++ b/src/GLViewer/GLViewer_Defs.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // diff --git a/src/GLViewer/GLViewer_Drawer.cxx b/src/GLViewer/GLViewer_Drawer.cxx index 2da866512..d0001a49c 100644 --- a/src/GLViewer/GLViewer_Drawer.cxx +++ b/src/GLViewer/GLViewer_Drawer.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..21c6386ce 100644 --- a/src/GLViewer/GLViewer_Drawer.h +++ b/src/GLViewer/GLViewer_Drawer.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..ebd777e22 100644 --- a/src/GLViewer/GLViewer_Geom.cxx +++ b/src/GLViewer/GLViewer_Geom.cxx @@ -14,28 +14,20 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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_Geom.h b/src/GLViewer/GLViewer_Geom.h index 3551ce86f..7ba4db69f 100644 --- a/src/GLViewer/GLViewer_Geom.h +++ b/src/GLViewer/GLViewer_Geom.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // diff --git a/src/GLViewer/GLViewer_Grid.cxx b/src/GLViewer/GLViewer_Grid.cxx index 85dfac4ba..13a661caf 100644 --- a/src/GLViewer/GLViewer_Grid.cxx +++ b/src/GLViewer/GLViewer_Grid.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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_Grid.h b/src/GLViewer/GLViewer_Grid.h index 39858916b..d4a4567e4 100644 --- a/src/GLViewer/GLViewer_Grid.h +++ b/src/GLViewer/GLViewer_Grid.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // diff --git a/src/GLViewer/GLViewer_Group.cxx b/src/GLViewer/GLViewer_Group.cxx index 6377e9ecd..646750490 100644 --- a/src/GLViewer/GLViewer_Group.cxx +++ b/src/GLViewer/GLViewer_Group.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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_Group.h b/src/GLViewer/GLViewer_Group.h index 8856166a5..4382b06c9 100644 --- a/src/GLViewer/GLViewer_Group.h +++ b/src/GLViewer/GLViewer_Group.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // diff --git a/src/GLViewer/GLViewer_MimeSource.cxx b/src/GLViewer/GLViewer_MimeSource.cxx index e43ee5f51..ca82fbacd 100644 --- a/src/GLViewer/GLViewer_MimeSource.cxx +++ b/src/GLViewer/GLViewer_MimeSource.cxx @@ -14,18 +14,11 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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..55262d1d1 100644 --- a/src/GLViewer/GLViewer_MimeSource.h +++ b/src/GLViewer/GLViewer_MimeSource.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 38124a22e..cb0920108 100644 --- a/src/GLViewer/GLViewer_Object.cxx +++ b/src/GLViewer/GLViewer_Object.cxx @@ -14,18 +14,11 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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..49373a8cc 100644 --- a/src/GLViewer/GLViewer_Object.h +++ b/src/GLViewer/GLViewer_Object.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..4e4c91aea 100644 --- a/src/GLViewer/GLViewer_Selector.cxx +++ b/src/GLViewer/GLViewer_Selector.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..6c0672843 100644 --- a/src/GLViewer/GLViewer_Selector.h +++ b/src/GLViewer/GLViewer_Selector.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..067b29541 100644 --- a/src/GLViewer/GLViewer_Selector2d.cxx +++ b/src/GLViewer/GLViewer_Selector2d.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..34da93d59 100644 --- a/src/GLViewer/GLViewer_Selector2d.h +++ b/src/GLViewer/GLViewer_Selector2d.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..f4dba3a47 100644 --- a/src/GLViewer/GLViewer_Text.cxx +++ b/src/GLViewer/GLViewer_Text.cxx @@ -14,21 +14,17 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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..edf680e7b 100644 --- a/src/GLViewer/GLViewer_Text.h +++ b/src/GLViewer/GLViewer_Text.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..c4449265c 100644 --- a/src/GLViewer/GLViewer_ToolTip.cxx +++ b/src/GLViewer/GLViewer_ToolTip.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..508679b6a 100644 --- a/src/GLViewer/GLViewer_ToolTip.h +++ b/src/GLViewer/GLViewer_ToolTip.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 ec7c00920..1f270a253 100644 --- a/src/GLViewer/GLViewer_Tools.cxx +++ b/src/GLViewer/GLViewer_Tools.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -28,12 +28,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; @@ -51,11 +49,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 ) @@ -157,6 +162,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) @@ -168,6 +178,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 ) @@ -181,6 +195,10 @@ int GLViewer_LineList::contains( double thePoint ) const } +/*! + Removes segment + \param theIndex - segment index +*/ bool GLViewer_LineList::removeSegment( int theIndex ) { if( theIndex > mySegmentNumber || !myArray) @@ -197,6 +215,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 ) @@ -349,12 +371,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() { std::cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::"; @@ -364,6 +392,10 @@ void GLViewer_LineList::print() std::cout << std::endl; } +/*! + Draws line list with help of OpenGL + \param theDim - dimension +*/ void GLViewer_LineList::show( FieldDim theDim ) { if( !myArray ) @@ -392,12 +424,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; @@ -411,6 +441,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; @@ -442,6 +476,9 @@ GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, c } } +/*! + Destructor +*/ GLViewer_LineField::~GLViewer_LineField() { if( myXLineArray ) @@ -467,11 +504,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 ); @@ -480,7 +527,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 ) @@ -532,6 +584,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 ); @@ -540,7 +600,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 ) @@ -549,6 +611,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 ) @@ -572,6 +639,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 ) @@ -592,6 +664,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 ) @@ -611,6 +688,9 @@ void GLViewer_LineField::addRectangle( double top, double right, double bottom, } } +/*! + Prints debug info about line field +*/ void GLViewer_LineField::print() { std::cout << "My X matrix Number: " << myXSize << std::endl; @@ -622,6 +702,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++ ) @@ -643,6 +726,10 @@ void GLViewer_LineField::show() std::cout << "Show function" << std::endl; } +/*! + \return size + \param theDim - dimension +*/ int GLViewer_LineField::getDimSize( FieldDim theDim ) { if( theDim == FD_X ) @@ -653,6 +740,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; @@ -677,7 +771,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 ) @@ -729,6 +827,9 @@ bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY return false; } +/*! + \return number of segments +*/ int GLViewer_LineField::segmentNumber() { if( !(myXLineArray || myYLineArray) ) @@ -742,6 +843,9 @@ int GLViewer_LineField::segmentNumber() return aNumber; } +/*! + Removes all multiple segments +*/ void GLViewer_LineField::optimize() { if( !myXLineArray || !myYLineArray ) @@ -789,6 +893,10 @@ void GLViewer_LineField::optimize() } } +/*! + Some prepare actions + Needs call setPoint before +*/ void GLViewer_LineField::initialize() { if( !myXLineArray || !myYLineArray ) @@ -842,6 +950,9 @@ void GLViewer_LineField::initialize() } } +/*! + One iteration of algorithm +*/ void GLViewer_LineField::iteration() { int aParam = myCurCount; @@ -873,6 +984,9 @@ void GLViewer_LineField::iteration() delete[] aNodes; } +/*! + Checks for complete status +*/ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete() { if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 ) @@ -923,6 +1037,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 ) @@ -947,6 +1064,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 ) @@ -968,6 +1088,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 ) @@ -989,6 +1112,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 ) @@ -1032,6 +1158,9 @@ double* GLViewer_LineField::solution( int& theSize ) return anArray; } +/*! + \return current solution array +*/ GraphNode* GLViewer_LineField::getCurArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1043,6 +1172,9 @@ GraphNode* GLViewer_LineField::getCurArray() return myGraphArray2; } +/*! + \return other solution array +*/ GraphNode* GLViewer_LineField::getSecArray() { if( !myGraphArray1 || !myGraphArray2 ) @@ -1054,6 +1186,9 @@ GraphNode* GLViewer_LineField::getSecArray() return myGraphArray1; } +/*! + \return maximum segment number +*/ int GLViewer_LineField::maxSegmentNum() { if( !myXLineArray || !myYLineArray ) @@ -1073,6 +1208,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..b9add1f19 100644 --- a/src/GLViewer/GLViewer_Tools.h +++ b/src/GLViewer/GLViewer_Tools.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 6600bb35f..d89922d48 100644 --- a/src/GLViewer/GLViewer_ViewFrame.cxx +++ b/src/GLViewer/GLViewer_ViewFrame.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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() ) @@ -547,3 +562,39 @@ void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e ) break; } } + +/*! + \return the visual parameters of this view as a formated string +*/ +QString GLViewer_ViewFrame::getVisualParameters() +{ + QString retStr; + if ( myVP && myVP->inherits( "GLViewer_ViewPort2d" ) ) { + GLViewer_ViewPort2d* vp2d = (GLViewer_ViewPort2d*)myVP; + GLfloat xSc, ySc, xPan, yPan; + vp2d->getScale( xSc, ySc ); + vp2d->getPan( xPan, yPan ); + retStr.sprintf( "%.12e*%.12e*%.12e*%.12e", xSc, ySc, xPan, yPan ); + } + return retStr; +} + +/*! + 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 ); + if ( myVP && myVP->inherits( "GLViewer_ViewPort2d" ) && paramsLst.size() == 4) { + GLViewer_ViewPort2d* vp2d = (GLViewer_ViewPort2d*)myVP; + + GLfloat xSc, ySc, xPan, yPan; + xSc = paramsLst[0].toDouble(); + ySc = paramsLst[1].toDouble(); + xPan = paramsLst[2].toDouble(); + yPan = paramsLst[3].toDouble(); + + vp2d->getGLWidget()->setScale( xSc, ySc, 1. ); + vp2d->getGLWidget()->setPan( xPan, yPan, 0. ); + } +} diff --git a/src/GLViewer/GLViewer_ViewFrame.h b/src/GLViewer/GLViewer_ViewFrame.h index d90dfd3f5..76b9fe55b 100644 --- a/src/GLViewer/GLViewer_ViewFrame.h +++ b/src/GLViewer/GLViewer_ViewFrame.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 @@ -72,6 +67,9 @@ public: QSize sizeHint() const; virtual void onUpdate( int ); + + virtual QString getVisualParameters(); + virtual void setVisualParameters( const QString& parameters ); signals: void vfDrawExternal( QPainter* ); diff --git a/src/GLViewer/GLViewer_ViewManager.cxx b/src/GLViewer/GLViewer_ViewManager.cxx index 91150147a..b9cbff5ae 100644 --- a/src/GLViewer/GLViewer_ViewManager.cxx +++ b/src/GLViewer/GLViewer_ViewManager.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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_ViewManager.h b/src/GLViewer/GLViewer_ViewManager.h index 82038d8d6..cfc25f1f9 100644 --- a/src/GLViewer/GLViewer_ViewManager.h +++ b/src/GLViewer/GLViewer_ViewManager.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // diff --git a/src/GLViewer/GLViewer_ViewPort.cxx b/src/GLViewer/GLViewer_ViewPort.cxx index 78767afa1..07de20242 100644 --- a/src/GLViewer/GLViewer_ViewPort.cxx +++ b/src/GLViewer/GLViewer_ViewPort.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..b7ceaf2dc 100644 --- a/src/GLViewer/GLViewer_ViewPort.h +++ b/src/GLViewer/GLViewer_ViewPort.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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 b44efbc32..3055726ec 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.cxx +++ b/src/GLViewer/GLViewer_ViewPort2d.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..76b59b6d4 100644 --- a/src/GLViewer/GLViewer_ViewPort2d.h +++ b/src/GLViewer/GLViewer_ViewPort2d.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..3363add16 100644 --- a/src/GLViewer/GLViewer_Viewer.cxx +++ b/src/GLViewer/GLViewer_Viewer.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..0d68a450d 100644 --- a/src/GLViewer/GLViewer_Viewer.h +++ b/src/GLViewer/GLViewer_Viewer.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..7d03218ba 100644 --- a/src/GLViewer/GLViewer_Viewer2d.cxx +++ b/src/GLViewer/GLViewer_Viewer2d.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..93c9d30f0 100644 --- a/src/GLViewer/GLViewer_Viewer2d.h +++ b/src/GLViewer/GLViewer_Viewer2d.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..1fc069d20 100644 --- a/src/GLViewer/GLViewer_Widget.cxx +++ b/src/GLViewer/GLViewer_Widget.cxx @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..637beb5fb 100644 --- a/src/GLViewer/GLViewer_Widget.h +++ b/src/GLViewer/GLViewer_Widget.h @@ -14,7 +14,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // Author : OPEN CASCADE // @@ -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..76869431a 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/ or email : webmaster.salome@opencascade.com +# # 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_images.po b/src/GLViewer/resources/GLViewer_images.po index 53bac630c..256c03317 100644 --- a/src/GLViewer/resources/GLViewer_images.po +++ b/src/GLViewer/resources/GLViewer_images.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: GLViewer_images.po // Created: 10/25/2004 12:46:36 PM // Author: Sergey Anikin diff --git a/src/GLViewer/resources/GLViewer_msg_en.po b/src/GLViewer/resources/GLViewer_msg_en.po index 32d5f88cb..d51c7d3a3 100644 --- a/src/GLViewer/resources/GLViewer_msg_en.po +++ b/src/GLViewer/resources/GLViewer_msg_en.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: GLViewer_msg_en.po // Created: 10/25/2004 12:46:36 PM // Author: Sergey Anikin @@ -74,9 +92,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.h b/src/LightApp/LightApp.h index 1d0f5e196..0fbeb1497 100644 --- a/src/LightApp/LightApp.h +++ b/src/LightApp/LightApp.h @@ -1,7 +1,24 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp.h // Created: June, 2005 // Author: OCC team -// Copyright (C) CEA 2005 // The following ifdef block is the standard way of creating macros which make exporting diff --git a/src/LightApp/LightApp_AboutDlg.cxx b/src/LightApp/LightApp_AboutDlg.cxx index 689d4165c..7dc4a48ae 100644 --- a/src/LightApp/LightApp_AboutDlg.cxx +++ b/src/LightApp/LightApp_AboutDlg.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_AboutDlg.cxx // Created: 03.06.2005 13:52:45 // Author: Sergey TELKOV diff --git a/src/LightApp/LightApp_AboutDlg.h b/src/LightApp/LightApp_AboutDlg.h index c59cc938b..8fb3b97f2 100644 --- a/src/LightApp/LightApp_AboutDlg.h +++ b/src/LightApp/LightApp_AboutDlg.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_AboutDlg.h // Created: 03.06.2005 13:49:25 // Author: Sergey TELKOV @@ -10,12 +28,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 ca93892ff..0ccc31bb4 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -1,9 +1,30 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_Application.cxx // Created: 6/20/2005 18:39:45 PM // Author: Natalia Donis // Copyright (C) CEA 2005 -#include "PythonConsole_PyInterp.h" // WARNING! This include must be the first! +#ifndef DISABLE_PYCONSOLE + #include "PythonConsole_PyInterp.h" // WARNING! This include must be the first! + #include +#endif #include "LightApp_Application.h" #include "LightApp_WidgetContainer.h" @@ -17,10 +38,7 @@ #include "LightApp_OBFilter.h" -#include "LightApp_GLSelector.h" #include "LightApp_OBSelector.h" -#include "LightApp_OCCSelector.h" -#include "LightApp_VTKSelector.h" #include "LightApp_SelectionMgr.h" #include @@ -42,25 +60,50 @@ #include #include #include -#include -#include -#include +#ifndef DISABLE_GLVIEWER + #include + #include + #include "LightApp_GLSelector.h" +#endif -#include -#include -#include +#ifndef DISABLE_PLOT2DVIEWER + #include + #include +#ifndef DISABLE_SALOMEOBJECT + #include +#else + #include +#endif +#endif -#include -#include +#ifndef DISABLE_OCCVIEWER + #include +#ifndef DISABLE_SALOMEOBJECT + #include +#else + #include +#endif + #include "LightApp_OCCSelector.h" +#endif -#include -#include -#include +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT + #include + #include + #include "LightApp_VTKSelector.h" +#else + #include + #include +#endif + #include +#endif -#include -#include -#include +//#ifndef DISABLE_SUPERVGRAPHVIEWER +// #include +// #include +// #include +//#endif #include @@ -78,11 +121,14 @@ #include #include #include +#include #define FIRST_HELP_ID 1000000 -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIO.hxx" +#ifndef DISABLE_SALOMEOBJECT + #include "SALOME_InteractiveObject.hxx" + #include "SALOME_ListIO.hxx" +#endif static const char* imageEmptyIcon[] = { "20 20 1 1", @@ -108,17 +154,28 @@ static const char* imageEmptyIcon[] = { "....................", "...................."}; +int LightApp_Application::lastStudyId = 0; + +/*! + \return last global id of study +*/ +int LightApp_Application::studyId() +{ + return LightApp_Application::lastStudyId; +} + /*!Create new instance of LightApp_Application.*/ 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.*/ @@ -146,7 +203,9 @@ myPrefs( 0 ) mySelMgr = new LightApp_SelectionMgr( this ); - myAccel = new SUIT_Accel( desktop() ); + myAccel = SUIT_Accel::getAccel(); + +#ifndef DISABLE_OCCVIEWER myAccel->setActionKey( SUIT_Accel::PanLeft, CTRL+Key_Left, OCCViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::PanRight, CTRL+Key_Right, OCCViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::PanUp, CTRL+Key_Up, OCCViewer_Viewer::Type() ); @@ -158,6 +217,8 @@ myPrefs( 0 ) myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right, OCCViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::RotateUp, ALT+Key_Up, OCCViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::RotateDown, ALT+Key_Down, OCCViewer_Viewer::Type() ); +#endif +#ifndef DISABLE_VTKVIEWER myAccel->setActionKey( SUIT_Accel::PanLeft, CTRL+Key_Left, VTKViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::PanRight, CTRL+Key_Right, VTKViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::PanUp, CTRL+Key_Up, VTKViewer_Viewer::Type() ); @@ -169,8 +230,33 @@ myPrefs( 0 ) myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right, VTKViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::RotateUp, ALT+Key_Up, VTKViewer_Viewer::Type() ); myAccel->setActionKey( SUIT_Accel::RotateDown, ALT+Key_Down, VTKViewer_Viewer::Type() ); +#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. @@ -181,14 +267,6 @@ myPrefs( 0 ) */ LightApp_Application::~LightApp_Application() { - saveWindowsGeometry(); - - if ( resourceMgr() ) - { - if ( desktop() ) - desktop()->saveGeometry( resourceMgr(), "desktop" ); - resourceMgr()->save(); - } delete mySelMgr; } @@ -302,6 +380,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(); @@ -320,6 +402,19 @@ LightApp_SelectionMgr* LightApp_Application::selectionMgr() const return mySelMgr; } +/*!Creat action "New window" for certain type of viewer:*/ +void LightApp_Application::createActionForViewer( const int id, + const int parentId, + const QString& suffix, + const int accel ) +{ + QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ), QIconSet(), + tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ), + tr( QString( "NEW_WINDOW_%1" ).arg( suffix ) ), + accel, desktop(), false, this, SLOT( onNewWindow() ) ); + createMenu( a, parentId, -1 ); +} + /*!Create actions:*/ void LightApp_Application::createActions() { @@ -344,22 +439,36 @@ void LightApp_Application::createActions() int id = LightApp_Application::UserID + FIRST_HELP_ID; // help for KERNEL and GUI QCString dir; - QString aFileName; + QString aFileName = "index.htm"; QString root; QAction* a; if (dir = getenv("GUI_ROOT_DIR")) { - aFileName = "GUI_index_v3.1.0.html"; - root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") ); + root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") + + Qtx::addSlash("gui") + Qtx::addSlash("GUI") ); if ( QFileInfo( root + aFileName ).exists() ) { - a = createAction( id, tr( QString("Kernel & GUI Help") ), QIconSet(), - tr( QString("Kernel && GUI Help") ), - tr( QString("Kernel & GUI Help") ), + a = createAction( id, tr( QString("GUI Help") ), QIconSet(), + tr( QString("GUI Help") ), + tr( QString("GUI Help") ), 0, desk, false, this, SLOT( onHelpContentsModule() ) ); a->setName( QString("GUI") ); createMenu( a, helpModuleMenu, -1 ); id++; } } + if (dir = getenv("KERNEL_ROOT_DIR")) { + QString aFN = "index.html"; + root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + + Qtx::addSlash("salome") ); + if ( QFileInfo( root + aFN ).exists() ) { + a = createAction( id, tr( QString("KERNEL Help") ), QIconSet(), + tr( QString("KERNEL Help") ), + tr( QString("KERNEL Help") ), + 0, desk, false, this, SLOT( onHelpContentsModule() ) ); + a->setName( QString("KERNEL") ); + createMenu( a, helpModuleMenu, -1 ); + id++; + } + } // help for other existing modules QStringList::Iterator it; for ( it = aModuleList.begin(); it != aModuleList.end(); ++it ) @@ -368,10 +477,10 @@ void LightApp_Application::createActions() continue; QString modName = moduleName( *it ); - aFileName = modName + "_index_v3.1.0.html"; if (dir = getenv( modName + "_ROOT_DIR")) { - root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") ); + root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") + + Qtx::addSlash("gui") + Qtx::addSlash(modName) ); if ( QFileInfo( root + aFileName ).exists() ) { QAction* a = createAction( id, tr( moduleTitle(modName) + QString(" Help") ), QIconSet(), @@ -434,8 +543,11 @@ void LightApp_Application::createActions() for ( it = modList.begin(); it != modList.end(); ++it ) { - if ( (*it).isEmpty() ) + if ( !isLibExists( *it ) ) + { + qDebug( QString( "Library '%1' cannot be found" ).arg( *it ) ); continue; + } QString iconName; if ( iconMap.contains( *it ) ) @@ -459,24 +571,24 @@ void LightApp_Application::createActions() SUIT_Tools::simplifySeparators( modTBar ); // New window - int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, 100 ); + int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, MenuWindowId, 100 ); int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 ); createMenu( separator(), windowMenu, -1, 1 ); - QMap accelMap; - accelMap[NewGLViewId] = ALT+Key_G; - accelMap[NewPlot2dId] = ALT+Key_P; - accelMap[NewOCCViewId] = ALT+Key_O; - accelMap[NewVTKViewId] = ALT+Key_K; - for ( id = NewGLViewId; id <= NewVTKViewId; id++ ) - { - QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), QIconSet(), - tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), - tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), - accelMap.contains( id ) ? accelMap[id] : 0, desk, false, this, SLOT( onNewWindow() ) ); - createMenu( a, newWinMenu, -1 ); - } +#ifndef DISABLE_GLVIEWER + createActionForViewer( NewGLViewId, newWinMenu, QString::number( 0 ), ALT+Key_G ); +#endif +#ifndef DISABLE_PLOT2DVIEWER + createActionForViewer( NewPlot2dId, newWinMenu, QString::number( 1 ), ALT+Key_P ); +#endif +#ifndef DISABLE_OCCVIEWER + createActionForViewer( NewOCCViewId, newWinMenu, QString::number( 2 ), ALT+Key_O ); +#endif +#ifndef DISABLE_VTKVIEWER + createActionForViewer( NewVTKViewId, newWinMenu, QString::number( 3 ), ALT+Key_K ); +#endif + createAction( RenameId, tr( "TOT_RENAME" ), QIconSet(), tr( "MEN_DESK_RENAME" ), tr( "PRP_RENAME" ), SHIFT+Key_R, desk, false, this, SLOT( onRenameWindow() ) ); @@ -560,28 +672,35 @@ void LightApp_Application::onNewWindow() int id = actionId( (QAction*)obj ); switch ( id ) { +#ifndef DISABLE_GLVIEWER case NewGLViewId: type = GLViewer_Viewer::Type(); break; +#endif +#ifndef DISABLE_PLOT2DVIEWER case NewPlot2dId: type = Plot2d_Viewer::Type(); break; +#endif +#ifndef DISABLE_OCCVIEWER case NewOCCViewId: type = OCCViewer_Viewer::Type(); break; +#endif +#ifndef DISABLE_VTKVIEWER case NewVTKViewId: type = VTKViewer_Viewer::Type(); break; +#endif } if ( !type.isEmpty() ) createViewManager( type ); } -//======================================================================= -// name : onNewDoc -/*! Purpose : SLOT. Create new document*/ -//======================================================================= +/*! + SLOT: Creates new document +*/ void LightApp_Application::onNewDoc() { SUIT_Study* study = activeStudy(); @@ -597,10 +716,9 @@ void LightApp_Application::onNewDoc() } } -//======================================================================= -// name : onOpenDoc -/*! Purpose : SLOT. Open new document*/ -//======================================================================= +/*! + SLOT: Opens new document +*/ void LightApp_Application::onOpenDoc() { SUIT_Study* study = activeStudy(); @@ -616,7 +734,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; @@ -683,10 +805,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() ); @@ -694,7 +815,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 ); @@ -711,7 +835,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(); @@ -720,9 +847,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 ); @@ -730,34 +858,57 @@ 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(); + QAction* a = 0; - for ( int id = NewGLViewId; id <= NewVTKViewId; id++ ) - { - QAction* a = action( id ); - if ( a ) - a->setEnabled( activeStudy() ); - } +#ifndef DISABLE_GLVIEWER + a = action( NewGLViewId ); + if( a ) + a->setEnabled( activeStudy() ); +#endif + +#ifndef DISABLE_PLOT2DVIEWER + a = action( NewPlot2dId ); + if( a ) + a->setEnabled( activeStudy() ); +#endif + +#ifndef DISABLE_OCCVIEWER + a = action( NewOCCViewId ); + if( a ) + a->setEnabled( activeStudy() ); +#endif + +#ifndef DISABLE_VTKVIEWER + a = action( NewVTKViewId ); + if( a ) + a->setEnabled( activeStudy() ); +#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() { @@ -769,18 +920,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: @@ -788,49 +933,80 @@ private: QString myParams; QString myHelpFile; int myStatus; - + LightApp_Application* myLApp; }; -//======================================================================= -// name : onHelpContentsModule -/*! Purpose : SLOT. Display help contents for choosen module*/ -//======================================================================= +/*! + SLOT: Displays help contents for choosen module +*/ void LightApp_Application::onHelpContentsModule() { const QAction* obj = (QAction*) sender(); QString aComponentName = obj->name(); - QString aFileName = aComponentName + "_index_v3.1.0.html"; + QString aFileName = "index.htm"; + QString aFileNameKernel = "index.html"; QCString dir = getenv( aComponentName + "_ROOT_DIR"); - QString homeDir = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") ); + QString homeDir = !aComponentName.compare(QString("KERNEL")) ? + Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + Qtx::addSlash("salome") ) : + Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("doc") + Qtx::addSlash("salome") + Qtx::addSlash("gui") + Qtx::addSlash(aComponentName) ); + + QString helpFile = QFileInfo( homeDir + (!aComponentName.compare(QString("KERNEL")) ? aFileNameKernel : aFileName) ).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 { + if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"), + tr("DEFINE_EXTERNAL_BROWSER"), + tr("BUT_OK"),tr("BUT_CANCEL"),0,1,0 )==0 ) + onPreferences(); + } +} - QString helpFile = QFileInfo( homeDir + aFileName ).absFilePath(); +/*! + 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(anApp, aParams, helpFile); + 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; @@ -850,12 +1026,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 ) @@ -877,6 +1054,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] ); @@ -889,17 +1068,19 @@ void LightApp_Application::addWindow( QWidget* wid, const int flag, const int st } QFont f; +#ifndef DISABLE_PYCONSOLE if( wid->inherits( "PythonConsole" ) ) { 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 f = wid->font(); myWindows[flag]->insert( sId, wid ); @@ -908,11 +1089,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 ) ) @@ -934,11 +1116,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 ); @@ -948,7 +1131,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; @@ -960,10 +1146,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 ) ) @@ -971,10 +1158,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; @@ -984,7 +1179,9 @@ OB_Browser* LightApp_Application::objectBrowser() return ob; } -/*!Gets "LogWindow".*/ +/*! + \return Log Window +*/ LogWindow* LightApp_Application::logWindow() { LogWindow* lw = 0; @@ -994,7 +1191,10 @@ LogWindow* LightApp_Application::logWindow() return lw; } -/*!Get "PythonConsole"*/ +#ifndef DISABLE_PYCONSOLE +/*! + \return Python Console +*/ PythonConsole* LightApp_Application::pythonConsole() { PythonConsole* console = 0; @@ -1003,13 +1203,21 @@ PythonConsole* LightApp_Application::pythonConsole() console = (PythonConsole*)wid; return console; } +#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; @@ -1020,6 +1228,9 @@ void LightApp_Application::updateObjectBrowser( const bool updateModels ) ((LightApp_DataModel*)camDM)->update(); } } + + if( objectBrowser() ) + objectBrowser()->setAutoUpdate( isAutoUpdate ); } if ( objectBrowser() ) { @@ -1028,13 +1239,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 ); @@ -1056,21 +1273,32 @@ 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(); SUIT_ViewManager* viewMgr = 0; +#ifndef DISABLE_GLVIEWER if( vmType == GLViewer_Viewer::Type() ) { viewMgr = new GLViewer_ViewManager( activeStudy(), desktop() ); new LightApp_GLSelector( (GLViewer_Viewer2d*)viewMgr->getViewModel(), mySelMgr ); } - else if( vmType == Plot2d_Viewer::Type() ) +#endif +#ifndef DISABLE_PLOT2DVIEWER + if( vmType == Plot2d_Viewer::Type() ) { viewMgr = new Plot2d_ViewManager( activeStudy(), desktop() ); - SPlot2d_Viewer* vm = new SPlot2d_Viewer(); + Plot2d_Viewer* vm; +#ifndef DISABLE_SALOMEOBJECT + vm = new SPlot2d_Viewer(); +#else + vm = new Plot2d_Viewer(); +#endif viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface Plot2d_ViewWindow* wnd = dynamic_cast( viewMgr->getActiveView() ); if( wnd ) @@ -1079,18 +1307,23 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType frame->setBackgroundColor( resMgr->colorValue( "Plot2d", "Background", frame->backgroundColor() ) ); } } - else 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() ) ); - } - else if( vmType == OCCViewer_Viewer::Type() ) +#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() ) { viewMgr = new OCCViewer_ViewManager( activeStudy(), desktop() ); - SOCC_Viewer* vm = new SOCC_Viewer(); + OCCViewer_Viewer* vm; +#ifndef DISABLE_SALOMEOBJECT + vm = new SOCC_Viewer(); +#else + vm = new OCCViewer_Viewer(); +#endif vm->setBackgroundColor( resMgr->colorValue( "OCCViewer", "background", vm->backgroundColor() ) ); vm->setTrihedronSize( resMgr->integerValue( "OCCViewer", "trihedron_size", vm->trihedronSize() ) ); int u( 1 ), v( 1 ); @@ -1101,17 +1334,32 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface new LightApp_OCCSelector( (OCCViewer_Viewer*)viewMgr->getViewModel(), mySelMgr ); } - else if ( vmType == SVTK_Viewer::Type() ) +#endif +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT + if ( vmType == SVTK_Viewer::Type() ) +#else + if ( vmType == VTKViewer_Viewer::Type() ) +#endif { +#ifndef DISABLE_SALOMEOBJECT viewMgr = new SVTK_ViewManager( activeStudy(), desktop() ); SVTK_Viewer* vm = dynamic_cast( viewMgr->getViewModel() ); if( vm ) { vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) ); - vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ) ); + vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ), + resMgr->booleanValue( "VTKViewer", "relative_size", vm->trihedronRelative() ) ); new LightApp_VTKSelector( vm, mySelMgr ); } +#else + viewMgr = new VTKViewer_ViewManager( activeStudy(), desktop() ); + VTKViewer_Viewer* vm = dynamic_cast( viewMgr->getViewModel() ); + if ( vm ) + vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) ); +#endif } +#endif if ( !viewMgr ) return 0; @@ -1122,22 +1370,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; @@ -1155,7 +1402,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; @@ -1209,12 +1459,14 @@ void LightApp_Application::onDesktopActivated() */ QString LightApp_Application::getFileFilter() const { - return "(*.bin)"; - // HDF persistence not yet completed - to be uncommented later - //return "(*.hdf)"; + //return "(*.bin)"; + // HDF persistence + 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 ) { @@ -1304,12 +1556,13 @@ void LightApp_Application::updateActions() updateCommandsStatus(); } -//======================================================================= -// name : createNewStudy -/*! Purpose : Create new study*/ -//======================================================================= +/*! + Creates new study +*/ SUIT_Study* LightApp_Application::createNewStudy() { + LightApp_Application::lastStudyId++; + LightApp_Study* aStudy = new LightApp_Study( this ); // Set up processing of major study-related events @@ -1321,7 +1574,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; @@ -1329,7 +1585,7 @@ QWidget* LightApp_Application::createWindow( const int flag ) { OB_Browser* ob = new OB_Browser( desktop() ); ob->setAutoUpdate( true ); - ob->setAutoOpenLevel( 1 ); + //ob->setAutoOpenLevel( 1 ); // commented by ASV as a fix to bug IPAL10107 ob->setCaption( tr( "OBJECT_BROWSER" ) ); OB_ListView* ob_list = dynamic_cast( const_cast( ob->listView() ) ); @@ -1346,6 +1602,7 @@ QWidget* LightApp_Application::createWindow( const int flag ) ob->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) ); } +#ifndef DISABLE_PYCONSOLE else if ( flag == WT_PyConsole ) { PythonConsole* pyCons = new PythonConsole( desktop() ); @@ -1353,6 +1610,7 @@ QWidget* LightApp_Application::createWindow( const int flag ) wid = pyCons; // pyCons->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) ); } +#endif else if ( flag == WT_LogWindow ) { LogWindow* logWin = new LogWindow( desktop() ); @@ -1363,25 +1621,29 @@ 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 { aMap.insert( WT_ObjectBrowser, Qt::DockLeft ); +#ifndef DISABLE_PYCONSOLE aMap.insert( WT_PyConsole, Qt::DockBottom ); +#endif // 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 ) @@ -1438,7 +1700,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 ); @@ -1455,7 +1719,9 @@ void LightApp_Application::moduleAdded( CAM_Module* mod ) } } -/*!Create preferences.*/ +/*! + Create preferences +*/ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) { if ( !pref ) @@ -1469,9 +1735,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 ); @@ -1507,7 +1770,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" ); @@ -1614,13 +1877,18 @@ 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(); if ( !resMgr ) return; +#ifndef DISABLE_OCCVIEWER if ( sec == QString( "OCCViewer" ) && param == QString( "trihedron_size" ) ) { int sz = resMgr->integerValue( sec, param, -1 ); @@ -1637,11 +1905,15 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString occVM->getAISContext()->UpdateCurrentViewer(); } } +#endif +#ifndef DISABLE_VTKVIEWER if ( sec == QString( "VTKViewer" ) && (param == QString( "trihedron_size" ) || param == QString( "relative_size" )) ) { int sz = resMgr->integerValue( "VTKViewer", "trihedron_size", -1 ); + bool isRelative = resMgr->booleanValue( "VTKViewer", "relative_size", true ); QPtrList lst; +#ifndef DISABLE_SALOMEOBJECT viewManagers( SVTK_Viewer::Type(), lst ); for ( QPtrListIterator it( lst ); it.current() && sz >= 0; ++it ) { @@ -1652,12 +1924,15 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString SVTK_Viewer* vtkVM = dynamic_cast( vm ); if( vtkVM ) { - vtkVM->setTrihedronSize( sz ); + vtkVM->setTrihedronSize( sz, isRelative ); vtkVM->Repaint(); } } +#endif } +#endif +#ifndef DISABLE_OCCVIEWER if ( sec == QString( "OCCViewer" ) && ( param == QString( "iso_number_u" ) || param == QString( "iso_number_v" ) ) ) { QPtrList lst; @@ -1671,6 +1946,7 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString mgr->getOCCViewer()->setIsos( u, v ); } } +#endif if( sec=="ObjectBrowser" ) { @@ -1684,6 +1960,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 ); } } @@ -1694,25 +1974,51 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString updateWindows(); } +#ifndef DISABLE_PYCONSOLE if( sec=="PyConsole" ) { if( param=="font" ) if( pythonConsole() ) pythonConsole()->setFont( resMgr->fontValue( "PyConsole", "font" ) ); } +#endif } -/*!Update desktop title.*/ +/*! + Saves preferences +*/ +void LightApp_Application::savePreferences() +{ + saveWindowsGeometry(); + + if ( resourceMgr() ) + { + if ( desktop() ) + desktop()->saveGeometry( resourceMgr(), "desktop" ); + resourceMgr()->save(); + } +} + +/*! + Updates desktop title +*/ void LightApp_Application::updateDesktopTitle() { QString aTitle = applicationName(); QString aVer = applicationVersion(); if ( !aVer.isEmpty() ) aTitle += QString( " " ) + aVer; + if ( activeStudy() ) { + QString sName = SUIT_Tools::file( activeStudy()->studyName().stripWhiteSpace(), false ); + aTitle += QString( " - [%1]" ).arg( sName ); + } + desktop()->setCaption( aTitle ); } -/*!Update windows after close document.*/ +/*! + Updates windows after close document +*/ void LightApp_Application::afterCloseDoc() { updateWindows(); @@ -1720,7 +2026,9 @@ void LightApp_Application::afterCloseDoc() CAM_Application::afterCloseDoc(); } -/*!Update module action.*/ +/*! + Updates actions of active module +*/ void LightApp_Application::updateModuleActions() { QString modName; @@ -1731,9 +2039,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(); @@ -1746,9 +2055,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(); @@ -1761,22 +2071,36 @@ void LightApp_Application::currentViewManagers( QStringList& lst ) const defaultViewManagers( lst ); } -/*!Update windows.*/ +/*! + Updates windows +*/ void LightApp_Application::updateWindows() { QMap winMap; currentWindows( winMap ); - for ( QMap::ConstIterator it = winMap.begin(); it != winMap.end(); ++it ) - getWindow( it.key() ); + if ( activeStudy() ) { + for ( QMap::ConstIterator it = winMap.begin(); it != winMap.end(); ++it ) + getWindow( it.key() ); - loadWindowsGeometry(); + loadWindowsGeometry(); + } + + // 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 ) { + + if ( myWindowsVisible.contains( itr.key() ) && + !myWindowsVisible[ itr.key() ] ) + continue; - for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) setWindowShown( itr.key(), !itr.data()->isEmpty() && winMap.contains( itr.key() ) ); + } } -/*!Update view managers.*/ +/*! + Updates view managers +*/ void LightApp_Application::updateViewManagers() { QStringList lst; @@ -1786,7 +2110,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 ); @@ -1814,7 +2140,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 ); @@ -1842,7 +2170,9 @@ void LightApp_Application::saveWindowsGeometry() dockMgr->saveGeometry( resourceMgr(), section, false ); } -/*!Activate windows.*/ +/*! + Activates windows +*/ void LightApp_Application::activateWindows() { if ( activeStudy() ) @@ -1852,7 +2182,9 @@ void LightApp_Application::activateWindows() } } -/*!Adds icon names for modules.*/ +/*! + Adds icon names for modules +*/ void LightApp_Application::moduleIconNames( QMap& iconMap ) const { iconMap.clear(); @@ -1880,7 +2212,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 ); @@ -1893,7 +2227,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(); @@ -1901,7 +2237,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 ); @@ -1910,13 +2249,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 @@ -1931,7 +2274,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* ) ), @@ -1940,7 +2295,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() ) @@ -1955,3 +2312,80 @@ void LightApp_Application::onRenameWindow() if( ok && !name.isEmpty() ) w->setCaption( name ); } + +/*! + \return if the library of module exists + \param moduleTitle - title of module +*/ +bool LightApp_Application::isLibExists( const QString& moduleTitle ) const +{ + if( moduleTitle.isEmpty() ) + return false; + + QString lib = moduleLibrary( moduleTitle ); + QStringList paths; +#ifdef WIN32 + paths = QStringList::split( ";", ::getenv( "PATH" ) ); +#else + paths = QStringList::split( ":", ::getenv( "LD_LIBRARY_PATH" ) ); +#endif + + QStringList::const_iterator anIt = paths.begin(), aLast = paths.end(); + for( ; anIt!=aLast; anIt++ ) + { + QFileInfo inf( Qtx::addSlash( *anIt ) + lib ); + if( inf.exists() ) + return true; + } + return false; +} + +/*! + \return default name for an active study +*/ +void LightApp_Application::setDefaultStudyName( const QString& theName ) +{ + QStringList anInfoList; + modules( anInfoList, false ); + + LightApp_Study* aStudy = (LightApp_Study*)activeStudy(); + if( anInfoList.count() == 1 && // to avoid a conflict between different modules + !aStudy->isSaved() ) + { + aStudy->setStudyName( 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 14d2e4c23..b7131da99 100644 --- a/src/LightApp/LightApp_Application.h +++ b/src/LightApp/LightApp_Application.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_Application.h // Created: 6/20/2005 18:39:25 PM // Author: OCC team @@ -15,7 +33,9 @@ class LogWindow; class OB_Browser; -class PythonConsole; +#ifndef DISABLE_PYCONSOLE + class PythonConsole; +#endif class STD_Application; class LightApp_WidgetContainer; class LightApp_Preferences; @@ -42,10 +62,35 @@ class LIGHTAPP_EXPORT LightApp_Application : public CAM_Application Q_OBJECT public: - typedef enum { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, WT_User } WindowTypes; + typedef enum { WT_ObjectBrowser, +#ifndef DISABLE_PYCONSOLE + WT_PyConsole, +#endif + WT_LogWindow, + WT_User } + WindowTypes; + + enum { MenuWindowId = 6 }; - enum { NewGLViewId = CAM_Application::UserID, NewPlot2dId, NewOCCViewId, NewVTKViewId, - PreferencesId, MRUId, RenameId, UserID }; + enum { RenameId = CAM_Application::UserID, + +#ifndef DISABLE_GLVIEWER + NewGLViewId , +#endif + +#ifndef DISABLE_PLOT2DVIEWER + NewPlot2dId, +#endif + +#ifndef DISABLE_OCCVIEWER + NewOCCViewId, +#endif + +#ifndef DISABLE_VTKVIEWER + NewVTKViewId, +#endif + + PreferencesId, MRUId, UserID }; public: LightApp_Application(); virtual ~LightApp_Application(); @@ -62,7 +107,9 @@ public: LogWindow* logWindow(); OB_Browser* objectBrowser(); +#ifndef DISABLE_PYCONSOLE PythonConsole* pythonConsole(); +#endif virtual void updateObjectBrowser( const bool = true ); @@ -79,6 +126,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; @@ -96,6 +144,12 @@ public: SUIT_Accel* accel() const; + void setDefaultStudyName( const QString& theName ); + + static int studyId(); + + virtual bool event( QEvent* ); + signals: void studyOpened(); void studySaved(); @@ -103,6 +157,7 @@ signals: public slots: virtual void onHelpContentsModule(); + virtual void onHelpContextModule( const QString&, const QString& ); virtual void onNewDoc(); virtual void onOpenDoc(); virtual void onHelpAbout(); @@ -111,6 +166,10 @@ public slots: protected: virtual void createActions(); + virtual void createActionForViewer( const int id, + const int parentId, + const QString& suffix, + const int accel ); virtual SUIT_Study* createNewStudy(); virtual QWidget* createWindow( const int ); virtual void defaultWindows( QMap& ) const; @@ -128,6 +187,7 @@ protected: LightApp_Preferences* preferences( const bool ) const; virtual void createPreferences( LightApp_Preferences* ); virtual void preferencesChanged( const QString&, const QString& ); + virtual void savePreferences(); virtual void updateDesktopTitle(); protected slots: @@ -151,6 +211,7 @@ private slots: void onMRUActivated( QString ); void onPreferenceChanged( QString&, QString&, QString& ); void onRenameWindow(); + void onVisibilityChanged( bool ); protected: void updateWindows(); @@ -169,20 +230,25 @@ protected: void moduleIconNames( QMap& ) const; void activateWindows(); + bool isLibExists( const QString& ) const; 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; static LightApp_Preferences* _prefs_; + + static int lastStudyId; }; #ifdef WIN32 diff --git a/src/LightApp/LightApp_DataModel.cxx b/src/LightApp/LightApp_DataModel.cxx index 6ccba618b..9fe3b086a 100644 --- a/src/LightApp/LightApp_DataModel.cxx +++ b/src/LightApp/LightApp_DataModel.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_DataModel.cxx // Created: 10/25/2004 10:36:06 AM // Author: Sergey LITONIN @@ -6,95 +24,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 +141,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..c2eb2d6e7 100644 --- a/src/LightApp/LightApp_DataModel.h +++ b/src/LightApp/LightApp_DataModel.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_DataModel.h // Created: 10/25/2004 10:32:33 AM // Author: Sergey LITONIN @@ -47,7 +65,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..a4df6dfa8 100644 --- a/src/LightApp/LightApp_DataObject.cxx +++ b/src/LightApp/LightApp_DataObject.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_DataObject.h" @@ -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_DataObject.h b/src/LightApp/LightApp_DataObject.h index 1f194ffc2..4d3613dad 100644 --- a/src/LightApp/LightApp_DataObject.h +++ b/src/LightApp/LightApp_DataObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_DATAOBJECT_H #define LIGHTAPP_DATAOBJECT_H diff --git a/src/LightApp/LightApp_DataOwner.cxx b/src/LightApp/LightApp_DataOwner.cxx index add34d91f..dea72f88c 100644 --- a/src/LightApp/LightApp_DataOwner.cxx +++ b/src/LightApp/LightApp_DataOwner.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_DataOwner.h" @@ -37,6 +37,7 @@ LightApp_DataOwner { } +#ifndef DISABLE_SALOMEOBJECT /*!Constructor. Initialize by \a SALOME_InteractiveObject.*/ LightApp_DataOwner ::LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO ): @@ -44,6 +45,7 @@ LightApp_DataOwner myIO(theIO) { } +#endif /*!Destructor. Do nothing.*/ LightApp_DataOwner @@ -61,6 +63,12 @@ LightApp_DataOwner return other && entry() == other->entry(); } +bool LightApp_DataOwner::operator<( const SUIT_DataOwner& obj ) const +{ + const LightApp_DataOwner* other = dynamic_cast( &obj ); + return entry() < other->entry(); +} + /*!Gets entry.*/ QString LightApp_DataOwner @@ -69,6 +77,7 @@ LightApp_DataOwner return myEntry; } +#ifndef DISABLE_SALOMEOBJECT /*!Gets SALOME_InteractiveObject.*/ const Handle(SALOME_InteractiveObject)& LightApp_DataOwner @@ -76,3 +85,4 @@ LightApp_DataOwner { return myIO; } +#endif diff --git a/src/LightApp/LightApp_DataOwner.h b/src/LightApp/LightApp_DataOwner.h index d76e6d411..7fd43eedc 100644 --- a/src/LightApp/LightApp_DataOwner.h +++ b/src/LightApp/LightApp_DataOwner.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_DATAOWNER_H @@ -22,7 +22,10 @@ #include "LightApp.h" #include "SUIT_DataOwner.h" -#include "SALOME_InteractiveObject.hxx" + +#ifndef DISABLE_SALOMEOBJECT + #include "SALOME_InteractiveObject.hxx" +#endif /*! This class provide data owner objects. @@ -30,17 +33,25 @@ class LIGHTAPP_EXPORT LightApp_DataOwner : public SUIT_DataOwner { public: +#ifndef DISABLE_SALOMEOBJECT LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO ); +#endif LightApp_DataOwner( const QString& ); virtual ~LightApp_DataOwner(); virtual bool isEqual( const SUIT_DataOwner& ) const; + virtual bool operator<( const SUIT_DataOwner& ) const; + +#ifndef DISABLE_SALOMEOBJECT const Handle(SALOME_InteractiveObject)& IO() const; +#endif QString entry() const; private: QString myEntry; +#ifndef DISABLE_SALOMEOBJECT Handle(SALOME_InteractiveObject) myIO; +#endif }; typedef SMART(LightApp_DataOwner) LightApp_DataOwnerPtr; diff --git a/src/LightApp/LightApp_DataSubOwner.cxx b/src/LightApp/LightApp_DataSubOwner.cxx index c5a6703a4..aaf1d3613 100644 --- a/src/LightApp/LightApp_DataSubOwner.cxx +++ b/src/LightApp/LightApp_DataSubOwner.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_DataSubOwner.h" diff --git a/src/LightApp/LightApp_DataSubOwner.h b/src/LightApp/LightApp_DataSubOwner.h index 507684d5f..0bd219c42 100644 --- a/src/LightApp/LightApp_DataSubOwner.h +++ b/src/LightApp/LightApp_DataSubOwner.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_DATASUBOWNER_H diff --git a/src/LightApp/LightApp_Dialog.cxx b/src/LightApp/LightApp_Dialog.cxx index b77f62f01..27219f5f1 100644 --- a/src/LightApp/LightApp_Dialog.cxx +++ b/src/LightApp/LightApp_Dialog.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_Dialog.cxx // Author: Alexander SOLOVYOV @@ -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..a862d6388 100644 --- a/src/LightApp/LightApp_Dialog.h +++ b/src/LightApp/LightApp_Dialog.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_Dialog.h // Author: Alexander SOLOVYOV @@ -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 65ce0fa3c..0845d5cc9 100644 --- a/src/LightApp/LightApp_Displayer.cxx +++ b/src/LightApp/LightApp_Displayer.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_Displayer.h" @@ -23,8 +23,6 @@ #include -#include - #include #include #include @@ -32,15 +30,30 @@ #include #include +#ifndef DISABLE_SALOMEOBJECT + #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(); @@ -62,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) @@ -92,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 ) { @@ -108,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(); @@ -119,19 +150,29 @@ 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(); + bool res = false; if( vf ) { +#ifndef DISABLE_SALOMEOBJECT Handle( SALOME_InteractiveObject ) temp = new SALOME_InteractiveObject(); temp->setEntry( entry.latin1() ); - return vf->isVisible( temp ); + res = vf->isVisible( temp ); +#endif } - else - return false; + return res; } +/*! + Updates active view +*/ void LightApp_Displayer::UpdateViewer() const { SALOME_View* vf = GetActiveView(); @@ -139,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; @@ -151,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(); @@ -165,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; @@ -182,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 aef78d214..5b4318965 100644 --- a/src/LightApp/LightApp_Displayer.h +++ b/src/LightApp/LightApp_Displayer.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_DISPLAYER_HEADER @@ -26,6 +26,11 @@ class QString; +/*! + \class LightApp_Displayer + Uniform mechanism of display/erase of objects in different views. + Objects are specified by string entry +*/ class LIGHTAPP_EXPORT LightApp_Displayer : public SALOME_Displayer { public: diff --git a/src/LightApp/LightApp_Driver.cxx b/src/LightApp/LightApp_Driver.cxx index 122890390..e8e161dc5 100644 --- a/src/LightApp/LightApp_Driver.cxx +++ b/src/LightApp/LightApp_Driver.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_Driver.h" @@ -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_Driver.h b/src/LightApp/LightApp_Driver.h index f995ce27d..e130b86da 100644 --- a/src/LightApp/LightApp_Driver.h +++ b/src/LightApp/LightApp_Driver.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_DRIVER_H #define LIGHTAPP_DRIVER_H diff --git a/src/LightApp/LightApp_GLSelector.cxx b/src/LightApp/LightApp_GLSelector.cxx index 7913b4edf..ceebdeeb4 100644 --- a/src/LightApp/LightApp_GLSelector.cxx +++ b/src/LightApp/LightApp_GLSelector.cxx @@ -14,14 +14,12 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_GLSelector.h" #include "LightApp_DataOwner.h" -#include - #include /*!Constructor. Initialize by GLViewer_Viewer2d and SUIT_SelectionMgr.*/ @@ -66,7 +64,7 @@ void LightApp_GLSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const GLViewer_Object* obj = cont->SelectedObject(); if ( obj ) { - SALOME_GLOwner* owner = dynamic_cast< SALOME_GLOwner* >( obj->owner() ); + LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() ); if( owner ) aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( owner->entry() ) ) ); } @@ -90,7 +88,7 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList ) GLViewer_Object* obj = *it; if ( obj && obj->getVisible() ) { - SALOME_GLOwner* owner = dynamic_cast< SALOME_GLOwner* >( obj->owner() ); + LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() ); if ( owner ) aDisplayed.insert( owner->entry(), obj ); } @@ -115,3 +113,38 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList ) if ( Nb > 0 ) myViewer->updateAll(); } + + +/*! + Constructor + \param entry - entry of object +*/ +LightApp_GLOwner::LightApp_GLOwner( const char* entry ) +: GLViewer_Owner() +{ + setEntry( entry ); +} + +/*! + Destructor +*/ +LightApp_GLOwner::~LightApp_GLOwner() +{ +} + +/*! + \return entry +*/ +const char* LightApp_GLOwner::entry() const +{ + return myEntry.c_str(); +} + +/*! + Sets new entry + \param entry - entry of object +*/ +void LightApp_GLOwner::setEntry( const char* entry ) +{ + myEntry = entry; +} diff --git a/src/LightApp/LightApp_GLSelector.h b/src/LightApp/LightApp_GLSelector.h index 069669a87..13cb191be 100644 --- a/src/LightApp/LightApp_GLSelector.h +++ b/src/LightApp/LightApp_GLSelector.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_GLSELECTOR_H #define LIGHTAPP_GLSELECTOR_H @@ -25,6 +25,13 @@ #include +#include +#include + +/*! + \class LightApp_GLSelector + Custom selector to get/set selection from GL viewer +*/ class LIGHTAPP_EXPORT LightApp_GLSelector : public SUIT_Selector { Q_OBJECT @@ -48,4 +55,21 @@ private: GLViewer_Viewer2d* myViewer; }; + +/*! + This class provide data owner objects for GLViewer. +*/ +class LIGHTAPP_EXPORT LightApp_GLOwner : public GLViewer_Owner +{ +public: + LightApp_GLOwner( const char* ); + ~LightApp_GLOwner(); + + const char* entry() const; + void setEntry( const char* ); + +private: + std::string myEntry; +}; + #endif diff --git a/src/LightApp/LightApp_Module.cxx b/src/LightApp/LightApp_Module.cxx index 6b4de40b6..9c1a71335 100644 --- a/src/LightApp/LightApp_Module.cxx +++ b/src/LightApp/LightApp_Module.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_Module.cxx // Created: 6/20/2005 16:30:56 AM // Author: OCC team @@ -23,16 +41,37 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT + #include + #include +#else + #include +#endif + #include +#endif +#ifndef DISABLE_OCCVIEWER + #include + #include +#ifndef DISABLE_SALOMEOBJECT + #include +#else + #include +#endif +#endif +#ifndef DISABLE_GLVIEWER + #include + #include +#endif +#ifndef DISABLE_PLOT2DVIEWER + #include + #include +#ifndef DISABLE_SALOMEOBJECT + #include +#else + #include +#endif +#endif #include @@ -96,6 +135,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() ){ @@ -113,7 +155,8 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel, } } } - getApp()->objectBrowser()->updateTree( aDataObject ); + getApp()->objectBrowser()->setAutoUpdate( upd ); + getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ ); } /*!NOT IMPLEMENTED*/ @@ -129,6 +172,11 @@ bool LightApp_Module::activateModule( SUIT_Study* study ) if ( res && application() && application()->resourceMgr() ) application()->resourceMgr()->raiseTranslators( name() ); + connect( application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ), + this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) ); + connect( application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ), + this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) ); + if ( mySwitchOp == 0 ) mySwitchOp = new LightApp_SwitchOp( this ); @@ -141,6 +189,11 @@ bool LightApp_Module::deactivateModule( SUIT_Study* study ) delete mySwitchOp; mySwitchOp = 0; + disconnect( application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ), + this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) ); + disconnect( application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ), + this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) ); + // abort all operations MapOfOperation::const_iterator anIt; for( anIt = myOperations.begin(); anIt != myOperations.end(); anIt++ ) { @@ -196,14 +249,27 @@ void LightApp_Module::update( const int theFlags ) if ( SUIT_ViewManager* viewMgr = getApp()->activeViewManager() ) if ( SUIT_ViewWindow* viewWnd = viewMgr->getActiveView() ) { +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT if ( viewWnd->inherits( "SVTK_ViewWindow" ) ) ( (SVTK_ViewWindow*)viewWnd )->Repaint(); - else if ( viewWnd->inherits( "OCCViewer_ViewWindow" ) ) +#else + if ( viewWnd->inherits( "VTKViewer_ViewWindow" ) ) + ( (VTKViewer_ViewWindow*)viewWnd )->Repaint(); +#endif +#endif +#ifndef DISABLE_OCCVIEWER + if ( viewWnd->inherits( "OCCViewer_ViewWindow" ) ) ( (OCCViewer_ViewWindow*)viewWnd )->getViewPort()->onUpdate(); - else if ( viewWnd->inherits( "Plot2d_ViewWindow" ) ) +#endif +#ifndef DISABLE_PLOT2DVIEWER + if ( viewWnd->inherits( "Plot2d_ViewWindow" ) ) ( (Plot2d_ViewWindow*)viewWnd )->getViewFrame()->Repaint(); - else if ( viewWnd->inherits( "GLViewer_ViewFrame" ) ) +#endif +#ifndef DISABLE_GLVIEWER + if ( viewWnd->inherits( "GLViewer_ViewFrame" ) ) ( (GLViewer_ViewFrame*)viewWnd )->getViewPort()->onUpdate(); +#endif } } } @@ -280,9 +346,40 @@ QtxPopupMgr* LightApp_Module::popupMgr() myPopupMgr->setRule( disp, /*QString( "( not isVisible ) and " ) + */ uniform, true ); myPopupMgr->setRule( erase, /*QString( "( isVisible ) and " ) + */ uniform, true ); myPopupMgr->setRule( dispOnly, uniform, true ); - QString viewers = "{ '%1' '%2' '%3' }"; - viewers = viewers.arg( SOCC_Viewer::Type() ).arg( SVTK_Viewer::Type() ).arg( SPlot2d_Viewer::Type() ); - myPopupMgr->setRule( eraseAll, QString( "client in %1" ).arg( viewers ), true ); + + QStringList viewers; + +#ifndef DISABLE_OCCVIEWER +#ifndef DISABLE_SALOMEOBJECT + viewers.append( SOCC_Viewer::Type() ); +#else + viewers.append( OCCViewer_Viewer::Type() ); +#endif +#endif +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT + viewers.append( SVTK_Viewer::Type() ); +#else + viewers.append( VTKViewer_Viewer::Type() ); +#endif +#endif +#ifndef DISABLE_PLOT2DVIEWER +#ifndef DISABLE_SALOMEOBJECT + viewers.append( SPlot2d_Viewer::Type() ); +#else + viewers.append( Plot2d_Viewer::Type() ); +#endif +#endif + + if( !viewers.isEmpty() ) + { + QString strViewers = "{ ", temp = "'%1' "; + QStringList::const_iterator anIt = viewers.begin(), aLast = viewers.end(); + for( ; anIt!=aLast; anIt++ ) + strViewers+=temp.arg( *anIt ); + strViewers+="}"; + myPopupMgr->setRule( eraseAll, QString( "client in %1" ).arg( strViewers ), true ); + } } return myPopupMgr; } @@ -434,11 +531,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() ) @@ -449,3 +553,17 @@ void LightApp_Module::onShowHide() if( id!=-1 ) 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 8c4c3034c..79fd77fe9 100644 --- a/src/LightApp/LightApp_Module.h +++ b/src/LightApp/LightApp_Module.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_Module.h // Created: 6/20/2005 16:25:06 AM // Author: OCC team @@ -22,6 +40,7 @@ class LightApp_Displayer; class SUIT_Study; class SUIT_DataObject; class SUIT_Operation; +class SUIT_ViewManager; class CAM_Application; class QtxPopupMgr; @@ -29,9 +48,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 @@ -82,6 +101,8 @@ protected slots: virtual void onOperationStopped( SUIT_Operation* ); virtual void onOperationDestroyed(); virtual void onShowHide(); + virtual void onViewManagerAdded( SUIT_ViewManager* ); + virtual void onViewManagerRemoved( SUIT_ViewManager* ); protected: virtual QtxPopupMgr* popupMgr(); diff --git a/src/LightApp/LightApp_ModuleDlg.cxx b/src/LightApp/LightApp_ModuleDlg.cxx index b067b0e5d..d7777bdaa 100644 --- a/src/LightApp/LightApp_ModuleDlg.cxx +++ b/src/LightApp/LightApp_ModuleDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LightApp_ModuleDlg.cxx // Author : Michael Zorin (mzn) diff --git a/src/LightApp/LightApp_ModuleDlg.h b/src/LightApp/LightApp_ModuleDlg.h index 526f16f22..9b818344c 100644 --- a/src/LightApp/LightApp_ModuleDlg.h +++ b/src/LightApp/LightApp_ModuleDlg.h @@ -1,8 +1,22 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : LightApp_ModuleDlg.h // Author : Michael ZORIN (mzn) @@ -19,6 +33,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..e1bca58ce 100644 --- a/src/LightApp/LightApp_NameDlg.cxx +++ b/src/LightApp/LightApp_NameDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LightApp_NameDlg.cxx // Author : Vadim SANDLER @@ -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..45f64c15b 100644 --- a/src/LightApp/LightApp_NameDlg.h +++ b/src/LightApp/LightApp_NameDlg.h @@ -1,8 +1,22 @@ -// SALOME SalomeApp : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SalomeApp : implementation of desktop and GUI kernel // // File : LightApp_NameDlg.h // Author : Vadim SANDLER @@ -18,10 +32,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.cxx b/src/LightApp/LightApp_OBFilter.cxx index 90a3ce940..b15720271 100644 --- a/src/LightApp/LightApp_OBFilter.cxx +++ b/src/LightApp/LightApp_OBFilter.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_OBFilter.h" diff --git a/src/LightApp/LightApp_OBFilter.h b/src/LightApp/LightApp_OBFilter.h index 4ea292132..79e010c14 100644 --- a/src/LightApp/LightApp_OBFilter.h +++ b/src/LightApp/LightApp_OBFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_OBFILTER_H #define 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 76317bf95..0b762d420 100644 --- a/src/LightApp/LightApp_OBSelector.cxx +++ b/src/LightApp/LightApp_OBSelector.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_OBSelector.h" @@ -74,9 +74,13 @@ void LightApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& theList ) const LightApp_DataObject* obj = dynamic_cast( it.current() ); if ( obj ) { +#ifndef DISABLE_SALOMEOBJECT Handle(SALOME_InteractiveObject) aSObj = new SALOME_InteractiveObject ( obj->entry(), obj->componentDataType(), obj->name() ); LightApp_DataOwner* owner = new LightApp_DataOwner( aSObj ); +#else + LightApp_DataOwner* owner = new LightApp_DataOwner( obj->entry() ); +#endif that->mySelectedList.append( SUIT_DataOwnerPtr( owner ) ); } } @@ -103,6 +107,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..f6811946c 100644 --- a/src/LightApp/LightApp_OBSelector.h +++ b/src/LightApp/LightApp_OBSelector.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_OBSELECTOR_H #define 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.cxx b/src/LightApp/LightApp_OCCSelector.cxx index d0b07bb7b..446ae593b 100644 --- a/src/LightApp/LightApp_OCCSelector.cxx +++ b/src/LightApp/LightApp_OCCSelector.cxx @@ -14,14 +14,15 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_DataOwner.h" #include "LightApp_OCCSelector.h" -#include - +#ifndef DISABLE_SALOMEOBJECT + #include +#endif #include #include @@ -68,9 +69,13 @@ void LightApp_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const for ( AIS_ListIteratorOfListOfInteractive anIt( aSelList ); anIt.More(); anIt.Next() ) if ( !anIt.Value().IsNull() ) { +#ifndef DISABLE_SALOMEOBJECT Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anIt.Value()->GetOwner()); if( !anObj.IsNull() ) aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( anObj ) ) ); +#else + aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( entry( anIt.Value() ) ) ) ); +#endif } } @@ -112,10 +117,13 @@ QString LightApp_OCCSelector::entry( const Handle(AIS_InteractiveObject)& anAIS if ( anAIS.IsNull() || !anAIS->HasOwner() ) return QString::null; - Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anAIS->GetOwner()); - QString res; + +#ifndef DISABLE_SALOMEOBJECT + Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast(anAIS->GetOwner()); if ( !anObj.IsNull() ) res = QString( anObj->getEntry() ); +#endif + return res; } diff --git a/src/LightApp/LightApp_OCCSelector.h b/src/LightApp/LightApp_OCCSelector.h index 5a53992e0..c358efe8a 100644 --- a/src/LightApp/LightApp_OCCSelector.h +++ b/src/LightApp/LightApp_OCCSelector.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_OCCSELECTOR_H #define 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..86450eb81 100755 --- a/src/LightApp/LightApp_Operation.cxx +++ b/src/LightApp/LightApp_Operation.cxx @@ -1,12 +1,24 @@ -// LIGHT LightApp -// -// Copyright (C) 2005 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LightApp_Operation.h // Author : Sergey LITONIN -// Module : LIGHT +// Module : LightApp #include #include @@ -121,10 +133,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..8afcda91a 100755 --- a/src/LightApp/LightApp_Operation.h +++ b/src/LightApp/LightApp_Operation.h @@ -1,8 +1,20 @@ -// LIGHT LightApp -// -// Copyright (C) 2005 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LightApp_Operation.h // Author : Sergey LITONIN @@ -22,15 +34,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..65a7ef490 100644 --- a/src/LightApp/LightApp_Preferences.cxx +++ b/src/LightApp/LightApp_Preferences.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_Preferences.cxx // Author: Sergey TELKOV @@ -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..f3d791986 100644 --- a/src/LightApp/LightApp_Preferences.h +++ b/src/LightApp/LightApp_Preferences.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_Preferences.h // Author: Sergey TELKOV @@ -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..e15c16832 100644 --- a/src/LightApp/LightApp_PreferencesDlg.cxx +++ b/src/LightApp/LightApp_PreferencesDlg.cxx @@ -14,13 +14,12 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_PreferencesDlg.cxx // 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..4c7f20f30 100644 --- a/src/LightApp/LightApp_PreferencesDlg.h +++ b/src/LightApp/LightApp_PreferencesDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: LightApp_PreferencesDlg.h // Author: Sergey TELKOV @@ -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_RootObject.h b/src/LightApp/LightApp_RootObject.h index f5daff71c..1c1543a46 100644 --- a/src/LightApp/LightApp_RootObject.h +++ b/src/LightApp/LightApp_RootObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_ROOTOBJECT_H #define LIGHTAPP_ROOTOBJECT_H diff --git a/src/LightApp/LightApp_Selection.cxx b/src/LightApp/LightApp_Selection.cxx index bca35cfec..5620c41d3 100644 --- a/src/LightApp/LightApp_Selection.cxx +++ b/src/LightApp/LightApp_Selection.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_Selection.h" @@ -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++; } @@ -153,7 +153,12 @@ QtxValue LightApp_Selection::param( const int ind, const QString& p ) const LightApp_Displayer* d = LightApp_Displayer::FindDisplayer( mod_name, false ); // false in last parameter means that now we doesn't load module, if it isn't loaded - return QtxValue( d ? d->canBeDisplayed( myEntries[ ind ] ) : true, 0 ); + if ( d ) + return d->canBeDisplayed( myEntries[ ind ] ); + else if ( myEntries[ ind ].startsWith( QObject::tr( "SAVE_POINT_DEF_NAME" ) ) ) // object is a Save Point object + return false; + + return true; //now if displayer is null, it means, that according module isn't loaded, so that we allow to all display/erase //operations under object } diff --git a/src/LightApp/LightApp_Selection.h b/src/LightApp/LightApp_Selection.h index 79cc0fac6..846699f3b 100644 --- a/src/LightApp/LightApp_Selection.h +++ b/src/LightApp/LightApp_Selection.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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.cxx b/src/LightApp/LightApp_SelectionMgr.cxx index ab7a4f8b1..6d8fb6d44 100644 --- a/src/LightApp/LightApp_SelectionMgr.cxx +++ b/src/LightApp/LightApp_SelectionMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_SelectionMgr.h" @@ -25,13 +25,15 @@ #include -#include -#include +#ifndef DISABLE_SALOMEOBJECT + #include + #include -// Open CASCADE Include -#include -#include -#include + // Open CASCADE Include + #include + #include + #include +#endif /*! Constructor. @@ -57,6 +59,7 @@ LightApp_Application* LightApp_SelectionMgr::application() const return myApp; } +#ifndef DISABLE_SALOMEOBJECT /*! Get all selected objects from selection manager */ @@ -89,12 +92,12 @@ void LightApp_SelectionMgr::selectedObjects( SALOME_ListIO& theList, const QStri QString component = study->componentDataType( refEntry ); theList.Append( new SALOME_InteractiveObject( refEntry, component, ""/*refobj->Name().c_str()*/ ) ); } - else + else if( !owner->IO().IsNull() ) theList.Append( owner->IO() ); } } else { - if( !entryMap.contains( entry ) ) + if( !entryMap.contains( entry ) && !owner->IO().IsNull() ) theList.Append( owner->IO() ); } @@ -117,6 +120,37 @@ void LightApp_SelectionMgr::setSelectedObjects( const SALOME_ListIO& lst, const setSelected( owners, append ); } +#else +/*! + Get all selected objects from selection manager +*/ +void LightApp_SelectionMgr::selectedObjects( QStringList& theList, const QString& theType, + const bool convertReferences ) const +{ + theList.clear(); + + SUIT_DataOwnerPtrList aList; + selected( aList, theType ); + + QString entry; + for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr ) + { + const LightApp_DataOwner* owner = dynamic_cast( (*itr).operator->() ); + if( !owner ) + continue; + + LightApp_Study* study = dynamic_cast( application()->activeStudy() ); + if ( !study ) + return; + + entry = owner->entry(); + if( !theList.contains( entry ) ) + theList.append( entry ); + } +} + +#endif + /*! Emit current selection changed. */ @@ -127,6 +161,8 @@ void LightApp_SelectionMgr::selectionChanged( SUIT_Selector* theSel ) emit currentSelectionChanged(); } +#ifndef DISABLE_SALOMEOBJECT + /*! get map of indexes for the given SALOME_InteractiveObject */ @@ -287,3 +323,5 @@ void LightApp_SelectionMgr::selectedSubOwners( MapEntryOfMapOfInteger& theMap ) } } } + +#endif diff --git a/src/LightApp/LightApp_SelectionMgr.h b/src/LightApp/LightApp_SelectionMgr.h index c063b82be..be758e079 100644 --- a/src/LightApp/LightApp_SelectionMgr.h +++ b/src/LightApp/LightApp_SelectionMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_SELECTIONMGR_H #define LIGHTAPP_SELECTIONMGR_H @@ -22,15 +22,24 @@ #include "LightApp.h" #include -#include -#include +#ifndef DISABLE_SALOMEOBJECT + #include + #include + + class SALOME_ListIO; + class TColStd_IndexedMapOfInteger; + class TColStd_MapOfInteger; +#else +#include +#endif -class SALOME_ListIO; class LightApp_Application; -class TColStd_IndexedMapOfInteger; -class TColStd_MapOfInteger; +/*! + 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 @@ -39,11 +48,12 @@ public: LightApp_SelectionMgr( LightApp_Application*, const bool = true ); virtual ~LightApp_SelectionMgr(); + LightApp_Application* application() const; + +#ifndef DISABLE_SALOMEOBJECT typedef QMap< Handle(SALOME_InteractiveObject), TColStd_IndexedMapOfInteger > MapIOOfMapOfInteger; typedef QMap< QString, TColStd_IndexedMapOfInteger > MapEntryOfMapOfInteger; - LightApp_Application* application() const; - void selectedObjects( SALOME_ListIO&, const QString& = QString::null, const bool = true ) const; void setSelectedObjects( const SALOME_ListIO&, const bool = false ); @@ -61,6 +71,9 @@ public: void selectObjects( MapIOOfMapOfInteger theMapIO, bool append ); void selectedSubOwners( MapEntryOfMapOfInteger& theMap ); +#else + void selectedObjects( QStringList&, const QString& = QString::null, const bool = true ) const; +#endif signals: void currentSelectionChanged(); diff --git a/src/LightApp/LightApp_ShowHideOp.cxx b/src/LightApp/LightApp_ShowHideOp.cxx index 52f16266f..a329cf889 100644 --- a/src/LightApp/LightApp_ShowHideOp.cxx +++ b/src/LightApp/LightApp_ShowHideOp.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_ShowHideOp.h" @@ -28,19 +28,30 @@ #include "LightApp_SelectionMgr.h" #include "LightApp_Selection.h" -#include -#include +#ifndef DISABLE_SALOMEOBJECT + #include + #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() ); @@ -95,21 +106,33 @@ void LightApp_ShowHideOp::startOperation() } } + QStringList entries; + +#ifndef DISABLE_SALOMEOBJECT SALOME_ListIO selObjs; mgr->selectedObjects( selObjs ); - - QStringList entries; SALOME_ListIteratorOfListIO anIt( selObjs ); for( ; anIt.More(); anIt.Next() ) - { - if( anIt.Value().IsNull() ) - continue; + if( !anIt.Value().IsNull() ) +#else + QStringList selObjs; + mgr->selectedObjects( selObjs ); + QStringList::const_iterator anIt = selObjs.begin(), aLast = selObjs.end(); + for( ; ; anIt!=aLast ) +#endif + { + QString entry = +#ifndef DISABLE_SALOMEOBJECT + anIt.Value()->getEntry(); +#else + *anIt; +#endif - if( study->isComponent( anIt.Value()->getEntry() ) ) - study->children( anIt.Value()->getEntry(), entries ); - else - entries.append( anIt.Value()->getEntry() ); - } + if( study->isComponent( entry ) ) + study->children( entry, entries ); + else + entries.append( entry ); + } for( QStringList::const_iterator it = entries.begin(), last = entries.end(); it!=last; it++ ) { diff --git a/src/LightApp/LightApp_ShowHideOp.h b/src/LightApp/LightApp_ShowHideOp.h index cac7b918d..687c16dd2 100644 --- a/src/LightApp/LightApp_ShowHideOp.h +++ b/src/LightApp/LightApp_ShowHideOp.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_SHOW_HIDE_OPERATION_HEADER @@ -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 a2e5e4ba9..a37df3ba7 100644 --- a/src/LightApp/LightApp_Study.cxx +++ b/src/LightApp/LightApp_Study.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_Study.h" @@ -23,8 +23,7 @@ #include "LightApp_DataModel.h" #include "LightApp_DataObject.h" #include "LightApp_RootObject.h" -// HDF persistence not yet completed -//#include "LightApp_HDFDriver.h" +#include "LightApp_HDFDriver.h" #include "SUIT_ResourceMgr.h" #include "SUIT_DataObjectIterator.h" @@ -51,11 +50,11 @@ LightApp_Study::LightApp_Study( SUIT_Application* app ) : CAM_Study( app ) { - // HDF persistence not yet completed - //myDriver = new LightApp_HDFDriver(); - myDriver = new LightApp_Driver(); + // HDF persistence + myDriver = new LightApp_HDFDriver(); + //myDriver = new LightApp_Driver(); } - + /*! Destructor. */ @@ -68,6 +67,8 @@ LightApp_Study::~LightApp_Study() */ void LightApp_Study::createDocument() { + setStudyName( QString( "Study%1" ).arg( LightApp_Application::studyId() ) ); + // create myRoot setRoot( new LightApp_RootObject( this ) ); @@ -76,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(); @@ -105,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(); @@ -137,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(); @@ -200,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 ); @@ -226,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, @@ -242,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() ) @@ -280,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; @@ -296,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(); @@ -314,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(); @@ -352,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); @@ -369,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 ); @@ -385,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(); @@ -400,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) @@ -421,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; @@ -442,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) @@ -463,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 3714f2828..b9de680b8 100644 --- a/src/LightApp/LightApp_Study.h +++ b/src/LightApp/LightApp_Study.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_STUDY_H #define 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 @@ -86,6 +91,8 @@ signals: private: LightApp_Driver* myDriver; + + friend class LightApp_Application; }; #endif diff --git a/src/LightApp/LightApp_SwitchOp.cxx b/src/LightApp/LightApp_SwitchOp.cxx index 14feeaa6d..67283f365 100755 --- a/src/LightApp/LightApp_SwitchOp.cxx +++ b/src/LightApp/LightApp_SwitchOp.cxx @@ -14,19 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/** -* 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..a85d2e3da 100755 --- a/src/LightApp/LightApp_SwitchOp.h +++ b/src/LightApp/LightApp_SwitchOp.h @@ -14,21 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/** -* 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..b11103f76 100755 --- a/src/LightApp/LightApp_UpdateFlags.h +++ b/src/LightApp/LightApp_UpdateFlags.h @@ -1,8 +1,20 @@ -// LIGHT LightApp -// -// Copyright (C) 2005 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LightApp_UpdateFlags.h // Author : Sergey LITONIN @@ -12,11 +24,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 b393b3043..d28da9fae 100644 --- a/src/LightApp/LightApp_VTKSelector.cxx +++ b/src/LightApp/LightApp_VTKSelector.cxx @@ -14,37 +14,40 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_VTKSelector.h" #include "LightApp_DataOwner.h" -#include "SVTK_ViewModelBase.h" -#include "SVTK_Selector.h" -#include "SVTK_ViewWindow.h" -#include "SVTK_Functor.h" +#ifndef DISABLE_VTKVIEWER + #include "SVTK_ViewModelBase.h" + #include "SVTK_ViewManager.h" + #include "SVTK_Selector.h" + #include "SVTK_ViewWindow.h" + #include "SVTK_Functor.h" + #include "VTKViewer_Algorithm.h" + #include +#endif -#include "SALOME_Actor.h" -#include "SALOME_ListIteratorOfListIO.hxx" +#ifndef DISABLE_SALOMEOBJECT + #include "SALOME_Actor.h" + #include "SALOME_ListIteratorOfListIO.hxx" +#endif -#include "VTKViewer_Algorithm.h" -#include +#ifndef DISABLE_VTKVIEWER +#ifndef DISABLE_SALOMEOBJECT /*! Constructor. */ 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 /*! Destuctor. @@ -54,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. */ @@ -61,9 +109,18 @@ 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 + + +#ifndef DISABLE_VTKVIEWER /*! Constructor. */ @@ -105,6 +162,7 @@ LightApp_VTKSelector return myViewer->getType(); } +#endif /*! On selection changed. */ @@ -115,6 +173,8 @@ LightApp_VTKSelector selectionChanged(); } +#ifndef DISABLE_VTKVIEWER + /*! Gets list of selected data owners.(output \a aList). */ @@ -123,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())); } } } @@ -168,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); @@ -204,3 +254,5 @@ LightApp_VTKSelector } } } + +#endif diff --git a/src/LightApp/LightApp_VTKSelector.h b/src/LightApp/LightApp_VTKSelector.h index 14c6523ce..aebf5f54a 100644 --- a/src/LightApp/LightApp_VTKSelector.h +++ b/src/LightApp/LightApp_VTKSelector.h @@ -14,25 +14,28 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_VTKSELECTOR_H #define LIGHTAPP_VTKSELECTOR_H -#include - -#include - #include "SUIT_Selector.h" - #include "LightApp.h" #include "LightApp_DataOwner.h" -#include "SVTK_Selection.h" -#include "SALOME_InteractiveObject.hxx" +class SUIT_Desktop; -class SALOME_Actor; -class SVTK_ViewModelBase; +#ifndef DISABLE_VTKVIEWER + #include + #include + #include "SVTK_Selection.h" +#ifndef DISABLE_SALOMEOBJECT + #include "SALOME_InteractiveObject.hxx" +#endif + class SALOME_Actor; + class SVTK_ViewWindow; + class SVTK_ViewModelBase; +#endif /*! Provide salome vtk data owner list. @@ -40,57 +43,66 @@ class SVTK_ViewModelBase; class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner { public: +#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 }; /*! - 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 { Q_OBJECT; public: +#ifndef DISABLE_VTKVIEWER LightApp_VTKSelector( SVTK_ViewModelBase*, SUIT_SelectionMgr* ); virtual ~LightApp_VTKSelector(); SVTK_ViewModelBase* viewer() const; virtual QString type() const; +#else + LightApp_VTKSelector( SUIT_SelectionMgr* ); +#endif private slots: void onSelectionChanged(); +#ifndef DISABLE_VTKVIEWER protected: virtual void getSelection( SUIT_DataOwnerPtrList& ) const; virtual void setSelection( const SUIT_DataOwnerPtrList& ); private: SVTK_ViewModelBase* myViewer; + +#endif }; #endif diff --git a/src/LightApp/LightApp_WidgetContainer.cxx b/src/LightApp/LightApp_WidgetContainer.cxx index df92c5313..aa6f831d2 100644 --- a/src/LightApp/LightApp_WidgetContainer.cxx +++ b/src/LightApp/LightApp_WidgetContainer.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_WidgetContainer.h" diff --git a/src/LightApp/LightApp_WidgetContainer.h b/src/LightApp/LightApp_WidgetContainer.h index df6dbc84d..1679ec0c7 100644 --- a/src/LightApp/LightApp_WidgetContainer.h +++ b/src/LightApp/LightApp_WidgetContainer.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef LIGHTAPP_WIDGETCONTAINER_H #define LIGHTAPP_WIDGETCONTAINER_H diff --git a/src/LightApp/Makefile.in b/src/LightApp/Makefile.in index 3ffef0449..2fd596ee3 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : OCC team (OCN) # Module : LightApp @@ -22,13 +40,12 @@ EXPORT_HEADERS= LightApp.h \ LightApp_Dialog.h \ LightApp_Displayer.h \ LightApp_Driver.h \ - LightApp_GLSelector.h \ + LightApp_HDFDriver.h \ LightApp_Module.h \ LightApp_ModuleDlg.h \ LightApp_NameDlg.h \ LightApp_OBFilter.h \ LightApp_OBSelector.h \ - LightApp_OCCSelector.h \ LightApp_Operation.h \ LightApp_Selection.h \ LightApp_SelectionMgr.h \ @@ -39,9 +56,19 @@ EXPORT_HEADERS= LightApp.h \ LightApp_PreferencesDlg.h \ LightApp_RootObject.h \ LightApp_UpdateFlags.h \ - LightApp_VTKSelector.h \ LightApp_WidgetContainer.h -# LightApp_HDFDriver.h \ + +ifneq ($(DISABLE_VTKVIEWER),yes) +ifneq ($(DISABLE_SALOMEOBJECT),yes) + EXPORT_HEADERS+= LightApp_VTKSelector.h +endif +endif +ifneq ($(DISABLE_OCCVIEWER),yes) + EXPORT_HEADERS+= LightApp_OCCSelector.h +endif +ifneq ($(DISABLE_GLVIEWER),yes) + EXPORT_HEADERS+= LightApp_GLSelector.h +endif # .po files to transform in .qm PO_FILES = LightApp_images.po \ @@ -59,13 +86,12 @@ LIB_SRC= LightApp_AboutDlg.cxx \ LightApp_Dialog.cxx \ LightApp_Displayer.cxx \ LightApp_Driver.cxx \ - LightApp_GLSelector.cxx \ + LightApp_HDFDriver.cxx \ LightApp_Module.cxx \ LightApp_ModuleDlg.cxx \ LightApp_NameDlg.cxx \ LightApp_OBFilter.cxx \ LightApp_OBSelector.cxx \ - LightApp_OCCSelector.cxx \ LightApp_Operation.cxx \ LightApp_Selection.cxx \ LightApp_SelectionMgr.cxx \ @@ -74,17 +100,25 @@ LIB_SRC= LightApp_AboutDlg.cxx \ LightApp_SwitchOp.cxx \ LightApp_Preferences.cxx \ LightApp_PreferencesDlg.cxx \ - LightApp_VTKSelector.cxx \ LightApp_WidgetContainer.cxx -# LightApp_HDFDriver.cxx \ + +ifneq ($(DISABLE_VTKVIEWER),yes) +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIB_SRC+= LightApp_VTKSelector.cxx +endif +endif +ifneq ($(DISABLE_OCCVIEWER),yes) + LIB_SRC+= LightApp_OCCSelector.cxx +endif +ifneq ($(DISABLE_GLVIEWER),yes) + LIB_SRC+= LightApp_GLSelector.cxx +endif LIB_MOC = LightApp_AboutDlg.h \ LightApp_Application.h \ LightApp_DataModel.h \ LightApp_Dialog.h \ - LightApp_GLSelector.h \ LightApp_OBSelector.h \ - LightApp_OCCSelector.h \ LightApp_Operation.h \ LightApp_Module.h \ LightApp_ModuleDlg.h \ @@ -95,9 +129,20 @@ LIB_MOC = LightApp_AboutDlg.h \ LightApp_SwitchOp.h \ LightApp_Preferences.h \ LightApp_PreferencesDlg.h \ - LightApp_VTKSelector.h \ LightApp_WidgetContainer.h +ifneq ($(DISABLE_VTKVIEWER),yes) +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIB_MOC+= LightApp_VTKSelector.h +endif +endif +ifneq ($(DISABLE_OCCVIEWER),yes) + LIB_MOC+= LightApp_OCCSelector.h +endif +ifneq ($(DISABLE_GLVIEWER),yes) + LIB_MOC+= LightApp_GLSelector.h +endif + RESOURCES_FILES = icon_about.png \ icon_applogo.png \ icon_default.png \ @@ -107,11 +152,74 @@ RESOURCES_FILES = icon_about.png \ LightApp.ini \ LightApp.xml -CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) - #$(HDF5_INCLUDES) +CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(OCC_INCLUDES) \ + $(HDF5_INCLUDES) $(KERNEL_CXXFLAGS) + +ifneq ($(DISABLE_VTKVIEWER),yes) + CPPFLAGS+= $(VTK_INCLUDES) +else + CPPFLAGS+= -DDISABLE_VTKVIEWER +endif +ifneq ($(DISABLE_PLOT2DVIEWER),yes) + CPPFLAGS+= $(QWT_INCLUDES) +else + CPPFLAGS+= -DDISABLE_PLOT2DVIEWER +endif +ifeq ($(DISABLE_OCCVIEWER),yes) + CPPFLAGS+= -DDISABLE_OCCVIEWER +endif +ifneq ($(DISABLE_PYCONSOLE),yes) + CPPFLAGS+= $(PYTHON_INCLUDES) +else + CPPFLAGS+= -DDISABLE_PYCONSOLE +endif +ifeq ($(DISABLE_GLVIEWER),yes) + CPPFLAGS+= -DDISABLE_GLVIEWER +endif +ifeq ($(DISABLE_SUPERVGRAPHVIEWER),yes) + CPPFLAGS+= -DDISABLE_SUPERVGRAPHVIEWER +endif +ifeq ($(DISABLE_SALOMEOBJECT),yes) + CPPFLAGS+= -DDISABLE_SALOMEOBJECT +endif + +LDFLAGS+=$(QT_MT_LIBS) +ifneq ($(DISABLE_PYCONSOLE),yes) + LDFLAGS+= $(PYTHON_LIBS) +endif + +LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lSalomePrs \ + $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist -LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS) -LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSOCC -lSVTK -lSPlot2d -lSUPERVGraph -lPyInterp -lPythonConsole - #$(HDF5_LIBS) -lSalomeHDFPersistCopy +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIBS+= -lSalomeObject +endif +ifneq ($(DISABLE_VTKVIEWER),yes) + LIBS+= -lVTKViewer +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIBS+= -lSVTK +endif +endif +ifneq ($(DISABLE_OCCVIEWER),yes) + LIBS+= -lOCCViewer +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIBS+= -lSOCC +endif +endif +ifneq ($(DISABLE_GLVIEWER),yes) + LIBS+= -lGLViewer +endif +ifneq ($(DISABLE_PLOT2DVIEWER),yes) + LIBS+= -lPlot2d +ifneq ($(DISABLE_SALOMEOBJECT),yes) + LIBS+= -lSPlot2d +endif +endif +ifneq ($(DISABLE_PYCONSOLE),yes) + LIBS+= -lPyInterp -lPythonConsole +endif +ifneq ($(DISABLE_SUPERVGRAPHVIEWER),yes) + LIBS+= -lSUPERVGraph +endif @CONCLUDE@ diff --git a/src/LightApp/resources/LightApp.xml b/src/LightApp/resources/LightApp.xml index 2a4932e04..7cb56db7b 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_images.po b/src/LightApp/resources/LightApp_images.po index c1ee44b39..9149d196d 100644 --- a/src/LightApp/resources/LightApp_images.po +++ b/src/LightApp/resources/LightApp_images.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: LightApp_images.po // Created: May, 2005 // Author: OCC team diff --git a/src/LightApp/resources/LightApp_msg_en.po b/src/LightApp/resources/LightApp_msg_en.po index c5b364d56..f06c47efc 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". @@ -22,7 +40,7 @@ msgid "ABOUT_VERSION" msgstr "Version %1" msgid "ABOUT_COPYRIGHT" -msgstr "Copyright (C) 2003-2005 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS" +msgstr "Copyright (C) 2003-2006 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS" msgid "ABOUT_LICENSE" msgstr "GNU LGPL" @@ -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" //======================================================================================= @@ -322,3 +343,10 @@ msgstr "&Cancel" msgid "LightApp_ModuleDlg::ActivateComponent_DESCRIPTION" msgstr "Create, open or load study." + +msgid "LightApp_NameDlg::TLT_RENAME" +msgstr "Rename" + +msgid "LightApp_NameDlg::NAME_LBL" +msgstr "Name: " + diff --git a/src/LightApp/resources/icon_about.png b/src/LightApp/resources/icon_about.png index 287b4f766..6817eb407 100755 Binary files a/src/LightApp/resources/icon_about.png and b/src/LightApp/resources/icon_about.png differ diff --git a/src/LogWindow/LogWindow.cxx b/src/LogWindow/LogWindow.cxx index 0b846b720..161011c45 100755 --- a/src/LogWindow/LogWindow.cxx +++ b/src/LogWindow/LogWindow.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com #include "LogWindow.h" @@ -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..0b8b39e98 100755 --- a/src/LogWindow/LogWindow.h +++ b/src/LogWindow/LogWindow.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : LogWindow.h // Author : @@ -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..d868371af 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : LogWindow diff --git a/src/Makefile.in b/src/Makefile.in index 332907b5c..0bd6d185f 100755 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -32,9 +32,52 @@ VPATH=.:@srcdir@ @COMMENCE@ -SUBDIRS = Qtx DDS QDS SUIT STD CAF CAM SUITApp VTKViewer OCCViewer GLViewer \ - LogWindow Event OBJECT Prs PyInterp PythonConsole ObjBrowser \ - RegistryDisplay Plot2d TOOLSGUI SOCC SVTK SPlot2d SUPERVGraph \ - LightApp Session SalomeApp SALOME_SWIG SALOME_PY SALOME_PYQT Style ResExporter +SUBDIRS = Qtx DDS QDS SUIT STD CAF CAM SUITApp LogWindow ObjBrowser Prs + +ifneq ($(DISABLE_SALOMEOBJECT),yes) + SUBDIRS += OBJECT +endif + +ifneq ($(DISABLE_GLVIEWER),yes) + SUBDIRS += GLViewer +endif + +ifneq ($(DISABLE_VTKVIEWER),yes) + SUBDIRS += VTKViewer +ifneq ($(DISABLE_SALOMEOBJECT),yes) + SUBDIRS += SVTK +endif +endif +ifneq ($(DISABLE_OCCVIEWER),yes) + SUBDIRS += OCCViewer +ifneq ($(DISABLE_SALOMEOBJECT),yes) + SUBDIRS += SOCC +endif +endif +ifneq ($(DISABLE_PYCONSOLE),yes) + SUBDIRS += PyInterp PythonConsole +endif +ifneq ($(DISABLE_PLOT2DVIEWER),yes) + SUBDIRS += Plot2d +ifneq ($(DISABLE_SALOMEOBJECT),yes) + SUBDIRS += SPlot2d +endif +endif +ifneq ($(DISABLE_SUPERVGRAPHVIEWER),yes) + SUBDIRS += SUPERVGraph +endif +SUBDIRS += LightApp Style ResExporter + +ifneq ($(GUI_DISABLE_CORBA),yes) + SUBDIRS += RegistryDisplay TOOLSGUI \ + Event Session SalomeApp SALOME_SWIG SALOME_PY SALOME_PYQT +endif + +ifeq (@cppunit_ok@,yes) +ifneq ($(GUI_DISABLE_CORBA),yes) + SUBDIRS+= \ + SalomeApp/Test +endif +endif @MODULE@ diff --git a/src/OBJECT/Handle_SALOME_AISObject.hxx b/src/OBJECT/Handle_SALOME_AISObject.hxx index 98dede911..342cf6221 100755 --- a/src/OBJECT/Handle_SALOME_AISObject.hxx +++ b/src/OBJECT/Handle_SALOME_AISObject.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..b987b929a 100755 --- a/src/OBJECT/Handle_SALOME_AISShape.hxx +++ b/src/OBJECT/Handle_SALOME_AISShape.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_DataMapNodeOfDataMapOfIOMapOfInteger.hxx b/src/OBJECT/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx index 4caa5b2d5..b94e60d00 100644 --- a/src/OBJECT/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx +++ b/src/OBJECT/Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/Handle_SALOME_Filter.hxx b/src/OBJECT/Handle_SALOME_Filter.hxx index 49eb7b877..8c2294006 100644 --- a/src/OBJECT/Handle_SALOME_Filter.hxx +++ b/src/OBJECT/Handle_SALOME_Filter.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..9bc3776c9 100755 --- a/src/OBJECT/Handle_SALOME_InteractiveObject.hxx +++ b/src/OBJECT/Handle_SALOME_InteractiveObject.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..e78995482 100644 --- a/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/Handle_SALOME_ListNodeOfListIO.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..4ca800e04 100644 --- a/src/OBJECT/Handle_SALOME_TypeFilter.hxx +++ b/src/OBJECT/Handle_SALOME_TypeFilter.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 0fb5e50a7..ad9e94ccc 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/ or email : webmaster.salome@opencascade.com +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -9,7 +27,6 @@ VPATH=.:@srcdir@:@top_srcdir@/idl EXPORT_HEADERS = SALOME_InteractiveObject.hxx \ Handle_SALOME_InteractiveObject.hxx \ - SALOME_GLOwner.h \ SALOME_AISShape.hxx \ Handle_SALOME_AISShape.hxx \ SALOME_AISObject.hxx \ @@ -32,7 +49,6 @@ EXPORT_HEADERS = SALOME_InteractiveObject.hxx \ LIB = libSalomeObject.la LIB_SRC = SALOME_InteractiveObject.cxx \ - SALOME_GLOwner.cxx \ SALOME_AISShape.cxx\ SALOME_AISObject.cxx\ SALOME_ListIO_0.cxx \ @@ -50,8 +66,8 @@ LIB_CLIENT_IDL = BIN = BIN_SRC = -CPPFLAGS+=$(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(QT_INCLUDES) $(OGL_INCLUDES) -LDFLAGS+= $(PYTHON_LIBS) $(VTK_LIBS) $(QT_LIBS) $(OGL_LIBS) $(CAS_LDPATH) -lTKV3d -lVTKViewer -lsuit +CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) +LDFLAGS+= $(QT_LIBS) $(CAS_LDPATH) -lTKV3d @CONCLUDE@ diff --git a/src/OBJECT/SALOME_AISObject.cxx b/src/OBJECT/SALOME_AISObject.cxx index 76559b44a..c50184989 100755 --- a/src/OBJECT/SALOME_AISObject.cxx +++ b/src/OBJECT/SALOME_AISObject.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISObject.hxx b/src/OBJECT/SALOME_AISObject.hxx index 148e1574b..b89716f4c 100755 --- a/src/OBJECT/SALOME_AISObject.hxx +++ b/src/OBJECT/SALOME_AISObject.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISObject.ixx b/src/OBJECT/SALOME_AISObject.ixx index e1fef4c88..11980b967 100755 --- a/src/OBJECT/SALOME_AISObject.ixx +++ b/src/OBJECT/SALOME_AISObject.ixx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISObject.jxx b/src/OBJECT/SALOME_AISObject.jxx index 7fd42edaf..95635ee72 100755 --- a/src/OBJECT/SALOME_AISObject.jxx +++ b/src/OBJECT/SALOME_AISObject.jxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISShape.cxx b/src/OBJECT/SALOME_AISShape.cxx index dcd76be06..52afc406d 100755 --- a/src/OBJECT/SALOME_AISShape.cxx +++ b/src/OBJECT/SALOME_AISShape.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_AISShape.hxx b/src/OBJECT/SALOME_AISShape.hxx index f12700b01..4a8b87d98 100755 --- a/src/OBJECT/SALOME_AISShape.hxx +++ b/src/OBJECT/SALOME_AISShape.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISShape.ixx b/src/OBJECT/SALOME_AISShape.ixx index 37012c36e..11909336e 100755 --- a/src/OBJECT/SALOME_AISShape.ixx +++ b/src/OBJECT/SALOME_AISShape.ixx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_AISShape.jxx b/src/OBJECT/SALOME_AISShape.jxx index 6ac28f17b..cae6c5f54 100755 --- a/src/OBJECT/SALOME_AISShape.jxx +++ b/src/OBJECT/SALOME_AISShape.jxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx b/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx index 760c94eb3..34ebe62d6 100644 --- a/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx +++ b/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx b/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx index 8d0897844..f24caa367 100644 --- a/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx +++ b/src/OBJECT/SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx index cbfa39192..3c100b02e 100644 --- a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx +++ b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx index 4cab4c88e..b1a4c95fa 100644 --- a/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx +++ b/src/OBJECT/SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_DataMapOfIOMapOfInteger.hxx b/src/OBJECT/SALOME_DataMapOfIOMapOfInteger.hxx index 0478b82a1..f3aa034f7 100644 --- a/src/OBJECT/SALOME_DataMapOfIOMapOfInteger.hxx +++ b/src/OBJECT/SALOME_DataMapOfIOMapOfInteger.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_DataMapOfIOMapOfInteger_0.cxx b/src/OBJECT/SALOME_DataMapOfIOMapOfInteger_0.cxx index 7ce912510..bf8f76794 100644 --- a/src/OBJECT/SALOME_DataMapOfIOMapOfInteger_0.cxx +++ b/src/OBJECT/SALOME_DataMapOfIOMapOfInteger_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_Filter.cxx b/src/OBJECT/SALOME_Filter.cxx index a6ca25e67..79ba21691 100644 --- a/src/OBJECT/SALOME_Filter.cxx +++ b/src/OBJECT/SALOME_Filter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_Filter.hxx b/src/OBJECT/SALOME_Filter.hxx index 9c7ed2c6d..4386503a5 100644 --- a/src/OBJECT/SALOME_Filter.hxx +++ b/src/OBJECT/SALOME_Filter.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_Filter.ixx b/src/OBJECT/SALOME_Filter.ixx index 850317496..c872cef3f 100644 --- a/src/OBJECT/SALOME_Filter.ixx +++ b/src/OBJECT/SALOME_Filter.ixx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_Filter.jxx b/src/OBJECT/SALOME_Filter.jxx index 1928c441f..db8562e5a 100644 --- a/src/OBJECT/SALOME_Filter.jxx +++ b/src/OBJECT/SALOME_Filter.jxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_GLOwner.cxx b/src/OBJECT/SALOME_GLOwner.cxx deleted file mode 100644 index ed88afb38..000000000 --- a/src/OBJECT/SALOME_GLOwner.cxx +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// - -#include - -SALOME_GLOwner::SALOME_GLOwner( const char* entry ) -: GLViewer_Owner() -{ - setEntry( entry ); -} - -SALOME_GLOwner::~SALOME_GLOwner() -{ -} - -const char* SALOME_GLOwner::entry() const -{ - return myEntry.c_str(); -} - -void SALOME_GLOwner::setEntry( const char* entry ) -{ - myEntry = entry; -} diff --git a/src/OBJECT/SALOME_GLOwner.h b/src/OBJECT/SALOME_GLOwner.h deleted file mode 100644 index 770911392..000000000 --- a/src/OBJECT/SALOME_GLOwner.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// -#ifndef SALOME_GLOWNER_H -#define SALOME_GLOWNER_H - -#include -//#include -#include - -#ifdef WNT -#define SALOME_OBJECT_EXPORT __declspec (dllexport) -#else -#define SALOME_OBJECT_EXPORT -#endif - -class SALOME_OBJECT_EXPORT SALOME_GLOwner : public GLViewer_Owner -{ -public: - SALOME_GLOwner( const char* ); - ~SALOME_GLOwner(); - - const char* entry() const; - void setEntry( const char* ); - -private: - std::string myEntry; -}; - -#endif diff --git a/src/OBJECT/SALOME_InteractiveObject.cxx b/src/OBJECT/SALOME_InteractiveObject.cxx index 7d60d59e6..53d93c062 100755 --- a/src/OBJECT/SALOME_InteractiveObject.cxx +++ b/src/OBJECT/SALOME_InteractiveObject.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_InteractiveObject.hxx b/src/OBJECT/SALOME_InteractiveObject.hxx index 91d1e5af2..712d96d3b 100755 --- a/src/OBJECT/SALOME_InteractiveObject.hxx +++ b/src/OBJECT/SALOME_InteractiveObject.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_InteractiveObject.ixx b/src/OBJECT/SALOME_InteractiveObject.ixx index 39be2411a..ef92c07c6 100755 --- a/src/OBJECT/SALOME_InteractiveObject.ixx +++ b/src/OBJECT/SALOME_InteractiveObject.ixx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_InteractiveObject.jxx b/src/OBJECT/SALOME_InteractiveObject.jxx index 19aba4c63..0c3fc7db5 100755 --- a/src/OBJECT/SALOME_InteractiveObject.jxx +++ b/src/OBJECT/SALOME_InteractiveObject.jxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_ListIO.hxx b/src/OBJECT/SALOME_ListIO.hxx index e028e243f..7f52828d4 100644 --- a/src/OBJECT/SALOME_ListIO.hxx +++ b/src/OBJECT/SALOME_ListIO.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_ListIO_0.cxx b/src/OBJECT/SALOME_ListIO_0.cxx index 14be3eee6..7538c4744 100644 --- a/src/OBJECT/SALOME_ListIO_0.cxx +++ b/src/OBJECT/SALOME_ListIO_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_ListIteratorOfListIO.hxx b/src/OBJECT/SALOME_ListIteratorOfListIO.hxx index c479e6ca8..e69f42d5c 100644 --- a/src/OBJECT/SALOME_ListIteratorOfListIO.hxx +++ b/src/OBJECT/SALOME_ListIteratorOfListIO.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_ListIteratorOfListIO_0.cxx b/src/OBJECT/SALOME_ListIteratorOfListIO_0.cxx index adb55ab72..6f5fb7f85 100644 --- a/src/OBJECT/SALOME_ListIteratorOfListIO_0.cxx +++ b/src/OBJECT/SALOME_ListIteratorOfListIO_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_ListNodeOfListIO.hxx b/src/OBJECT/SALOME_ListNodeOfListIO.hxx index 9aed956f8..6d288bcab 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO.hxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..63fda117c 100644 --- a/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx +++ b/src/OBJECT/SALOME_ListNodeOfListIO_0.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_Selection.h b/src/OBJECT/SALOME_Selection.h index d9f5be3d6..696f68f55 100644 --- a/src/OBJECT/SALOME_Selection.h +++ b/src/OBJECT/SALOME_Selection.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_TypeFilter.cxx b/src/OBJECT/SALOME_TypeFilter.cxx index 83f1d71ec..57d6390a2 100644 --- a/src/OBJECT/SALOME_TypeFilter.cxx +++ b/src/OBJECT/SALOME_TypeFilter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/OBJECT/SALOME_TypeFilter.hxx b/src/OBJECT/SALOME_TypeFilter.hxx index 3e0ea4bce..5a32301fe 100644 --- a/src/OBJECT/SALOME_TypeFilter.hxx +++ b/src/OBJECT/SALOME_TypeFilter.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_TypeFilter.ixx b/src/OBJECT/SALOME_TypeFilter.ixx index d9e4152bf..13e1a3ec1 100644 --- a/src/OBJECT/SALOME_TypeFilter.ixx +++ b/src/OBJECT/SALOME_TypeFilter.ixx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OBJECT/SALOME_TypeFilter.jxx b/src/OBJECT/SALOME_TypeFilter.jxx index 8dcc1216b..d519586d7 100644 --- a/src/OBJECT/SALOME_TypeFilter.jxx +++ b/src/OBJECT/SALOME_TypeFilter.jxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/OCCViewer/Makefile.in b/src/OCCViewer/Makefile.in index 6eb3077b8..842759ae3 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : OCCViewer diff --git a/src/OCCViewer/OCCViewer.h b/src/OCCViewer/OCCViewer.h index ef0e91714..724486cb9 100755 --- a/src/OCCViewer/OCCViewer.h +++ b/src/OCCViewer/OCCViewer.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifdef WNT #ifdef OCCVIEWER_EXPORTS diff --git a/src/OCCViewer/OCCViewer_AISSelector.cxx b/src/OCCViewer/OCCViewer_AISSelector.cxx index 74cbca1bb..43dca4567 100755 --- a/src/OCCViewer/OCCViewer_AISSelector.cxx +++ b/src/OCCViewer/OCCViewer_AISSelector.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OCCViewer_AISSelector.h" diff --git a/src/OCCViewer/OCCViewer_AISSelector.h b/src/OCCViewer/OCCViewer_AISSelector.h index 526ab824a..740c8f013 100755 --- a/src/OCCViewer/OCCViewer_AISSelector.h +++ b/src/OCCViewer/OCCViewer_AISSelector.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined( OCCVIEWER_AISSELECTOR_H ) #define OCCVIEWER_AISSELECTOR_H diff --git a/src/OCCViewer/OCCViewer_ClippingDlg.cxx b/src/OCCViewer/OCCViewer_ClippingDlg.cxx index c17bfd33d..177737599 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/ or email : webmaster.salome@opencascade.com +// #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..27efa2e90 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/ or email : webmaster.salome@opencascade.com +// #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 0f6fb703c..e97cde8b9 100755 --- a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx +++ b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OCCViewer_CreateRestoreViewDlg.h" #include "OCCViewer_ViewModel.h" @@ -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_CreateRestoreViewDlg.h b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.h index dc6dad1f7..fc1579ae6 100755 --- a/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.h +++ b/src/OCCViewer/OCCViewer_CreateRestoreViewDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_CREATERESTOREVIEWDLG_H #define OCCVIEWER_CREATERESTOREVIEWDLG_H diff --git a/src/OCCViewer/OCCViewer_VService.cxx b/src/OCCViewer/OCCViewer_VService.cxx index 662356c70..77ef0aced 100755 --- a/src/OCCViewer/OCCViewer_VService.cxx +++ b/src/OCCViewer/OCCViewer_VService.cxx @@ -14,30 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/*********************************************************************** - - 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 @@ -58,7 +36,7 @@ #include #include #include -#include +//#include #include #endif @@ -280,6 +258,7 @@ Handle(Aspect_WindowDriver) OCCViewer_VService::WindowDriver( const Standard_CSt Creates Xdps window driver [ static ] On Win32 the same as OCCViewer_VService::WindowDriver() */ +/* Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CString aDisplay, const Standard_Integer ahiwin, const Standard_Integer alowin, @@ -298,7 +277,7 @@ Handle(Aspect_WindowDriver) OCCViewer_VService::XdpsDriver( const Standard_CStri return new Xdps_Driver( W ); #endif } - +*/ /*! Creates Xw window driver [ static ] On Win32 the same as OCCViewer_VService::WindowDriver() diff --git a/src/OCCViewer/OCCViewer_VService.h b/src/OCCViewer/OCCViewer_VService.h index 5de36371d..b15ab5564 100755 --- a/src/OCCViewer/OCCViewer_VService.h +++ b/src/OCCViewer/OCCViewer_VService.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VSERVICE_H #define OCCVIEWER_VSERVICE_H @@ -115,11 +115,12 @@ public: const Standard_Integer hiwin, const Standard_Integer lowin, const Quantity_NameOfColor color = Quantity_NOC_GRAY69 ); - static Handle_Aspect_WindowDriver + /*static Handle_Aspect_WindowDriver XdpsDriver( const Standard_CString display, const Standard_Integer hiwin, const Standard_Integer lowin, const Quantity_NameOfColor color = Quantity_NOC_GRAY69 ); + */ static Handle_Aspect_WindowDriver ImageDriver( const Standard_CString display, const Standard_Integer hiwin, diff --git a/src/OCCViewer/OCCViewer_ViewManager.cxx b/src/OCCViewer/OCCViewer_ViewManager.cxx index dedfc4a0d..6436c81de 100755 --- a/src/OCCViewer/OCCViewer_ViewManager.cxx +++ b/src/OCCViewer/OCCViewer_ViewManager.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OCCViewer_ViewManager.h" #include "OCCViewer_ViewWindow.h" @@ -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_ViewManager.h b/src/OCCViewer/OCCViewer_ViewManager.h index 71e9bf2db..352e873c5 100755 --- a/src/OCCViewer/OCCViewer_ViewManager.h +++ b/src/OCCViewer/OCCViewer_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VIEWMANAGER_H #define OCCVIEWER_VIEWMANAGER_H diff --git a/src/OCCViewer/OCCViewer_ViewModel.cxx b/src/OCCViewer/OCCViewer_ViewModel.cxx index 6b74a7fc5..b3e3a91f2 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.cxx +++ b/src/OCCViewer/OCCViewer_ViewModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OCCViewer_ViewModel.h" @@ -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_ViewModel.h b/src/OCCViewer/OCCViewer_ViewModel.h index 0779d3aef..ebdc47049 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.h +++ b/src/OCCViewer/OCCViewer_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VIEWMODEL_H #define OCCVIEWER_VIEWMODEL_H diff --git a/src/OCCViewer/OCCViewer_ViewPort.cxx b/src/OCCViewer/OCCViewer_ViewPort.cxx index 72f2fc5f3..bd5ace4c6 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort.cxx @@ -14,14 +14,9 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/*************************************************************************** -** 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..357dd8d0c 100755 --- a/src/OCCViewer/OCCViewer_ViewPort.h +++ b/src/OCCViewer/OCCViewer_ViewPort.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VIEWPORT_H #define 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..50930efbc 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort3d.cxx @@ -14,14 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/*************************************************************************** -** 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_ViewPort3d.h b/src/OCCViewer/OCCViewer_ViewPort3d.h index a16a609a9..204b8eb99 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.h +++ b/src/OCCViewer/OCCViewer_ViewPort3d.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VIEWPORT3D_H #define OCCVIEWER_VIEWPORT3D_H diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index 4900fd9de..cef3b10d8 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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,43 +894,17 @@ void OCCViewer_ViewWindow::onClipping( bool on ) } } -//**************************************************************** +/*! + Stores view parameters +*/ void OCCViewer_ViewWindow::onMemorizeView() { - double centerX, centerY, projX, projY, projZ, twist; - double atX, atY, atZ, eyeX, eyeY, eyeZ; - - Handle(V3d_View) aView3d = myViewPort->getView(); - - aView3d->Center( centerX, centerY ); - aView3d->Proj( projX, projY, projZ ); - aView3d->At( atX, atY, atZ ); - aView3d->Eye( eyeX, eyeY, eyeZ ); - twist = aView3d->Twist(); - - viewAspect params; - QString aName = QTime::currentTime().toString() + QString::fromLatin1( " h:m:s" ); - - params.scale = aView3d->Scale(); - params.centerX = centerX; - params.centerY = centerY; - params.projX = projX; - params.projY = projY; - params.projZ = projZ; - params.twist = twist; - params.atX = atX; - params.atY = atY; - params.atZ = atZ; - params.eyeX = eyeX; - params.eyeY = eyeY; - params.eyeZ = eyeZ; - params.name = aName; - - myModel->appendViewAspect( params ); - + myModel->appendViewAspect( getViewParams() ); } -//**************************************************************** +/*! + Restores view parameters +*/ void OCCViewer_ViewWindow::onRestoreView() { OCCViewer_CreateRestoreViewDlg* aDlg = new OCCViewer_CreateRestoreViewDlg( centralWidget(), myModel ); @@ -895,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(); @@ -904,39 +925,59 @@ void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem ) Standard_Boolean prev = aView3d->SetImmediateUpdate( Standard_False ); aView3d->SetScale( anItem.scale ); aView3d->SetCenter( anItem.centerX, anItem.centerY ); - aView3d->SetProj( anItem.projX, anItem.projY, anItem.projZ ); aView3d->SetTwist( anItem.twist ); aView3d->SetAt( anItem.atX, anItem.atY, anItem.atZ ); aView3d->SetImmediateUpdate( prev ); aView3d->SetEye( anItem.eyeX, anItem.eyeY, anItem.eyeZ ); + aView3d->SetProj( anItem.projX, anItem.projY, anItem.projZ ); 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; @@ -952,31 +993,98 @@ 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(); +/*! + \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 +*/ +viewAspect OCCViewer_ViewWindow::getViewParams() const +{ + double centerX, centerY, projX, projY, projZ, twist; + double atX, atY, atZ, eyeX, eyeY, eyeZ; + + Handle(V3d_View) aView3d = myViewPort->getView(); + + aView3d->Center( centerX, centerY ); + aView3d->Proj( projX, projY, projZ ); + aView3d->At( atX, atY, atZ ); + aView3d->Eye( eyeX, eyeY, eyeZ ); + twist = aView3d->Twist(); + + QString aName = QTime::currentTime().toString() + QString::fromLatin1( " h:m:s" ); + + viewAspect params; + params.scale = aView3d->Scale(); + params.centerX = centerX; + params.centerY = centerY; + params.projX = projX; + params.projY = projY; + params.projZ = projZ; + params.twist = twist; + params.atX = atX; + params.atY = atY; + params.atZ = atZ; + params.eyeX = eyeX; + params.eyeY = eyeY; + params.eyeZ = eyeZ; + params.name = aName; + + return params; +} + + +/*! + The method returns the visual parameters of this view as a formated string +*/ +QString OCCViewer_ViewWindow::getVisualParameters() +{ + viewAspect params = getViewParams(); + QString retStr; + retStr.sprintf( "%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e", params.scale, + params.centerX, params.centerY, params.projX, params.projY, params.projZ, params.twist, + params.atX, params.atY, params.atZ, params.eyeX, params.eyeY, params.eyeZ ); + return retStr; +} + +/*! + 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 ); + if ( paramsLst.size() == 13 ) { + viewAspect params; + params.scale = paramsLst[0].toDouble(); + params.centerX = paramsLst[1].toDouble(); + params.centerY = paramsLst[2].toDouble(); + params.projX = paramsLst[3].toDouble(); + params.projY = paramsLst[4].toDouble(); + params.projZ = paramsLst[5].toDouble(); + params.twist = paramsLst[6].toDouble(); + params.atX = paramsLst[7].toDouble(); + params.atY = paramsLst[8].toDouble(); + params.atZ = paramsLst[9].toDouble(); + params.eyeX = paramsLst[10].toDouble(); + params.eyeY = paramsLst[11].toDouble(); + params.eyeZ = paramsLst[12].toDouble(); + + performRestoring( params ); } - - Handle(V3d_View) v = myViewPort->getView(); - v->Update(); - v->Redraw(); } diff --git a/src/OCCViewer/OCCViewer_ViewWindow.h b/src/OCCViewer/OCCViewer_ViewWindow.h index b4f2bc8db..d9dafcffe 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.h +++ b/src/OCCViewer/OCCViewer_ViewWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OCCVIEWER_VIEWWINDOW_H #define OCCVIEWER_VIEWWINDOW_H @@ -62,6 +62,11 @@ 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 ); public slots: void onFrontView(); @@ -119,6 +124,8 @@ protected: virtual OperationType getButtonState(QMouseEvent* theEvent); + viewAspect getViewParams() const; + OperationType myOperation; OCCViewer_Viewer* myModel; OCCViewer_ViewPort3d* myViewPort; @@ -146,6 +153,7 @@ protected: private: OCCViewer_ClippingDlg* myClippingDlg; + QtxAction* myClippingAction; }; diff --git a/src/OCCViewer/resources/OCCViewer_images.po b/src/OCCViewer/resources/OCCViewer_images.po index 432135489..b75530310 100755 --- a/src/OCCViewer/resources/OCCViewer_images.po +++ b/src/OCCViewer/resources/OCCViewer_images.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/OCCViewer/resources/OCCViewer_msg_en.po b/src/OCCViewer/resources/OCCViewer_msg_en.po index ceab129bf..08af365ae 100755 --- a/src/OCCViewer/resources/OCCViewer_msg_en.po +++ b/src/OCCViewer/resources/OCCViewer_msg_en.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -123,7 +123,7 @@ msgid "MNU_DUMP_VIEW" msgstr "Dump view" msgid "DSC_CLIPPING" -msgstr "Define clipping plane" +msgstr "Set clipping plane" msgid "MNU_CLIPPING" msgstr "Clipping" @@ -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..71ff8fefd 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : ObjectBrowser diff --git a/src/ObjBrowser/OB.h b/src/ObjBrowser/OB.h index ed251feed..8b243affe 100755 --- a/src/ObjBrowser/OB.h +++ b/src/ObjBrowser/OB.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OB_H #define OB_H diff --git a/src/ObjBrowser/OB_Browser.cxx b/src/ObjBrowser/OB_Browser.cxx index 5b4bc28e3..c0343a2ca 100755 --- a/src/ObjBrowser/OB_Browser.cxx +++ b/src/ObjBrowser/OB_Browser.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OB_Browser.h" @@ -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,24 +167,40 @@ 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 asFirst ) const + const bool prepend ) const { - ItemPtr i = myBrowser ? dynamic_cast( myBrowser->createItem( src, parent, after, asFirst ) ) : 0; + ItemPtr i = myBrowser ? dynamic_cast( myBrowser->createItem( src, parent, after, prepend ) ) : 0; if( i ) i->setOpen( src->isOpen() ); 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,58 +960,32 @@ void OB_Browser::updateView( SUIT_DataObject* startObj ) if ( !startObj || startObj->root() != getRootObject() ) return; - if( startObj==myRoot ) - { - DataObjectList ch; - myRoot->children( ch ); + //qDebug( "updateView:" ); + //startObj->dump(); - 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 ) ); - - // QString srcName = ( local_root && !local_root->name().isNull() ) ? local_root->name() : ""; - // QString trgName = ( local_item && !local_item->text(0).isNull() ) ? local_item->text(0) : ""; - // printf( "--- OB_Browser::updateView() calls synchronize()_1: src = %s, trg = %s ---\n", srcName.latin1(), trgName.latin1() ); - - 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() ) - { - removeReferences( anIt.data() ); - OB_ListItem* item = dynamic_cast( anIt.data() ); - if( item && myItems.contains( item->dataObject() ) ) - delete anIt.data(); - } + if ( startObj == myRoot ) + { + OB_BrowserSync sync( this ); + synchronize( myRoot, 0, sync ); } else { OB_BrowserSync sync( this ); OB_ListItem* startItem = dynamic_cast( listViewItem( startObj ) ); - - // QString srcName = ( startObj && !startObj->name().isNull() ) ? startObj->name() : ""; - // QString trgName = ( startItem && !startItem->text(0).isNull() ) ? startItem->text(0) : ""; - // printf( "--- OB_Browser::updateView() calls synchronize()_2: src = %s, trg = %s ---\n", srcName.latin1(), trgName.latin1() ); - synchronize( startObj, startItem, sync ); } } +/*! + 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 asFirstChild ) + QListViewItem* after, const bool prepend ) { QListView* lv = listView(); @@ -803,34 +1009,57 @@ QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem* if ( parent ) { - if ( parent->childCount() && !after ) + if ( after ) { - after = parent->firstChild(); - while ( after->nextSibling() ) - after = after->nextSibling(); + if ( type == -1 ) + item = new OB_ListItem( obj, parent, after ); + else + item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type ); } - - if ( after && !asFirstChild ) + else if ( prepend ) { if ( type == -1 ) - item = new OB_ListItem( obj, parent, after ); + item = new OB_ListItem( obj, parent ); else - item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type ); + item = new OB_CheckListItem( obj, parent, (QCheckListItem::Type)type ); } - else + else // append { + after = parent->firstChild(); + while ( after && after->nextSibling() ) + after = after->nextSibling(); if ( type == -1 ) - item = new OB_ListItem( obj, parent ); + item = new OB_ListItem( obj, parent, after ); else - item = new OB_CheckListItem( obj, parent, (QCheckListItem::Type)type ); + item = new OB_CheckListItem( obj, parent, after, (QCheckListItem::Type)type ); } } - else // ROOT item + else { - if ( type == -1 ) - item = new OB_ListItem( obj, lv ); - else - item = new OB_CheckListItem( obj, lv, (QCheckListItem::Type)type ); + if ( after ) + { + if ( type == -1 ) + item = new OB_ListItem( obj, lv, after ); + else + item = new OB_CheckListItem( obj, lv, after, (QCheckListItem::Type)type ); + } + else if ( prepend ) + { + if ( type == -1 ) + item = new OB_ListItem( obj, lv ); + else + item = new OB_CheckListItem( obj, lv, (QCheckListItem::Type)type ); + } + else // append + { + after = lv->firstChild(); + while ( after && after->nextSibling() ) + after = after->nextSibling(); + if ( type == -1 ) + item = new OB_ListItem( obj, lv, after ); + else + item = new OB_CheckListItem( obj, lv, after, (QCheckListItem::Type)type ); + } } myItems.insert( obj, item ); @@ -840,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() ) @@ -850,6 +1082,10 @@ void OB_Browser::adjustWidth() adjustWidth( listView()->firstChild() ); } +/*! + Adjusts width by item + \param item +*/ void OB_Browser::adjustWidth( QListViewItem* item ) { while ( item ) @@ -861,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; @@ -873,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; @@ -883,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 ) @@ -905,6 +1155,9 @@ void OB_Browser::removeReferences( QListViewItem* item ) } } +/*! + Connects all children to SLOT onDestroyed +*/ void OB_Browser::createConnections( SUIT_DataObject* obj ) { if ( !obj ) @@ -919,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 ) @@ -933,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 @@ -962,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 ) @@ -1021,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 ) @@ -1034,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 ) @@ -1042,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; @@ -1050,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 ); @@ -1078,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() ) @@ -1098,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 ); @@ -1108,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 ) @@ -1131,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; @@ -1169,6 +1492,9 @@ void OB_Browser::contextMenuPopup( QPopupMenu* menu ) } } +/*! + Expands item with all it's children +*/ void OB_Browser::expand( QListViewItem* item ) { if ( !item ) @@ -1179,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 ) @@ -1194,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 ) @@ -1234,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(); @@ -1249,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 ) @@ -1262,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..6299afd2d 100755 --- a/src/ObjBrowser/OB_Browser.h +++ b/src/ObjBrowser/OB_Browser.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OB_BROWSER_H #define 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..99b0e3049 100644 --- a/src/ObjBrowser/OB_Filter.cxx +++ b/src/ObjBrowser/OB_Filter.cxx @@ -14,14 +14,20 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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..a75698d96 100644 --- a/src/ObjBrowser/OB_Filter.h +++ b/src/ObjBrowser/OB_Filter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OB_FILTER_H #define 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..b91b92e2d 100755 --- a/src/ObjBrowser/OB_ListItem.cxx +++ b/src/ObjBrowser/OB_ListItem.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OB_ListItem.h" @@ -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..40f7259e4 100755 --- a/src/ObjBrowser/OB_ListItem.h +++ b/src/ObjBrowser/OB_ListItem.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef 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..ebcd5c879 100755 --- a/src/ObjBrowser/OB_ListView.cxx +++ b/src/ObjBrowser/OB_ListView.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "OB_ListView.h" @@ -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..7a591e5a2 100755 --- a/src/ObjBrowser/OB_ListView.h +++ b/src/ObjBrowser/OB_ListView.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef OB_LISTVIEW_H #define 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..4b18212e9 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/Plot2d/Makefile.in b/src/Plot2d/Makefile.in index ef3d4742b..647c1b84d 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : Plot2d diff --git a/src/Plot2d/Plot2d.h b/src/Plot2d/Plot2d.h index 5d1ffa369..20deb6ec1 100755 --- a/src/Plot2d/Plot2d.h +++ b/src/Plot2d/Plot2d.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifdef WNT #ifdef PLOT2D_EXPORTS diff --git a/src/Plot2d/Plot2d_Curve.cxx b/src/Plot2d/Plot2d_Curve.cxx index c0a9abbb6..c86db8f32 100755 --- a/src/Plot2d/Plot2d_Curve.cxx +++ b/src/Plot2d/Plot2d_Curve.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "Plot2d_Curve.h" #include @@ -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_Curve.h b/src/Plot2d/Plot2d_Curve.h index b17f7c327..1fa244aa4 100755 --- a/src/Plot2d/Plot2d_Curve.h +++ b/src/Plot2d/Plot2d_Curve.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_CURVE_H #define PLOT2D_CURVE_H diff --git a/src/Plot2d/Plot2d_FitDataDlg.cxx b/src/Plot2d/Plot2d_FitDataDlg.cxx index 1b9256c27..9ff544a07 100755 --- a/src/Plot2d/Plot2d_FitDataDlg.cxx +++ b/src/Plot2d/Plot2d_FitDataDlg.cxx @@ -1,6 +1,20 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : Plot2d_FitDataDlg.cxx // Author : Vadim SANDLER diff --git a/src/Plot2d/Plot2d_FitDataDlg.h b/src/Plot2d/Plot2d_FitDataDlg.h index 2b4e501e8..ccecaaa32 100755 --- a/src/Plot2d/Plot2d_FitDataDlg.h +++ b/src/Plot2d/Plot2d_FitDataDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_FITDATADLG_H #define PLOT2D_FITDATADLG_H diff --git a/src/Plot2d/Plot2d_Prs.cxx b/src/Plot2d/Plot2d_Prs.cxx index 6f708f610..7c3bd0372 100755 --- a/src/Plot2d/Plot2d_Prs.cxx +++ b/src/Plot2d/Plot2d_Prs.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_Prs.h b/src/Plot2d/Plot2d_Prs.h index 78f6a1951..2f98aadeb 100755 --- a/src/Plot2d/Plot2d_Prs.h +++ b/src/Plot2d/Plot2d_Prs.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_PRS_H #define PLOT2D_PRS_H diff --git a/src/Plot2d/Plot2d_SetupCurveDlg.cxx b/src/Plot2d/Plot2d_SetupCurveDlg.cxx index 4f73cff03..4873db496 100644 --- a/src/Plot2d/Plot2d_SetupCurveDlg.cxx +++ b/src/Plot2d/Plot2d_SetupCurveDlg.cxx @@ -1,8 +1,22 @@ -// SALOME Plot2d : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME Plot2d : implementation of desktop and GUI kernel // // File : Plot2d_SetupCurveDlg.cxx // Author : Vadim SANDLER diff --git a/src/Plot2d/Plot2d_SetupCurveDlg.h b/src/Plot2d/Plot2d_SetupCurveDlg.h index 100438a0e..84d530aa6 100644 --- a/src/Plot2d/Plot2d_SetupCurveDlg.h +++ b/src/Plot2d/Plot2d_SetupCurveDlg.h @@ -1,13 +1,26 @@ -// SALOME Plot2d : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME Plot2d : implementation of desktop and GUI kernel // // File : Plot2d_SetupCurveDlg.h // Author : Vadim SANDLER // Module : SALOME -// $Header$ #ifndef Plot2d_SetupCurveDlg_H #define Plot2d_SetupCurveDlg_H @@ -16,10 +29,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_SetupViewDlg.cxx b/src/Plot2d/Plot2d_SetupViewDlg.cxx index 0969b6b44..9f1b2f03a 100755 --- a/src/Plot2d/Plot2d_SetupViewDlg.cxx +++ b/src/Plot2d/Plot2d_SetupViewDlg.cxx @@ -1,6 +1,20 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : Plot2d_SetupViewDlg.cxx // Author : Vadim SANDLER diff --git a/src/Plot2d/Plot2d_SetupViewDlg.h b/src/Plot2d/Plot2d_SetupViewDlg.h index 383f97d40..37db3d641 100755 --- a/src/Plot2d/Plot2d_SetupViewDlg.h +++ b/src/Plot2d/Plot2d_SetupViewDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_SETUPVIEWDLG_H #define PLOT2D_SETUPVIEWDLG_H diff --git a/src/Plot2d/Plot2d_ViewFrame.cxx b/src/Plot2d/Plot2d_ViewFrame.cxx index 30a25e808..f7b862f7b 100755 --- a/src/Plot2d/Plot2d_ViewFrame.cxx +++ b/src/Plot2d/Plot2d_ViewFrame.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "Plot2d_ViewFrame.h" @@ -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 @@ -1918,3 +1934,49 @@ bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const return res; #endif } + +/*! + \return string with all visual parameters +*/ +QString Plot2d_ViewFrame::getVisualParameters() +{ + double xmin, xmax, ymin, ymax, y2min, y2max; + getFitRanges( xmin, xmax, ymin, ymax, y2min, y2max ); + QString retStr; + retStr.sprintf( "%d*%d*%d*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e", myXMode, + myYMode, mySecondY, xmin, xmax, ymin, ymax, y2min, y2max ); + return retStr; +} + +/*! + Restores all visual parameters from string +*/ +void Plot2d_ViewFrame::setVisualParameters( const QString& parameters ) +{ + QStringList paramsLst = QStringList::split( '*', parameters, true ); + if ( paramsLst.size() == 9 ) { + double xmin, xmax, ymin, ymax, y2min, y2max; + myXMode = paramsLst[0].toInt(); + myYMode = paramsLst[1].toInt(); + mySecondY = (bool)paramsLst[2].toInt(); + xmin = paramsLst[3].toDouble(); + xmax = paramsLst[4].toDouble(); + ymin = paramsLst[5].toDouble(); + ymax = paramsLst[6].toDouble(); + y2min = paramsLst[7].toDouble(); + y2max = paramsLst[8].toDouble(); + + if (mySecondY) + setTitle( myY2TitleEnabled, myY2Title, Y2Title, false ); + setHorScaleMode( myXMode, /*update=*/false ); + setVerScaleMode( myYMode, /*update=*/false ); + + if (mySecondY) { + QwtDiMap yMap2 = myPlot->canvasMap( QwtPlot::yRight ); + myYDistance2 = yMap2.d2() - yMap2.d1(); + } + + fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max ); + fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max ); + } +} diff --git a/src/Plot2d/Plot2d_ViewFrame.h b/src/Plot2d/Plot2d_ViewFrame.h index 51faa0898..2c38caf1d 100755 --- a/src/Plot2d/Plot2d_ViewFrame.h +++ b/src/Plot2d/Plot2d_ViewFrame.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_VIEWFRAME_H #define PLOT2D_VIEWFRAME_H @@ -118,6 +118,9 @@ public: virtual bool print( const QString& file, const QString& format ) const; + QString getVisualParameters(); + void setVisualParameters( const QString& parameters ); + protected: int testOperation( const QMouseEvent& ); void readPreferences(); diff --git a/src/Plot2d/Plot2d_ViewManager.cxx b/src/Plot2d/Plot2d_ViewManager.cxx index 704e33095..405e90243 100755 --- a/src/Plot2d/Plot2d_ViewManager.cxx +++ b/src/Plot2d/Plot2d_ViewManager.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "Plot2d_ViewManager.h" #include "Plot2d_ViewModel.h" @@ -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_ViewManager.h b/src/Plot2d/Plot2d_ViewManager.h index f8b841b41..051b26f19 100755 --- a/src/Plot2d/Plot2d_ViewManager.h +++ b/src/Plot2d/Plot2d_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_VIEWMANAGER_H #define PLOT2D_VIEWMANAGER_H diff --git a/src/Plot2d/Plot2d_ViewModel.cxx b/src/Plot2d/Plot2d_ViewModel.cxx index 637351c91..3d268e1c4 100755 --- a/src/Plot2d/Plot2d_ViewModel.cxx +++ b/src/Plot2d/Plot2d_ViewModel.cxx @@ -14,11 +14,9 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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_ViewModel.h b/src/Plot2d/Plot2d_ViewModel.h index 4ba4fd2b6..75445ff9b 100755 --- a/src/Plot2d/Plot2d_ViewModel.h +++ b/src/Plot2d/Plot2d_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined(_PLOT2D_VIEWMODEL_H) #define _PLOT2D_VIEWMODEL_H diff --git a/src/Plot2d/Plot2d_ViewWindow.cxx b/src/Plot2d/Plot2d_ViewWindow.cxx index 5c558ea0f..e562e30dc 100755 --- a/src/Plot2d/Plot2d_ViewWindow.cxx +++ b/src/Plot2d/Plot2d_ViewWindow.cxx @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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,30 +477,58 @@ 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(); } -bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format ) +/*! + 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 QImage& img, const QString& fileName, const QString& format ) { bool res = myViewFrame ? myViewFrame->print( fileName, format ) : false; if( !res ) - res = SUIT_ViewWindow::dumpViewToFormat( fileName, format ); + res = SUIT_ViewWindow::dumpViewToFormat( img, fileName, format ); return res; } +/*! + \return filter of image files +*/ QString Plot2d_ViewWindow::filter() const { return SUIT_ViewWindow::filter() + ";;" + tr( "POSTSCRIPT_FILES" ); } + +/*! + \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 +*/ +void Plot2d_ViewWindow::setVisualParameters( const QString& parameters ) +{ + myViewFrame->setVisualParameters( parameters ); +} diff --git a/src/Plot2d/Plot2d_ViewWindow.h b/src/Plot2d/Plot2d_ViewWindow.h index 571d692bf..b8c3718d3 100755 --- a/src/Plot2d/Plot2d_ViewWindow.h +++ b/src/Plot2d/Plot2d_ViewWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PLOT2D_VIEWWINDOW_H #define PLOT2D_VIEWWINDOW_H @@ -46,10 +46,13 @@ public: QToolBar* getToolBar() { return myToolBar; }; void contextMenuPopup( QPopupMenu* thePopup ); + virtual QString getVisualParameters(); + virtual void setVisualParameters( const QString& parameters ); + protected: virtual QImage dumpView(); virtual QString filter() const; - virtual bool dumpViewToFormat( const QString& fileName, const QString& format ); + virtual bool dumpViewToFormat( const QImage&, const QString& fileName, const QString& format ); private: bool eventFilter(QObject* watched, QEvent* e); diff --git a/src/Plot2d/resources/Plot2d_images.po b/src/Plot2d/resources/Plot2d_images.po index 9c7bfacdc..59c109033 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..0e7aa10ab 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..56c07d0b9 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/ or email : webmaster.salome@opencascade.com +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. diff --git a/src/Prs/SALOME_Prs.cxx b/src/Prs/SALOME_Prs.cxx index cb35bb80b..b022d2573 100755 --- a/src/Prs/SALOME_Prs.cxx +++ b/src/Prs/SALOME_Prs.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: SALOME_Prs.cxx // Created: Wed Apr 28 15:03:43 2004 @@ -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..fa7c62369 100755 --- a/src/Prs/SALOME_Prs.h +++ b/src/Prs/SALOME_Prs.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOME_PRS_H #define 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/Makefile.in b/src/PyInterp/Makefile.in index 1672f5ada..d9af0dc9c 100755 --- a/src/PyInterp/Makefile.in +++ b/src/PyInterp/Makefile.in @@ -16,7 +16,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/PyInterp/PyInterp.h b/src/PyInterp/PyInterp.h index 06a4cb6e5..af9536fd8 100755 --- a/src/PyInterp/PyInterp.h +++ b/src/PyInterp/PyInterp.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined ( _PYINTERP_H ) #define _PYINTERP_H diff --git a/src/PyInterp/PyInterp_Dispatcher.cxx b/src/PyInterp/PyInterp_Dispatcher.cxx index 3d5067dba..dd029a25b 100755 --- a/src/PyInterp/PyInterp_Dispatcher.cxx +++ b/src/PyInterp/PyInterp_Dispatcher.cxx @@ -1,8 +1,22 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : PyInterp_Dispatcher.cxx // Author : Sergey ANIKIN, OCC @@ -22,10 +36,6 @@ using namespace std; PyInterp_Dispatcher* PyInterp_Dispatcher::myInstance = 0; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// - void PyInterp_Request::process() { safeExecute(); @@ -89,20 +99,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..311c9e66f 100755 --- a/src/PyInterp/PyInterp_Dispatcher.h +++ b/src/PyInterp/PyInterp_Dispatcher.h @@ -1,13 +1,26 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : PyInterp_Dispatcher.h // Author : Sergey Anikin, OCC // Module : SALOME -// $Header$ #ifndef _PYINTERP_DISPATCHER_H_ #define _PYINTERP_DISPATCHER_H_ @@ -25,9 +38,6 @@ class PyInterp_base; class PyInterp_Watcher; class PyInterp_Dispatcher; -////////////////////////////////////////////////////////// -// class : PyInterp_Request -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Request { friend class PyInterp_Dispatcher; @@ -88,9 +98,6 @@ private: PyInterp_base* myInterp; }; -////////////////////////////////////////////////////////// -// class : PyInterp_Event -////////////////////////////////////////////////////////// class PYINTERP_EXPORT PyInterp_Event : public QCustomEvent { PyInterp_Event(); @@ -111,9 +118,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_Watcher.h b/src/PyInterp/PyInterp_Watcher.h index e90877743..551eca7d0 100755 --- a/src/PyInterp/PyInterp_Watcher.h +++ b/src/PyInterp/PyInterp_Watcher.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef _PYINTERP_WATCHER_H_ #define _PYINTERP_WATCHER_H_ diff --git a/src/PyInterp/PyInterp_base.cxx b/src/PyInterp/PyInterp_base.cxx index 69ccefc9d..7225855fe 100644 --- a/src/PyInterp/PyInterp_base.cxx +++ b/src/PyInterp/PyInterp_base.cxx @@ -1,8 +1,22 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : PyInterp_base.cxx // Author : Christian CAREMOLI, Paul RASCLE, EDF @@ -112,8 +126,10 @@ void PyInterp_base::initialize() // Create cStringIO to capture stdout and stderr PycString_IMPORT; - _vout = PycStringIO->NewOutput(128); - _verr = PycStringIO->NewOutput(128); + if (PycStringIO) { // CTH11627 : additional check + _vout = PycStringIO->NewOutput(128); + _verr = PycStringIO->NewOutput(128); + } // All the initRun outputs are redirected to the standard output (console) initRun(); @@ -222,7 +238,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/PyInterp/PyInterp_base.h b/src/PyInterp/PyInterp_base.h index 66847770d..71931655c 100644 --- a/src/PyInterp/PyInterp_base.h +++ b/src/PyInterp/PyInterp_base.h @@ -1,13 +1,26 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : PyInterp_base.h // Author : Christian CAREMOLI, Paul RASCLE, EDF // Module : SALOME -// $Header$ #ifndef _PYINTERP_BASE_H_ #define _PYINTERP_BASE_H_ diff --git a/src/PythonConsole/Makefile.in b/src/PythonConsole/Makefile.in index b1b1713ea..692b54b3b 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : PythonConsole diff --git a/src/PythonConsole/PythonConsole.h b/src/PythonConsole/PythonConsole.h index 3680d4c21..8b30b261a 100755 --- a/src/PythonConsole/PythonConsole.h +++ b/src/PythonConsole/PythonConsole.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined ( _PYTHONCONSOLE_H ) #define _PYTHONCONSOLE_H diff --git a/src/PythonConsole/PythonConsole_PyConsole.cxx b/src/PythonConsole/PythonConsole_PyConsole.cxx index c7f8f1c7c..9eecd0f15 100755 --- a/src/PythonConsole/PythonConsole_PyConsole.cxx +++ b/src/PythonConsole/PythonConsole_PyConsole.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "PythonConsole_PyConsole.h" #include "PythonConsole_PyEditor.h" @@ -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_PyConsole.h b/src/PythonConsole/PythonConsole_PyConsole.h index 264e4ae0f..4978214fb 100755 --- a/src/PythonConsole/PythonConsole_PyConsole.h +++ b/src/PythonConsole/PythonConsole_PyConsole.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef PythonConsole_PyConsole_H #define PythonConsole_PyConsole_H diff --git a/src/PythonConsole/PythonConsole_PyEditor.cxx b/src/PythonConsole/PythonConsole_PyEditor.cxx index 76c77478d..3bf622e59 100755 --- a/src/PythonConsole/PythonConsole_PyEditor.cxx +++ b/src/PythonConsole/PythonConsole_PyEditor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -174,7 +174,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 ) @@ -198,7 +198,7 @@ void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event ) } } -/* +/*! Processes middle button release event - paste clipboard's contents */ void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event ) @@ -704,6 +704,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_PyEditor.h b/src/PythonConsole/PythonConsole_PyEditor.h index b5d303a60..004b40021 100755 --- a/src/PythonConsole/PythonConsole_PyEditor.h +++ b/src/PythonConsole/PythonConsole_PyEditor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/PythonConsole/PythonConsole_PyInterp.cxx b/src/PythonConsole/PythonConsole_PyInterp.cxx index 22a84bfc4..168f1268f 100755 --- a/src/PythonConsole/PythonConsole_PyInterp.cxx +++ b/src/PythonConsole/PythonConsole_PyInterp.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -48,6 +48,9 @@ PythonConsole_PyInterp::PythonConsole_PyInterp(): PyInterp_base() { } +/*! + Destructor +*/ PythonConsole_PyInterp::~PythonConsole_PyInterp() { } @@ -103,14 +106,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/PythonConsole/PythonConsole_PyInterp.h b/src/PythonConsole/PythonConsole_PyInterp.h index 304756e1b..fce05636f 100755 --- a/src/PythonConsole/PythonConsole_PyInterp.h +++ b/src/PythonConsole/PythonConsole_PyInterp.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/QDS/Makefile.in b/src/QDS/Makefile.in index 97b4ae3f7..290054d45 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Alexander SOLOVYOV (OCN) # Module : QDS diff --git a/src/QDS/QDS.cxx b/src/QDS/QDS.cxx index ec925779e..d91c2196d 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/ or email : webmaster.salome@opencascade.com +// #include "QDS.h" #include "QDS_Datum.h" diff --git a/src/QDS/QDS.h b/src/QDS/QDS.h index 3b20b2378..8afd71ab2 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_H #define QDS_H diff --git a/src/QDS/QDS_CheckBox.cxx b/src/QDS/QDS_CheckBox.cxx index ded537716..dc73cda95 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_CheckBox.h" #include diff --git a/src/QDS/QDS_CheckBox.h b/src/QDS/QDS_CheckBox.h index 8b1344b93..9be0dde19 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_CHECKBOX_H #define QDS_CHECKBOX_H diff --git a/src/QDS/QDS_ComboBox.cxx b/src/QDS/QDS_ComboBox.cxx index fac69b6b4..ab97bade6 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_ComboBox.h" #include diff --git a/src/QDS/QDS_ComboBox.h b/src/QDS/QDS_ComboBox.h index 9650f4c58..2a8791702 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_COMBOBOX_H #define QDS_COMBOBOX_H diff --git a/src/QDS/QDS_Datum.cxx b/src/QDS/QDS_Datum.cxx index 70f3169c8..7b93dfe6a 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_Datum.h" #include "QDS_Validator.h" diff --git a/src/QDS/QDS_Datum.h b/src/QDS/QDS_Datum.h index cafd76437..4fe64feec 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_DATUM_H #define QDS_DATUM_H diff --git a/src/QDS/QDS_LineEdit.cxx b/src/QDS/QDS_LineEdit.cxx index 15cc3f057..a4b879cd3 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_LineEdit.h" #include diff --git a/src/QDS/QDS_LineEdit.h b/src/QDS/QDS_LineEdit.h index ec9ad48a2..3362e7437 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_LINEEDIT_H #define QDS_LINEEDIT_H diff --git a/src/QDS/QDS_RadioBox.cxx b/src/QDS/QDS_RadioBox.cxx index 1b3350fb3..f07b190bd 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_RadioBox.h" #include diff --git a/src/QDS/QDS_RadioBox.h b/src/QDS/QDS_RadioBox.h index 769a537ed..e7cf86618 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_RADIOBOX_H #define QDS_RADIOBOX_H diff --git a/src/QDS/QDS_SpinBox.cxx b/src/QDS/QDS_SpinBox.cxx index b77aa8ba0..430d7fd5a 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_SpinBox.h" #include diff --git a/src/QDS/QDS_SpinBox.h b/src/QDS/QDS_SpinBox.h index f018ddfb8..f0456900e 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_SPINBOX_H #define QDS_SPINBOX_H diff --git a/src/QDS/QDS_SpinBoxDbl.cxx b/src/QDS/QDS_SpinBoxDbl.cxx index 8a4160e70..ac99303e8 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_SpinBoxDbl.h" #include diff --git a/src/QDS/QDS_SpinBoxDbl.h b/src/QDS/QDS_SpinBoxDbl.h index a0c5e3096..362f75c7c 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_PINBOXDBL_H #define QDS_PINBOXDBL_H diff --git a/src/QDS/QDS_TextEdit.cxx b/src/QDS/QDS_TextEdit.cxx index 65fbcb28e..17de76418 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_TextEdit.h" #include diff --git a/src/QDS/QDS_TextEdit.h b/src/QDS/QDS_TextEdit.h index 917ff13e4..469fbaa36 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/ or email : webmaster.salome@opencascade.com +// #ifndef QDS_TEXTEEDIT_H #define QDS_TEXTEEDIT_H diff --git a/src/QDS/QDS_Validator.cxx b/src/QDS/QDS_Validator.cxx index d83463eae..02916c0cb 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/ or email : webmaster.salome@opencascade.com +// #include "QDS_Validator.h" /*! diff --git a/src/QDS/QDS_Validator.h b/src/QDS/QDS_Validator.h index bc966c03c..537d511a2 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/ or email : webmaster.salome@opencascade.com +// #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..4fab946b8 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "Foo::Bar" # would be translated to "Pub", not "Foo::Pub". diff --git a/src/Qtx/Makefile.in b/src/Qtx/Makefile.in index aa682b59d..ea5bccbc6 100755 --- a/src/Qtx/Makefile.in +++ b/src/Qtx/Makefile.in @@ -1,4 +1,23 @@ -# File : Makefile.in # Author : Vladimir Klyachin (OCN) +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# File : Makefile.in +# Author : Vladimir Klyachin (OCN) # Module : suit # $Header$ @@ -49,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 @@ -97,7 +117,8 @@ LIB_SRC= \ QtxWorkstack.cxx \ QtxListView.cxx \ QtxDirListEditor.cxx \ - QtxDblValidator.cxx + QtxDblValidator.cxx \ + QtxSplash.cxx LIB_MOC = \ QtxAction.h \ @@ -130,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.cxx b/src/Qtx/Qtx.cxx index 41231fbe8..14704e550 100755 --- a/src/Qtx/Qtx.cxx +++ b/src/Qtx/Qtx.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: Qtx.cxx // Author: Sergey TELKOV diff --git a/src/Qtx/Qtx.h b/src/Qtx/Qtx.h index c16bd7b23..1fef63f04 100755 --- a/src/Qtx/Qtx.h +++ b/src/Qtx/Qtx.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: Qtx.h // Author: Sergey TELKOV @@ -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 88116c585..06f87329c 100755 --- a/src/Qtx/QtxAction.cxx +++ b/src/Qtx/QtxAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxAction.cxx // Author: Sergey TELKOV @@ -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, const 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 e6d390106..c7b6b7192 100755 --- a/src/Qtx/QtxAction.h +++ b/src/Qtx/QtxAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxAction.hxx // Author: Sergey TELKOV @@ -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*, const 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 7782a7b57..b87289a33 100644 --- a/src/Qtx/QtxActionMenuMgr.cxx +++ b/src/Qtx/QtxActionMenuMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionMenuMgr.cxx // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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* ); + MenuAction( const QString&, const QString&, QObject*, const int = -1, const bool = false ); virtual ~MenuAction(); virtual bool addTo( QWidget* ); @@ -50,43 +102,84 @@ public: QPopupMenu* popup() const; private: - int myId; - QPopupMenu* myPopup; + int myId; + QPopupMenu* myPopup; + bool myEmptyEnabled; + QMap myIds; }; -QtxActionMenuMgr::MenuAction::MenuAction( const QString& text, const QString& menuText, QObject* parent ) + +/*! + 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 ), -myPopup( 0 ) + 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; - - 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 widget type + + if ( myIds.find( w ) != myIds.end() ) + return false; // already added + + if ( !myPopup ) + return false; // bad own popup menu + + if ( !myEmptyEnabled && !myPopup->count() ) + 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; @@ -94,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; @@ -117,22 +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 ) + 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; @@ -141,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 ) @@ -157,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 ); @@ -170,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 ); @@ -189,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 ); @@ -198,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 ) @@ -209,106 +386,202 @@ int QtxActionMenuMgr::insert( const int id, const int pId, const int group, cons MenuNode* node = new MenuNode( pNode ); node->id = id; + node->idx = idx; node->group = group; - if ( idx < 0 || idx >= (int)pNode->children.count() ) - pNode->children.append( node ); - else - pNode->children.insert( idx, node ); + pNode->children.append( node ); updateMenu( pNode, false ); 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 ); } -int QtxActionMenuMgr::insert( const QString& title, const int pId, const int group, const int idx ) +/*! + Create and insert action as children menu item + \return identificator of inserted action + \param title - menu text of action + \param pId - identificator of action corresponding to parent menu item + \param group - group identificator + \param id - identificator of new action + \param idx - index inside Qt menu + \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu +*/ +int QtxActionMenuMgr::insert( const QString& title, const int pId, const int group, const int id, const int idx, const bool allowEmpty ) { MenuNode* pNode = pId == -1 ? &myRoot : find( pId ); if ( !pNode ) return -1; - int id = -1; - for ( NodeListIterator it( pNode->children ); it.current() && id == -1; ++it ) + MenuNode* eNode = id == -1 ? 0 : find( id ); + + int fid = -1; + for ( NodeListIterator it( pNode->children ); it.current() && fid == -1; ++it ) { if ( myMenus.contains( it.current()->id ) && clearTitle( myMenus[it.current()->id]->menuText() ) == clearTitle( title ) ) - id = it.current()->id; + fid = it.current()->id; } - if ( id != -1 ) - return id; + if ( fid != -1 ) + return fid; + + int gid = (id == -1 || eNode ) ? generateId() : id; - MenuAction* ma = new MenuAction( clearTitle( title ), title, this ); + 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->id = myMenus.insert( generateId(), ma ).key(); + node->idx = idx; + node->id = myMenus.insert( gid, ma ).key(); - if ( idx < 0 || idx >= (int)pNode->children.count() ) - pNode->children.append( node ); - else - pNode->children.insert( idx, node ); + pNode->children.append( node ); updateMenu( pNode, false ); return node->id; } -int QtxActionMenuMgr::insert( const QString& title, const QString& menus, const int group, const int idx ) +/*! + 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, idx ); + return insert( title, QStringList::split( "|", menus ), group, id, idx, allowEmpty ); } -int QtxActionMenuMgr::insert( const QString& title, const QStringList& menus, const int group, const int idx ) +/*! + 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, idx ); + return insert( title, pId, group, id, idx, allowEmpty ); } -int QtxActionMenuMgr::append( const QString& title, const int pId, const int group ) +/*! + 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 ); + 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 ); } -int QtxActionMenuMgr::prepend( const QString& title, const int pId, const int 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, 0 ); + 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 = find( pId ); + MenuNode* pNode = pId == -1 ? &myRoot : find( pId ); if ( !pNode ) return; @@ -325,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; @@ -344,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; @@ -363,12 +653,46 @@ 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(); + int pid = 0, realId; + if ( myMenu && snd == myMenu ) + pid = -1; + else { + for ( MenuMap::Iterator itr = myMenus.begin(); itr != myMenus.end(); ++itr ) { + if ( itr.data()->popup() && itr.data()->popup() == snd ) + pid = itr.key(); + } + } + if ( pid ) { + realId = findId( id, pid ); + if ( realId != -1 ) { + bool updatesEnabled = isUpdatesEnabled(); + setUpdatesEnabled( false ); + emit menuHighlighted( pid, realId ); + setUpdatesEnabled( updatesEnabled ); + updateMenu( find( realId ) ); + } + } +} + +/*! + Assignes new menu with manager + \param mw - new menu +*/ void QtxActionMenuMgr::setWidget( QWidget* mw ) { if ( myMenu == mw ) @@ -383,12 +707,24 @@ void QtxActionMenuMgr::setWidget( QWidget* mw ) connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } -QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId ) const +/*! + \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 ) ); + return find( actId, find( pId ), rec ); } -QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode ) const +/*! + \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; MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot; @@ -396,12 +732,19 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* star { if ( it.current()->id == id ) node = it.current(); - else - node = find( id, it.current() ); + else if ( rec ) + node = find( id, it.current(), rec ); } 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; @@ -415,6 +758,87 @@ 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; + for ( NodeListIterator it( start->children ); it.current(); ++it ) + { + QAction* a = itemAction( it.current()->id ); + if ( !a ) + a = menuAction( it.current()->id ); + if ( a && clearTitle( a->menuText() ) == clearTitle( title ) ) + lst.prepend( it.current() ); + + find( title, lst, it.current() ); + } + 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; + MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot; + for ( NodeListIterator it( start->children ); it.current() && !node; ++it ) + { + QAction* a = itemAction( it.current()->id ); + if ( !a ) + a = menuAction( it.current()->id ); + if ( a && clearTitle( a->menuText() ) == clearTitle( title ) ) + node = it.current(); + if ( !node && rec ) + node = find( title, it.current(), rec ); + } + 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; + if ( start ) { + for ( NodeListIterator it( start->children ); it.current(); ++it ) { + if ( it.current()->id == id ) return id; + } + } + 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; @@ -427,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; @@ -442,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() ) @@ -464,24 +903,21 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo if ( a ) a->removeFrom( mw ); } - - if ( node != &myRoot ) - { - if ( mw->inherits( "QMenuBar" ) ) - ((QMenuBar*)mw)->clear(); - else if ( mw->inherits( "QPopupMenu" ) ) - ((QPopupMenu*)mw)->clear(); - } - + /* 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 ) { - MenuNode* par = it2.current()->parent; - if ( isVisible( it2.current()->id, par ? par->id : -1 ) ) - { - NodeList& lst = idMap[it2.current()->group]; + NodeList& lst = idMap[it2.current()->group]; + int idx = it2.current()->idx; + if ( idx < 0 || idx >= lst.count() ) lst.append( it2.current() ); - } + else + lst.insert( idx, it2.current() ); } QIntList groups = idMap.keys(); @@ -498,18 +934,18 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo const NodeList& lst = idMap[*gIt]; for ( NodeListIterator iter( lst ); iter.current(); ++iter ) { + MenuNode* par = iter.current()->parent; + if ( !isVisible( iter.current()->id, par ? par->id : -1 ) ) + continue; + if ( rec ) updateMenu( iter.current(), rec, false ); QAction* a = itemAction( iter.current()->id ); + if ( !a ) + a = menuAction( iter.current()->id ); if ( a ) - a->addTo( mw ); - else - { - MenuAction* ma = menuAction( iter.current()->id ); - if ( ma && ma->popup() && ma->popup()->count() ) - ma->addTo( mw ); - } + a->addTo( mw ); } } @@ -519,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 ) @@ -536,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 ) @@ -550,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; @@ -569,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() ) @@ -584,18 +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 ); +} /*! - Class: QtxActionMenuMgr::MenuCreator - Level: Public + \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 ); +} + +/*! + Constructor + \param r - menu reader + \param mgr - menu manager +*/ QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r, QtxActionMenuMgr* mgr ) : QtxActionMgr::Creator( r ), @@ -603,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 89b81aa89..bdbe139a4 100644 --- a/src/Qtx/QtxActionMenuMgr.h +++ b/src/Qtx/QtxActionMenuMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionMenuMgr.h // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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: @@ -51,6 +68,7 @@ class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr MenuNode( MenuNode* p ) : parent( p ), visible( true ) { children.setAutoDelete( true ); }; int id; + int idx; int group; MenuNode* parent; bool visible; @@ -79,17 +97,17 @@ public: virtual int insert( const int, const int, const int, const int = -1 ); int insert( QAction*, const int, const int, const int = -1 ); - int insert( const QString&, const QString&, const int, const int = -1 ); - int insert( const QString&, const QStringList&, const int, const int = -1 ); - virtual int insert( const QString&, const int, const int, const int = -1 ); + int insert( const QString&, const QString&, const int, const int = -1, const int = -1, const bool = false ); + int insert( const QString&, const QStringList&, const int, const int = -1, const int = -1, const bool = false ); + virtual int insert( const QString&, const int, const int, const int = -1, const int = -1, const bool = false ); int append( const int, const int, const int ); int append( QAction*, const int, const int ); - int append( const QString&, const int, const int ); + int append( const QString&, const int, const int, const int = -1, const bool = false ); int prepend( const int, const int, const int ); int prepend( QAction*, const int, const int ); - int prepend( const QString&, const int, const int ); + int prepend( const QString&, const int, const int, const int = -1, const bool = false ); void remove( const int ); void remove( const int, const int, const int = -1 ); @@ -102,14 +120,26 @@ public: virtual bool load( const QString&, QtxActionMgr::Reader& ); + bool containsMenu( const QString&, const int ) const; + bool containsMenu( const int, const int ) const; + + private slots: void onDestroyed( QObject* ); + void onHighlighted( int ); + +signals: + void menuHighlighted( int, int ); protected: void setWidget( QWidget* ); - MenuNode* find( const int, const int ) const; - MenuNode* find( const int, MenuNode* = 0 ) const; + MenuNode* find( const int, const int, const bool = true ) const; + MenuNode* find( const int, MenuNode* = 0, const bool = true ) const; bool find( const int, NodeList&, MenuNode* = 0 ) const; + MenuNode* find( const QString&, const int, const bool = true ) const; + MenuNode* find( const QString&, MenuNode* = 0, const bool = true ) const; + bool find( const QString&, NodeList&, MenuNode* = 0 ) const; + int findId( const int, const int = -1 ) const; void removeMenu( const int, MenuNode* ); @@ -135,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..b157b835e 100644 --- a/src/Qtx/QtxActionMgr.cxx +++ b/src/Qtx/QtxActionMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionMgr.cxx // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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..e0ba1d0e6 100644 --- a/src/Qtx/QtxActionMgr.h +++ b/src/Qtx/QtxActionMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionMgr.h // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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 f797306f0..9ce569613 100644 --- a/src/Qtx/QtxActionToolMgr.cxx +++ b/src/Qtx/QtxActionToolMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionToolMgr.cxx // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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,26 +321,64 @@ 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 ) + { + if ( tid == -1 || it.key() == tid ) { + const NodeList& list = it.data().nodes; + for ( NodeList::const_iterator nit = list.begin(); nit != list.end(); ++nit ) + if ( (*nit).id == id ) + return true; + } + } + 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; @@ -243,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; @@ -254,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() ) @@ -287,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; @@ -339,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 ) ) @@ -355,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 ) ) @@ -376,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 ); @@ -384,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 ) @@ -394,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 31c02209d..9300ec22a 100644 --- a/src/Qtx/QtxActionToolMgr.h +++ b/src/Qtx/QtxActionToolMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxActionToolMgr.h // Author: Alexander SOLOVYEV, Sergey TELKOV @@ -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: @@ -95,6 +107,8 @@ public: bool hasToolBar( const int ) const; bool hasToolBar( const QString& ) const; + bool containsAction( const int, const int = -1 ) const; + virtual bool load( const QString&, QtxActionMgr::Reader& ); protected slots: @@ -120,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..30c919361 100755 --- a/src/Qtx/QtxColorScale.cxx +++ b/src/Qtx/QtxColorScale.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxColorScale.cxx // Author: Sergey TELKOV @@ -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 1037fd621..bae5e9d63 100755 --- a/src/Qtx/QtxColorScale.h +++ b/src/Qtx/QtxColorScale.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxColorScale.h // Author: Sergey TELKOV @@ -38,6 +38,10 @@ class QSimpleRichText; #pragma warning( disable:4251 ) #endif +/*! + \class QtxColorScale + Color Scale widget. +*/ class QTX_EXPORT QtxColorScale : public QFrame { Q_OBJECT @@ -152,7 +156,9 @@ private: QSize calculateSize( const bool, const int, const bool, const bool, const bool ) const; - friend class Dock; +#if QT_VER == 3 + friend class QtxColorScale::Dock; +#endif private: double myMin; diff --git a/src/Qtx/QtxComboBox.cxx b/src/Qtx/QtxComboBox.cxx index 4e7c3b5cb..a2c95f251 100755 --- a/src/Qtx/QtxComboBox.cxx +++ b/src/Qtx/QtxComboBox.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxComboBox.cxx // Author: Sergey TELKOV @@ -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/QtxComboBox.h b/src/Qtx/QtxComboBox.h index 9315c674e..82c8989e0 100755 --- a/src/Qtx/QtxComboBox.h +++ b/src/Qtx/QtxComboBox.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxComboBox.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxDblSpinBox.cxx b/src/Qtx/QtxDblSpinBox.cxx index b10c28bd6..59f9f6192 100755 --- a/src/Qtx/QtxDblSpinBox.cxx +++ b/src/Qtx/QtxDblSpinBox.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDblSpinBox.cxx // Author: Sergey TELKOV @@ -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..b715fb3a2 100755 --- a/src/Qtx/QtxDblSpinBox.h +++ b/src/Qtx/QtxDblSpinBox.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDblSpinBox.h // Author: Sergey TELKOV @@ -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..b7dd3e9d0 100644 --- a/src/Qtx/QtxDblValidator.cxx +++ b/src/Qtx/QtxDblValidator.cxx @@ -14,23 +14,38 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDblValidator.cxx // Author: Alexandre SOLOVYOV #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/QtxDblValidator.h b/src/Qtx/QtxDblValidator.h index 0990a290c..a5b389fd1 100644 --- a/src/Qtx/QtxDblValidator.h +++ b/src/Qtx/QtxDblValidator.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDblValidator.h // Author: Alexandre SOLOVYOV diff --git a/src/Qtx/QtxDialog.cxx b/src/Qtx/QtxDialog.cxx index 347479e55..2554511a4 100755 --- a/src/Qtx/QtxDialog.cxx +++ b/src/Qtx/QtxDialog.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDialog.cxx // Author: Sergey TELKOV @@ -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/QtxDialog.h b/src/Qtx/QtxDialog.h index 321bc3e9b..dbf4fbd9d 100755 --- a/src/Qtx/QtxDialog.h +++ b/src/Qtx/QtxDialog.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDialog.hxx // Author: Sergey TELKOV diff --git a/src/Qtx/QtxDirListEditor.cxx b/src/Qtx/QtxDirListEditor.cxx index 0532cd77f..cd4bb9fcf 100644 --- a/src/Qtx/QtxDirListEditor.cxx +++ b/src/Qtx/QtxDirListEditor.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxDirListEditor.h" @@ -206,6 +206,18 @@ QtxDirListEditor::~QtxDirListEditor() */ void QtxDirListEditor::getPathList(QStringList& list) { + // Finish the path editing + if (myEdit) { + validate(true); + + myEdit->deleteLater(); + myBtn->deleteLater(); + myEdit = 0; + myBtn = 0; + myEdited = false; + myDirList->setFocus(); + } + list.clear(); for (unsigned i = 0; i < myDirList->count()-1; i++) list.append(myDirList->text(i)); @@ -224,11 +236,11 @@ void QtxDirListEditor::setPathList(const QStringList& list) { /*! Validates entered path, returns true if OK */ -bool QtxDirListEditor::validate() +bool QtxDirListEditor::validate( const bool quietMode ) { if ( myEdited ) { - QString dirPath = QFileInfo( myEdit->text().stripWhiteSpace() ).absFilePath(); + QString dirPath = QFileInfo( myEdit->text().stripWhiteSpace() ).filePath(); /* #ifndef WNT if ( dirPath.startsWith( "~") ) { @@ -285,20 +297,21 @@ bool QtxDirListEditor::validate() if (found) { if (found != myLastSelected) { // it is forbidden to add directory more then once - QMessageBox::critical(this, - tr("Error"), - tr("Directory already specified."), - tr("Ok")); + if ( !quietMode ) + QMessageBox::critical(this, + tr("Error"), + tr("Directory already specified."), + tr("Ok")); myEdit->setFocus(); return false; } } else { if (!dir.exists()) { - if ( QMessageBox::information(this, - tr("Warning"), - tr("%1\n\nThe directory doesn't exist.\nAdd directory anyway?").arg(dir.absPath()), - tr("Yes"), tr("No"), QString::null, 1, 1) == 1) { + if ( !quietMode && QMessageBox::information(this, + tr("Warning"), + tr("%1\n\nThe directory doesn't exist.\nAdd directory anyway?").arg(dir.absPath()), + tr("Yes"), tr("No"), QString::null, 1, 1) == 1) { myEdit->setFocus(); return false; } diff --git a/src/Qtx/QtxDirListEditor.h b/src/Qtx/QtxDirListEditor.h index 95e84228e..38d62dead 100644 --- a/src/Qtx/QtxDirListEditor.h +++ b/src/Qtx/QtxDirListEditor.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef QTX_DIRLISTEDITOR_H #define QTX_DIRLISTEDITOR_H @@ -74,7 +74,7 @@ protected: * \brief Validates entered path * \retval bool - returns status (true if OK) */ - bool validate(); + bool validate( const bool quietMode = false ); /*! * \brief Appends/changes path diff --git a/src/Qtx/QtxDockAction.cxx b/src/Qtx/QtxDockAction.cxx index 89e72344c..1b25e280a 100755 --- a/src/Qtx/QtxDockAction.cxx +++ b/src/Qtx/QtxDockAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDockAction.cxx // Author: Sergey TELKOV @@ -28,6 +28,7 @@ #include #include #include +#include #include /*! @@ -254,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 ) @@ -707,7 +712,41 @@ void QtxDockAction::dockWindows( QPtrList& lst, QMainWindow* main ) if ( !mw ) return; - lst = mw->dockWindows(); + QObjectList* objs = mw->queryList( "QDockWindow" ); + if ( objs ) + { + for ( QObjectListIt it( *objs ); it.current(); ++it ) + { + QDockWindow* dockWin = ::qt_cast( it.current() ); + if ( dockWin && dockMainWindow( mw, dockWin ) ) + lst.append( dockWin ); + } + } + 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 ) + return false; + + while ( win ) + { + if ( win->parent() && win->parent() == mw ) + return true; + + if ( ::qt_cast( win->parent() ) ) + return false; + + win = win->parent(); + } + + return false; } /*! @@ -772,6 +811,14 @@ void QtxDockAction::loadPlaceInfo( QDockWindow* dw ) const if ( !myInfo.contains( dw ) ) return; + QMainWindow* mw = mainWindow(); + if ( !mw ) + return; + + QObject* p = dw->parent(); + if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) ) + return; + QString winName = myInfo[dw].name; if ( winName.isEmpty() || !myGeom.contains( winName ) ) return; @@ -807,6 +854,10 @@ void QtxDockAction::loadPlaceInfo() const QMap nameMap; for ( QPtrListIterator itr( lst ); itr.current(); ++itr ) { + QObject* p = itr.current()->parent(); + if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) ) + continue; + QString name; if ( myInfo.contains( itr.current() ) ) name = myInfo[itr.current()].name; @@ -1209,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/QtxDockAction.h b/src/Qtx/QtxDockAction.h index 4583bebda..a18d102fb 100755 --- a/src/Qtx/QtxDockAction.h +++ b/src/Qtx/QtxDockAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDockAction.h // Author: Sergey TELKOV @@ -121,6 +121,8 @@ private: void updateMenus(); + bool dockMainWindow( QMainWindow*, QObject* ) const; + private: enum { AutoAdd = QEvent::User, LoadArea }; diff --git a/src/Qtx/QtxDockWindow.cxx b/src/Qtx/QtxDockWindow.cxx index 9872d8505..1a9f5d07d 100644 --- a/src/Qtx/QtxDockWindow.cxx +++ b/src/Qtx/QtxDockWindow.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDockWindow.cxx // Author: Sergey TELKOV @@ -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/QtxDockWindow.h b/src/Qtx/QtxDockWindow.h index ec9e88188..6aa0190e3 100644 --- a/src/Qtx/QtxDockWindow.h +++ b/src/Qtx/QtxDockWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxDockWindow.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxGroupBox.cxx b/src/Qtx/QtxGroupBox.cxx index 51732dc75..6975f779e 100644 --- a/src/Qtx/QtxGroupBox.cxx +++ b/src/Qtx/QtxGroupBox.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxGroupBox.cxx // Author: Sergey TELKOV @@ -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/QtxGroupBox.h b/src/Qtx/QtxGroupBox.h index 99404c6cb..04f9bb2e6 100644 --- a/src/Qtx/QtxGroupBox.h +++ b/src/Qtx/QtxGroupBox.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxGroupBox.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxIntSpinBox.cxx b/src/Qtx/QtxIntSpinBox.cxx index 35672e5ee..e002377e6 100755 --- a/src/Qtx/QtxIntSpinBox.cxx +++ b/src/Qtx/QtxIntSpinBox.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxIntSpinBox.cxx // Author: Sergey TELKOV @@ -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/QtxIntSpinBox.h b/src/Qtx/QtxIntSpinBox.h index 5dffbe4ec..7f083d519 100755 --- a/src/Qtx/QtxIntSpinBox.h +++ b/src/Qtx/QtxIntSpinBox.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxIntSpinBox.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxListAction.cxx b/src/Qtx/QtxListAction.cxx index 725120238..e3c4a8484 100755 --- a/src/Qtx/QtxListAction.cxx +++ b/src/Qtx/QtxListAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListAction.cxx // Author: Sergey TELKOV (Based on code by Eugene AKSENOV) @@ -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..8ad60be5b 100755 --- a/src/Qtx/QtxListAction.h +++ b/src/Qtx/QtxListAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListAction.hxx // Author: Sergey TELKOV (Based on code by Eugene AKSENOV) @@ -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..b4bdef35f 100755 --- a/src/Qtx/QtxListBox.cxx +++ b/src/Qtx/QtxListBox.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListBox.cxx // Author: Sergey TELKOV @@ -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/QtxListBox.h b/src/Qtx/QtxListBox.h index 166831734..180d2cafb 100755 --- a/src/Qtx/QtxListBox.h +++ b/src/Qtx/QtxListBox.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListBox.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxListOfOperations.cxx b/src/Qtx/QtxListOfOperations.cxx index 1be04a75d..a6c2e6810 100644 --- a/src/Qtx/QtxListOfOperations.cxx +++ b/src/Qtx/QtxListOfOperations.cxx @@ -14,32 +14,31 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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..def9dd8c4 100644 --- a/src/Qtx/QtxListOfOperations.h +++ b/src/Qtx/QtxListOfOperations.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListOfOperations.h // Author: Alexander SOLOVYOV @@ -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 60a5fbe4c..3b93b846f 100644 --- a/src/Qtx/QtxListResourceEdit.cxx +++ b/src/Qtx/QtxListResourceEdit.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListResourceEdit.cxx // Author: Sergey TELKOV @@ -39,17 +39,16 @@ #include #include #include +#include #include "QtxIntSpinBox.h" #include "QtxDblSpinBox.h" #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 ) @@ -75,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 ); @@ -95,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() ) ); @@ -114,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 ) @@ -126,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 ); @@ -145,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; @@ -162,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() ) @@ -172,6 +198,9 @@ void QtxListResourceEdit::updateState() myList->setShown( myList->count() > 1 ); } +/*! + Updates visibility state +*/ void QtxListResourceEdit::updateVisible() { QPtrList items; @@ -200,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 ) @@ -225,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; @@ -255,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; @@ -267,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() ); @@ -281,6 +336,9 @@ QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& return tab; } +/*! + Updates category +*/ void QtxListResourceEdit::Category::updateState() { if ( myTabs->count() ) @@ -294,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 ) @@ -311,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(); @@ -335,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() ); @@ -346,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" ); @@ -372,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; @@ -412,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; @@ -434,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; @@ -490,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 ), @@ -503,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 ) @@ -554,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(); @@ -565,6 +690,9 @@ void QtxListResourceEdit::SelectItem::store() setInteger( myIndex[idx] ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::SelectItem::retrieve() { int id = getInteger( -1 ); @@ -579,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; @@ -599,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" ) ) @@ -607,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 ) @@ -615,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 ) @@ -630,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(); @@ -645,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 ) @@ -658,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 ) @@ -686,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 ) { @@ -714,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 ) { @@ -741,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; @@ -773,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; @@ -791,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 ) @@ -806,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 ) @@ -834,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; @@ -868,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; @@ -888,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: @@ -930,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 ) @@ -973,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() ); @@ -988,6 +1217,9 @@ void QtxListResourceEdit::FontItem::store() Item::setFont( f ); } +/*! + Retrieve value to resource manager +*/ void QtxListResourceEdit::FontItem::retrieve() { QFont f = getFont(); @@ -996,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" ) @@ -1065,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" ) @@ -1116,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; @@ -1130,6 +1375,9 @@ void QtxListResourceEdit::FontItem::setFamily( const QString& f ) if( deffam.canCast( QVariant::String ) ) curtext = deffam.toString(); } + + if ( curtext.isEmpty() ) + curtext = (QApplication::font()).family(); int idx = -1; for ( int i = 0; i < (int)myFamilies->count() && idx < 0; i++ ) @@ -1144,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; @@ -1167,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(); @@ -1175,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; @@ -1207,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(); @@ -1214,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; @@ -1224,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() ) ); @@ -1244,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() ); @@ -1266,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 ) @@ -1278,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; @@ -1289,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())); @@ -1296,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 ) @@ -1317,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" ) @@ -1347,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" ) @@ -1371,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 ) @@ -1389,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; @@ -1399,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 ) ) @@ -1406,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..fc538004a 100644 --- a/src/Qtx/QtxListResourceEdit.h +++ b/src/Qtx/QtxListResourceEdit.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxListResourceEdit.h // Author: Sergey TELKOV @@ -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..92af7e34c 100755 --- a/src/Qtx/QtxListView.cxx +++ b/src/Qtx/QtxListView.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxListView.h" @@ -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/QtxListView.h b/src/Qtx/QtxListView.h index bf38736c7..76aa63a05 100755 --- a/src/Qtx/QtxListView.h +++ b/src/Qtx/QtxListView.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef QTXLISTVIEW_H diff --git a/src/Qtx/QtxLogoMgr.cxx b/src/Qtx/QtxLogoMgr.cxx index 68811c5f3..2103eccae 100644 --- a/src/Qtx/QtxLogoMgr.cxx +++ b/src/Qtx/QtxLogoMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxLogoMgr.h" @@ -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/QtxLogoMgr.h b/src/Qtx/QtxLogoMgr.h index 6eee42847..7e0615c82 100644 --- a/src/Qtx/QtxLogoMgr.h +++ b/src/Qtx/QtxLogoMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef QTX_LOGOMGR_H #define QTX_LOGOMGR_H diff --git a/src/Qtx/QtxMRUAction.cxx b/src/Qtx/QtxMRUAction.cxx index ee7c4f3ac..eea0be25a 100755 --- a/src/Qtx/QtxMRUAction.cxx +++ b/src/Qtx/QtxMRUAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMRUAction.cxx // Author: Sergey TELKOV diff --git a/src/Qtx/QtxMRUAction.h b/src/Qtx/QtxMRUAction.h index debd6bdfb..6325860f8 100755 --- a/src/Qtx/QtxMRUAction.h +++ b/src/Qtx/QtxMRUAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMRUAction.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxMainWindow.cxx b/src/Qtx/QtxMainWindow.cxx index b8968ef8c..99f602bbb 100644 --- a/src/Qtx/QtxMainWindow.cxx +++ b/src/Qtx/QtxMainWindow.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMainWindow.cxx // Author: Sergey TELKOV @@ -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/QtxMainWindow.h b/src/Qtx/QtxMainWindow.h index c2aa1bdb7..ee779aefd 100644 --- a/src/Qtx/QtxMainWindow.h +++ b/src/Qtx/QtxMainWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMainWindow.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxMenuButton.cxx b/src/Qtx/QtxMenuButton.cxx index 88bfc1061..dc8abdde7 100755 --- a/src/Qtx/QtxMenuButton.cxx +++ b/src/Qtx/QtxMenuButton.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMenuButton.cxx // Author: Sergey TELKOV @@ -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/QtxMenuButton.h b/src/Qtx/QtxMenuButton.h index 62effa2da..b0f674196 100755 --- a/src/Qtx/QtxMenuButton.h +++ b/src/Qtx/QtxMenuButton.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxMenuButton.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxOperations.cxx b/src/Qtx/QtxOperations.cxx index 0034d41e4..ccf150007 100644 --- a/src/Qtx/QtxOperations.cxx +++ b/src/Qtx/QtxOperations.cxx @@ -14,31 +14,28 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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..642a3bf31 100644 --- a/src/Qtx/QtxOperations.h +++ b/src/Qtx/QtxOperations.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxOperations.h // Author: Alexander SOLOVYOV @@ -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..b4b32bb29 100644 --- a/src/Qtx/QtxParser.cxx +++ b/src/Qtx/QtxParser.cxx @@ -14,18 +14,16 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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..0a0b05a16 100644 --- a/src/Qtx/QtxParser.h +++ b/src/Qtx/QtxParser.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxParser.h // Author: Alexander SOLOVYOV @@ -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..fd098e7ef 100755 --- a/src/Qtx/QtxPathDialog.cxx +++ b/src/Qtx/QtxPathDialog.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxPathDialog.cxx // Author: Sergey TELKOV @@ -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/QtxPathDialog.h b/src/Qtx/QtxPathDialog.h index 9bd743862..a4db3a7fd 100755 --- a/src/Qtx/QtxPathDialog.h +++ b/src/Qtx/QtxPathDialog.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxPathDialog.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxPopupMenu.cxx b/src/Qtx/QtxPopupMenu.cxx index 5da53d034..8a1a4e458 100644 --- a/src/Qtx/QtxPopupMenu.cxx +++ b/src/Qtx/QtxPopupMenu.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxPopupMenu.h" @@ -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/QtxPopupMenu.h b/src/Qtx/QtxPopupMenu.h index 4774ef062..01dd27041 100644 --- a/src/Qtx/QtxPopupMenu.h +++ b/src/Qtx/QtxPopupMenu.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef QTXPOPUPMENU_H #define QTXPOPUPMENU_H diff --git a/src/Qtx/QtxPopupMgr.cxx b/src/Qtx/QtxPopupMgr.cxx index f01716c16..5f0df3de8 100644 --- a/src/Qtx/QtxPopupMgr.cxx +++ b/src/Qtx/QtxPopupMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxPopupMgr.h" @@ -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..7bc260b3b 100644 --- a/src/Qtx/QtxPopupMgr.h +++ b/src/Qtx/QtxPopupMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef __QTX_POPUP_MGR_HEADER__ @@ -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..e96a57e04 100644 --- a/src/Qtx/QtxResourceEdit.cxx +++ b/src/Qtx/QtxResourceEdit.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxResourceEdit.cxx // Author: Sergey TELKOV @@ -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..fc816fe3b 100644 --- a/src/Qtx/QtxResourceEdit.h +++ b/src/Qtx/QtxResourceEdit.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxResourceEdit.h // Author: Sergey TELKOV @@ -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..f53df0c55 100644 --- a/src/Qtx/QtxResourceMgr.cxx +++ b/src/Qtx/QtxResourceMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxResourceMgr.h" @@ -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..0bf57831c 100644 --- a/src/Qtx/QtxResourceMgr.h +++ b/src/Qtx/QtxResourceMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef QTX_RESOURCEMGR_H #define QTX_RESOURCEMGR_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/QtxStdOperations.cxx b/src/Qtx/QtxStdOperations.cxx index 6d612b299..8e0a33e01 100644 --- a/src/Qtx/QtxStdOperations.cxx +++ b/src/Qtx/QtxStdOperations.cxx @@ -14,33 +14,30 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "QtxStdOperations.h" #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..3631d7b95 100644 --- a/src/Qtx/QtxStdOperations.h +++ b/src/Qtx/QtxStdOperations.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxStdOperations.h // Author: Alexander SOLOVYOV @@ -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..1f7c0be55 100644 --- a/src/Qtx/QtxTable.cxx +++ b/src/Qtx/QtxTable.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxTable.cxx // Author: Sergey TELKOV @@ -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/QtxTable.h b/src/Qtx/QtxTable.h index bb8f5c0ef..b7175d08e 100644 --- a/src/Qtx/QtxTable.h +++ b/src/Qtx/QtxTable.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxTable.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxToolBar.cxx b/src/Qtx/QtxToolBar.cxx index b5f32845e..cf585db64 100644 --- a/src/Qtx/QtxToolBar.cxx +++ b/src/Qtx/QtxToolBar.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxToolBar.cxx // Author: Sergey TELKOV @@ -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/QtxToolBar.h b/src/Qtx/QtxToolBar.h index 851f4d9cb..57512f40d 100644 --- a/src/Qtx/QtxToolBar.h +++ b/src/Qtx/QtxToolBar.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxToolBar.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxToolTip.cxx b/src/Qtx/QtxToolTip.cxx index 5141e127d..530afca6d 100755 --- a/src/Qtx/QtxToolTip.cxx +++ b/src/Qtx/QtxToolTip.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxToolTip.cxx // Author: Sergey TELKOV @@ -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/QtxToolTip.h b/src/Qtx/QtxToolTip.h index 0901137e9..c8b9d704b 100755 --- a/src/Qtx/QtxToolTip.h +++ b/src/Qtx/QtxToolTip.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxToolTip.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxWorkspaceAction.cxx b/src/Qtx/QtxWorkspaceAction.cxx index c630ff47d..f06c5c2a4 100644 --- a/src/Qtx/QtxWorkspaceAction.cxx +++ b/src/Qtx/QtxWorkspaceAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkspaceAction.cxx // Author: Sergey TELKOV @@ -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/QtxWorkspaceAction.h b/src/Qtx/QtxWorkspaceAction.h index 3df49c798..2dfee9cdb 100644 --- a/src/Qtx/QtxWorkspaceAction.h +++ b/src/Qtx/QtxWorkspaceAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkspaceAction.h // Author: Sergey TELKOV diff --git a/src/Qtx/QtxWorkstack.cxx b/src/Qtx/QtxWorkstack.cxx index c267236f2..16bdb04b1 100644 --- a/src/Qtx/QtxWorkstack.cxx +++ b/src/Qtx/QtxWorkstack.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkstack.cxx // Author: Sergey TELKOV @@ -36,13 +36,13 @@ #include #include #include +#include #define DARK_COLOR_LIGHT 250 + /*! - Class: QtxWorkstack [Public] - Descr: + Constructor */ - QtxWorkstack::QtxWorkstack( QWidget* parent ) : QWidget( parent ), myWin( 0 ), @@ -66,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; @@ -86,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; @@ -143,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) { @@ -222,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) @@ -247,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 ) { @@ -709,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 ) @@ -722,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 ) @@ -744,6 +772,10 @@ void QtxWorkstack::onRename() myWorkWin->setCaption( newName ); } +/*! + Wraps area into new splitter + \return new splitter +*/ QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area ) { if ( !area ) @@ -772,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 ) @@ -816,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; @@ -833,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(); @@ -842,6 +887,9 @@ void QtxWorkstack::onWindowActivated( QWidget* wid ) setActiveArea( (QtxWorkstackArea*)obj ); } +/*! + SLOT: called on window deactivating +*/ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area ) { if ( myArea != area ) @@ -864,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() ); @@ -904,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() ) @@ -918,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 ) @@ -937,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 ) @@ -955,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 ) @@ -973,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(); @@ -997,6 +1078,9 @@ QtxWorkstackArea* QtxWorkstack::targetArea() return area; } +/*! + \return current area (that has focus) +*/ QtxWorkstackArea* QtxWorkstack::currentArea() const { QtxWorkstackArea* area = 0; @@ -1011,6 +1095,9 @@ QtxWorkstackArea* QtxWorkstack::currentArea() const return area; } +/*! + Creates new area +*/ QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const { QtxWorkstackArea* area = new QtxWorkstackArea( parent ); @@ -1024,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; @@ -1047,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; @@ -1070,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; @@ -1087,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; @@ -1132,10 +1237,289 @@ void QtxWorkstack::updateState( QSplitter* split ) } /*! - Class: QtxWorkstackArea [Internal] - Descr: + 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 ) + return; + + const QObjectList* objs = split->children(); + if ( objs ) + { + // make up a sizes string: integer values are separated by ':' char + QValueList sizes = split->sizes(); + QString sizesStr; + for ( QValueList::Iterator sIt = sizes.begin(); sIt != sizes.end(); ++sIt ) { + if ( *sIt > 1 ) // size 1 pixel usually means empty Workstack area, which will NOT be re-created, + sizesStr += QString( ":%1" ).arg( *sIt ); // so we don't need to store its size + } + if ( !sizesStr.isEmpty() ) // cut the first ':' + sizesStr = sizesStr.right( sizesStr.length()-1 ); + + // count all QSplitter-s and QtxWorkstackArea-s + // int nChilds( 0 ); + // QObjectListIt it( *objs ); + // for ( ; it.current(); ++it ) + // { + // if ( it.current()->inherits( "QSplitter" ) || + // it.current()->inherits( "QtxWorkstackArea" ) ) + // nChilds++; + // } + + info += QString( "(splitter orientation=%1 sizes=%3 " ).arg( split->orientation() ).arg( sizesStr ); + + for ( QObjectListIt it( *objs ); it.current(); ++it ) + { + if ( it.current()->inherits( "QSplitter" ) ) + splitterInfo( (QSplitter*)it.current(), info ); + else if ( it.current()->inherits( "QtxWorkstackArea" ) ) { + QtxWorkstackArea* area = (QtxWorkstackArea*)it.current(); + if ( area->isEmpty() ) + continue; + info += QString( "(views active='%1'" ).arg( area->activeWidget()->name() ); + QWidgetList views = area->widgetList(); + for ( QWidgetListIt wIt( views ); wIt.current(); ++wIt ) + info += QString( " '%1'" ).arg( wIt.current()->name() ); + info += ')'; + } + } + } + info += ')'; +} + + +//Cuts starting '(' symbol and ending '(' symbol +void cutBrackets( QString& parameters ) +{ + QChar c1 = parameters[0]; + QChar c2 = parameters.length()-1; + if ( !parameters.isEmpty() && c1 == '(' && c2 == ')' ) + 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" +*/ +QString getValue( const QString& str, const QString& valName ) +{ + int i = str.find( valName ); + if ( i != -1 ) { + int equal_i = str.find( '=', i ); + if ( equal_i != -1 ) { + int space_i = str.find( ' ', ++equal_i ); + if ( space_i != -1 ) + return str.mid( equal_i, space_i-equal_i ); + } + } + return QString( "" ); +} + +/* + checks format of splitter parameters string +*/ +bool checkFormat( const QString& parameters ) +{ + QString params( parameters ); + // 1. begins and ends with brackets + QChar c1 = params[0]; + QChar c2 = params.length()-1; + bool ok = ( c1 == '(' && c2 == ')' ); + if ( !ok ) return ok; + ::cutBrackets( params ); + // 2. has splitter word + ok = ( params.left( 8 ) == "splitter" ); + if ( !ok ) return ok; + // 3. has children? = '(' is found + int i = params.find( '(' ); + ok = i != -1; + if ( !ok ) return ok; + params = params.left( i ); // cut all children, they will be checked later + // 4. has orientation word and correct value + ::getValue( params, "orientation" ).toInt( &ok ); + if ( !ok ) return ok; + // 5. has sizes word and values + ok = ! ::getValue( params, "sizes" ).isEmpty(); + if ( !ok ) return ok; + // 6. check children -> number of '(' == number of ')' in original string + ok = ( parameters.contains( '(' ) == parameters.contains( ')' ) ); + return ok; +} + +/* + Returns children of splitter in a list. Children are separated by '(' and ')' symbols +*/ +QStringList getChildren( const QString& str ) +{ + QStringList lst; + if ( !str.startsWith( "(" ) ) + return lst; + + int i = 1, + nOpen = 1, // count brackets: '(' increments nOpen, ')' decrements + start = 0; + while ( i < str.length() ) { + if ( str[i] == '(' ) { + nOpen++; + if ( nOpen == 1 ) + start = i; + } + else if ( str[i] == ')' ) { + nOpen--; + if ( nOpen == 0 ) + lst.append( str.mid( start, i-start+1 ) ); + } + i++; + } + + return lst; +} + +// for a string like "views active='AnotherView' 'GLView' 'AnotherView'" +// getViewName( example, 0 ) returns "GLView", +// getViewName( example, 1 ) -> "AnotherView", etc. +QString getViewName( const QString& str, int i ) +{ + QRegExp exp( "\\s'\\w+'" ); + int start = 0; // start index of view name in the string + int num = 0 ; // index of found match + while ( ( start = exp.search( str, start ) ) != -1 && num < i ) { + start += exp.matchedLength(); + num ++; + } + if ( start != -1 ) // +2 and -3 avoid starting space and starting and ending ' symbols + return str.mid( start+2, exp.matchedLength()-3 ); + + return QString( "" ); +} + +// returns widget with given name +QWidget* getView( const QWidget* parent, const QString& aName ) +{ + QWidget* view = 0; + QObjectList *l = parent->topLevelWidget()->queryList( "QWidget", aName, false, true ); + if ( !l->isEmpty() ) + view = dynamic_cast( l->first() ); + delete l; + return view; +} + +/*! + Installs a splitter described by given parameters string +*/ +void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters, QMap< QSplitter*, QValueList >& sMap ) +{ + if ( !::checkFormat( parameters ) ) { + printf( "\nInvalid format of workstack parameters. Positions of viewers can not be restored.\n" ); + return; + } + + QString params( parameters ); + ::cutBrackets( params ); + + // get splitter sizes and store it in the map for future setting + QValueList sizes; + QStringList sizesLst = QStringList::split( ':', ::getValue( params, "sizes" ) ); + for ( QStringList::Iterator it = sizesLst.begin(); it != sizesLst.end(); ++it ) + sizes.append( (*it).toInt() ); + sMap[ splitter ] = sizes; + + // set orientation of splitter + int orient = ::getValue( params, "orientation" ).toInt(); + splitter->setOrientation( (Qt::Orientation)orient ); + + // get children + QString options = params.left( params.find( '(' ) ); + QString childrenStr = params.right( params.length()-options.length() ); + QStringList children = ::getChildren( childrenStr ); + + // debug output.. + // printf (" splitter orient=%d, sizes_count=%d, children=%d\n", orient, sizes.count(), children.count() ); + // for ( QStringList::Iterator tit = children.begin(); tit != children.end(); ++tit ) + // printf (" |-> child = [%s]\n", (*tit).latin1() ); + + for ( QStringList::Iterator it = children.begin(); it != children.end(); ++it ) { + if ( (*it).startsWith( "(splitter" ) ) { + QSplitter* newSplitter = new QSplitter( splitter ); + setSplitter( newSplitter, *it, sMap ); + } + else if ( (*it).startsWith( "(views" ) ) { + QtxWorkstackArea* newArea = createArea( splitter ); + QString activeViewName = ::getValue( *it, "active" ); + QWidget* activeView( 0 ); + activeViewName = activeViewName.mid( 1, activeViewName.length()-2 ); // chop off ' symbols + int i = 0; + QString viewName = ::getViewName( *it, i ); + while ( !viewName.isEmpty() ) { + if ( QWidget* view = ::getView( splitter, viewName ) ) { + newArea->insertWidget( view ); + if ( activeViewName == view->name() ) + activeView = view; + } + viewName = ::getViewName( *it, ++i ); + } + if ( activeView ) + newArea->setActiveWidget( activeView ); + } + } +} + +/*! + 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 + QPtrList splitList; + QPtrList areaList; + splitters( mySplit, splitList, false ); + areas( mySplit, areaList, false ); + for ( QPtrListIterator iter( splitList ); iter.current(); ++iter ) + delete iter.current(); + for ( QPtrListIterator it( areaList ); it.current(); ++it ) + if ( it.current()->isEmpty() ) + delete it.current(); + + // restore splitter recursively + QMap< QSplitter*, QValueList > sMap; + setSplitter( mySplit, parameters, sMap ); + + // now mySplit may contains empty area (where all views were located before restoring) + // in order setSize to work correctly we have to exclude this area + areaList.clear(); + areas( mySplit, areaList, false ); + for ( QPtrListIterator delIt( areaList ); delIt.current(); ++delIt ) + if ( delIt.current()->isEmpty() ) + delete delIt.current(); + + qApp->processEvents(); + + // restore splitters' sizes (map of sizes is filled in setSplitters) + for ( QMap< QSplitter*, QValueList >::Iterator it = sMap.begin(); it != sMap.end(); ++it ) + it.key()->setSizes( it.data() ); + + 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'))" */ +QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters ) +{ + splitterInfo( mySplit, outParameters ); + return (*this); +} + +/*! + Constructor +*/ QtxWorkstackArea::QtxWorkstackArea( QWidget* parent ) : QWidget( parent ) { @@ -1170,11 +1554,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; @@ -1183,6 +1573,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 ) @@ -1217,6 +1612,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() ); @@ -1231,12 +1630,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 ) ) @@ -1262,6 +1669,9 @@ void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del ) updateState(); } +/*! + \return list of visible widgets +*/ QWidgetList QtxWorkstackArea::widgetList() const { QWidgetList lst; @@ -1273,21 +1683,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; @@ -1303,6 +1727,9 @@ void QtxWorkstackArea::show() setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false ); } +/*! + Hides area +*/ void QtxWorkstackArea::hide() { QMap map; @@ -1318,6 +1745,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(); @@ -1327,11 +1757,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; @@ -1345,6 +1781,9 @@ QtxWorkstack* QtxWorkstackArea::workstack() const return ws; } +/*! + Custom event filter +*/ bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e ) { if ( o->isWidgetType() ) @@ -1365,17 +1804,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; @@ -1388,6 +1838,9 @@ int QtxWorkstackArea::tabAt( const QPoint& p ) const return idx; } +/*! + Event handler for custom events +*/ void QtxWorkstackArea::customEvent( QCustomEvent* e ) { switch ( e->type() ) @@ -1416,6 +1869,9 @@ void QtxWorkstackArea::customEvent( QCustomEvent* e ) } } +/*! + Custom focus in event handler +*/ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) { QWidget::focusInEvent( e ); @@ -1423,6 +1879,9 @@ void QtxWorkstackArea::focusInEvent( QFocusEvent* e ) emit activated( activeWidget() ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) { QWidget::mousePressEvent( e ); @@ -1430,6 +1889,9 @@ void QtxWorkstackArea::mousePressEvent( QMouseEvent* e ) emit activated( activeWidget() ); } +/*! + SLOT: called if button close is pressed +*/ void QtxWorkstackArea::onClose() { QWidget* wid = activeWidget(); @@ -1437,6 +1899,9 @@ void QtxWorkstackArea::onClose() wid->close(); } +/*! + SLOT: called if tab page is selected +*/ void QtxWorkstackArea::onSelected( int id ) { updateCurrent(); @@ -1444,6 +1909,9 @@ void QtxWorkstackArea::onSelected( int id ) emit activated( activeWidget() ); } +/*! + SLOT: called if active tab page is dragged +*/ void QtxWorkstackArea::onDragActiveTab() { QtxWorkstackChild* c = child( activeWidget() ); @@ -1453,6 +1921,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; @@ -1470,26 +1941,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; @@ -1505,6 +1991,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 ) ); @@ -1523,6 +2013,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; @@ -1534,6 +2028,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; @@ -1542,6 +2040,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; @@ -1550,6 +2052,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 ); @@ -1559,6 +2065,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 ) @@ -1568,6 +2079,9 @@ void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on ) updateState(); } +/*! + Update +*/ void QtxWorkstackArea::updateState() { bool updBar = myBar->isUpdatesEnabled(); @@ -1669,6 +2183,9 @@ void QtxWorkstackArea::updateState() } } +/*! + \return first unshared widget id +*/ int QtxWorkstackArea::generateId() const { QMap map; @@ -1683,11 +2200,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 ) @@ -1696,6 +2222,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; @@ -1705,10 +2235,8 @@ QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const } /*! - Class: QtxWorkstackChild [Internal] - Descr: + Constructor */ - QtxWorkstackChild::QtxWorkstackChild( QWidget* wid, QWidget* parent ) : QHBox( parent ), myWidget( wid ) @@ -1719,6 +2247,9 @@ myWidget( wid ) connect( myWidget, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) ); } +/*! + Destructor +*/ QtxWorkstackChild::~QtxWorkstackChild() { qApp->removeEventFilter( this ); @@ -1731,11 +2262,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() ) @@ -1755,6 +2292,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() ) @@ -1764,6 +2304,9 @@ void QtxWorkstackChild::onDestroyed( QObject* obj ) deleteLater(); } +/*! + Custom child event handler +*/ void QtxWorkstackChild::childEvent( QChildEvent* e ) { if ( e->type() == QEvent::ChildRemoved && e->child() == widget() ) @@ -1775,20 +2318,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(); @@ -1810,6 +2358,10 @@ void QtxWorkstackTabBar::setActive( const bool on ) update(); } +/*! + \return tab rectangle + \param idx - tab index +*/ QRect QtxWorkstackTabBar::tabRect( const int idx ) const { QRect r; @@ -1838,6 +2390,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() ) ) @@ -1849,6 +2404,9 @@ void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e ) QTabBar::mouseMoveEvent( e ); } +/*! + Custom mouse press event handler +*/ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) { QTabBar::mousePressEvent( e ); @@ -1857,6 +2415,9 @@ void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e ) myId = currentTab(); } +/*! + Custom mouse release event handler +*/ void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e ) { QTabBar::mouseReleaseEvent( e ); @@ -1867,12 +2428,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() ) @@ -1885,10 +2452,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 ), @@ -1900,6 +2465,9 @@ myChild( child ) qApp->installEventFilter( this ); } +/*! + Destructor +*/ QtxWorkstackDrag::~QtxWorkstackDrag() { qApp->removeEventFilter( this ); @@ -1907,6 +2475,9 @@ QtxWorkstackDrag::~QtxWorkstackDrag() endDrawRect(); } +/*! + Custom event filter +*/ bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e ) { switch ( e->type() ) @@ -1926,6 +2497,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; @@ -1933,6 +2508,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() ) @@ -1944,6 +2524,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 ) ) @@ -1961,12 +2546,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 ) @@ -1991,12 +2582,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/QtxWorkstack.h b/src/Qtx/QtxWorkstack.h index 8157a2a81..c31479cc6 100644 --- a/src/Qtx/QtxWorkstack.h +++ b/src/Qtx/QtxWorkstack.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkstack.h // Author: Sergey TELKOV @@ -81,6 +81,10 @@ public: void SetRelativePosition( QWidget* wid, const Qt::Orientation o, const double pos ); void SetRelativePositionInSplitter( QWidget* wid, const double pos ); + // asv: Store/Restore visual parameters - geometry of inner windows + QtxWorkstack& operator<<( const QString& ); + QtxWorkstack& operator>>( QString& ); + signals: void windowActivated( QWidget* ); @@ -125,7 +129,10 @@ private: void distributeSpace( QSplitter* ) const; int setPosition( QWidget* wid, QSplitter* split, const Qt::Orientation o, const int need_pos, const int splitter_pos ); - + + void splitterInfo( QSplitter*, QString& ) const; + void setSplitter( QSplitter*, const QString&, QMap< QSplitter*,QValueList >& ); + private: QWidget* myWin; QtxWorkstackArea* myArea; diff --git a/src/Qtx/QtxWorkstackAction.cxx b/src/Qtx/QtxWorkstackAction.cxx index c26a9b0aa..a1dbcb974 100644 --- a/src/Qtx/QtxWorkstackAction.cxx +++ b/src/Qtx/QtxWorkstackAction.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkstackAction.cxx // Author: Sergey TELKOV @@ -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/Qtx/QtxWorkstackAction.h b/src/Qtx/QtxWorkstackAction.h index 6e91ddda2..650184d24 100644 --- a/src/Qtx/QtxWorkstackAction.h +++ b/src/Qtx/QtxWorkstackAction.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File: QtxWorkstackAction.h // Author: Sergey TELKOV diff --git a/src/RegistryDisplay/HelpWindow.cxx b/src/RegistryDisplay/HelpWindow.cxx index a75b6d4e0..a94773105 100755 --- a/src/RegistryDisplay/HelpWindow.cxx +++ b/src/RegistryDisplay/HelpWindow.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/HelpWindow.hxx b/src/RegistryDisplay/HelpWindow.hxx index 5b374d193..31f6405de 100755 --- a/src/RegistryDisplay/HelpWindow.hxx +++ b/src/RegistryDisplay/HelpWindow.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/RegistryDisplay/IntervalWindow.cxx b/src/RegistryDisplay/IntervalWindow.cxx index 9f1a5d212..780a876b4 100755 --- a/src/RegistryDisplay/IntervalWindow.cxx +++ b/src/RegistryDisplay/IntervalWindow.cxx @@ -1,8 +1,22 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME RegistryDisplay : GUI for Registry server implementation // // File : IntervalWindow.cxx // Author : Oksana TCHEBANOVA @@ -20,6 +34,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 +90,13 @@ IntervalWindow::IntervalWindow ( QWidget* parent ) END_OF("IntervalWindow constructor") } + +/*! + Destructor +*/ IntervalWindow::~IntervalWindow() {} -/* + +/*! Sets start interval size */ void IntervalWindow::setValue(const int size) @@ -82,7 +104,7 @@ void IntervalWindow::setValue(const int size) mySpinBox->setValue(size); } -/* +/*! Gets interval size */ int IntervalWindow::getValue() @@ -90,7 +112,7 @@ int IntervalWindow::getValue() return mySpinBox->value(); } -/* +/*! gets a pointer to myButtonOk */ QPushButton* IntervalWindow::Ok() @@ -98,7 +120,7 @@ QPushButton* IntervalWindow::Ok() return myButtonOk; } -/* +/*! gets a pointer to myButtonCancel */ QPushButton* IntervalWindow::Cancel() diff --git a/src/RegistryDisplay/IntervalWindow.hxx b/src/RegistryDisplay/IntervalWindow.hxx index 76fcecaa9..420ce5a0a 100755 --- a/src/RegistryDisplay/IntervalWindow.hxx +++ b/src/RegistryDisplay/IntervalWindow.hxx @@ -1,8 +1,22 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME RegistryDisplay : GUI for Registry server implementation // // File : IntervalWindow.hxx // Author : Oksana TCHEBANOVA diff --git a/src/RegistryDisplay/Makefile.in b/src/RegistryDisplay/Makefile.in index aa0a8550e..46b60c25a 100755 --- a/src/RegistryDisplay/Makefile.in +++ b/src/RegistryDisplay/Makefile.in @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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..19d3af36b 100755 --- a/src/RegistryDisplay/RegWidget.cxx +++ b/src/RegistryDisplay/RegWidget.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/RegistryDisplay/RegWidget.h b/src/RegistryDisplay/RegWidget.h index a34d5656c..3a1431777 100755 --- a/src/RegistryDisplay/RegWidget.h +++ b/src/RegistryDisplay/RegWidget.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/RegistryDisplay/RegWidgetFactory.cxx b/src/RegistryDisplay/RegWidgetFactory.cxx index e52b4bd43..7f285e686 100755 --- a/src/RegistryDisplay/RegWidgetFactory.cxx +++ b/src/RegistryDisplay/RegWidgetFactory.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/ResExporter/Makefile.in b/src/ResExporter/Makefile.in index d14c977ba..e1838e26d 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vadim SANDLER (OCN) # Module : SalomeApp diff --git a/src/ResExporter/ResourceExporter.cxx b/src/ResExporter/ResourceExporter.cxx index dd7202b63..7788f8b7c 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/ or email : webmaster.salome@opencascade.com +// +/*! + 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..d1eb1c2bc 100755 --- a/src/SALOME_PY/Makefile.in +++ b/src/SALOME_PY/Makefile.in @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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..eb9a20756 100755 --- a/src/SALOME_PY/SalomePy.cxx +++ b/src/SALOME_PY/SalomePy.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/Makefile.in b/src/SALOME_PYQT/Makefile.in index a85de52c6..f3b93eac7 100755 --- a/src/SALOME_PYQT/Makefile.in +++ b/src/SALOME_PYQT/Makefile.in @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in index d5481f52a..41276e5dc 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in @@ -1,11 +1,24 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : Makefile.in # Author : Nicolas REJNERI # Module : SALOME -# $Header$ top_srcdir=@top_srcdir@ top_builddir=../../.. @@ -63,7 +76,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_GUI.h b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.h index e6276148d..8c436985c 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined ( SALOME_PYQT_GUI_H ) #define SALOME_PYQT_GUI_H 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 5a7998eaf..d2f73a653 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx @@ -1,29 +1,21 @@ // 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 +// License as published by the Free Software Foundation; either // version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//============================================================================= -// File : SALOME_PYQT_Module.cxx -// Created : 25/04/05 -// Author : Vadim SANDLER -// Project : SALOME -// Copyright : 2003-2005 CEA/DEN, EDF R&D -// $Header : $ -//============================================================================= #include "PyInterp_Dispatcher.h" #include "SALOME_PYQT_Module.h" @@ -36,12 +28,15 @@ #include "SalomeApp_Study.h" #include "QtxWorkstack.h" +#include "QtxActionMenuMgr.h" +#include "QtxActionToolMgr.h" #include #include #include #include #include +#include #include #ifndef WIN32 @@ -56,67 +51,80 @@ using namespace std; -/////////////////////////////////////////////////////////////////////////////// -// Default name of the module, replaced at the moment of module creation -#define __DEFAULT_NAME__ "SALOME_PYQT_Module" +/*! + \var __DEFAULT_NAME__ - Default name of the module, replaced at the moment of module creation +*/ +const char* __DEFAULT_NAME__ = "SALOME_PYQT_Module"; -/////////////////////////////////////////////////////////////////////////////// -// If __CALL_OLD_METHODS__ macro is not defined the invoking of obsolete Python +/*! + \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) #ifdef __CALL_OLD_METHODS__ const bool IsCallOldMethods = true; -#else +#else 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 createPopup ( QPopupMenu* menu, - const QString& context, - const QString& parent, + 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, + void insertPopupItems( QDomNode& parentNode, QPopupMenu* menu ); private: SALOME_PYQT_Module* myModule; QDomDocument myDoc; + QStringList myMenuItems; + QStringList myCurrentMenu; + bool myMenuCreated; }; -//============================================================================= // SALOME_PYQT_Module class implementation (implements CAM_Module API for // all Python-based SALOME module -//============================================================================= // While the SalomePyQtGUI library is not imported in Python it's initialization function // should be called manually (and only once) in order to initialize global sip data // and to get C API from sip : sipBuildResult for example +#if defined(SIP_VERS_v4_old) || defined(SIP_VERS_v4_new) +#define INIT_FUNCTION initSalomePyQtGUI #if defined(SIP_STATIC_MODULE) -extern "C" void initSalomePyQtGUI(); +extern "C" void INIT_FUNCTION(); +#else +PyMODINIT_FUNC INIT_FUNCTION(); +#endif #else -PyMODINIT_FUNC initSalomePyQtGUI(); +#define INIT_FUNCTION initlibSalomePyQtGUIc +extern "C" void INIT_FUNCTION(); #endif /*! @@ -129,7 +137,7 @@ extern "C" { if ( !alreadyInitialized ) { // call only once (see above) ! PyEval_RestoreThread( KERNEL_PYTHON::_gtstate ); - initSalomePyQtGUI(); + INIT_FUNCTION(); PyEval_ReleaseThread( KERNEL_PYTHON::_gtstate ); alreadyInitialized = !alreadyInitialized; } @@ -137,7 +145,7 @@ extern "C" { } } -/*! +/*! * Static variables definition */ SALOME_PYQT_Module::InterpMap SALOME_PYQT_Module::myInterpMap; @@ -147,20 +155,19 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::myInitModule = 0; * Little trick : provide an access to being activated Python module from outside; * needed by the SalomePyQt library :( */ -SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule() -{ - return myInitModule; +SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule() +{ + return myInitModule; } /*! * 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 ) { - myMenuActionList.setAutoDelete( false ); - myPopupActionList.setAutoDelete( false ); - myToolbarActionList.setAutoDelete( false ); } /*! @@ -168,9 +175,6 @@ SALOME_PYQT_Module::SALOME_PYQT_Module() : */ SALOME_PYQT_Module::~SALOME_PYQT_Module() { - myMenuActionList.clear(); - myPopupActionList.clear(); - myToolbarActionList.clear(); if ( myXmlHandler ) delete myXmlHandler; } @@ -181,7 +185,7 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module() * * This method is used for creation of the menus, toolbars and other staff. * There are two ways: - * - for obsolete modules this method first tries to read _.xml + * - for obsolete modules this method first tries to read _.xml * resource file which contains a menu, toolbars and popup menus description. * - new modules can create menus by by calling the corresponding methods of SalomePyQt * Python API in the Python module's initialize() method which is called from here. @@ -190,6 +194,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 @@ -199,12 +205,10 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app ) QString aName = name( "" ); QString aFileName = aName + "_" + aLang + ".xml"; aFileName = aResMgr->path( "resources", aName, aFileName ); - - // parse XML file if it is found and create actions - if ( !myXmlHandler && !aFileName.isEmpty() ) { + + // create XML handler instance + if ( !myXmlHandler && !aFileName.isEmpty() && QFile::exists( aFileName ) ) myXmlHandler = new SALOME_PYQT_XmlHandler( this, aFileName ); - myXmlHandler->createActions(); - } // perform internal initialization and call module's initialize() method // InitializeReq: request class for internal init() operation @@ -212,11 +216,11 @@ void SALOME_PYQT_Module::initialize( CAM_Application* app ) { public: InitializeReq( CAM_Application* _app, - SALOME_PYQT_Module* _obj ) + SALOME_PYQT_Module* _obj ) : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true) myApp( _app ), myObj( _obj ) {} - + protected: virtual void execute() { @@ -241,7 +245,7 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy ) MESSAGE( "SALOME_PYQT_Module::activateModule" ); bool res = SalomeApp_Module::activateModule( theStudy ); - + if ( !res ) return res; @@ -249,12 +253,12 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy ) class ActivateReq : public PyInterp_Request { public: - ActivateReq( SUIT_Study* _study, - SALOME_PYQT_Module* _obj ) + ActivateReq( 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() { @@ -273,6 +277,38 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy ) setMenuShown( true ); setToolShown( true ); + if ( menuMgr() ) + 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; } @@ -284,7 +320,13 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) { MESSAGE( "SALOME_PYQT_Module::deactivateModule" ); - bool res = SalomeApp_Module::deactivateModule( theStudy ); + if ( menuMgr() ) + disconnect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ), + this, SLOT( onMenuHighlighted( int, int ) ) ); + + // remove menus & toolbars created from XML file if required + if ( myXmlHandler ) + myXmlHandler->clearActions(); // deactivate menus, toolbars, etc setMenuShown( false ); @@ -294,13 +336,13 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy ) class DeactivateReq : public PyInterp_LockRequest { public: - DeactivateReq( PyInterp_base* _py_interp, - SUIT_Study* _study, - SALOME_PYQT_Module* _obj ) + DeactivateReq( PyInterp_base* _py_interp, + SUIT_Study* _study, + SALOME_PYQT_Module* _obj ) : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true) myStudy ( _study ), myObj ( _obj ) {} - + protected: virtual void execute() { @@ -315,7 +357,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 ) ); } /*! @@ -337,13 +410,13 @@ void SALOME_PYQT_Module::onGUIEvent() class GUIEvent : public PyInterp_LockRequest { public: - GUIEvent( PyInterp_base* _py_interp, + GUIEvent( PyInterp_base* _py_interp, SALOME_PYQT_Module* _obj, - int _id ) + int _id ) : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true) myId ( _id ), myObj ( _obj ) {} - + protected: virtual void execute() { @@ -362,19 +435,19 @@ void SALOME_PYQT_Module::onGUIEvent() /*! * Processes GUI action (from context popup menu, only for XML-based actions!) */ -void SALOME_PYQT_Module::onGUIEvent( int id ) +void SALOME_PYQT_Module::onGUIEvent( int id ) { // perform synchronous request to Python event dispatcher class GUIEvent : public PyInterp_LockRequest { public: - GUIEvent( PyInterp_base* _py_interp, + GUIEvent( PyInterp_base* _py_interp, SALOME_PYQT_Module* _obj, - int _id ) + int _id ) : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true) myId ( _id ), myObj ( _obj ) {} - + protected: virtual void execute() { @@ -390,7 +463,43 @@ void SALOME_PYQT_Module::onGUIEvent( int id ) PyInterp_Dispatcher::Get()->Exec( new GUIEvent( myInterp, this, id ) ); } -/*! +/*! + * Menu highlight processing + */ +void SALOME_PYQT_Module::onMenuHighlighted( int menu, int submenu ) +{ + if ( !action( menu ) && registered( menu, submenu ) ) { + // perform synchronous request to Python event dispatcher + class MenuHighlightEvent : public PyInterp_LockRequest + { + public: + MenuHighlightEvent( PyInterp_base* _py_interp, + SALOME_PYQT_Module* _obj, + int _menu, + int _submenu ) + : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true) + myMenu ( _menu ), + mySubMenu( _submenu ), + myObj ( _obj ) {} + + protected: + virtual void execute() + { + myObj->menuHighlight( myMenu, mySubMenu ); + } + + private: + int myMenu; + int mySubMenu; + SALOME_PYQT_Module* myObj; + }; + + // Posting the request + PyInterp_Dispatcher::Get()->Exec( new MenuHighlightEvent( myInterp, this, menu, submenu ) ); + } +} + +/*! Context popup menu request. Called when user activates popup menu in some window (view, object browser, etc). */ @@ -401,15 +510,15 @@ void SALOME_PYQT_Module::contextMenuPopup( const QString& theContext, QPopupMenu class PopupMenuEvent : public PyInterp_LockRequest { public: - PopupMenuEvent( PyInterp_base* _py_interp, + PopupMenuEvent( PyInterp_base* _py_interp, SALOME_PYQT_Module* _obj, - const QString& _context, - QPopupMenu* _popup ) + const QString& _context, + QPopupMenu* _popup ) : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true) - myContext( _context ), + myContext( _context ), myPopup ( _popup ), myObj ( _obj ) {} - + protected: virtual void execute() { @@ -430,13 +539,13 @@ void SALOME_PYQT_Module::contextMenuPopup( const QString& theContext, QPopupMenu /*! * Defines the dockable window associated with the module. - * To fill the list of windows the correspondind Python module's windows() + * To fill the list of windows the correspondind Python module's windows() * method is called from SALOME_PYQT_Module::init() method. * By default, ObjectBrowser, PythonConsole and LogWindow are provided. */ void SALOME_PYQT_Module::windows( QMap& mappa ) const { - // First clear the output parameters + // First clear the output parameters QMap::ConstIterator it; for ( it = myWindowsMap.begin(); it != myWindowsMap.end(); ++it ) { mappa[ it.key() ] = it.data(); @@ -445,7 +554,7 @@ void SALOME_PYQT_Module::windows( QMap& mappa ) const /*! * Defines the compatible views which should be opened on module activation. - * To fill the list of views the correspondind Python module's views() + * To fill the list of views the correspondind Python module's views() * method is called from SALOME_PYQT_Module::init() method. * By default, the list is empty. */ @@ -482,20 +591,15 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) // initialize Python subinterpreter (on per study) and put it in variable initInterp( aStudyId ); - if ( !myInterp ) - return; // Error + if ( !myInterp ) + return; // Error // import Python GUI module importModule(); if ( !myModule ) - return; // Error - - myInitModule = this; + return; // Error - if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ - // call Python module's setWorkspace() method - setWorkSpace(); - } //__CALL_OLD_METHODS__ + myInitModule = this; // then call Python module's initialize() method // ... first get python lock @@ -508,7 +612,7 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) PyErr_Print(); } } - + // get the windows list from the Python module by calling windows() method // ... first put default values myWindowsMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft ); @@ -568,11 +672,10 @@ void SALOME_PYQT_Module::init( CAM_Application* app ) } /*! - * Performs internal activation: + * 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 ) { @@ -582,14 +685,53 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy ) // initialize Python subinterpreter (on per study) and put it in variable initInterp( aStudyId ); - if ( !myInterp ) - return; // Error + if ( !myInterp ) + return; // Error // import Python GUI module importModule(); if ( !myModule ) - return; // Error - + return; // Error + + // 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(); @@ -602,18 +744,10 @@ 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(); - } - } } /*! - * Performs internal deactivation: + * Performs internal deactivation: * - calls Python module's deactivate() method */ void SALOME_PYQT_Module::deactivate( SUIT_Study* theStudy ) @@ -646,14 +780,19 @@ void SALOME_PYQT_Module::studyChanged( SUIT_Study* theStudy ) // initialize Python subinterpreter (on per study) and put it in variable initInterp( aStudyId ); - if ( !myInterp ) - return; // Error + if ( !myInterp ) + return; // Error // import Python GUI module importModule(); if ( !myModule ) - return; // Error - + return; // Error + + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + // call Python module's setWorkspace() method + setWorkSpace(); + } //__CALL_OLD_METHODS__ + // get python lock PyLockWrapper aLock = myInterp->GetLockWrapper(); @@ -691,37 +830,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) @@ -738,17 +846,17 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the // import first if ( !myInterp || !myModule ) return; - - QString aContext( theContext ), aObject( "" ), aParent( "" ); - + + QString aContext( "" ), aObject( "" ), aParent( theContext ); + if ( IsCallOldMethods && PyObject_HasAttrString(myModule , "definePopup") ) { //__CALL_OLD_METHODS__ // call definePopup() Python module's function // this is obsolete function, used only for compatibility reasons - PyObjWrapper res(PyObject_CallMethod( myModule, - "definePopup", + PyObjWrapper res(PyObject_CallMethod( myModule, + "definePopup", "sss", - aContext.latin1(), - aObject.latin1(), + aContext.latin1(), + aObject.latin1(), aParent.latin1() ) ); if( !res ) { PyErr_Print(); @@ -772,7 +880,7 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the PyObjWrapper sipPopup( sipBuildResult( 0, "M", thePopupMenu, sipClass_QPopupMenu ) ); // then call Python module's createPopupMenu() method (for new modules) - if ( PyObject_HasAttrString(myModule , "createPopupMenu") ) { + if ( PyObject_HasAttrString(myModule , "createPopupMenu") ) { PyObjWrapper res1( PyObject_CallMethod( myModule, "createPopupMenu", "Os", @@ -790,8 +898,8 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the "customPopup", "Osss", sipPopup.get(), - aContext.latin1(), - aObject.latin1(), + aContext.latin1(), + aObject.latin1(), aParent.latin1() ) ); if( !res2 ) { PyErr_Print(); @@ -802,15 +910,15 @@ void SALOME_PYQT_Module::contextMenu( const QString& theContext, QPopupMenu* the /*! * Processes GUI event * - calls Python module's OnGUIEvent() method - */ + */ void SALOME_PYQT_Module::guiEvent( const int theId ) { // Python interpreter should be initialized and Python module should be // import first if ( !myInterp || !myModule ) return; - - if ( PyObject_HasAttrString(myModule , "OnGUIEvent") ) { + + if ( PyObject_HasAttrString(myModule , "OnGUIEvent") ) { PyObjWrapper res( PyObject_CallMethod( myModule, "OnGUIEvent", "i", theId ) ); if( !res ) { PyErr_Print(); @@ -818,6 +926,25 @@ void SALOME_PYQT_Module::guiEvent( const int theId ) } } +/*! + * Menu highlight processing + * - calls Python module's menuActivated(int,int) method + */ +void SALOME_PYQT_Module::menuHighlight( const int menu, const int submenu ) +{ + // Python interpreter should be initialized and Python module should be + // import first + if ( !myInterp || !myModule ) + return; + + if ( PyObject_HasAttrString(myModule , "menuHighlight") ) { + PyObjWrapper res( PyObject_CallMethod( myModule, "menuHighlight", "ii", menu, submenu ) ); + if( !res ) { + PyErr_Print(); + } + } +} + /*! * Initialises python subinterpreter (one per study) */ @@ -837,13 +964,13 @@ void SALOME_PYQT_Module::initInterp( int theStudyId ) } // not found - create a new one! /////////////////////////////////////////////////////////////////// - // Attention: the creation of Python interpretor must be protected + // Attention: the creation of Python interpretor must be protected // by a C++ Lock because of C threads /////////////////////////////////////////////////////////////////// myInterp = new SALOME_PYQT_PyInterp(); myInterp->initialize(); myInterpMap[ theStudyId ] = myInterp; - + // import 'salome' module and call 'salome_init' method; // do it only once on interpreter creation // ... first get python lock @@ -856,7 +983,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(); @@ -912,7 +1040,7 @@ void SALOME_PYQT_Module::setWorkSpace() // Error! PyErr_Print(); return; - } + } if ( IsCallOldMethods ) { //__CALL_OLD_METHODS__ // ... then get workspace object @@ -929,7 +1057,7 @@ void SALOME_PYQT_Module::setWorkSpace() } PyObjWrapper pyws( sipBuildResult( 0, "M", aWorkspace, sipClass_QWidget ) ); // ... and finally call Python module's setWorkspace() method (obsolete) - if ( PyObject_HasAttrString(myModule , "setWorkSpace") ) { + if ( PyObject_HasAttrString(myModule , "setWorkSpace") ) { PyObjWrapper res( PyObject_CallMethod( myModule, "setWorkSpace", "O", pyws.get() ) ); if( !res ) { PyErr_Print(); @@ -939,120 +1067,378 @@ void SALOME_PYQT_Module::setWorkSpace() } /*! - * Adds an action into private action list [internal usage] + * Returns default menu group */ -void SALOME_PYQT_Module::addAction( const PyQtGUIAction type, QAction* action ) +int SALOME_PYQT_Module::defaultMenuGroup() { - switch ( type ) { - case PYQT_ACTION_MENU: - myMenuActionList.append( action ); - break; - case PYQT_ACTION_TOOLBAL: - myToolbarActionList.append( action ); - break; - case PYQT_ACTION_POPUP: - myPopupActionList.append( action ); - break; - } + return __DEFAULT_GROUP__; } - /*! - * The next methods just call the parent implementation. + * The next methods call the parent implementation. * This is done to open protected methods from CAM_Module class. -*/ + * 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 ) + +int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( subMenu, menu, id, group, idx ); + bool exists = hasMenu( subMenu, menu ); + int regId = SalomeApp_Module::createMenu( subMenu, menu, id, group, idx, true ); + if ( !exists ) + 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 ) + +int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( subMenu, menu, id, group, idx ); + QStringList menus = QStringList::split( "|", menu, false ); + int pid = -1; + for (int i = 0; i < menus.count(); i++ ) { + pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu ); + if ( pid == -1 ) break; + } + if ( pid != -1 ) + 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 ) + +int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( id, menu, group, idx ); + int regId = SalomeApp_Module::createMenu( id, menu, group, idx ); + if ( regId != -1 ) + registerMenu( regId, menu, constantMenu ); + return regId; } -int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx ) + +int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( id, menu, group, idx ); + QStringList menus = QStringList::split( "|", menu, false ); + int pid = -1; + for (int i = 0; i < menus.count(); i++ ) { + pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu ); + if ( pid == -1 ) break; + } + if ( pid != -1 ) + 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 ) + +int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( a, menu, id, group, idx ); + int regId = SalomeApp_Module::createMenu( a, menu, id, group, idx ); + if ( regId != -1 ) + 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 ) + +int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int id, const int group, const int idx, const bool constantMenu ) { - return SalomeApp_Module::createMenu( a, menu, id, group, idx ); + QStringList menus = QStringList::split( "|", menu, false ); + int pid = -1; + for (int i = 0; i < menus.count(); i++ ) { + pid = createMenu( menus[i], pid, -1, -1, -1, constantMenu ); + if ( pid == -1 ) break; + } + if ( pid != -1 ) + 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 { - QAction* a = SalomeApp_Module::action( id ); - if ( !a ) // try own action map for menu items - a = SalomeApp_Module::action( id + PYQT_ACTION_MENU ); - if ( !a ) // try own action map for toolbar items - a = SalomeApp_Module::action( id + PYQT_ACTION_TOOLBAL ); - if ( !a ) // try own action map for popup items - a = SalomeApp_Module::action( id + PYQT_ACTION_POPUP ); - return a; + return SalomeApp_Module::action( id ); } + int SALOME_PYQT_Module::actionId( const QAction* a ) const { - int id = SalomeApp_Module::actionId( a ); - if ( myMenuActionList.contains( a ) ) // check own action map for menu items - id -= PYQT_ACTION_MENU; - if ( myToolbarActionList.contains( a ) ) // check own action map for toolbar items - id -= PYQT_ACTION_TOOLBAL; - if ( myPopupActionList.contains( a ) ) // check own action map for popup items - id -= PYQT_ACTION_POPUP; - return id; + return SalomeApp_Module::actionId( a ); } -QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, const QString& icon, + +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 = loadIcon( icon ); + QAction* a = action( id ); + if ( a ) { + if ( a->text().isEmpty() && !text.isEmpty() ) a->setText( text ); + if ( a->menuText().isEmpty() && !menu.isEmpty() ) a->setMenuText( menu ); + if ( a->iconSet().isNull() && !anIcon.isNull() ) a->setIconSet( anIcon ); + if ( a->statusTip().isEmpty() && !tip.isNull() ) a->setStatusTip( tip ); + if ( a->accel().isEmpty() && key ) a->setAccel( key ); + if ( a->isToggleAction() != toggle ) a->setToggleAction( toggle ); + disconnect( a, SIGNAL( activated() ), this, SLOT( onGUIEvent() ) ); + connect( a, SIGNAL( activated() ), this, SLOT( onGUIEvent() ) ); + } + else { + a = SalomeApp_Module::createAction( id, text, anIcon, menu, tip, key, getApp()->desktop(), toggle, this, SLOT( onGUIEvent() ) ); + } + return a; +} +/*! + * Load icon from resource file + */ +QIconSet SALOME_PYQT_Module::loadIcon( const QString& fileName ) { QIconSet anIcon; - if ( !icon.isEmpty() ) { - QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( icon ) ); + if ( !fileName.isEmpty() ) { + QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( fileName ) ); if ( !pixmap.isNull() ) anIcon = QIconSet( pixmap ); } - return SalomeApp_Module::createAction( id, text, anIcon, menu, tip, key, getApp()->desktop(), toggle, this, SLOT( onGUIEvent() ) ); + return anIcon; } +/*! + * Returns TRUE if menu already exists + */ +bool SALOME_PYQT_Module::hasMenu( const QString& subMenu, const int menu ) +{ + return menuMgr() && menuMgr()->containsMenu( subMenu, menu ); +} + +/*! + * Register the menu + */ +void SALOME_PYQT_Module::registerMenu( const int id, const int menu, const bool constantMenu ) +{ + QAction* a = action( id ); + QAction* s = separator(); + if ( a && a == s ) + return; + if ( !registered( id, menu ) ) + myMenus[menu].append( MenuId( id, constantMenu ) ); +} + +/*! + * Unregister the menu + */ +void SALOME_PYQT_Module::unregisterMenu( const int id, const int menu ) +{ + if ( myMenus.find( menu ) != myMenus.end() ) { + MenuIdList::iterator lit; + for ( lit = myMenus[menu].begin(); lit != myMenus[menu].end(); ++lit ) { + if ( (*lit).id == id ) { + myMenus[menu].remove( lit ); + return; + } + } + } +} + +/*! + * Returns TRUE if the menu is registered + */ +bool SALOME_PYQT_Module::registered( const int id, const int menu ) +{ + MenuMap::iterator mit; + for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit ) { + MenuIdList::iterator lit; + for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit ) { + if ( (*lit).id == id && ( menu == 0 || mit.key() == menu ) ) + return true; + } + } + return false; +} + +/*! + * Returns TRUE if the menu is constant (not removed by clearMenu()). + * This concerns the menus which are created from XML files. + */ +bool SALOME_PYQT_Module::isConstantMenu( const int id, const int menu ) +{ + if ( myMenus.find( menu ) != myMenus.end() ) { + MenuIdList& l = myMenus[ menu ]; + MenuIdList::iterator lit; + for ( lit = l.begin(); lit != l.end(); ++lit ) { + if ( (*lit).id == id && (*lit).constantMenu ) + return true; + } + } + return false; +} + +/*! + * Displays/hides the module's menus. + */ +void SALOME_PYQT_Module::setMenuShown( const bool show ) +{ + QtxActionMenuMgr* mMgr = menuMgr(); + if ( !mMgr ) + return; + + bool upd = mMgr->isUpdatesEnabled(); + mMgr->setUpdatesEnabled( false ); + + SalomeApp_Module::setMenuShown( show ); + + for ( MenuMap::iterator mit = myMenus.begin(); mit != myMenus.end(); ++mit ) { + MenuIdList::iterator lit; + for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit ) + if ( !action( (*lit).id ) ) + mMgr->setShown( (*lit).id, show ); + } + + mMgr->setUpdatesEnabled( upd ); + if ( upd ) + mMgr->update(); +} + +/*! + * Displays/hides the module's toolbars. + */ +void SALOME_PYQT_Module::setToolShown( const bool show ) +{ + SalomeApp_Module::setToolShown( show ); +} + +/*! + * Clears the given menu. + * If = 0 : clear all items in the menu + * If = 0 : clear all menus recursively starting from top-level. + * If = 0 : also unregister all removed actions (not delete!). + */ +bool SALOME_PYQT_Module::clearMenu( const int id, const int menu, const bool removeActions ) +{ + QAction* a = action( id ); + QAction* s = separator(); + typedef QValueList IntList; + if ( a && a != s ) { + // action + IntList menus; + if ( menu != 0 ) { + if ( registered( id, menu ) ) menus.append( menu ); + } + else { + MenuMap::iterator mit; + for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit ) + if ( registered( id, mit.key() ) ) menus.append( mit.key() ); + } + for ( int i = 0; i < menus.count(); i++ ) { + if ( !isConstantMenu( id, menus[i] ) ) { + menuMgr()->remove( menuMgr()->actionId( a ), menus[ i ] ); + unregisterMenu( id, menus[i] ); + } + } + if ( !registered( id ) && removeActions ) + unregisterAction( id ); + } + else { + // menu + if ( id == 0 ) { + if ( menu == 0 ) { + // clear all menus recursively starting from top-level (main menu) + IntList l = myMenus.keys(); + IntList::iterator lit; + for ( lit = l.begin(); lit != l.end(); ++lit ) + clearMenu( 0, *lit, removeActions ); + } + else { + if ( myMenus.find( menu ) != myMenus.end() ) { + // remove all items in the parent menu + IntList l; + MenuIdList::iterator lit; + for ( lit = myMenus[menu].begin(); lit != myMenus[menu].end(); ++lit ) + l.append( (*lit).id ); + for ( int i = 0; i < l.count(); i++ ) + clearMenu( l[i], menu, removeActions ); + if ( myMenus[menu].empty() ) + myMenus.remove( menu ); + } + } + } + else { + MenuMap::iterator mit; + for ( mit = myMenus.begin(); mit != myMenus.end(); ++mit ) { + MenuIdList::iterator lit; + for ( lit = mit.data().begin(); lit != mit.data().end(); ++lit ) { + if ( (*lit).id == id && ( menu == 0 || mit.key() == menu ) ) { + clearMenu( 0, id, removeActions ); // first remove all sub-menus + if ( !isConstantMenu( id, mit.key() ) ) { + menuMgr()->remove( id, mit.key() ); + mit.data().remove( lit ); + break; + } + } + } + } + } + } + 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 static QString tagName( const QDomElement& element ) { - return element.tagName().stripWhiteSpace(); + return element.tagName().stripWhiteSpace(); } // gets an attribute by it's name for the dom element [ static ] @@ -1062,44 +1448,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 ) +static int checkInt( const QString& value, const int def = -1, const int shift = -1 ) { - return value.isEmpty() ? -1 : 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 ); @@ -1112,14 +1522,44 @@ 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(); } /*! * Creates popup menu */ -void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu* menu, - const QString& context, - const QString& parent, +void SALOME_PYQT_XmlHandler::createPopup( QPopupMenu* menu, + const QString& context, + const QString& parent, const QString& object ) { // get document element @@ -1146,26 +1586,70 @@ 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; - + if ( parentNode.isNull() ) return; - QDomElement parentElement = parentNode.toElement(); + QDomElement parentElement = parentNode.toElement(); if ( !parentElement.isNull() ) { QString plabel = attribute( parentElement, "label-id" ); int pid = checkInt( attribute( parentElement, "item-id" ) ); int ppos = checkInt( attribute( parentElement, "pos-id" ) ); + 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 - 80, // group ID - ppos ); // position + 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() ) { @@ -1174,6 +1658,8 @@ void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentM if ( aTagName == "popup-item" ) { int id = checkInt( attribute( elem, "item-id" ) ); int pos = checkInt( attribute( elem, "pos-id" ) ); + int group = checkInt( attribute( elem, "group-id" ), + myModule->defaultMenuGroup() ); QString label = attribute( elem, "label-id" ); QString icon = attribute( elem, "icon-id" ); QString tooltip = attribute( elem, "tooltip-id" ); @@ -1183,34 +1669,78 @@ 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 && !myModule->action( SALOME_PYQT_Module::PYQT_ACTION_MENU + id ) ) { - // little trick to have several actions with same ID for menus and toolbars - id = SALOME_PYQT_Module::PYQT_ACTION_MENU + id; - // 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->addAction( SALOME_PYQT_Module::PYQT_ACTION_MENU, action ); - myModule->createMenu( action, menuId, -1, 80, pos ); + if ( id != -1 ) { + if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__ + QIconSet iconSet = myModule->loadIcon( icon ); + pos = checkInt( attribute( elem, "pos-id" ), -1, popup->count() ); + int aid = iconSet.isNull() ? popup->insertItem( label, + myModule, + SLOT( onGUIEvent(int) ), + QKeySequence( accel ), + id, + pos ) : + popup->insertItem( iconSet, + label, + myModule, + SLOT( onGUIEvent(int) ), + QKeySequence( accel ), + id, + pos ); + myCurrentMenu.push_back( QString::number( aid ) ); + myMenuItems.append( myCurrentMenu.join( ":" ) ); + myCurrentMenu.pop_back(); + if ( toggle ) + popup->setItemChecked( aid, checkBool( attribute( elem, "toggle-id" ), 1 ) ); + } + else { //!__CALL_OLD_METHODS__ + // create menu action + QAction* action = myModule->createAction( id, // ID + tooltip, // tooltip + icon, // icon + label, // menu text + tooltip, // status-bar text + QKeySequence( accel ), // keyboard accelerator + toggle ); // toogled action + myModule->createMenu( action, // action + menuId, // parent menu ID + id, // ID (same as for createAction()) + group, // group ID + pos, // position + true ); // create constant menu (not removed by clearMenu()) + } // __CALL_OLD_METHODS__ } } else if ( aTagName == "submenu" ) { // create sub-menu - createMenu( node, menuId ); + createMenu( node, menuId, popup ); } else if ( aTagName == "separator" ) { // create menu separator - int pos = checkInt( attribute( elem, "pos-id" ) ); - QAction* action = myModule->createSeparator(); - myModule->createMenu( action, menuId, -1, 80, pos ); + int id = checkInt( attribute( elem, "item-id" ) ); // separator can have ID + int pos = checkInt( attribute( elem, "pos-id" ) ); + int group = checkInt( attribute( elem, "group-id" ), + myModule->defaultMenuGroup() ); + 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(); } } } @@ -1222,11 +1752,11 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) { if ( !myModule ) return; - + if ( parentNode.isNull() ) return; - QDomElement parentElement = parentNode.toElement(); + QDomElement parentElement = parentNode.toElement(); if ( !parentElement.isNull() ) { QString aLabel = attribute( parentElement, "label-id" ); if ( !aLabel.isEmpty() ) { @@ -1249,9 +1779,7 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) // -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 && !myModule->action( SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL + id ) ) { - // little trick to have several actions with same ID for menus and toolbars - id = SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL + id; + if ( id != -1 ) { // create toolbar action QAction* action = myModule->createAction( id, // ID tooltip, // tooltip @@ -1260,11 +1788,10 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) tooltip, // status-bar text QKeySequence( accel ), // keyboard accelerator toggle ); // toogled action - myModule->addAction( SALOME_PYQT_Module::PYQT_ACTION_TOOLBAL, action ); 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(); @@ -1274,14 +1801,17 @@ void SALOME_PYQT_XmlHandler::createToolBar( QDomNode& parentNode ) node = node.nextSibling(); } } - } + } } +/*! + * Fill popup menu with items + */ void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* menu ) { if ( !myModule ) return; - + if ( parentNode.isNull() ) return; @@ -1308,7 +1838,7 @@ void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* if ( !pixmap.isNull() ) anIcon = QIconSet( pixmap ); } - + // -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 ) { 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 2582ee59e..7d20a3400 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h @@ -14,16 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//============================================================================= -// 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 @@ -60,20 +52,22 @@ private: SALOME_PYQT_PyInterp* myInterp; /* Python GUI module loaded */ PyObjWrapper myModule; - /* Pytho GUI being initialized (not zero only during the initialization)*/ - static SALOME_PYQT_Module* myInitModule; - - typedef QPtrList ActionList; - - /* own actions list */ - ActionList myMenuActionList; - ActionList myPopupActionList; - ActionList myToolbarActionList; + /* Python GUI being initialized (not zero only during the initialization)*/ + static SALOME_PYQT_Module* myInitModule; + + /* own menus list */ + struct MenuId + { + int id; + bool constantMenu; + MenuId() : id( -1 ), constantMenu( false ) {} + MenuId( const int _id, const bool _constantMenu ) + : id( _id ), constantMenu( _constantMenu ) {} + }; + typedef QValueList MenuIdList; + typedef QMap MenuMap; + MenuMap myMenus; - enum PyQtGUIAction { PYQT_ACTION_MENU = 10000000, - PYQT_ACTION_TOOLBAL = 20000000, - PYQT_ACTION_POPUP = 30000000 }; - /* XML resource file parser */ SALOME_PYQT_XmlHandler* myXmlHandler; /* windows map*/ @@ -121,6 +115,9 @@ public: /* called when study desktop is activated */ virtual void studyActivated(); + /* returns default menu group */ + static int defaultMenuGroup(); + /* working with toolbars : open protected methods */ int createTool( const QString& ); int createTool( const int, const int, const int = -1 ); @@ -129,12 +126,15 @@ public: int createTool( QAction*, const QString&, const int = -1, const int = -1 ); /* working with menus : open protected methods */ - int createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1 ); - int createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1 ); - int createMenu( const int, const int, const int = -1, const int = -1 ); - int createMenu( const int, const QString&, const int = -1, const int = -1 ); - int createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1 ); - int createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1 ); + int createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1, const bool = false ); + int createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1, const bool = false ); + int createMenu( const int, const int, const int = -1, const int = -1, const bool = false ); + int createMenu( const int, const QString&, const int = -1, const int = -1, const bool = false ); + int createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1, const bool = false ); + int createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1, const bool = false ); + + /* clear given menu */ + bool clearMenu( const int = 0, const int = 0, const bool = true ); /* create separator : open protected method */ QAction* createSeparator(); @@ -144,6 +144,12 @@ 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 ); + void setToolShown( const bool ); public slots: /* activation */ @@ -160,6 +166,17 @@ public slots: void onGUIEvent(); void onGUIEvent( int ); +protected: + /* Menu processing */ + bool hasMenu( const QString&, const int ); + void registerMenu( const int, const int, const bool = false ); + void unregisterMenu( const int, const int ); + bool registered( const int, const int = 0 ); + bool isConstantMenu( const int, const int ); + +protected slots: + void onMenuHighlighted( int, int ); + private: /* internal initizalition */ void init ( CAM_Application* ); @@ -167,15 +184,16 @@ 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 */ void contextMenu( const QString&, QPopupMenu* ); /* GUI event processing */ void guiEvent( const int ); - - /* add action to the private action map */ - void addAction ( const PyQtGUIAction, QAction* ); + /* Menu highlight processing */ + void menuHighlight( const int, const int ); /* initialize a Python subinterpreter */ void initInterp ( int ); diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.cxx index 1956ec3af..f25a2ca05 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.cxx +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.cxx @@ -1,8 +1,22 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : SALOME_PYQT_PyInterp.cxx // Author : Christian CAREMOLI, Paul RASCLE, EDF 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..42ac5d2d7 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_PyInterp.h @@ -14,16 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//============================================================================= -// 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 79ac12b9e..31a845634 100644 --- a/src/SALOME_PYQT/SalomePyQt/Makefile.in +++ b/src/SALOME_PYQT/SalomePyQt/Makefile.in @@ -1,11 +1,24 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : Makefile.in # Author : Nicolas REJNERI # Module : SALOME -# $Header$ top_srcdir=@top_srcdir@ top_builddir=../../.. @@ -101,9 +114,9 @@ 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 -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeDS -lSalomePyQtGUI +LDFLAGS += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI # Custom build step: generate C++ wrapping according to $(SIP_FILES) diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx index d7b887fe6..d76d0bd1d 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx @@ -14,16 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//============================================================================= -// 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,11 +982,38 @@ 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 ) ); } +/*! + SalomePyQt::defaultMenuGroup + Returns default menu group +*/ +class TDefMenuGroupEvent: public SALOME_Event { +public: + typedef int TResult; + TResult myResult; + TDefMenuGroupEvent() : myResult( -1 ) {} + virtual void Execute() { + myResult = SALOME_PYQT_Module::defaultMenuGroup(); + } +}; + +/*! + \return default menu group +*/ +int SalomePyQt::defaultMenuGroup() +{ + return ProcessEvent( new TDefMenuGroupEvent() ); +} + /*! SalomePyQt::createTool These methods allow operating with the toolbars: @@ -1005,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 ) ) ); @@ -1045,10 +1127,10 @@ int SalomePyQt::createTool( QtxAction* a, const QString& tBar, const int id, con class CrMenu { public: - CrMenu( const QString& subMenu, const int menu, const int group, const int idx ) - : myCase( 0 ), mySubMenuName( subMenu ), myMenuId( menu ), myGroup( group ), myIndex( idx ) {} - CrMenu( const QString& subMenu, const QString& menu, const int group, const int idx ) - : myCase( 1 ), mySubMenuName( subMenu ), myMenuName( menu ), myGroup( group ), myIndex( idx ) {} + CrMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx ) + : myCase( 0 ), mySubMenuName( subMenu ), myMenuId( menu ), myId( id ), myGroup( group ), myIndex( idx ) {} + CrMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx ) + : myCase( 1 ), mySubMenuName( subMenu ), myMenuName( menu ), myId( id ), myGroup( group ), myIndex( idx ) {} CrMenu( const int id, const int menu, const int group, const int idx ) : myCase( 2 ), myId( id ), myMenuId( menu ), myGroup( group ), myIndex( idx ) {} CrMenu( const int id, const QString& menu, const int group, const int idx ) @@ -1063,9 +1145,9 @@ public: if ( module ) { switch ( myCase ) { case 0: - return module->createMenu( mySubMenuName, myMenuId, -1, myGroup, myIndex ); + return module->createMenu( mySubMenuName, myMenuId, myId, myGroup, myIndex ); case 1: - return module->createMenu( mySubMenuName, myMenuName, -1, myGroup, myIndex ); + return module->createMenu( mySubMenuName, myMenuName, myId, myGroup, myIndex ); case 2: return module->createMenu( myId, myMenuId, myGroup, myIndex ); case 3: @@ -1104,14 +1186,14 @@ public: } } }; -int SalomePyQt::createMenu( const QString& subMenu, const int menu, const int group, const int idx ) +int SalomePyQt::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx ) { - return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, group, idx ) ) ); + return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, id, group, idx ) ) ); } -int SalomePyQt::createMenu( const QString& subMenu, const QString& menu, const int group, const int idx ) +int SalomePyQt::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx ) { - return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, group, idx ) ) ); + return ProcessEvent( new TCreateMenuEvent( CrMenu( subMenu, menu, id, group, idx ) ) ); } int SalomePyQt::createMenu( const int id, const int menu, const int group, const int idx ) @@ -1253,3 +1335,32 @@ int SalomePyQt::actionId( const QtxAction* a ) { return ProcessEvent( new TActionIdEvent( a ) ); } + +/*! + SalomePyQt::clearMenu + Clears given menu (recursively if necessary) +*/ +class TClearMenuEvent: public SALOME_Event { +public: + typedef bool TResult; + TResult myResult; + int myId; + int myMenu; + bool myRemoveActions; + TClearMenuEvent( const int id, const int menu, const bool removeActions ) + : myResult( false ), myId( id ), myMenu( menu ), myRemoveActions( removeActions ) {} + virtual void Execute() { + if ( SalomeApp_Application* anApp = getApplication() ) { + SALOME_PYQT_Module* module = SALOME_PYQT_Module::getInitModule(); + if ( !module ) + module = dynamic_cast( anApp->activeModule() ); + if ( module ) + myResult = module->clearMenu( myId, myMenu, myRemoveActions ); + } + } +}; +bool SalomePyQt::clearMenu( const int id, const int menu, const bool removeActions ) +{ + return ProcessEvent( new TClearMenuEvent( id, menu, removeActions ) ); +} + diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h index 51f245f23..b656cd1c0 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h @@ -14,16 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//============================================================================= -// 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 @@ -102,6 +94,8 @@ public: static bool dumpView( const QString& ); + static int defaultMenuGroup(); + static int createTool( const QString& ); static int createTool( const int, const int, const int = -1 ); static int createTool( const int, const QString&, const int = -1 ); @@ -109,9 +103,9 @@ public: static int createTool( QtxAction*, const QString&, const int = -1, const int = -1 ); static int createMenu( const QString&, const int = -1, - const int = -1, const int = -1 ); + const int = -1, const int = -1, const int = -1 ); static int createMenu( const QString&, const QString& = QString::null, - const int = -1, const int = -1 ); + const int = -1, const int = -1, const int = -1 ); static int createMenu( const int, const int = -1, const int = -1, const int = -1 ); static int createMenu( const int, const QString& = QString::null, @@ -130,6 +124,9 @@ public: static QtxAction* action( const int ); static int actionId( const QtxAction* ); + static bool clearMenu( const int = 0, const int = 0, + const bool = true ); + static void addSetting ( const QString&, const QString&, const double ); static void addSetting ( const QString&, const QString&, const int ); static void addSetting ( const QString&, const QString&, const QString& ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip index 3824647dd..dcb650178 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip @@ -39,7 +39,7 @@ enum MenuName { Help = 7 }; -enum { +enum WindowType { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, @@ -81,6 +81,8 @@ public: static bool dumpView( const QString& ); + static int defaultMenuGroup(); + static int createTool( const QString& ); static int createTool( const int, const int, int = -1 ); static int createTool( const int, const QString&, int = -1 ); @@ -88,9 +90,9 @@ public: static int createTool( QtxAction*, const QString&, int = -1, int = -1 ); static int createMenu( const QString&, const int, - int = -1, int = -1 ); + int = -1, int = -1, int = -1 ); static int createMenu( const QString&, const QString&, - int = -1, int = -1 ); + int = -1, int = -1, int = -1 ); static int createMenu( const int, const int, int = -1, int = -1 ); static int createMenu( const int, const QString&, @@ -109,13 +111,16 @@ public: static QtxAction* action( const int ); static int actionId( const QtxAction* ); + static bool clearMenu( int = 0, int = 0, + bool = true ); + static void addSetting ( const QString&, const QString&, const double ); static void addSetting ( const QString&, const QString&, const int /Constrained/ ); static void addSetting ( const QString&, const QString&, const QString& ); static void addSetting ( const QString&, const QString&, const QColor& ); static int integerSetting( const QString&, const QString&, int = 0 ); static double doubleSetting ( const QString&, const QString&, int = 0 ); - static bool boolSetting ( const QString&, const QString&, bool = 0 ); + static bool boolSetting ( const QString&, const QString&, bool = false ); static QString stringSetting ( const QString&, const QString&, const QString& = QString("") ); static QColor colorSetting ( const QString&, const QString&, const QColor& = QColor() ); static void removeSetting ( const QString&, const QString& ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt_v4.sip b/src/SALOME_PYQT/SalomePyQt/SalomePyQt_v4.sip index f306399b1..3d0196f88 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt_v4.sip +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt_v4.sip @@ -39,7 +39,7 @@ enum MenuName { Help = 7 }; -enum { +enum WindowType { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, @@ -74,13 +74,15 @@ public: static void updateObjBrowser( const int = 0, bool = true ); static QString getFileName ( QWidget*, const QString&, const QStringList&, const QString&, bool ) /ReleaseGIL/ ; - static QStringList getOpenFileNames ( QWidget*, const QString&, const QStringList&, const QString& ); - static QString getExistingDirectory( QWidget*, const QString&, const QString& ); + static QStringList getOpenFileNames ( QWidget*, const QString&, const QStringList&, const QString& ) /ReleaseGIL/ ; + static QString getExistingDirectory( QWidget*, const QString&, const QString& ) /ReleaseGIL/ ; static void helpContext( const QString&, const QString& ); static bool dumpView( const QString& ); + static int defaultMenuGroup(); + static int createTool( const QString& ); static int createTool( const int, const int, const int = -1 ); static int createTool( const int, const QString&, const int = -1 ); @@ -88,9 +90,9 @@ public: static int createTool( QtxAction*, const QString&, const int = -1, const int = -1 ); static int createMenu( const QString&, const int, - const int = -1, const int = -1 ); + const int = -1, const int = -1, const int = -1 ); static int createMenu( const QString&, const QString&, - const int = -1, const int = -1 ); + const int = -1, const int = -1, const int = -1 ); static int createMenu( const int, const int, const int = -1, const int = -1 ); static int createMenu( const int, const QString&, @@ -99,7 +101,6 @@ public: const int = -1, const int = -1 ); static int createMenu( QtxAction*, const QString&, const int = -1, const int = -1, const int = -1 ); - static QtxAction* createSeparator(); static QtxAction* createAction( const int, const QString&, @@ -109,13 +110,16 @@ public: static QtxAction* action( const int ); static int actionId( const QtxAction* ); + static bool clearMenu( const int = 0, const int = 0, + const bool = true ); + static void addSetting ( const QString&, const QString&, const double ); static void addSetting ( const QString&, const QString&, const int /Constrained/ ); static void addSetting ( const QString&, const QString&, const QString& ); static void addSetting ( const QString&, const QString&, const QColor& ); static int integerSetting( const QString&, const QString&, const int = 0 ); static double doubleSetting ( const QString&, const QString&, const int = 0 ); - static bool boolSetting ( const QString&, const QString&, const bool = 0 ); + static bool boolSetting ( const QString&, const QString&, const bool = false ); static QString stringSetting ( const QString&, const QString&, const QString& = QString("") ); static QColor colorSetting ( const QString&, const QString&, const QColor& = QColor() ); static void removeSetting ( const QString&, const QString& ); diff --git a/src/SALOME_SWIG/Makefile.in b/src/SALOME_SWIG/Makefile.in index 19142ae1b..80cc9daf3 100755 --- a/src/SALOME_SWIG/Makefile.in +++ b/src/SALOME_SWIG/Makefile.in @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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/SALOMEGUI_Swig.cxx b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx index 0c8e1764d..ccf9b841a 100644 --- a/src/SALOME_SWIG/SALOMEGUI_Swig.cxx +++ b/src/SALOME_SWIG/SALOMEGUI_Swig.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_Swig.hxx b/src/SALOME_SWIG/SALOMEGUI_Swig.hxx index f335e21e2..456211227 100644 --- a/src/SALOME_SWIG/SALOMEGUI_Swig.hxx +++ b/src/SALOME_SWIG/SALOMEGUI_Swig.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SALOME_SWIG/SALOMEGUI_Swig.i b/src/SALOME_SWIG/SALOMEGUI_Swig.i index 05121fff1..8ad7a3ae0 100644 --- a/src/SALOME_SWIG/SALOMEGUI_Swig.i +++ b/src/SALOME_SWIG/SALOMEGUI_Swig.i @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py index 086d5e7fe..25170ebfd 100755 --- a/src/SALOME_SWIG/SALOMEGUI_shared_modules.py +++ b/src/SALOME_SWIG/SALOMEGUI_shared_modules.py @@ -1,9 +1,30 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# """ """ import SALOME_Session_idl +from import_hook import register_name +register_name("SalomePyQt") + # this function is required def init_shared_modules(): diff --git a/src/SALOME_SWIG/examplevtk1.py b/src/SALOME_SWIG/examplevtk1.py index 58a49bec3..e214bedf8 100755 --- a/src/SALOME_SWIG/examplevtk1.py +++ b/src/SALOME_SWIG/examplevtk1.py @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/SALOME_SWIG/libSALOME_Swig.i b/src/SALOME_SWIG/libSALOME_Swig.i index 988ad4cbc..a96601f7e 100755 --- a/src/SALOME_SWIG/libSALOME_Swig.i +++ b/src/SALOME_SWIG/libSALOME_Swig.i @@ -15,7 +15,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // 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..351315028 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/ or email : webmaster.salome@opencascade.com +# #============================================================================== # File : supervisionexample.py # Created : 23 nov 2001 diff --git a/src/SALOME_SWIG/supervisiongeomexample.py b/src/SALOME_SWIG/supervisiongeomexample.py index 8c56bb1f2..bf9e5b746 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/ or email : webmaster.salome@opencascade.com +# # Generated python file of Graph GraphGeom2Essai diff --git a/src/SALOME_SWIG/test_big_table.py b/src/SALOME_SWIG/test_big_table.py index 689567e2c..78fa2e347 100755 --- a/src/SALOME_SWIG/test_big_table.py +++ b/src/SALOME_SWIG/test_big_table.py @@ -1,6 +1,20 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : test_big_table.py # Author : Vadim SANDLER diff --git a/src/SALOME_SWIG/test_many_objects.py b/src/SALOME_SWIG/test_many_objects.py index e7023e470..98de03f1e 100755 --- a/src/SALOME_SWIG/test_many_objects.py +++ b/src/SALOME_SWIG/test_many_objects.py @@ -1,6 +1,20 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : visu_many_objects.py # Author : Vadim SANDLER diff --git a/src/SALOME_SWIG/test_remove_ref.py b/src/SALOME_SWIG/test_remove_ref.py index 7842a0ecd..dcc18c922 100755 --- a/src/SALOME_SWIG/test_remove_ref.py +++ b/src/SALOME_SWIG/test_remove_ref.py @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/SALOME_SWIG/test_table.py b/src/SALOME_SWIG/test_table.py index c1d58d997..0727594ce 100755 --- a/src/SALOME_SWIG/test_table.py +++ b/src/SALOME_SWIG/test_table.py @@ -1,6 +1,20 @@ -# Copyright (C) 2003 CEA/DEN, EDF R&D +# Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : test_table.py # Author : Vadim SANDLER diff --git a/src/SALOME_SWIG/testattr.py b/src/SALOME_SWIG/testattr.py index ce3816891..18f091546 100755 --- a/src/SALOME_SWIG/testattr.py +++ b/src/SALOME_SWIG/testattr.py @@ -15,7 +15,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/SOCC/Makefile.in b/src/SOCC/Makefile.in index 36b2aa697..f1ad96778 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Alexander Solovyov(OCN) # Module : SOCC diff --git a/src/SOCC/SOCC.h b/src/SOCC/SOCC.h index c5f632238..99e77291a 100755 --- a/src/SOCC/SOCC.h +++ b/src/SOCC/SOCC.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifdef WNT #ifdef SOCC_EXPORTS diff --git a/src/SOCC/SOCC_Prs.cxx b/src/SOCC/SOCC_Prs.cxx index c16368dfa..eb2cb6821 100644 --- a/src/SOCC/SOCC_Prs.cxx +++ b/src/SOCC/SOCC_Prs.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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() == Standard_True; } -//================================================================= /*! - * 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_Prs.h b/src/SOCC/SOCC_Prs.h index 1e7706342..06fbce141 100644 --- a/src/SOCC/SOCC_Prs.h +++ b/src/SOCC/SOCC_Prs.h @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SOCC/SOCC_ViewModel.cxx b/src/SOCC/SOCC_ViewModel.cxx index b199cceb4..8d425a47c 100755 --- a/src/SOCC/SOCC_ViewModel.cxx +++ b/src/SOCC/SOCC_ViewModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SOCC_ViewModel.h" @@ -66,7 +66,7 @@ // 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); +// 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 @@ -74,15 +74,28 @@ // 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 ) { @@ -124,6 +137,11 @@ bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj, 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 ) { @@ -148,6 +166,10 @@ bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj, 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; @@ -166,6 +188,12 @@ bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj ) 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 ) { @@ -186,6 +214,12 @@ void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj, } } +/*! + 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 ) { @@ -206,6 +240,12 @@ void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)& } } +/*! + 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 ) { @@ -226,6 +266,11 @@ void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj, } } +/*! + 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 ) { @@ -259,10 +304,11 @@ void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj, } } -//======================================================================= -// name : Display -// Purpose : Display presentation -//======================================================================= + +/*! + Display presentation + \param prs - presentation +*/ void SOCC_Viewer::Display( const SALOME_OCCPrs* prs ) { // try do downcast object @@ -379,10 +425,12 @@ void SOCC_Viewer::Display( const SALOME_OCCPrs* prs ) } } -//======================================================================= -// name : Erase -// Purpose : Erase presentation -//======================================================================= + +/*! + 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 @@ -428,10 +476,11 @@ void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced ) } } -//======================================================================= -// name : EraseAll -// Purpose : Erase all presentations -//======================================================================= + +/*! + Erase all presentations + \param forced - removes all objects from context +*/ void SOCC_Viewer::EraseAll( const bool forced ) { // get SALOMEDS Study @@ -480,10 +529,10 @@ void SOCC_Viewer::EraseAll( const bool forced ) Repaint(); } -//======================================================================= -// name : CreatePrs -// Purpose : Create presentation corresponding to the entry -//======================================================================= +/*! + Create presentation corresponding to the entry + \param entry - entry +*/ SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry ) { SOCC_Prs* prs = new SOCC_Prs(); @@ -513,10 +562,9 @@ SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry ) return prs; } -//======================================================================= -// name : LocalSelection -// Purpose : Activates selection of sub shapes -//======================================================================= +/*! + Activates selection of sub shapes +*/ void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode ) { Handle(AIS_InteractiveContext) ic = getAISContext(); @@ -559,10 +607,9 @@ void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode } } -//======================================================================= -// name : GlobalSelection -// Purpose : Deactivates selection of sub shapes -//======================================================================= +/*! + Deactivates selection of sub shapes +*/ void SOCC_Viewer::GlobalSelection( const bool update ) const { Handle(AIS_InteractiveContext) ic = getAISContext(); @@ -574,29 +621,25 @@ void SOCC_Viewer::GlobalSelection( const bool update ) const } } -//======================================================================= -// name : BeforeDisplay -// Purpose : Axiluary method called before displaying of objects -//======================================================================= +/*! + Auxiliary 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 -//======================================================================= +/*! + Auxiliary 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 -//======================================================================= +/*! + Get new and current trihedron size corresponding to the current model size +*/ bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize ) { theNewSize = 100; @@ -628,7 +671,7 @@ bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize ) float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.); - static double EPS = 5.0E-3; + static float EPS = 5.0E-3; theSize = getTrihedron()->Size(); theNewSize = aMaxSide*aSizeInPercents / 100.0; @@ -636,20 +679,20 @@ bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize ) fabs( theNewSize - theSize) > theNewSize * EPS; } -//======================================================================= -// name : Repaint -// Purpose : -//======================================================================= + +/*! + Updates current viewer +*/ void SOCC_Viewer::Repaint() { // onAdjustTrihedron(); getViewer3d()->Update(); } -//======================================================================= -// name : createView -// Purpose : create SOCC_ViewWindow -//======================================================================= + +/*! + create SOCC_ViewWindow +*/ SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop ) { SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this); diff --git a/src/SOCC/SOCC_ViewModel.h b/src/SOCC/SOCC_ViewModel.h index bf57aa8d7..6d2d04025 100755 --- a/src/SOCC/SOCC_ViewModel.h +++ b/src/SOCC/SOCC_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SOCC_VIEWMODEL_H #define SOCC_VIEWMODEL_H diff --git a/src/SOCC/SOCC_ViewWindow.cxx b/src/SOCC/SOCC_ViewWindow.cxx index ce28624a0..2e519687b 100644 --- a/src/SOCC/SOCC_ViewWindow.cxx +++ b/src/SOCC/SOCC_ViewWindow.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SOCC_ViewWindow.h" @@ -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..e30afe511 100644 --- a/src/SOCC/SOCC_ViewWindow.h +++ b/src/SOCC/SOCC_ViewWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SOCC_VIEWWINDOW_H #define 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 d0a8d1604..0304abbee 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/ or email : webmaster.salome@opencascade.com +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -27,20 +45,8 @@ 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) -I$(KERNEL_ROOT_DIR)/include/salome -LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lsuit -lPlot2d -lSalomePrs +CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) +LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs @CONCLUDE@ diff --git a/src/SPlot2d/SPlot2d.h b/src/SPlot2d/SPlot2d.h index aa9d5fec2..39e4c1245 100644 --- a/src/SPlot2d/SPlot2d.h +++ b/src/SPlot2d/SPlot2d.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifdef WNT #ifdef SPLOT2D_EXPORTS diff --git a/src/SPlot2d/SPlot2d_Curve.cxx b/src/SPlot2d/SPlot2d_Curve.cxx index e6b2c5b83..87439441f 100644 --- a/src/SPlot2d/SPlot2d_Curve.cxx +++ b/src/SPlot2d/SPlot2d_Curve.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_Curve.cxx // Author : Sergey RUIN @@ -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_Curve.h b/src/SPlot2d/SPlot2d_Curve.h index 21ebc8a94..f75519ead 100644 --- a/src/SPlot2d/SPlot2d_Curve.h +++ b/src/SPlot2d/SPlot2d_Curve.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_Curve.h // Author : Sergey RUIN diff --git a/src/SPlot2d/SPlot2d_Prs.cxx b/src/SPlot2d/SPlot2d_Prs.cxx index 38756328c..68739a0c6 100644 --- a/src/SPlot2d/SPlot2d_Prs.cxx +++ b/src/SPlot2d/SPlot2d_Prs.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_Prs.cxx // Author : Sergey RUIN @@ -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_Prs.h b/src/SPlot2d/SPlot2d_Prs.h index 65f1743ee..77e878172 100644 --- a/src/SPlot2d/SPlot2d_Prs.h +++ b/src/SPlot2d/SPlot2d_Prs.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_Prs.h // Author : Sergey RUIN diff --git a/src/SPlot2d/SPlot2d_ViewModel.cxx b/src/SPlot2d/SPlot2d_ViewModel.cxx index 554927ff5..4ac94388f 100644 --- a/src/SPlot2d/SPlot2d_ViewModel.cxx +++ b/src/SPlot2d/SPlot2d_ViewModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_Viewer.cxx // Author : Sergey RUIN @@ -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_ViewModel.h b/src/SPlot2d/SPlot2d_ViewModel.h index 09005da78..c9968c055 100644 --- a/src/SPlot2d/SPlot2d_ViewModel.h +++ b/src/SPlot2d/SPlot2d_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SPlot2d_ViewModel.h // Author : Sergey RUIN diff --git a/src/STD/Makefile.in b/src/STD/Makefile.in index 7bcec2561..cfd6deca0 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : STD diff --git a/src/STD/STD.h b/src/STD/STD.h index d74b12e09..caeee3b3f 100755 --- a/src/STD/STD.h +++ b/src/STD/STD.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_H #define STD_H diff --git a/src/STD/STD_Application.cxx b/src/STD/STD_Application.cxx index a3ab1739e..5a74b4785 100755 --- a/src/STD/STD_Application.cxx +++ b/src/STD/STD_Application.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_Application.h" @@ -199,32 +199,32 @@ void STD_Application::createActions() // Create menus - int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1, -1, 0 ); - int editMenu = createMenu( tr( "MEN_DESK_EDIT" ), -1, -1, 10 ); - int viewMenu = createMenu( tr( "MEN_DESK_VIEW" ), -1, -1, 10 ); - int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1, 1000 ); + int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1, MenuFileId, 0 ); + int editMenu = createMenu( tr( "MEN_DESK_EDIT" ), -1, MenuEditId, 10 ); + int viewMenu = createMenu( tr( "MEN_DESK_VIEW" ), -1, MenuViewId, 10 ); + int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, MenuHelpId, 1000 ); // Create menu items - createMenu( FileNewId, fileMenu, 0 ); - createMenu( FileOpenId, fileMenu, 0 ); - createMenu( FileLoadId, fileMenu, 0 ); //SRN: BugID IPAL9021, add a menu item "Load" - createMenu( FileCloseId, fileMenu, 0 ); - createMenu( separator(), fileMenu, -1, 0 ); - createMenu( FileSaveId, fileMenu, 0 ); + createMenu( FileNewId, fileMenu, 0 ); + createMenu( FileOpenId, fileMenu, 0 ); + createMenu( FileLoadId, fileMenu, 0 ); //SRN: BugID IPAL9021, add a menu item "Load" + createMenu( FileCloseId, fileMenu, 0 ); + createMenu( separator(), fileMenu, -1, 0 ); + createMenu( FileSaveId, fileMenu, 0 ); createMenu( FileSaveAsId, fileMenu, 0 ); - createMenu( separator(), fileMenu, -1, 0 ); + createMenu( separator(), fileMenu, -1, 0 ); - createMenu( separator(), fileMenu ); - createMenu( FileExitId, fileMenu ); + createMenu( separator(), fileMenu ); + createMenu( FileExitId, fileMenu ); - createMenu( EditCopyId, editMenu ); + createMenu( EditCopyId, editMenu ); createMenu( EditPasteId, editMenu ); createMenu( separator(), editMenu ); - createMenu( ViewWindowsId, viewMenu ); + createMenu( ViewWindowsId, viewMenu ); createMenu( ViewStatusBarId, viewMenu ); - createMenu( separator(), viewMenu ); + createMenu( separator(), viewMenu ); createMenu( HelpAboutId, helpMenu ); createMenu( separator(), helpMenu ); @@ -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() ); @@ -547,8 +551,8 @@ void STD_Application::setEditEnabled( bool theEnable ) for ( int i = EditCopyId; i <= EditPasteId; i++ ) { - mMgr->setShown( i, myEditEnabled ); - tMgr->setShown( i, myEditEnabled ); + mMgr->setShown( mMgr->actionId(action(i)), myEditEnabled ); + tMgr->setShown( tMgr->actionId(action(i)), myEditEnabled ); } } @@ -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_Application.h b/src/STD/STD_Application.h index c8e3b4ad5..b6ca7fc08 100755 --- a/src/STD/STD_Application.h +++ b/src/STD/STD_Application.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_APPLICATION_H #define STD_APPLICATION_H @@ -120,9 +120,19 @@ private slots: virtual void onViewManagerActivated( SUIT_ViewManager* ); protected: - enum { FileNewId, FileOpenId, FileCloseId, FileSaveId, FileSaveAsId, - FileExitId, EditCutId, EditCopyId, EditPasteId, ViewStatusBarId, - NewWindowId, HelpAboutId, ViewWindowsId, FileLoadId, UserID }; + enum { MenuFileId = 1, + MenuViewId = 2, + MenuEditId = 3, + MenuHelpId = 7 + }; + + enum { FileNewId, FileOpenId, FileLoadId, FileCloseId, + FileSaveId, FileSaveAsId, FileExitId, + ViewStatusBarId, ViewWindowsId, NewWindowId, + EditCutId, EditCopyId, EditPasteId, + HelpAboutId, + UserID + }; protected: virtual void createActions(); diff --git a/src/STD/STD_CloseDlg.cxx b/src/STD/STD_CloseDlg.cxx index a06d8c6c5..ff09c551a 100644 --- a/src/STD/STD_CloseDlg.cxx +++ b/src/STD/STD_CloseDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_CloseDlg.h" @@ -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/STD_CloseDlg.h b/src/STD/STD_CloseDlg.h index a7ec4616d..6975e88f4 100644 --- a/src/STD/STD_CloseDlg.h +++ b/src/STD/STD_CloseDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_CloseDlg_H #define STD_CloseDlg_H diff --git a/src/STD/STD_LoadStudiesDlg.cxx b/src/STD/STD_LoadStudiesDlg.cxx index b8a655249..5dc4c0d5a 100644 --- a/src/STD/STD_LoadStudiesDlg.cxx +++ b/src/STD/STD_LoadStudiesDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_LoadStudiesDlg.h" diff --git a/src/STD/STD_LoadStudiesDlg.h b/src/STD/STD_LoadStudiesDlg.h index 141d064da..268b16135 100644 --- a/src/STD/STD_LoadStudiesDlg.h +++ b/src/STD/STD_LoadStudiesDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_LOADSTUDIESDLG_H #define STD_LOADSTUDIESDLG_H diff --git a/src/STD/STD_MDIDesktop.cxx b/src/STD/STD_MDIDesktop.cxx index aec25bb59..9a446ab64 100755 --- a/src/STD/STD_MDIDesktop.cxx +++ b/src/STD/STD_MDIDesktop.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_MDIDesktop.h" @@ -183,7 +183,7 @@ void STD_MDIDesktop::createActions() if ( !mMgr ) return; - int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 ); + int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100, MenuWindowId ); mMgr->insert( myWorkspaceAction, winMenuId, -1 ); mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 ); } diff --git a/src/STD/STD_MDIDesktop.h b/src/STD/STD_MDIDesktop.h index 25ec9cb08..f4136444d 100755 --- a/src/STD/STD_MDIDesktop.h +++ b/src/STD/STD_MDIDesktop.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_MDIDESKTOP_H #define STD_MDIDESKTOP_H @@ -37,6 +37,7 @@ class STD_EXPORT STD_MDIDesktop: public SUIT_Desktop Q_OBJECT public: + enum { MenuWindowId = 6 }; enum { Cascade, Tile, HTile, VTile }; public: diff --git a/src/STD/STD_SDIDesktop.cxx b/src/STD/STD_SDIDesktop.cxx index a3a04ca5e..9bcc92a56 100755 --- a/src/STD/STD_SDIDesktop.cxx +++ b/src/STD/STD_SDIDesktop.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_SDIDesktop.h" diff --git a/src/STD/STD_SDIDesktop.h b/src/STD/STD_SDIDesktop.h index 91184b8ce..78b1bb78d 100755 --- a/src/STD/STD_SDIDesktop.h +++ b/src/STD/STD_SDIDesktop.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_SDIDESKTOP_H #define STD_SDIDESKTOP_H diff --git a/src/STD/STD_TabDesktop.cxx b/src/STD/STD_TabDesktop.cxx index 24dfd5ccf..645188035 100644 --- a/src/STD/STD_TabDesktop.cxx +++ b/src/STD/STD_TabDesktop.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "STD_TabDesktop.h" @@ -177,7 +177,7 @@ void STD_TabDesktop::createActions() if ( !mMgr ) return; - int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 ); + int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100, MenuWindowId ); mMgr->insert( myWorkstackAction, winMenuId, -1 ); mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 ); } diff --git a/src/STD/STD_TabDesktop.h b/src/STD/STD_TabDesktop.h index f3b1d1282..aa63db065 100644 --- a/src/STD/STD_TabDesktop.h +++ b/src/STD/STD_TabDesktop.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef STD_TABDESKTOP_H #define STD_TABDESKTOP_H @@ -38,6 +38,7 @@ class STD_EXPORT STD_TabDesktop: public SUIT_Desktop Q_OBJECT public: + enum { MenuWindowId = 6 }; enum { VSplit, HSplit }; public: diff --git a/src/STD/resources/STD_images.po b/src/STD/resources/STD_images.po index 08410020c..71e0a9947 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..eef69e683 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..bc25b7132 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : suit diff --git a/src/SUIT/SUIT.h b/src/SUIT/SUIT.h index b84cf06ef..82940286a 100755 --- a/src/SUIT/SUIT.h +++ b/src/SUIT/SUIT.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_H #define SUIT_H diff --git a/src/SUIT/SUIT_Accel.cxx b/src/SUIT/SUIT_Accel.cxx index a72a317e1..7bc7b5167 100644 --- a/src/SUIT/SUIT_Accel.cxx +++ b/src/SUIT/SUIT_Accel.cxx @@ -14,67 +14,117 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SUIT_Accel.cxx: implementation of the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #include "SUIT_Accel.h" -#include "SUIT_Desktop.h" -#include "SUIT_ViewManager.h" #include "SUIT_ViewWindow.h" +#include "SUIT_ViewManager.h" #include "SUIT_ViewModel.h" -#include +#include +#include +#include -/*!\class SUIT_Accel - * Class handles keyboard accelerator bindings. - */ -/*! Constructor.*/ -SUIT_Accel::SUIT_Accel(SUIT_Desktop* theDesktop) - : QObject( theDesktop, "SUIT_Accel" ), - myDesktop( theDesktop ) +SUIT_Accel* SUIT_Accel::myself = 0; + +/*! Constructor [private].*/ +SUIT_Accel::SUIT_Accel() + : QObject( qApp, "SUIT_Accel" ) { - myAccel = new QAccel( theDesktop, "SUIT_Accel_interal_qaccel" ); - connect( myAccel, SIGNAL( activated( int ) ), this, SLOT( onActivated( int ) ) ); + qApp->installEventFilter( this ); } -/*! Destructor.*/ -SUIT_Accel::~SUIT_Accel() +/*! getAccel() : public interface for SUIT_Accel object. Only one instance is created and returned. */ +SUIT_Accel* SUIT_Accel::getAccel() { + if ( !myself ) + myself = new SUIT_Accel(); + return myself; } -/*! setActionKey assign a ceratain action for a key accelerator */ +/*! setActionKey() : assign a ceratain action for a key accelerator */ void SUIT_Accel::setActionKey( const int action, const int key, const QString& type ) -{ - // 1. get or generate interal "id" of action - int id = myAccel->findKey( key ); - if ( id == -1 ) - id = myAccel->insertItem( key ); - +{ IdActionMap idActionMap; if ( myMap.contains( type ) ) idActionMap = myMap[type]; - idActionMap[id] = action; + idActionMap[key] = action; myMap[type] = idActionMap; + + myOptMap[key] = true; +} + +/*! unsetActionKey() : unregister a certain key accelerator */ +void SUIT_Accel::unsetActionKey( const int key, const QString& type ) +{ + if ( myMap.contains( type ) ) { + IdActionMap idActionMap = myMap[type]; + if ( idActionMap.contains( key ) ) { + idActionMap.erase( key ); + myMap[type] = idActionMap; + } + } } -/*! onActivated slot called when a registered key accelerator was activated */ -void SUIT_Accel::onActivated( int id ) +/*! getParentViewWindow() : returns given object or any of its parents-grandparents-.. if it is a SUIT_ViewWindow */ +SUIT_ViewWindow* getParentViewWindow( const QObject* obj ) { - if ( myDesktop ) { - if ( SUIT_ViewWindow* vw = myDesktop->activeWindow() ) { + if ( obj ) { + if ( obj->inherits( "SUIT_ViewWindow" ) ) + return (SUIT_ViewWindow*)obj; + else + return getParentViewWindow( obj->parent() ); + } + return 0; +} + +/*! getKey() : returns integer key code (with modifiers) made of key pressed 'inside' given event */ +int getKey( QKeyEvent *keyEvent ) +{ + int key = keyEvent->key(), + state = keyEvent->state(); + if ( state & Qt::ShiftButton ) + key += Qt::SHIFT; + if ( state & Qt::ControlButton ) + key += Qt::CTRL; + if ( state & Qt::AltButton ) + key += Qt::ALT; + if ( state & Qt::MetaButton ) + key += Qt::META; + return key; +} + +/*! getAccelKey() : returns key pressed if 1) event was KeyPress 2) pressed key is a registered accelerator */ +int SUIT_Accel::getAccelKey( QEvent *event ) +{ + if ( event && event->type() == QEvent::KeyPress ) { + int key = ::getKey( (QKeyEvent*)event ); + if ( myOptMap.contains( key ) ) + return key; + } + return 0; +} + +/*! eventFilter() : filtering ALL events of QApplication. */ +bool SUIT_Accel::eventFilter( QObject *obj, QEvent *event ) +{ + const int key = getAccelKey( event ); + if ( key ) { + SUIT_ViewWindow* vw = ::getParentViewWindow( obj ); + if ( vw ) { QString type = vw->getViewManager()->getViewModel()->getType(); - if ( myMap.contains( type ) ) { + if ( myMap.contains( type ) ) { IdActionMap idActionMap = myMap[type]; - if ( idActionMap.contains( id ) ) { - vw->onAccelAction( idActionMap[id] ); + if ( idActionMap.contains( key ) ) { + return vw->onAccelAction( idActionMap[key] ); } } } } + return false; } - + diff --git a/src/SUIT/SUIT_Accel.h b/src/SUIT/SUIT_Accel.h index 78c9bff30..fdc9cd384 100644 --- a/src/SUIT/SUIT_Accel.h +++ b/src/SUIT/SUIT_Accel.h @@ -14,11 +14,9 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SUIT_Accel.h: interface for the SUIT_Accel class. -// -////////////////////////////////////////////////////////////////////// #ifndef SUIT_Accel_h #define SUIT_Accel_h @@ -29,9 +27,10 @@ #include #include -class QAccel; -class SUIT_Desktop; - +/*! + \class SUIT_Accel + Manager of keyboard accelerator bindings +*/ class SUIT_EXPORT SUIT_Accel: public QObject { Q_OBJECT @@ -53,21 +52,28 @@ public: }; public: - SUIT_Accel( SUIT_Desktop* theDesktop ); - virtual ~SUIT_Accel(); + static SUIT_Accel* getAccel(); void setActionKey( const int action, const int key, const QString& type ); + void unsetActionKey( const int key, const QString& type ); -protected slots: - void onActivated( int ); +protected: + bool eventFilter( QObject *, QEvent * ); private: - QAccel* myAccel; - SUIT_Desktop* myDesktop; + SUIT_Accel(); + + int getAccelKey( QEvent* ); // returns key pressed if 1) event was KeyPress + // 2) pressed key is a registered accelerator - typedef QMap IdActionMap; // internal_id - to - action map + typedef QMap IdActionMap; // key - to - action_id map typedef QMap ViewerTypeIdActionMap; // viewer_type - to - IdActionMap ViewerTypeIdActionMap myMap; + + QMap myOptMap; // key - to - map, used for optimazation. all registered keys (accelerators) + // are stored in this map. + + static SUIT_Accel* myself; }; #endif diff --git a/src/SUIT/SUIT_ActionOperation.cxx b/src/SUIT/SUIT_ActionOperation.cxx index 8c24cf59a..d56f01705 100644 --- a/src/SUIT/SUIT_ActionOperation.cxx +++ b/src/SUIT/SUIT_ActionOperation.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_ActionOperation.h" diff --git a/src/SUIT/SUIT_ActionOperation.h b/src/SUIT/SUIT_ActionOperation.h index c9e9d774d..bed11e318 100644 --- a/src/SUIT/SUIT_ActionOperation.h +++ b/src/SUIT/SUIT_ActionOperation.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_ACTIONOPERATION_H #define SUIT_ACTIONOPERATION_H diff --git a/src/SUIT/SUIT_Application.cxx b/src/SUIT/SUIT_Application.cxx index f187bfabd..a4a21d862 100755 --- a/src/SUIT/SUIT_Application.cxx +++ b/src/SUIT/SUIT_Application.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_Application.h" @@ -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,155 +260,288 @@ 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() ) return -1; - int regId = desktop()->toolMgr()->registerAction( a, id ); - return desktop()->toolMgr()->insert( regId, tBar, idx ); + int regId = registerAction( id, a ); + int intId = desktop()->toolMgr()->insert( a, tBar, idx ); + return intId != -1 ? regId : -1; } +/*! + Creates new toolbutton + \return SUIT identificator of new action + \param a - action + \param tBar - name of toolbar + \param id - proposed SUIT identificator of action (if it is -1, then must be use any free) + \param idx - index in toolbar +*/ int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) return -1; - return desktop()->toolMgr()->insert( a, tBar, idx ); + int regId = registerAction( id, a ); + int intId = desktop()->toolMgr()->insert( a, tBar, idx ); + return intId != -1 ? regId : -1; } +/*! + Creates new toolbutton + \return "id" if all right or -1 otherwise + \param id - SUIT identificator of action + \param tBar - identificator of toolbar + \param idx - index in toolbar +*/ int SUIT_Application::createTool( const int id, const int tBar, const int idx ) { if ( !desktop() || !desktop()->toolMgr() ) return -1; - return desktop()->toolMgr()->insert( id, tBar, idx ); + int intId = desktop()->toolMgr()->insert( action( id ), tBar, 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() ) return -1; - return desktop()->toolMgr()->insert( id, tBar, idx ); + int intId = desktop()->toolMgr()->insert( action( id ), tBar, idx ); + 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 ) { if ( !desktop() || !desktop()->menuMgr() ) return -1; - return desktop()->menuMgr()->insert( subMenu, menu, group, index ); + return desktop()->menuMgr()->insert( subMenu, menu, group, id, index ); } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param subMenu - menu text of new item + \param menu - menu text of parent menu item + \param id - proposed identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int index ) { if ( !desktop() || !desktop()->menuMgr() ) return -1; - return desktop()->menuMgr()->insert( subMenu, menu, group, index ); + return desktop()->menuMgr()->insert( subMenu, menu, group, id, index ); } +/*! + Creates new menu item + \return SUIT identificator of new action + \param a - action + \param menu - identificator of parent menu item + \param id - proposed SUIT identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( QAction* a, const int menu, const int id, const int group, const int index ) { if ( !a || !desktop() || !desktop()->menuMgr() ) return -1; - int regId = desktop()->menuMgr()->registerAction( a, id ); - return desktop()->menuMgr()->insert( regId, menu, group, index ); + int regId = registerAction( id, a ); + int intId = desktop()->menuMgr()->insert( a, menu, group, index ); + return intId != -1 ? regId : -1; } +/*! + Creates new menu item + \return SUIT identificator of new action + \param a - action + \param menu - menu text of parent menu item + \param id - proposed SUIT identificator of action + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, const int group, const int index ) { if ( !a || !desktop() || !desktop()->menuMgr() ) return -1; - int regId = desktop()->menuMgr()->registerAction( a, id ); - return desktop()->menuMgr()->insert( regId, menu, group, index ); + int regId = registerAction( id, a ); + int intId = desktop()->menuMgr()->insert( a, menu, group, index ); + return intId != -1 ? regId : -1; } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param id - SUIT identificator of action + \param menu - menu text of parent menu item + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const int id, const int menu, const int group, const int index ) { if ( !desktop() || !desktop()->menuMgr() ) return -1; - return desktop()->menuMgr()->insert( id, menu, group, index ); + int intId = desktop()->menuMgr()->insert( action( id ), menu, group, index ); + return intId != -1 ? id : -1; } +/*! + Creates new menu item + \return identificator of new action in menu manager + \param id - SUIT identificator of action + \param menu - menu text of parent menu item + \param group - group in menu manager + \param index - index in menu +*/ int SUIT_Application::createMenu( const int id, const QString& menu, const int group, const int index ) { if ( !desktop() || !desktop()->menuMgr() ) return -1; - return desktop()->menuMgr()->insert( id, menu, group, index ); + int intId = desktop()->menuMgr()->insert( action( id ), menu, group, index ); + 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 { - SUIT_Application* that = (SUIT_Application*)this; - SUIT_Desktop* desk = that->desktop(); - if ( !desk ) - return 0; - QAction* a = 0; - if ( desk->menuMgr() ) - a = desk->menuMgr()->action( id ); - if ( !a && desk->toolMgr() ) - a = desk->toolMgr()->action( id ); + if ( myActionMap.contains( id ) ) + a = myActionMap[id]; return a; } +/*! + \return SUIT identificator of action + \param a - action +*/ int SUIT_Application::actionId( const QAction* a ) const { - SUIT_Application* that = (SUIT_Application*)this; - SUIT_Desktop* desk = that->desktop(); - if ( !desk ) - return 0; - int id = -1; - if ( desk->menuMgr() ) - id = desk->menuMgr()->actionId( a ); - if ( id == -1 && desk->toolMgr() ) - id = desk->toolMgr()->actionId( a ); + for ( QMap::ConstIterator it = myActionMap.begin(); + it != myActionMap.end() && id == -1; + ++it ) { + if ( it.data() == a ) + id = it.key(); + } 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 ) @@ -345,20 +557,46 @@ QAction* SUIT_Application::createAction( const int id, const QString& text, cons return a; } -void SUIT_Application::registerAction( const int id, QAction* 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 ); + if ( ident != -1 ) + return ident; + + static int generatedId = -1; + ident = id == -1 ? --generatedId : id; + + if ( action( ident ) ) + qWarning( "Action registration id is already in use: %d", ident ); + + myActionMap.insert( ident, a ); + if ( desktop() && desktop()->menuMgr() ) - desktop()->menuMgr()->registerAction( a, id ); + desktop()->menuMgr()->registerAction( a ); if ( desktop() && desktop()->toolMgr() ) - desktop()->toolMgr()->registerAction( a, id ); + desktop()->toolMgr()->registerAction( 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_Application.h b/src/SUIT/SUIT_Application.h index b630177e6..72dc89363 100755 --- a/src/SUIT/SUIT_Application.h +++ b/src/SUIT/SUIT_Application.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_APPLICATION_H #define SUIT_APPLICATION_H @@ -146,7 +146,7 @@ protected: static QAction* separator(); QAction* action( const int ) const; int actionId( const QAction* ) const; - void registerAction( const int, QAction* ); + int registerAction( const int, QAction* ); QAction* createAction( const int, const QString&, const QIconSet&, const QString&, const QString&, const int, QObject* = 0, const bool = false, QObject* = 0, const char* = 0 ); @@ -157,6 +157,7 @@ protected slots: private: SUIT_Study* myStudy; SUIT_Desktop* myDesktop; + QMap myActionMap; QLabel* myStatusLabel; }; diff --git a/src/SUIT/SUIT_Convertor.h b/src/SUIT/SUIT_Convertor.h index 36e1985da..fd37969fb 100755 --- a/src/SUIT/SUIT_Convertor.h +++ b/src/SUIT/SUIT_Convertor.h @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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 afc3446f3..1082579fc 100755 --- a/src/SUIT/SUIT_DataObject.cxx +++ b/src/SUIT/SUIT_DataObject.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_DataObject.h" @@ -22,8 +22,6 @@ #include "SUIT_DataObjectKey.h" -#include // for cout in dump() - /*! Constructor */ @@ -466,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; @@ -491,7 +495,7 @@ SUIT_DataObjectKey* SUIT_DataObject::key() const void SUIT_DataObject::dump( const int indent ) const { QString strIndent = QString().fill( ' ', indent ); // indentation string - std::cout << strIndent << name() << std::endl; // dump to cout + printf( "%s%s\n", strIndent.latin1(), name().latin1() ); for ( DataObjectListIterator it( myChildren ); it.current(); ++it ) // iterate all children it.current()->dump( indent + 2 ); // dump every child with indent + 2 spaces } diff --git a/src/SUIT/SUIT_DataObject.h b/src/SUIT/SUIT_DataObject.h index bb14608c3..01f0ffa59 100755 --- a/src/SUIT/SUIT_DataObject.h +++ b/src/SUIT/SUIT_DataObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_DATAOBJECT_H #define 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.cxx b/src/SUIT/SUIT_DataObjectIterator.cxx index 09a2c8bc2..c5f66be5c 100644 --- a/src/SUIT/SUIT_DataObjectIterator.cxx +++ b/src/SUIT/SUIT_DataObjectIterator.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_DataObjectIterator.h" diff --git a/src/SUIT/SUIT_DataObjectIterator.h b/src/SUIT/SUIT_DataObjectIterator.h index 45b8f7082..e51a23abf 100644 --- a/src/SUIT/SUIT_DataObjectIterator.h +++ b/src/SUIT/SUIT_DataObjectIterator.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_DATAOBJECT_ITERATOR_H #define SUIT_DATAOBJECT_ITERATOR_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_DataObjectKey.cxx b/src/SUIT/SUIT_DataObjectKey.cxx index 477ebd2f9..01a91404a 100755 --- a/src/SUIT/SUIT_DataObjectKey.cxx +++ b/src/SUIT/SUIT_DataObjectKey.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_DataObjectKey.h" diff --git a/src/SUIT/SUIT_DataObjectKey.h b/src/SUIT/SUIT_DataObjectKey.h index 40aea1454..9f4227d48 100755 --- a/src/SUIT/SUIT_DataObjectKey.h +++ b/src/SUIT/SUIT_DataObjectKey.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_DATAOBJECTKEY_H #define SUIT_DATAOBJECTKEY_H diff --git a/src/SUIT/SUIT_DataOwner.cxx b/src/SUIT/SUIT_DataOwner.cxx index 28ceb5153..826bd89bf 100755 --- a/src/SUIT/SUIT_DataOwner.cxx +++ b/src/SUIT/SUIT_DataOwner.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_DataOwner.h" @@ -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()mainWidget(), title, msg, "OK" ); } diff --git a/src/SUIT/SUIT_ExceptionHandler.h b/src/SUIT/SUIT_ExceptionHandler.h index f050e2183..d3c48455c 100755 --- a/src/SUIT/SUIT_ExceptionHandler.h +++ b/src/SUIT/SUIT_ExceptionHandler.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_EXCEPTIONHANDLER_H #define SUIT_EXCEPTIONHANDLER_H diff --git a/src/SUIT/SUIT_FileDlg.cxx b/src/SUIT/SUIT_FileDlg.cxx index ec580efd6..7fb1ee7c6 100755 --- a/src/SUIT/SUIT_FileDlg.cxx +++ b/src/SUIT/SUIT_FileDlg.cxx @@ -14,53 +14,53 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -//********************************************************************************* -// SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box. -// To get the file/directory name(s) call static methods: -// -// to invoke "Open file" or "Save file" dialog box -// static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters, -// const QString& caption, const bool open, const bool showQuickDir = true, -// SUIT_FileValidator* validator = 0); -// -// to invoke "Open files" dialog box (to get the multiple file selection) -// static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters, -// const QString& caption, bool showQuickDir = true, -// SUIT_FileValidator* validator = 0); -// -// to invoke "Select directory" dialog box -// static QString getExistingDirectory(QWidget* parent, const QString& initial, -// const QString& caption, const bool showQuickDir = true); -// -// The parameters: -// - parent parent widget (if 0, the current desktop is used) -// - initial starting directory or file name (if null, last visited directory is used) -// - filters file filters list; patterns inside the filter can be separated by ';','|' or ' ' -// symbols -// - caption dialog box's caption: if null, the default one is used -// - open open flag - true for "Open File" and false for "Save File" dialog box -// - showQuickDir this flag enables/disables "Quick directory list" controls -// - validator you can provide custom file validator with this parameter -// -// Examples: -// ... -// QStringList flist; -// flist.append( "Image files (*.bmp *.gif *.jpg )" ); -// flist.append( "All files (*.*)" ); -// QMyFileValidator* v = new QMyFileValidator( 0 ); -// QString fileName = SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v ); -// if ( !fileName.isEmpty() ) { -// ... writing image to the file -// } -// ... -// QStringList flist; -// flist.append( "*.cpp | *.cxx | *.c++" ); -// flist.append( "*.h | *.hpp | *.hxx" ); -// QString fileName = SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true ); -// -//********************************************************************************* + +/*! + SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box. + To get the file/directory name(s) call static methods: + + to invoke "Open file" or "Save file" dialog box + static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters, + const QString& caption, const bool open, const bool showQuickDir = true, + SUIT_FileValidator* validator = 0); + + to invoke "Open files" dialog box (to get the multiple file selection) + static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters, + const QString& caption, bool showQuickDir = true, + SUIT_FileValidator* validator = 0); + + to invoke "Select directory" dialog box + static QString getExistingDirectory(QWidget* parent, const QString& initial, + const QString& caption, const bool showQuickDir = true); + + The parameters: + - parent parent widget (if 0, the current desktop is used) + - initial starting directory or file name (if null, last visited directory is used) + - filters file filters list; patterns inside the filter can be separated by ';','|' or ' ' + symbols + - caption dialog box's caption: if null, the default one is used + - open open flag - true for "Open File" and false for "Save File" dialog box + - showQuickDir this flag enables/disables "Quick directory list" controls + - validator you can provide custom file validator with this parameter + + Examples: + ... + QStringList flist; + flist.append( "Image files (*.bmp *.gif *.jpg )" ); + flist.append( "All files (*.*)" ); + QMyFileValidator* v = new QMyFileValidator( 0 ); + QString fileName = SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v ); + if ( !fileName.isEmpty() ) { + ... writing image to the file + } + ... + QStringList flist; + flist.append( "*.cpp | *.cxx | *.c++" ); + flist.append( "*.h | *.hpp | *.hxx" ); + QString fileName = SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true ); +*/ #include "SUIT_FileDlg.h" diff --git a/src/SUIT/SUIT_FileDlg.h b/src/SUIT/SUIT_FileDlg.h index fcdb7da13..044188003 100755 --- a/src/SUIT/SUIT_FileDlg.h +++ b/src/SUIT/SUIT_FileDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_FILEDIALOG_H #define SUIT_FILEDIALOG_H diff --git a/src/SUIT/SUIT_FileValidator.cxx b/src/SUIT/SUIT_FileValidator.cxx index 3298cdb9b..ab09fc665 100755 --- a/src/SUIT/SUIT_FileValidator.cxx +++ b/src/SUIT/SUIT_FileValidator.cxx @@ -1,11 +1,24 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : SUIT_FileValidator.cxx -// Author : // Module : SALOME // $Header$ diff --git a/src/SUIT/SUIT_FileValidator.h b/src/SUIT/SUIT_FileValidator.h index ecba9f2c7..197f6a2ab 100755 --- a/src/SUIT/SUIT_FileValidator.h +++ b/src/SUIT/SUIT_FileValidator.h @@ -1,13 +1,25 @@ -// SALOME SALOMEGUI : implementation of desktop and GUI kernel +// 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. // -// Copyright (C) 2003 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SALOMEGUI : implementation of desktop and GUI kernel // // File : SUIT_FileValidator.h -// Author : // Module : SALOME -// $Header$ #ifndef SUIT_FILEVALIDATOR_H #define SUIT_FILEVALIDATOR_H @@ -15,6 +27,10 @@ #include #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..e80ff74f0 100755 --- a/src/SUIT/SUIT_MessageBox.cxx +++ b/src/SUIT/SUIT_MessageBox.cxx @@ -14,14 +14,15 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/******************************************************************** -** 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..24b350605 100755 --- a/src/SUIT/SUIT_MessageBox.h +++ b/src/SUIT/SUIT_MessageBox.h @@ -14,14 +14,9 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/******************************************************************** -** 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..2df0b7d24 100755 --- a/src/SUIT/SUIT_Operation.cxx +++ b/src/SUIT/SUIT_Operation.cxx @@ -14,18 +14,17 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/** -* 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..3d15f058c 100755 --- a/src/SUIT/SUIT_Operation.h +++ b/src/SUIT/SUIT_Operation.h @@ -14,19 +14,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -/** -* 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_OverrideCursor.cxx b/src/SUIT/SUIT_OverrideCursor.cxx index 3d276a989..0dab97a58 100755 --- a/src/SUIT/SUIT_OverrideCursor.cxx +++ b/src/SUIT/SUIT_OverrideCursor.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_OverrideCursor.h" diff --git a/src/SUIT/SUIT_OverrideCursor.h b/src/SUIT/SUIT_OverrideCursor.h index 0fd4428eb..ee89235d6 100755 --- a/src/SUIT/SUIT_OverrideCursor.h +++ b/src/SUIT/SUIT_OverrideCursor.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_OVERRIDECURSOR_H #define SUIT_OVERRIDECURSOR_H diff --git a/src/SUIT/SUIT_ParserSettings.cxx b/src/SUIT/SUIT_ParserSettings.cxx index 44689d114..fa3768ff1 100755 --- a/src/SUIT/SUIT_ParserSettings.cxx +++ b/src/SUIT/SUIT_ParserSettings.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SUIT/SUIT_ParserSettings.h b/src/SUIT/SUIT_ParserSettings.h index b5e724a6c..16d74a2fb 100755 --- a/src/SUIT/SUIT_ParserSettings.h +++ b/src/SUIT/SUIT_ParserSettings.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SUIT/SUIT_PopupClient.cxx b/src/SUIT/SUIT_PopupClient.cxx index 2bb8cde76..fd2c40d9f 100644 --- a/src/SUIT/SUIT_PopupClient.cxx +++ b/src/SUIT/SUIT_PopupClient.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_PopupClient.h" diff --git a/src/SUIT/SUIT_PopupClient.h b/src/SUIT/SUIT_PopupClient.h index e5a007b79..7d4023f3a 100644 --- a/src/SUIT/SUIT_PopupClient.h +++ b/src/SUIT/SUIT_PopupClient.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_POPUPCLIENT_H #define SUIT_POPUPCLIENT_H diff --git a/src/SUIT/SUIT_ResourceMgr.cxx b/src/SUIT/SUIT_ResourceMgr.cxx index ed8f3a872..c184037fa 100755 --- a/src/SUIT/SUIT_ResourceMgr.cxx +++ b/src/SUIT/SUIT_ResourceMgr.cxx @@ -14,10 +14,13 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_ResourceMgr.h" +#include +#include + /*! Constructor */ @@ -61,15 +64,61 @@ QString SUIT_ResourceMgr::loadDoc( const QString& prefix, const QString& id ) co return path( docSection, prefix, id ); } +#ifndef WIN32 +#include +#endif /*! 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..db0eda711 100755 --- a/src/SUIT/SUIT_ResourceMgr.h +++ b/src/SUIT/SUIT_ResourceMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_RESOURCEMGR_H #define 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_SelectionFilter.cxx b/src/SUIT/SUIT_SelectionFilter.cxx index abb30272c..f4cd983a2 100644 --- a/src/SUIT/SUIT_SelectionFilter.cxx +++ b/src/SUIT/SUIT_SelectionFilter.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_SelectionFilter.h" diff --git a/src/SUIT/SUIT_SelectionFilter.h b/src/SUIT/SUIT_SelectionFilter.h index 2f64f7ec9..a26510108 100644 --- a/src/SUIT/SUIT_SelectionFilter.h +++ b/src/SUIT/SUIT_SelectionFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_SELECTIONFILTER_H #define SUIT_SELECTIONFILTER_H diff --git a/src/SUIT/SUIT_SelectionMgr.cxx b/src/SUIT/SUIT_SelectionMgr.cxx index 98a33e83a..895486f21 100755 --- a/src/SUIT/SUIT_SelectionMgr.cxx +++ b/src/SUIT/SUIT_SelectionMgr.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_SelectionMgr.h" diff --git a/src/SUIT/SUIT_SelectionMgr.h b/src/SUIT/SUIT_SelectionMgr.h index d471b2f73..79576568f 100755 --- a/src/SUIT/SUIT_SelectionMgr.h +++ b/src/SUIT/SUIT_SelectionMgr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_SELECTIONMGR_H #define SUIT_SELECTIONMGR_H diff --git a/src/SUIT/SUIT_Selector.cxx b/src/SUIT/SUIT_Selector.cxx index 7b23bb9f9..ebda6a065 100755 --- a/src/SUIT/SUIT_Selector.cxx +++ b/src/SUIT/SUIT_Selector.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_Selector.h" diff --git a/src/SUIT/SUIT_Selector.h b/src/SUIT/SUIT_Selector.h index 5d1ae0e3a..058506d24 100755 --- a/src/SUIT/SUIT_Selector.h +++ b/src/SUIT/SUIT_Selector.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_SELECTOR_H #define 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 03f32ee74..6d5f0669d 100755 --- a/src/SUIT/SUIT_Session.cxx +++ b/src/SUIT/SUIT_Session.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_Session.h" @@ -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 ); + 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_Session.h b/src/SUIT/SUIT_Session.h index 505f00c1a..08078ff74 100755 --- a/src/SUIT/SUIT_Session.h +++ b/src/SUIT/SUIT_Session.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_SESSION_H #define SUIT_SESSION_H diff --git a/src/SUIT/SUIT_SmartPtr.h b/src/SUIT/SUIT_SmartPtr.h index 4f0d7a4c9..ee28cf5e1 100755 --- a/src/SUIT/SUIT_SmartPtr.h +++ b/src/SUIT/SUIT_SmartPtr.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #if !defined(__SUIT_SMARTPTR_H) #define __SUIT_SMARTPTR_H diff --git a/src/SUIT/SUIT_Study.cxx b/src/SUIT/SUIT_Study.cxx index 2f83179c4..a3baef3ce 100755 --- a/src/SUIT/SUIT_Study.cxx +++ b/src/SUIT/SUIT_Study.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_Study.h" @@ -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 - */ } /*! @@ -510,3 +511,18 @@ bool SUIT_Study::hasTransaction() const { return false; } + +/*! + * \brief Stores the study state +*/ +int SUIT_Study::storeState() +{ + return -1; +} + +/*! + * \brief Restores the study state +*/ +void SUIT_Study::restoreState(int savePoint) +{ +} diff --git a/src/SUIT/SUIT_Study.h b/src/SUIT/SUIT_Study.h index c1163cc6c..156c6bc74 100755 --- a/src/SUIT/SUIT_Study.h +++ b/src/SUIT/SUIT_Study.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_STUDY_H #define SUIT_STUDY_H @@ -75,6 +75,9 @@ public: bool suspend( SUIT_Operation* ); bool resume( SUIT_Operation* ); + virtual int storeState(); + virtual void restoreState(int savePoint); + signals: void studyModified( SUIT_Study* ); diff --git a/src/SUIT/SUIT_ToolButton.cxx b/src/SUIT/SUIT_ToolButton.cxx index f0434db3c..35e009c6d 100755 --- a/src/SUIT/SUIT_ToolButton.cxx +++ b/src/SUIT/SUIT_ToolButton.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_ToolButton.h" diff --git a/src/SUIT/SUIT_ToolButton.h b/src/SUIT/SUIT_ToolButton.h index 6b8f51601..10abe2629 100755 --- a/src/SUIT/SUIT_ToolButton.h +++ b/src/SUIT/SUIT_ToolButton.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_TOOLBUTTON_H #define SUIT_TOOLBUTTON_H diff --git a/src/SUIT/SUIT_Tools.cxx b/src/SUIT/SUIT_Tools.cxx index 3e728fe51..953de65d4 100755 --- a/src/SUIT/SUIT_Tools.cxx +++ b/src/SUIT/SUIT_Tools.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_Tools.h" diff --git a/src/SUIT/SUIT_Tools.h b/src/SUIT/SUIT_Tools.h index 07d8ff059..62bc8d163 100755 --- a/src/SUIT/SUIT_Tools.h +++ b/src/SUIT/SUIT_Tools.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_TOOLS_H #define 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 d38f6fcdf..602a8913b 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/ or email : webmaster.salome@opencascade.com +// #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,20 +75,44 @@ 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 ) { - // printf( "--- synchronize : %d ---\n", ++gSync ); - if( td.isEqual( r1, r2 ) ) { + // update items themselves + td.updateItem( r2 ); + + // iterate 'siblings' (direct children) QValueList< DiffItem< SrcItem, TrgItem > > d; 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++ ) @@ -62,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 { @@ -71,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 @@ -86,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, @@ -99,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; @@ -153,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..619b9c488 100755 --- a/src/SUIT/SUIT_ViewManager.cxx +++ b/src/SUIT/SUIT_ViewManager.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUIT_ViewManager.h" @@ -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_ViewManager.h b/src/SUIT/SUIT_ViewManager.h index e0ca57fb2..8cacbe253 100755 --- a/src/SUIT/SUIT_ViewManager.h +++ b/src/SUIT/SUIT_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_VIEWMANAGER_H #define SUIT_VIEWMANAGER_H diff --git a/src/SUIT/SUIT_ViewModel.cxx b/src/SUIT/SUIT_ViewModel.cxx index 38a9aac1e..86c0f0099 100755 --- a/src/SUIT/SUIT_ViewModel.cxx +++ b/src/SUIT/SUIT_ViewModel.cxx @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SUIT_ViewModel.cxx: implementation of the SUIT_ViewModel class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewModel.h" diff --git a/src/SUIT/SUIT_ViewModel.h b/src/SUIT/SUIT_ViewModel.h index b99c4025c..4be9fd777 100755 --- a/src/SUIT/SUIT_ViewModel.h +++ b/src/SUIT/SUIT_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUIT_VIEWMODEL_H #define SUIT_VIEWMODEL_H diff --git a/src/SUIT/SUIT_ViewWindow.cxx b/src/SUIT/SUIT_ViewWindow.cxx index bd4c32e69..0df3081c3 100755 --- a/src/SUIT/SUIT_ViewWindow.cxx +++ b/src/SUIT/SUIT_ViewWindow.cxx @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class. // -////////////////////////////////////////////////////////////////////// #include "SUIT_ViewWindow.h" #include "SUIT_Desktop.h" @@ -54,24 +53,39 @@ 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(); } -bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format ) +/*! + Saves image to file according to the format + \param image - image + \param fileName - name of file + \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG") +*/ +bool SUIT_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format ) { - QImage img = dumpView(); if( img.isNull() ) return false; @@ -87,6 +101,16 @@ bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& return res; } +/*! + 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 ) +{ + return dumpViewToFormat( dumpView(), fileName, format ); +} + /*! Close event \a theEvent. */ void SUIT_ViewWindow::closeEvent(QCloseEvent* theEvent) @@ -111,6 +135,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" ); @@ -125,13 +152,15 @@ bool SUIT_ViewWindow::event( QEvent* e ) bool bOk = false; if ( myManager && myManager->study() && myManager->study()->application() ) { + QImage im = dumpView(); + // get file name SUIT_Application* app = myManager->study()->application(); QString fileName = app->getFileName( false, QString::null, filter(), tr( "TLT_DUMP_VIEW" ), 0 ); if( !fileName.isEmpty() ) { QString fmt = SUIT_Tools::extension( fileName ).upper(); - bOk = dumpViewToFormat( fileName, fmt ); + bOk = dumpViewToFormat( im, fileName, fmt ); } else { @@ -148,13 +177,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 1ac79a504..2e5eb7804 100755 --- a/src/SUIT/SUIT_ViewWindow.h +++ b/src/SUIT/SUIT_ViewWindow.h @@ -14,11 +14,10 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // 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_ @@ -48,9 +47,12 @@ public: bool event(QEvent*); virtual QImage dumpView(); - virtual bool dumpViewToFormat( const QString& fileName, const QString& format ); + bool dumpViewToFormat( const QString& fileName, const QString& format ); - void onAccelAction( int ); + bool onAccelAction( int ); + + virtual QString getVisualParameters(); + virtual void setVisualParameters( const QString& parameters ); public slots: virtual void onDumpView(); @@ -70,7 +72,8 @@ protected: void closeEvent( QCloseEvent* ); virtual void contextMenuEvent( QContextMenuEvent* ); virtual QString filter() const; - virtual void action( const int ); + virtual bool action( const int ); + virtual bool dumpViewToFormat( const QImage&, const QString& fileName, const QString& format ); SUIT_Desktop* myDesktop; SUIT_ViewManager* myManager; diff --git a/src/SUIT/resources/SUIT_images.po b/src/SUIT/resources/SUIT_images.po index b22696bbd..88441a5f1 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..480ab305b 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/ or email : webmaster.salome@opencascade.com +# # This is a Qt message file in .po format. Each msgid starts with # a scope. This scope should *NOT* be translated - eg. "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..a82d31726 100755 --- a/src/SUIT/utilities.h +++ b/src/SUIT/utilities.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..4639f100d 100644 --- a/src/SUITApp/SUITApp_Application.cxx +++ b/src/SUITApp/SUITApp_Application.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUITApp_Application.h" @@ -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/SUITApp_Application.h b/src/SUITApp/SUITApp_Application.h index 4fe9acebd..479f07a20 100644 --- a/src/SUITApp/SUITApp_Application.h +++ b/src/SUITApp/SUITApp_Application.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUITAPP_APPLICATION_H #define SUITAPP_APPLICATION_H diff --git a/src/SUITApp/resources/SUITApp_msg_en.po b/src/SUITApp/resources/SUITApp_msg_en.po index fa5399056..3e268b6cf 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/ or email : webmaster.salome@opencascade.com +# msgid "APP_ERROR" msgstr "Error" diff --git a/src/SUPERVGraph/Makefile.in b/src/SUPERVGraph/Makefile.in index 149feb93f..334a2c9fb 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/ or email : webmaster.salome@opencascade.com +# # source path top_srcdir=@top_srcdir@ top_builddir=../.. @@ -34,8 +52,8 @@ RESOURCES_FILES = view_pan.png \ LIB_CLIENT_IDL = -CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib +CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) +LDFLAGS+=$(QT_MT_LIBS) -lsuit @CONCLUDE@ diff --git a/src/SUPERVGraph/SUPERVGraph.cxx b/src/SUPERVGraph/SUPERVGraph.cxx index 2b8f3d87f..d570c614a 100755 --- a/src/SUPERVGraph/SUPERVGraph.cxx +++ b/src/SUPERVGraph/SUPERVGraph.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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.h b/src/SUPERVGraph/SUPERVGraph.h index 599857d00..eef17b998 100755 --- a/src/SUPERVGraph/SUPERVGraph.h +++ b/src/SUPERVGraph/SUPERVGraph.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx index 716cc8fca..e20b59768 100755 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_ViewFrame.h b/src/SUPERVGraph/SUPERVGraph_ViewFrame.h index df3266dd2..f2d336449 100755 --- a/src/SUPERVGraph/SUPERVGraph_ViewFrame.h +++ b/src/SUPERVGraph/SUPERVGraph_ViewFrame.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx index 9cf508b31..0f890c4b5 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewManager.cxx @@ -14,12 +14,15 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUPERVGraph_ViewManager.h" 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_ViewManager.h b/src/SUPERVGraph/SUPERVGraph_ViewManager.h index f35557960..94c5a850d 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewManager.h +++ b/src/SUPERVGraph/SUPERVGraph_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUPERVGRAPH_VIEWMANAGER_H #define SUPERVGRAPH_VIEWMANAGER_H diff --git a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx index c6fe5f9ea..a9911da3e 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx +++ b/src/SUPERVGraph/SUPERVGraph_ViewModel.cxx @@ -14,22 +14,32 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SUPERVGraph_ViewModel.h" #include "SUPERVGraph_ViewFrame.h" #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/SUPERVGraph/SUPERVGraph_ViewModel.h b/src/SUPERVGraph/SUPERVGraph_ViewModel.h index 82c6f6f93..9de2ffa50 100644 --- a/src/SUPERVGraph/SUPERVGraph_ViewModel.h +++ b/src/SUPERVGraph/SUPERVGraph_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SUPERVGRAPH_VIEWMODEL_H #define SUPERVGRAPH_VIEWMODEL_H diff --git a/src/SUPERVGraph/resources/SUPERVGraph_images.po b/src/SUPERVGraph/resources/SUPERVGraph_images.po index 3b41ded0f..97cab3fd6 100644 --- a/src/SUPERVGraph/resources/SUPERVGraph_images.po +++ b/src/SUPERVGraph/resources/SUPERVGraph_images.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SUPERVGraph_images.po // Created: 11/22/2005 10:52:37 PM // Author: Margarita Karpunina diff --git a/src/SUPERVGraph/resources/SUPERVGraph_msg_en.po b/src/SUPERVGraph/resources/SUPERVGraph_msg_en.po index b9ac39b42..1bad63bd6 100644 --- a/src/SUPERVGraph/resources/SUPERVGraph_msg_en.po +++ b/src/SUPERVGraph/resources/SUPERVGraph_msg_en.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SUPERVGraph_msg_en.po // Created: 11/22/2005 10:55:36 PM // Author: Margarita Karpunina diff --git a/src/SUPERVGraph/resources/view_pan.png b/src/SUPERVGraph/resources/view_pan.png index 038fba118..50db45828 100644 Binary files a/src/SUPERVGraph/resources/view_pan.png and b/src/SUPERVGraph/resources/view_pan.png differ diff --git a/src/SUPERVGraph/resources/view_reset.png b/src/SUPERVGraph/resources/view_reset.png index 12850643e..7ba93b98f 100644 Binary files a/src/SUPERVGraph/resources/view_reset.png and b/src/SUPERVGraph/resources/view_reset.png differ diff --git a/src/SVTK/Makefile.in b/src/SVTK/Makefile.in index 58c7e6fdb..f45b583aa 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/ or email : webmaster.salome@opencascade.com +# # 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..8bd1cbd43 100644 --- a/src/SVTK/SALOME_Actor.cxx +++ b/src/SVTK/SALOME_Actor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..03c4ca7a7 100644 --- a/src/SVTK/SALOME_Actor.h +++ b/src/SVTK/SALOME_Actor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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.cxx b/src/SVTK/SVTK.cxx index 0be0d5cfd..674714f77 100644 --- a/src/SVTK/SVTK.cxx +++ b/src/SVTK/SVTK.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK.h b/src/SVTK/SVTK.h index a5b0ba916..b07763c0b 100755 --- a/src/SVTK/SVTK.h +++ b/src/SVTK/SVTK.h @@ -14,19 +14,26 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +#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 +# ifdef SVTK_EXPORTS +# define SVTK_EXPORT __declspec(dllexport) +# else +# define SVTK_EXPORT __declspec(dllimport) +# endif #else -#define SVTK_EXPORT +# 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..036926fb8 100644 --- a/src/SVTK/SVTK_Actor.cxx +++ b/src/SVTK/SVTK_Actor.cxx @@ -15,7 +15,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com #include "SVTK_Actor.h" #include "SALOME_Actor.h" @@ -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_Actor.h b/src/SVTK/SVTK_Actor.h index 9d1dcb224..bb7542da3 100644 --- a/src/SVTK/SVTK_Actor.h +++ b/src/SVTK/SVTK_Actor.h @@ -15,7 +15,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com #ifndef SVTK_ACTOR_H #define SVTK_ACTOR_H diff --git a/src/SVTK/SVTK_CubeAxesActor2D.cxx b/src/SVTK/SVTK_CubeAxesActor2D.cxx index 3fdcf72f3..823c07224 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.cxx +++ b/src/SVTK/SVTK_CubeAxesActor2D.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..b9583c642 100644 --- a/src/SVTK/SVTK_CubeAxesActor2D.h +++ b/src/SVTK/SVTK_CubeAxesActor2D.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 daed6845e..94e4af88f 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.cxx +++ b/src/SVTK/SVTK_CubeAxesDlg.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -33,6 +33,7 @@ #include "SVTK_CubeAxesActor2D.h" #include "QtxAction.h" +#include "QtxIntSpinBox.h" #include #include @@ -53,10 +54,9 @@ * Description : Tab of dialog */ -//======================================================================= -// name : SVTK_AxisWidget::AxisWg -// Purpose : Constructor -//======================================================================= +/*! + Constructor +*/ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) : QFrame(theParent) { @@ -88,15 +88,13 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) aHBox = new QHBox(myLabelsGrp); aHBox->setSpacing(5); aLabel = new QLabel(tr("NUMBER"), aHBox); - myLabelNumber = new QLineEdit(aHBox); - myLabelNumber->setValidator(new QIntValidator(0, 25, this)); - myLabelNumber->installEventFilter(this); + myLabelNumber = new QtxIntSpinBox(0,25,1,aHBox,"SpinBoxLabelNumber"); aLabels.append(aLabel); aHBox = new QHBox(myLabelsGrp); aHBox->setSpacing(5); aLabel = new QLabel(tr("OFFSET"), aHBox); - myLabelOffset = new QLineEdit(aHBox); + myLabelOffset = new QtxIntSpinBox(0,100,1,aHBox,"SpinBoxLabellOffset"); aLabels.append(aLabel); aHBox = new QHBox(myLabelsGrp); @@ -113,7 +111,8 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) aHBox = new QHBox(myTicksGrp); aHBox->setSpacing(5); aLabel = new QLabel(tr("LENGTH"), aHBox); - myTickLength = new QLineEdit(aHBox); + myTickLength = new QtxIntSpinBox(0,100,1,aHBox,"SpinBoxTickLength"); + aLabels.append(aLabel); // Layout @@ -143,6 +142,9 @@ SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent) connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked())); } +/*! + Destructor +*/ SVTK_AxisWidget::~SVTK_AxisWidget() { } @@ -154,20 +156,6 @@ void SVTK_AxisWidget::updateControlState() onTicksChecked(); } -bool SVTK_AxisWidget::eventFilter(QObject* o, QEvent* e) -{ - if (e->type() == QEvent::FocusOut) { - bool isOK = false; - int k = myLabelNumber->text().toInt(&isOK); - if (isOK && k > 25) myLabelNumber->setText("25"); - } - return false; -} - -//======================================================================= -// name : SVTK_AxisWidget::onNameChecked -// Purpose : -//======================================================================= void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState) { QObjectList aChildren(*theGrp->children()); @@ -177,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, @@ -235,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) @@ -258,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(); @@ -286,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(); @@ -296,8 +256,8 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) } myIsLabelsVisible->setChecked(useLabels); - myLabelNumber->setText(QString("%1").arg(nbLabels)); - myLabelOffset->setText(QString("%1").arg(anOffset)); + myLabelNumber->setValue(nbLabels); + myLabelOffset->setValue(anOffset); myLabelsFont->SetData(aLabelsColor, aLabelsFontFamily, isLabelsBold, isLabelsItalic, isLabelsShadow); // Tick marks @@ -305,15 +265,11 @@ bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor) int aTickLength = theActor->GetTickLength(); myIsTicksVisible->setChecked(useTickMarks); - myTickLength->setText(QString("%1").arg(aTickLength)); + myTickLength->setValue(aTickLength); return true; } -//======================================================================= -// name : SVTK_CubeAxesDlg::Apply -// Purpose : -//======================================================================= bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) { if (theActor == 0) @@ -350,14 +306,11 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) theActor->SetLabelVisibility(myIsLabelsVisible->isChecked() ? 1 : 0); - bool isOk = false; - int nbLabels = myLabelNumber->text().toInt(&isOk); - if (isOk) - theActor->SetNumberOfLabels(nbLabels); + int nbLabels = myLabelNumber->value(); + theActor->SetNumberOfLabels(nbLabels); - int anOffset = myLabelOffset->text().toInt(&isOk); - if (isOk) - theActor->SetTickOffset(anOffset); + int anOffset = myLabelOffset->value(); + theActor->SetTickOffset(anOffset); QColor aLabelsColor(255, 255, 255); int aLabelsFontFamily = VTK_ARIAL; @@ -385,9 +338,8 @@ bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor) // Tick marks theActor->SetTickVisibility(myIsTicksVisible->isChecked()); - int aTickLength = myTickLength->text().toInt(&isOk); - if (isOk) - theActor->SetTickLength(aTickLength); + int aTickLength = myTickLength->value(); + theActor->SetTickLength(aTickLength); return true; } @@ -397,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); @@ -447,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); @@ -476,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(); @@ -499,25 +447,27 @@ 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; try { + QWidget *aCurrWid = this->focusWidget(); + aCurrWid->clearFocus(); + aCurrWid->setFocus(); + isOk = isOk && myAxes[ 0 ]->Apply(myActor->GetXAxisActor2D()); isOk = isOk && myAxes[ 1 ]->Apply(myActor->GetYAxisActor2D()); isOk = isOk && myAxes[ 2 ]->Apply(myActor->GetZAxisActor2D()); @@ -544,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 bd7e5254c..c4277db69 100644 --- a/src/SVTK/SVTK_CubeAxesDlg.h +++ b/src/SVTK/SVTK_CubeAxesDlg.h @@ -15,7 +15,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -27,7 +27,8 @@ #ifndef SVTK_CubeAxesDlg_H #define SVTK_CubeAxesDlg_H -#include +#include "SVTK_DialogBase.h" + #include class QWidget; @@ -39,6 +40,7 @@ class QLineEdit; class QGroupBox; class QtxAction; +class QtxIntSpinBox; class vtkAxisActor2D; class SVTK_CubeAxesActor2D; @@ -51,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(); @@ -68,8 +70,6 @@ private slots: bool onApply(); void onClose(); - virtual void done( int ); - private: QWidget* createButtonFrame( QWidget* ); QWidget* createMainFrame ( QWidget* ); @@ -78,7 +78,6 @@ private: private: SVTK_MainWindow *myMainWindow; SVTK_CubeAxesActor2D* myActor; - QtxAction* myAction; QTabWidget* myTabWg; QCheckBox* myIsVisible; @@ -107,9 +106,6 @@ public: bool ReadData( vtkAxisActor2D* ); bool Apply( vtkAxisActor2D* ); -protected: - bool eventFilter(QObject*, QEvent*); - private slots: void onNameChecked(); void onLabelsChecked(); @@ -129,14 +125,14 @@ private: // labels QGroupBox* myLabelsGrp; QCheckBox* myIsLabelsVisible; - QLineEdit* myLabelNumber; - QLineEdit* myLabelOffset; + QtxIntSpinBox* myLabelNumber; + QtxIntSpinBox* myLabelOffset; SVTK_FontWidget* myLabelsFont; // tick marks QGroupBox* myTicksGrp; QCheckBox* myIsTicksVisible; - QLineEdit* myTickLength; + QtxIntSpinBox* myTickLength; friend class SVTK_CubeAxesDlg; }; diff --git a/src/SVTK/SVTK_DeviceActor.cxx b/src/SVTK/SVTK_DeviceActor.cxx index be959115c..279015efd 100644 --- a/src/SVTK/SVTK_DeviceActor.cxx +++ b/src/SVTK/SVTK_DeviceActor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 38378d295..c68829de9 100644 --- a/src/SVTK/SVTK_DeviceActor.h +++ b/src/SVTK/SVTK_DeviceActor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -29,6 +29,9 @@ #ifndef SVTK_DEVICE_ACTOR_H #define SVTK_DEVICE_ACTOR_H +#include "SVTK.h" +#include "VTKViewer.h" + #include #include @@ -44,9 +47,6 @@ class vtkDataSet; class vtkShrinkFilter; class vtkDataSetMapper; -#include "SVTK.h" - -//---------------------------------------------------------------------------- namespace SVTK { namespace Representation @@ -60,7 +60,6 @@ namespace SVTK } -//---------------------------------------------------------------------------- class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor { public: @@ -97,7 +96,7 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor GetNodeObjId(int theVtkID); virtual - float* + vtkFloatingPointType* GetNodeCoord(int theObjID); virtual @@ -120,12 +119,12 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor /** @name For shrink mamnagement purpose */ //@{ - float + vtkFloatingPointType GetShrinkFactor(); virtual void - SetShrinkFactor(float value); + SetShrinkFactor(vtkFloatingPointType value); virtual void @@ -155,11 +154,11 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor GetRepresentation(); virtual - float + vtkFloatingPointType GetDefaultPointSize(); virtual - float + vtkFloatingPointType GetDefaultLineWidth(); bool @@ -192,11 +191,13 @@ class SVTK_EXPORT 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_Event.h b/src/SVTK/SVTK_Event.h index f4c1c42ec..fa415ab83 100644 --- a/src/SVTK/SVTK_Event.h +++ b/src/SVTK/SVTK_Event.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_FontWidget.cxx b/src/SVTK/SVTK_FontWidget.cxx index edaa9a6c0..4269b5b6b 100644 --- a/src/SVTK/SVTK_FontWidget.cxx +++ b/src/SVTK/SVTK_FontWidget.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_FontWidget.h b/src/SVTK/SVTK_FontWidget.h index c2b62ee8d..953072a94 100644 --- a/src/SVTK/SVTK_FontWidget.h +++ b/src/SVTK/SVTK_FontWidget.h @@ -15,7 +15,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_Functor.h b/src/SVTK/SVTK_Functor.h index b47d26e6c..d76a93548 100644 --- a/src/SVTK/SVTK_Functor.h +++ b/src/SVTK/SVTK_Functor.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SVTK_Functor_H #define SVTK_Functor_H diff --git a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx index e3cb3c8e2..ecb406b1b 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..b47705d50 100644 --- a/src/SVTK/SVTK_GenericRenderWindowInteractor.h +++ b/src/SVTK/SVTK_GenericRenderWindowInteractor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..4f8dfaa60 100644 --- a/src/SVTK/SVTK_InteractorStyle.cxx +++ b/src/SVTK/SVTK_InteractorStyle.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 97a9ecdb7..93a1b2b6e 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_EXPORT 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_EXPORT 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 ad01609bc..2cb5d4379 100644 --- a/src/SVTK/SVTK_MainWindow.cxx +++ b/src/SVTK/SVTK_MainWindow.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,17 +319,18 @@ SVTK_MainWindow return GetRenderer()->GetTrihedronSize(); } -//---------------------------------------------------------------------------- +/*! + Redirect the request to SVTK_Renderer::SetTrihedronSize +*/ void SVTK_MainWindow -::SetTrihedronSize( const int theSize ) +::SetTrihedronSize( const int theSize, const bool theRelative ) { - GetRenderer()->SetTrihedronSize(theSize); + GetRenderer()->SetTrihedronSize(theSize, theRelative); Repaint(); } -//---------------------------------------------------------------------------- /*! 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 758093797..3d9637a40 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/ or email : webmaster.salome@opencascade.com +// #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 @@ -150,7 +168,7 @@ public: //! Redirect the request to #SVTK_Renderer::SetTrihedronSize void - SetTrihedronSize(const int theSize); + SetTrihedronSize(const int theSize, const bool theRelative = true); //! Redirect the request to #SVTK_Renderer::AdjustActors void @@ -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..7b99f2c9c 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.cxx +++ b/src/SVTK/SVTK_NonIsometricDlg.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..66be82a39 100644 --- a/src/SVTK/SVTK_NonIsometricDlg.h +++ b/src/SVTK/SVTK_NonIsometricDlg.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..11e4b20f5 100644 --- a/src/SVTK/SVTK_Prs.cxx +++ b/src/SVTK/SVTK_Prs.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_Prs.h b/src/SVTK/SVTK_Prs.h index 3446e9afe..218a9f101 100644 --- a/src/SVTK/SVTK_Prs.h +++ b/src/SVTK/SVTK_Prs.h @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_RectPicker.cxx b/src/SVTK/SVTK_RectPicker.cxx index 775782e80..9aaad409e 100644 --- a/src/SVTK/SVTK_RectPicker.cxx +++ b/src/SVTK/SVTK_RectPicker.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..d70ed0a1a 100644 --- a/src/SVTK/SVTK_RectPicker.h +++ b/src/SVTK/SVTK_RectPicker.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 bc4de96c6..69d19aa6e 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_RenderWindowInteractor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,8 +81,12 @@ QVTK_RenderWindowInteractor myRenderWindow->SetWindowId((void*)winId()); } - -void QVTK_RenderWindowInteractor::Initialize( vtkGenericRenderWindowInteractor* theDevice ) +/*! + To initialize by vtkGenericRenderWindowInteractor instance +*/ +void +QVTK_RenderWindowInteractor +::Initialize(vtkGenericRenderWindowInteractor* theDevice) { if ( GetDevice() ) myDevice->SetRenderWindow( NULL ); @@ -91,8 +97,11 @@ void QVTK_RenderWindowInteractor::Initialize( vtkGenericRenderWindowInteractor* theDevice->SetRenderWindow( getRenderWindow() ); } -//---------------------------------------------------------------------------- -QVTK_RenderWindowInteractor::~QVTK_RenderWindowInteractor() +/*! + Destructor +*/ +QVTK_RenderWindowInteractor +::~QVTK_RenderWindowInteractor() { #ifndef WIN32 SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance(); @@ -101,13 +110,20 @@ QVTK_RenderWindowInteractor::~QVTK_RenderWindowInteractor() #endif } -//---------------------------------------------------------------------------- -vtkGenericRenderWindowInteractor* QVTK_RenderWindowInteractor::GetDevice() + +/*! + \return corresponding render window interactor +*/ +vtkGenericRenderWindowInteractor* +QVTK_RenderWindowInteractor +::GetDevice() { return myDevice.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + \return corresponding render window +*/ vtkRenderWindow* QVTK_RenderWindowInteractor ::getRenderWindow() @@ -115,7 +131,9 @@ QVTK_RenderWindowInteractor return myRenderWindow.GetPointer(); } -//---------------------------------------------------------------------------- +/*! + Just to simplify usage of its device (vtkGenericRenderWindowInteractor) +*/ void QVTK_RenderWindowInteractor ::InvokeEvent(unsigned long theEvent, void* theCallData) @@ -123,7 +141,9 @@ QVTK_RenderWindowInteractor GetDevice()->InvokeEvent(theEvent,theCallData); } -//---------------------------------------------------------------------------- +/*! + Need for initial contents display on Win32 +*/ void QVTK_RenderWindowInteractor ::show() @@ -132,7 +152,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() @@ -145,7 +167,9 @@ QVTK_RenderWindowInteractor } } -//---------------------------------------------------------------------------- +/*! + To adjust widget and vtkRenderWindow size +*/ void QVTK_RenderWindowInteractor ::resize(int w, int h) @@ -153,16 +177,20 @@ QVTK_RenderWindowInteractor GetDevice()->UpdateSize(w,h); } -//---------------------------------------------------------------------------- +/*! + Custom paint event handler +*/ void QVTK_RenderWindowInteractor ::paintEvent( QPaintEvent* theEvent ) { - GetDevice()->Render(); + GetDevice()->CreateTimer(VTKI_TIMER_FIRST); } -//---------------------------------------------------------------------------- +/*! + Custom resize event handler +*/ void QVTK_RenderWindowInteractor ::resizeEvent( QResizeEvent* theEvent ) @@ -194,14 +222,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 ) @@ -214,7 +246,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void QVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -232,7 +266,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void QVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -251,14 +287,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 ) @@ -268,7 +308,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void QVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -280,7 +322,9 @@ QVTK_RenderWindowInteractor GetDevice()->CharEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void QVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -292,7 +336,9 @@ QVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom enter event handler +*/ void QVTK_RenderWindowInteractor ::enterEvent( QEvent* event ) @@ -304,7 +350,9 @@ QVTK_RenderWindowInteractor GetDevice()->EnterEvent(); } -//---------------------------------------------------------------------------- +/*! + Custom leave event handler +*/ void QVTK_RenderWindowInteractor ::leaveEvent( QEvent * ) @@ -312,9 +360,13 @@ QVTK_RenderWindowInteractor GetDevice()->LeaveEvent(); } - -//---------------------------------------------------------------------------- -void QVTK_RenderWindowInteractor::focusInEvent( QFocusEvent* event ) +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ +void +QVTK_RenderWindowInteractor +::focusInEvent( QFocusEvent* event ) { QWidget::focusInEvent( event ); @@ -333,8 +385,13 @@ void QVTK_RenderWindowInteractor::focusInEvent( QFocusEvent* event ) #endif } -//---------------------------------------------------------------------------- -void QVTK_RenderWindowInteractor::focusOutEvent( QFocusEvent* event ) +/*! + Reimplemented from QWidget in order to set window - receiver + of space mouse events. +*/ +void +QVTK_RenderWindowInteractor +::focusOutEvent ( QFocusEvent* event ) { QWidget::focusOutEvent( event ); @@ -347,9 +404,11 @@ void QVTK_RenderWindowInteractor::focusOutEvent( QFocusEvent* event ) } -//---------------------------------------------------------------------------- #ifdef WIN32 +/*! + To handle native Win32 events (from such devices as SpaceMouse) +*/ bool QVTK_RenderWindowInteractor::winEvent( MSG* msg ) { // TODO: Implement event handling for SpaceMouse @@ -358,7 +417,12 @@ bool QVTK_RenderWindowInteractor::winEvent( MSG* msg ) #else -bool QVTK_RenderWindowInteractor::x11Event( XEvent *xEvent ) +/*! + To handle native X11 events (from such devices as SpaceMouse) +*/ +bool +QVTK_RenderWindowInteractor +::x11Event( XEvent *xEvent ) { // handle 3d space mouse events if ( SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance() ) @@ -387,7 +451,9 @@ bool QVTK_RenderWindowInteractor::x11Event( XEvent *xEvent ) #endif -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_RenderWindowInteractor ::SVTK_RenderWindowInteractor(QWidget* theParent, const char* theName): @@ -402,6 +468,9 @@ SVTK_RenderWindowInteractor myEventCallbackCommand->SetCallback(SVTK_RenderWindowInteractor::ProcessEvents); } +/*! + To initialize properly the class +*/ void SVTK_RenderWindowInteractor ::Initialize(vtkGenericRenderWindowInteractor* theDevice, @@ -413,7 +482,9 @@ SVTK_RenderWindowInteractor SetSelector(theSelector); } -//---------------------------------------------------------------------------- +/*! + Destructor +*/ SVTK_RenderWindowInteractor ::~SVTK_RenderWindowInteractor() { @@ -431,7 +502,9 @@ SVTK_RenderWindowInteractor GetDevice()->SetRenderWindow(NULL); } -//---------------------------------------------------------------------------- +/*! + To get corresponding SVTK_Renderer instance +*/ SVTK_Renderer* SVTK_RenderWindowInteractor ::GetRenderer() @@ -439,6 +512,9 @@ SVTK_RenderWindowInteractor return myRenderer.GetPointer(); } +/*! + To get corresponding SVTK_Renderer device (just to simplify collobaration with SVTK_Renderer) +*/ vtkRenderer* SVTK_RenderWindowInteractor ::getRenderer() @@ -446,6 +522,10 @@ SVTK_RenderWindowInteractor return GetRenderer()->GetDevice(); } +/*! + Changes renderer + \param theRenderer - new renderer +*/ void SVTK_RenderWindowInteractor ::SetRenderer(SVTK_Renderer* theRenderer) @@ -463,7 +543,10 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Changes interactor style + \param theStyle - new interactor style +*/ void SVTK_RenderWindowInteractor ::InitInteractorStyle(vtkInteractorStyle* theStyle) @@ -471,8 +554,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) @@ -481,8 +565,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(theStyle); } - -//---------------------------------------------------------------------------- +/*! + To restore previous interactor style +*/ void SVTK_RenderWindowInteractor ::PopInteractorStyle() @@ -494,8 +579,9 @@ SVTK_RenderWindowInteractor InitInteractorStyle(GetInteractorStyle()); } - -//---------------------------------------------------------------------------- +/*! + To get current interactor style +*/ vtkInteractorStyle* SVTK_RenderWindowInteractor ::GetInteractorStyle() @@ -504,7 +590,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + To get current selector +*/ SVTK_Selector* SVTK_RenderWindowInteractor ::GetSelector() @@ -513,6 +601,10 @@ SVTK_RenderWindowInteractor } +/*! + Changes selector + \param theSelector - new selector +*/ void SVTK_RenderWindowInteractor ::SetSelector(SVTK_Selector* theSelector) @@ -528,8 +620,9 @@ SVTK_RenderWindowInteractor myPriority); } - -//---------------------------------------------------------------------------- +/*! + Main process VTK event method +*/ void SVTK_RenderWindowInteractor ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -546,8 +639,9 @@ SVTK_RenderWindowInteractor } } - -//---------------------------------------------------------------- +/*! + To change selection mode (just to simplify collobaration with SVTK_Selector) +*/ void SVTK_RenderWindowInteractor ::SetSelectionMode(Selection_Mode theMode) @@ -555,8 +649,9 @@ SVTK_RenderWindowInteractor mySelector->SetSelectionMode(theMode); } - -//---------------------------------------------------------------- +/*! + To get current selection mode (just to simplify collobaration with SVTK_Selector) +*/ Selection_Mode SVTK_RenderWindowInteractor ::SelectionMode() const @@ -565,7 +660,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------- +/*! + Emits signal selectionChanged() +*/ void SVTK_RenderWindowInteractor ::onEmitSelectionChanged() @@ -574,7 +671,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse move event handler +*/ void SVTK_RenderWindowInteractor ::mouseMoveEvent( QMouseEvent* event ) @@ -586,7 +685,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse press event handler +*/ void SVTK_RenderWindowInteractor ::mousePressEvent( QMouseEvent* event ) @@ -598,7 +699,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse release event handler +*/ void SVTK_RenderWindowInteractor ::mouseReleaseEvent( QMouseEvent *event ) @@ -610,7 +713,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse double click event handler +*/ void SVTK_RenderWindowInteractor ::mouseDoubleClickEvent( QMouseEvent* event ) @@ -622,7 +727,9 @@ SVTK_RenderWindowInteractor } -//---------------------------------------------------------------------------- +/*! + Custom mouse wheel event handler +*/ void SVTK_RenderWindowInteractor ::wheelEvent( QWheelEvent* event ) @@ -638,8 +745,9 @@ SVTK_RenderWindowInteractor emit WheelMoved( event ); } - -//---------------------------------------------------------------------------- +/*! + Custom key press event handler +*/ void SVTK_RenderWindowInteractor ::keyPressEvent( QKeyEvent* event ) @@ -650,7 +758,9 @@ SVTK_RenderWindowInteractor emit KeyPressed( event ); } -//---------------------------------------------------------------------------- +/*! + Custom key release event handler +*/ void SVTK_RenderWindowInteractor ::keyReleaseEvent( QKeyEvent * event ) @@ -661,7 +771,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 42011c4e2..ce1f76a88 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.h +++ b/src/SVTK/SVTK_RenderWindowInteractor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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. @@ -128,9 +128,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 cad43a139..2ca7c7aef 100644 --- a/src/SVTK/SVTK_Renderer.cxx +++ b/src/SVTK/SVTK_Renderer.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -55,10 +55,11 @@ #undef max -//---------------------------------------------------------------------------- vtkStandardNewMacro(SVTK_Renderer); -//---------------------------------------------------------------------------- +/*! + Constructor +*/ SVTK_Renderer ::SVTK_Renderer(): myDevice(vtkRenderer::New()), @@ -74,7 +75,8 @@ SVTK_Renderer myTransform(VTKViewer_Transform::New()), myCubeAxes(SVTK_CubeAxesActor2D::New()), myTrihedron(SVTK_Trihedron::New()), - myTrihedronSize(105) + myTrihedronSize(105), + myIsTrihedronRelative(true) { myDevice->Delete(); myTransform->Delete(); @@ -151,6 +153,9 @@ SVTK_Renderer myPriority); } +/*! + Destructor +*/ SVTK_Renderer ::~SVTK_Renderer() { @@ -175,6 +180,9 @@ SVTK_Renderer } +/*! + Main process event method +*/ void SVTK_Renderer ::ProcessEvents(vtkObject* vtkNotUsed(theObject), @@ -197,7 +205,9 @@ SVTK_Renderer } } -//---------------------------------------------------------------------------- +/*! + \return renderer's device +*/ vtkRenderer* SVTK_Renderer ::GetDevice() @@ -205,6 +215,9 @@ SVTK_Renderer return myDevice.GetPointer(); } +/*! + Initialize renderer +*/ void SVTK_Renderer ::Initialize(vtkRenderWindowInteractor* theInteractor, @@ -214,7 +227,9 @@ SVTK_Renderer mySelector = theSelector; } -//---------------------------------------------------------------------------- +/*! + Publishes pointed actor into the renderer +*/ void SVTK_Renderer ::AddActor(VTKViewer_Actor* theActor) @@ -238,6 +253,9 @@ SVTK_Renderer } } +/*! + Removes pointed actor from the renderer +*/ void SVTK_Renderer ::RemoveActor(VTKViewer_Actor* theActor) @@ -263,6 +281,9 @@ SVTK_Renderer } } +/*! + Get special container that keeps scaling of the scene +*/ VTKViewer_Transform* SVTK_Renderer ::GetTransform() @@ -270,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] ) @@ -277,6 +301,9 @@ SVTK_Renderer myTransform->GetMatrixScale( theScale ); } +/*! + Allows to apply a scale on the whole scene +*/ void SVTK_Renderer ::SetScale( double theScale[3] ) @@ -285,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, @@ -299,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, @@ -312,7 +342,9 @@ SVTK_Renderer myPreHighlightProperty->SetPointSize( theWidth ); } -//---------------------------------------------------------------------------- +/*! + Setup requested tolerance for the picking +*/ void SVTK_Renderer ::SetSelectionTolerance(const double& theTolNodes, @@ -326,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 && @@ -342,6 +373,9 @@ CheckBndBox(const float theBounds[6]) return false; } +/*! + Adjusts size of actors +*/ bool SVTK_Renderer ::OnAdjustActors() @@ -349,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; @@ -362,9 +396,14 @@ SVTK_Renderer myCubeAxes->VisibilityOff(); // if the new trihedron size have sufficient difference, then apply the value - double aSize = myTrihedron->GetSize(); - ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize); - myTrihedron->SetSize(aSize); + vtkFloatingPointType aSize = myTrihedron->GetSize(); + if ( IsTrihedronRelative() ) + { + ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize); + myTrihedron->SetSize(aSize); + } + else + myTrihedron->SetSize( myTrihedronSize ); // iterate through displayed objects and set size if necessary vtkActorCollection* anActors = GetDevice()->GetActors(); @@ -374,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]) @@ -408,6 +447,9 @@ SVTK_Renderer return false; } +/*! + Adjusts size of actors +*/ void SVTK_Renderer ::AdjustActors() @@ -416,16 +458,26 @@ 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) +::SetTrihedronSize(int theSize, const bool theRelative) { - if(myTrihedronSize != theSize){ + if(myTrihedronSize != theSize || myIsTrihedronRelative != theRelative){ myTrihedronSize = theSize; + myIsTrihedronRelative = theRelative; AdjustActors(); } } +/*! + \return size of the trihedron in percents from bounding box of the scene +*/ int SVTK_Renderer ::GetTrihedronSize() const @@ -433,8 +485,19 @@ SVTK_Renderer return myTrihedronSize; } +/*! + \return true if the size of the trihedron is relative +*/ +bool +SVTK_Renderer +::IsTrihedronRelative() const +{ + return myIsTrihedronRelative; +} -//---------------------------------------------------------------------------- +/*! + \return trihedron control +*/ VTKViewer_Trihedron* SVTK_Renderer ::GetTrihedron() @@ -442,6 +505,9 @@ SVTK_Renderer return myTrihedron.GetPointer(); } +/*! + \return true if trihedron is displayed +*/ bool SVTK_Renderer ::IsTrihedronDisplayed() @@ -449,6 +515,9 @@ SVTK_Renderer return myTrihedron->GetVisibility() == VTKViewer_Trihedron::eOn; } +/*! + Toggle trihedron visibility +*/ void SVTK_Renderer ::OnViewTrihedron() @@ -459,6 +528,9 @@ SVTK_Renderer myTrihedron->VisibilityOn(); } +/*! + Adjust size of the trihedron to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustTrihedron() @@ -466,8 +538,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + \return graduated rules control +*/ SVTK_CubeAxesActor2D* SVTK_Renderer ::GetCubeAxes() @@ -475,6 +548,9 @@ SVTK_Renderer return myCubeAxes.GetPointer(); } +/*! + \return true if graduated rules displayed +*/ bool SVTK_Renderer ::IsCubeAxesDisplayed() @@ -482,6 +558,9 @@ SVTK_Renderer return myCubeAxes->GetVisibility() == 1; } +/*! + Toggle graduated rules visibility +*/ void SVTK_Renderer ::OnViewCubeAxes() @@ -492,6 +571,9 @@ SVTK_Renderer myCubeAxes->VisibilityOn(); } +/*! + Adjust size of the graduated rules to the bounding box of the scene +*/ void SVTK_Renderer ::OnAdjustCubeAxes() @@ -499,8 +581,9 @@ SVTK_Renderer AdjustActors(); } - -//---------------------------------------------------------------------------- +/*! + Sets camera into predefined state +*/ void SVTK_Renderer ::OnResetView() @@ -527,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() @@ -571,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() @@ -581,8 +666,9 @@ SVTK_Renderer ::ResetCameraClippingRange(GetDevice()); } - -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to front view +*/ void SVTK_Renderer ::OnFrontView() @@ -594,7 +680,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to back view +*/ void SVTK_Renderer ::OnBackView() @@ -606,7 +694,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to top view +*/ void SVTK_Renderer ::OnTopView() @@ -618,7 +708,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to bottom view +*/ void SVTK_Renderer ::OnBottomView() @@ -630,7 +722,9 @@ SVTK_Renderer this->OnFitAll(); } -//---------------------------------------------------------------------------- +/*! + To reset direction of the camera to left view +*/ void SVTK_Renderer ::OnLeftView() @@ -642,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 5f486543c..c9908539d 100644 --- a/src/SVTK/SVTK_Renderer.h +++ b/src/SVTK/SVTK_Renderer.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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); @@ -127,12 +128,16 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject //! Set size of the trihedron in percents from bounding box of the scene void - SetTrihedronSize(int theSize); + SetTrihedronSize(int theSize, const bool theRelative = true); //! Get size of the trihedron in percents from bounding box of the scene int GetTrihedronSize() const; + //! Shows if the size of the trihedron is relative + bool + IsTrihedronRelative() const; + //---------------------------------------------------------------------------- //! Get trihedron control VTKViewer_Trihedron* @@ -205,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; @@ -238,8 +243,9 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject //---------------------------------------------------------------------------- vtkSmartPointer myCubeAxes; vtkSmartPointer myTrihedron; - int myTrihedronSize; - float myBndBox[6]; + int myTrihedronSize; + bool myIsTrihedronRelative; + vtkFloatingPointType myBndBox[6]; }; #endif diff --git a/src/SVTK/SVTK_Selection.h b/src/SVTK/SVTK_Selection.h index 3307565c2..4b0b4f55d 100644 --- a/src/SVTK/SVTK_Selection.h +++ b/src/SVTK/SVTK_Selection.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_SelectionEvent.h b/src/SVTK/SVTK_SelectionEvent.h index cfa753f97..75d01316f 100644 --- a/src/SVTK/SVTK_SelectionEvent.h +++ b/src/SVTK/SVTK_SelectionEvent.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_Selector.cxx b/src/SVTK/SVTK_Selector.cxx index b05a168a2..d93bd4b44 100644 --- a/src/SVTK/SVTK_Selector.cxx +++ b/src/SVTK/SVTK_Selector.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,8 +267,15 @@ SVTK_SelectorDef theIndex.Clear(); } -bool SVTK_SelectorDef::IsIndexSelected( const Handle(SALOME_InteractiveObject)& theIO, - int theIndex) const +/*! + \return true if the index presents in subselection + \param theIO - SALOME_InteractiveObject + \param theIndex - index +*/ +bool +SVTK_SelectorDef +::IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO, + int theIndex) const { TMapIOSubIndex::const_iterator anIter = myMapIOSubIndex.find(theIO); if(anIter != myMapIOSubIndex.end()){ @@ -248,6 +308,12 @@ static bool removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, const int theI return anId != 0; } +/*! + 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, @@ -277,6 +343,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, @@ -307,6 +379,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, @@ -337,6 +415,12 @@ SVTK_SelectorDef return false; } + +/*! + Removes index of subselection for SALOME_InteractiveObject + \param theIO - SALOME_InteractiveObject + \param theIndex - index +*/ void SVTK_SelectorDef ::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO, @@ -349,6 +433,9 @@ SVTK_SelectorDef } } +/*! + Clears all indices of subselection +*/ void SVTK_SelectorDef ::ClearIndex() @@ -356,7 +443,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) @@ -364,7 +454,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 @@ -372,7 +465,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) @@ -381,7 +477,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, @@ -398,7 +499,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 8d8fec33c..380e28b31 100644 --- a/src/SVTK/SVTK_Selector.h +++ b/src/SVTK/SVTK_Selector.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -128,7 +128,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, @@ -155,7 +155,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_SelectorDef.h b/src/SVTK/SVTK_SelectorDef.h index 050a6838a..e20d764ec 100644 --- a/src/SVTK/SVTK_SelectorDef.h +++ b/src/SVTK/SVTK_SelectorDef.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_SpaceMouse.cxx b/src/SVTK/SVTK_SpaceMouse.cxx index 8ee2e21d7..7d858a780 100644 --- a/src/SVTK/SVTK_SpaceMouse.cxx +++ b/src/SVTK/SVTK_SpaceMouse.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -40,10 +40,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 ) @@ -51,7 +52,9 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance() return myInstance; } -//--------------------------------------------- +/*! + Constructor +*/ SVTK_SpaceMouse::SVTK_SpaceMouse() { #ifndef WIN32 @@ -60,9 +63,11 @@ SVTK_SpaceMouse::SVTK_SpaceMouse() spaceMouseOn = 0; } -//--------------------------------------------- #ifndef WIN32 +/*! + Initialization +*/ int SVTK_SpaceMouse::initialize( Display *display, Window window ) { XMotionEvent = XInternAtom( display, "MotionEvent", 1 ); @@ -84,7 +89,6 @@ int SVTK_SpaceMouse::initialize( Display *display, Window window ) return spaceMouseOn; } -//--------------------------------------------- static int errorCallback( Display *display, XErrorEvent *Error ) { char msg[ 128 ]; @@ -95,7 +99,9 @@ static int errorCallback( Display *display, XErrorEvent *Error ) return 0; } -//--------------------------------------------- +/*! + Initialize by window +*/ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) { XTextProperty winName; @@ -152,7 +158,9 @@ int SVTK_SpaceMouse::setWindow( Display *display, Window window ) return result; } -//--------------------------------------------- +/*! + Close +*/ int SVTK_SpaceMouse::close(Display *display) { initialize( display, (Window)InputFocus ); @@ -161,7 +169,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_SpaceMouse.h b/src/SVTK/SVTK_SpaceMouse.h index a282dae6f..f920bf44a 100644 --- a/src/SVTK/SVTK_SpaceMouse.h +++ b/src/SVTK/SVTK_SpaceMouse.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SVTK/SVTK_Trihedron.cxx b/src/SVTK/SVTK_Trihedron.cxx index ea8783a07..ac0bbd4d8 100644 --- a/src/SVTK/SVTK_Trihedron.cxx +++ b/src/SVTK/SVTK_Trihedron.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SVTK_Trihedron.h" #include "SALOME_Actor.h" @@ -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_Trihedron.h b/src/SVTK/SVTK_Trihedron.h index 69a80303e..3f410cde1 100644 --- a/src/SVTK/SVTK_Trihedron.h +++ b/src/SVTK/SVTK_Trihedron.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SVTK_TRIHEDRON_H #define SVTK_TRIHEDRON_H diff --git a/src/SVTK/SVTK_View.cxx b/src/SVTK/SVTK_View.cxx index 966ff2340..882728b3a 100644 --- a/src/SVTK/SVTK_View.cxx +++ b/src/SVTK/SVTK_View.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..4c25de9bc 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/ or email : webmaster.salome@opencascade.com +// #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..3465d1535 100644 --- a/src/SVTK/SVTK_ViewManager.cxx +++ b/src/SVTK/SVTK_ViewManager.cxx @@ -14,14 +14,16 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SVTK_ViewManager.h" #include "SVTK_ViewModel.h" 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..eda062600 100644 --- a/src/SVTK/SVTK_ViewManager.h +++ b/src/SVTK/SVTK_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SVTK_VIEWMANAGER_H #define 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 08c2169d5..61cde9d5b 100644 --- a/src/SVTK/SVTK_ViewModel.cxx +++ b/src/SVTK/SVTK_ViewModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include #include @@ -59,17 +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 @@ -77,6 +85,10 @@ SVTK_Viewer return myBgColor; } +/*! + Changes background color + \param theColor - new background color +*/ void SVTK_Viewer ::setBackgroundColor( const QColor& theColor ) @@ -88,7 +100,7 @@ SVTK_Viewer for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){ if(SUIT_ViewWindow* aViewWindow = aViews.at(i)){ if(TViewWindow* aView = dynamic_cast(aViewWindow)){ - aView->getMainWindow()->SetBackgroundColor(theColor); + aView->setBackgroundColor(theColor); } } } @@ -96,46 +108,62 @@ SVTK_Viewer myBgColor = theColor; } -//========================================================== -SUIT_ViewWindow* +/*!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 ) { - SVTK_ViewWindow* aViewWindow = new SVTK_ViewWindow(theDesktop); + TViewWindow* aViewWindow = new TViewWindow(theDesktop); aViewWindow->Initialize(this); - + aViewWindow->setBackgroundColor( backgroundColor() ); - aViewWindow->SetTrihedronSize( trihedronSize() ); + aViewWindow->SetTrihedronSize( trihedronSize(), trihedronRelative() ); return aViewWindow; } +/*! + \return trihedron size +*/ int SVTK_Viewer::trihedronSize() const { return myTrihedronSize; } -void SVTK_Viewer::setTrihedronSize( const int sz ) +/*! + \return true if thihedron changes size in accordance with bounding box +*/ +bool SVTK_Viewer::trihedronRelative() const { - myTrihedronSize = sz; - - SUIT_ViewManager* vm = getViewManager(); - if ( !vm ) - return; - - QPtrVector vec = vm->getViews(); - for ( int i = 0; i < vec.count(); i++ ) - { - SUIT_ViewWindow* win = vec.at( i ); - if ( !win || !win->inherits( "SVTK_ViewWindow" ) ) - continue; + return myTrihedronRelative; +} - SVTK_ViewWindow* vw = (SVTK_ViewWindow*)win; - vw->SetTrihedronSize( sz ); +/*! + 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; + myTrihedronRelative = theRelative; + + if (SUIT_ViewManager* aViewManager = getViewManager()) { + QPtrVector aViews = aViewManager->getViews(); + for (int i = 0; i < aViews.count(); i++) { + if (TViewWindow* aView = dynamic_cast(aViews.at(i))) { + aView->SetTrihedronSize(theSize, theRelative); + } + } } } -//========================================================== +/*! + Sets new view manager + \param theViewManager - new view manager +*/ void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager) { SUIT_ViewModel::setViewManager(theViewManager); @@ -153,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 ) @@ -164,31 +194,40 @@ SVTK_Viewer thePopup->insertSeparator(); if(TViewWindow* aView = dynamic_cast(myViewManager->getActiveView())){ - if ( !aView->getView()->GetMainWindow()->getToolBar()->isVisible() ){ + if ( !aView->getMainWindow()->getToolBar()->isVisible() ){ thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) ); } } } -//========================================================== +/*! + 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) @@ -197,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) @@ -206,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() @@ -214,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() @@ -225,7 +272,9 @@ SVTK_Viewer } } -//========================================================== +/*! + SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window +*/ void SVTK_Viewer ::onShowToolbar() @@ -233,12 +282,15 @@ SVTK_Viewer QPtrVector aViews = myViewManager->getViews(); for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){ if(TViewWindow* aView = dynamic_cast(aViews.at(i))){ - aView->getView()->GetMainWindow()->getToolBar()->show(); + aView->getMainWindow()->getToolBar()->show(); } } } -//========================================================== +/*! + Display presentation + \param prs - presentation +*/ void SVTK_Viewer ::Display( const SALOME_VTKPrs* prs ) @@ -283,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 ) @@ -323,8 +379,11 @@ SVTK_Viewer } } } - -//========================================================== + +/*! + Erase all presentations + \param forced - removes all objects from view +*/ void SVTK_Viewer ::EraseAll( const bool forced ) @@ -369,7 +428,10 @@ SVTK_Viewer Repaint(); } -//========================================================== +/*! + Create presentation corresponding to the entry + \param entry - entry +*/ SALOME_Prs* SVTK_Viewer ::CreatePrs( const char* entry ) @@ -393,7 +455,9 @@ SVTK_Viewer return prs; } -//========================================================== +/*! + Auxiliary method called before displaying of objects +*/ void SVTK_Viewer ::BeforeDisplay( SALOME_Displayer* d ) @@ -401,29 +465,37 @@ 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 ) { QPtrVector aViews = myViewManager->getViews(); for(int i = 0, iEnd = aViews.size(); i < iEnd; i++) - if(SVTK_ViewWindow* aViewWindow = dynamic_cast(aViews.at(i))) - if(SVTK_View* aView = aViewWindow->getView()) - if(!aView->isVisible( io )) - return false; + if(SUIT_ViewWindow* aViewWindow = aViews.at(i)) + if(TViewWindow* aViewWnd = dynamic_cast(aViewWindow)) + if(SVTK_View* aView = aViewWnd->getView()) + if(!aView->isVisible( io )) + return false; return true; } -//========================================================== +/*! + Updates current viewer +*/ void SVTK_Viewer ::Repaint() @@ -431,7 +503,7 @@ SVTK_Viewer // if (theUpdateTrihedron) onAdjustTrihedron(); QPtrVector aViews = myViewManager->getViews(); for(int i = 0, iEnd = aViews.size(); i < iEnd; i++) - if(SVTK_ViewWindow* aViewWindow = dynamic_cast(aViews.at(i))) + if(TViewWindow* aViewWindow = dynamic_cast(aViews.at(i))) if(SVTK_View* aView = aViewWindow->getView()) aView->Repaint(); } diff --git a/src/SVTK/SVTK_ViewModel.h b/src/SVTK/SVTK_ViewModel.h index 5875d465e..3c55105c1 100644 --- a/src/SVTK/SVTK_ViewModel.h +++ b/src/SVTK/SVTK_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SVTK_VIEWMODEL_H #define SVTK_VIEWMODEL_H @@ -65,8 +65,11 @@ public: //! Get size of trihedron of the viewer (see #SVTK_Renderer::SetTrihedronSize) int trihedronSize() const; + //! Shows if the size of trihedron relative (see #SVTK_Renderer::SetTrihedronSize) + bool trihedronRelative() const; + //! Set size of trihedron of the viewer (see #SVTK_Renderer::SetTrihedronSize) - void setTrihedronSize( const int ); + void setTrihedronSize( const int, const bool = true ); public: void enableSelection(bool isEnabled); @@ -115,6 +118,7 @@ protected slots: private: QColor myBgColor; int myTrihedronSize; + bool myTrihedronRelative; bool mySelectionEnabled; bool myMultiSelectionEnabled; }; diff --git a/src/SVTK/SVTK_ViewModelBase.h b/src/SVTK/SVTK_ViewModelBase.h index d58827229..49f335e66 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/ or email : webmaster.salome@opencascade.com +// #ifndef SVTK_SELECTIONCHANGED_H #define SVTK_SELECTIONCHANGED_H diff --git a/src/SVTK/SVTK_ViewWindow.cxx b/src/SVTK/SVTK_ViewWindow.cxx index b95a23d20..3fee43d8e 100755 --- a/src/SVTK/SVTK_ViewWindow.cxx +++ b/src/SVTK/SVTK_ViewWindow.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SALOME_Actor.h" @@ -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,11 +554,16 @@ SVTK_ViewWindow return myMainWindow->GetTrihedronSize(); } +/*! + Sets trihedron size + \param theSize - new trihedron size + \param theRelative - trihedron relativeness +*/ void SVTK_ViewWindow -::SetTrihedronSize(const int theSize) +::SetTrihedronSize(const int theSize, const bool theRelative) { - myMainWindow->SetTrihedronSize(theSize); + myMainWindow->SetTrihedronSize(theSize, theRelative); } /*! If parameter theIsForcedUpdate is true, recalculate parameters for @@ -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,15 +742,273 @@ 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 + */ +QString +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 ); + camera->GetViewUp( viewUp ); + 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] ); + + // 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 +*/ +void +SVTK_ViewWindow +::setVisualParameters( const QString& parameters ) +{ + SVTK_RenderWindowInteractor* anInteractor = getMainWindow()->GetInteractor(); + if ( anInteractor->isVisible() ) { + doSetVisualParameters( parameters ); + } + else { + myVisualParams = parameters; + anInteractor->installEventFilter(this); + } +} + +/*! + 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() >= nNormalParams ) { + // 'reading' list of parameters + double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; + pos[0] = paramsLst[0].toDouble(); + pos[1] = paramsLst[1].toDouble(); + pos[2] = paramsLst[2].toDouble(); + focalPnt[0] = paramsLst[3].toDouble(); + focalPnt[1] = paramsLst[4].toDouble(); + focalPnt[2] = paramsLst[5].toDouble(); + viewUp[0] = paramsLst[6].toDouble(); + viewUp[1] = paramsLst[7].toDouble(); + viewUp[2] = paramsLst[8].toDouble(); + parScale = paramsLst[9].toDouble(); + scale[0] = paramsLst[10].toDouble(); + scale[1] = paramsLst[11].toDouble(); + scale[2] = paramsLst[12].toDouble(); + + // applying parameters + vtkCamera* camera = getRenderer()->GetActiveCamera(); + camera->SetPosition( pos ); + camera->SetFocalPoint( focalPnt ); + camera->SetViewUp( viewUp ); + camera->SetParallelScale( parScale ); + SetScale( scale ); + + // 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(); + } + } +} + + +/*! + Delayed setVisualParameters +*/ +bool SVTK_ViewWindow::eventFilter( QObject* theWatched, QEvent* theEvent ) +{ + if ( theEvent->type() == QEvent::Show && theWatched->inherits( "SVTK_RenderWindowInteractor" ) ) { + SVTK_RenderWindowInteractor* anInteractor = (SVTK_RenderWindowInteractor*)theWatched; + if ( anInteractor->isVisible() ) { + doSetVisualParameters( myVisualParams ); + anInteractor->removeEventFilter( this ); // theWatched = RenderWindowInteractor + } + } + return SUIT_ViewWindow::eventFilter( theWatched, theEvent ); } diff --git a/src/SVTK/SVTK_ViewWindow.h b/src/SVTK/SVTK_ViewWindow.h index 0c1479a39..7a0808be5 100755 --- a/src/SVTK/SVTK_ViewWindow.h +++ b/src/SVTK/SVTK_ViewWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SVTK_VIEWWINDOW_H #define 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); @@ -219,7 +219,7 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow //! Redirect the request to #SVTK_Renderer::SetTrihedronSize virtual void - SetTrihedronSize( const int ); + SetTrihedronSize( const int, const bool = true ); //! Redirect the request to #SVTK_Renderer::SetSelectionProp virtual @@ -242,6 +242,19 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow void SetSelectionTolerance(const double& theTolNodes = 0.025, const double& theTolCell = 0.001); + + //! Methods to save/restore visual parameters of a view (pan, zoom, etc.) + virtual + QString + getVisualParameters(); + + virtual + void + setVisualParameters( const QString& parameters ); + + virtual + bool + eventFilter( QObject*, QEvent* ); public slots: virtual @@ -326,12 +339,17 @@ protected: Initialize(SVTK_View* theView, SVTK_ViewModelBase* theModel); + void + doSetVisualParameters( const QString& ); + QImage dumpView(); - virtual void action( const int ); + virtual bool action( const int ); SVTK_View* myView; SVTK_MainWindow* myMainWindow; SVTK_ViewModelBase* myModel; + + QString myVisualParams; // used for delayed setting of view parameters }; extern "C" diff --git a/src/SVTK/resources/SVTK_msg_en.po b/src/SVTK/resources/SVTK_msg_en.po index eb7db7c20..1e28bfdbd 100755 --- a/src/SVTK/resources/SVTK_msg_en.po +++ b/src/SVTK/resources/SVTK_msg_en.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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 308e5126b..ed377dfaf 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/ or email : webmaster.salome@opencascade.com +# # File : Makefile.in # Author : Vladimir Klyachin (OCN) # Module : SalomeApp @@ -25,7 +43,8 @@ EXPORT_HEADERS= SalomeApp.h \ SalomeApp_Filter.h \ SalomeApp_TypeFilter.h \ SalomeApp_StudyPropertiesDlg.h \ - SalomeApp_CheckFileDlg.h + SalomeApp_CheckFileDlg.h \ + SalomeApp_VisualState.h # .po files to transform in .qm PO_FILES = SalomeApp_images.po \ @@ -48,7 +67,8 @@ LIB_SRC= SalomeApp_Module.cxx \ SalomeApp_TypeFilter.cxx \ SalomeApp_StudyPropertiesDlg.cxx \ SalomeApp_ListView.cxx \ - SalomeApp_CheckFileDlg.cxx + SalomeApp_CheckFileDlg.cxx \ + SalomeApp_VisualState.cxx LIB_MOC = SalomeApp_Application.h \ SalomeApp_DataModel.h \ @@ -65,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 $(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.h b/src/SalomeApp/SalomeApp.h index d590d27a7..130299b08 100644 --- a/src/SalomeApp/SalomeApp.h +++ b/src/SalomeApp/SalomeApp.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp.h // Created: November, 2004 // Author: OCC team diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index 5139ce4f2..5e73de8a6 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_Application.cxx // Created: 10/22/2004 3:23:45 PM // Author: Sergey LITONIN @@ -11,15 +29,15 @@ #include "SalomeApp_DataModel.h" #include "SalomeApp_DataObject.h" #include "SalomeApp_EventFilter.h" +#include "SalomeApp_VisualState.h" #include "SalomeApp_StudyPropertiesDlg.h" -#include "SalomeApp_CheckFileDlg.h" - #include "LightApp_Application.h" #include "LightApp_Preferences.h" #include "LightApp_WidgetContainer.h" #include "LightApp_SelectionMgr.h" +#include "LightApp_NameDlg.h" #include "STD_LoadStudiesDlg.h" @@ -48,9 +66,12 @@ #include #include #include +#include +#include +#include -#include "SALOMEDS_StudyManager.hxx" -#include "SALOMEDS_SObject.hxx" +#include "SALOMEDSClient_ClientFactory.hxx" +#include "SALOMEDSClient_IParameters.hxx" #include "SALOME_ListIteratorOfListIO.hxx" #include "SALOME_ListIO.hxx" @@ -58,17 +79,14 @@ #include "ToolsGUI_CatalogGeneratorDlg.h" #include "ToolsGUI_RegWidget.h" +#include + /*!Create new instance of SalomeApp_Application.*/ 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() @@ -99,6 +117,12 @@ void SalomeApp_Application::createActions() SUIT_Desktop* desk = desktop(); + //! Save GUI state + // "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" ), @@ -126,6 +150,10 @@ void SalomeApp_Application::createActions() int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 ); + // "Save GUI State" command is renamed to "Save VISU State" and + // creation of menu item is moved to VISU + // createMenu( SaveGUIStateId, fileMenu, 10, -1 ); + createMenu( DumpStudyId, fileMenu, 10, -1 ); createMenu( separator(), fileMenu, -1, 15, -1 ); createMenu( LoadScriptId, fileMenu, 10, -1 ); @@ -133,7 +161,7 @@ void SalomeApp_Application::createActions() createMenu( PropertiesId, fileMenu, 10, -1 ); createMenu( separator(), fileMenu, -1, 15, -1 ); - int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, -1, 50 ); + int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, MenuToolsId, 50 ); createMenu( CatalogGenId, toolsMenu, 10, -1 ); createMenu( RegDisplayId, toolsMenu, 10, -1 ); createMenu( separator(), toolsMenu, -1, 15, -1 ); @@ -327,6 +355,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()) { @@ -362,12 +398,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); - } } } } @@ -424,10 +456,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 ); @@ -441,10 +472,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(); @@ -459,14 +489,41 @@ void SalomeApp_Application::updateCommandsStatus() if ( a ) a->setEnabled( activeStudy() ); + // Properties menu a = action( PropertiesId ); if( a ) a->setEnabled( activeStudy() ); + // Save GUI state menu + a = action( SaveGUIStateId ); + if( a ) + a->setEnabled( activeStudy() ); + // update state of Copy/Paste menu items onSelectionChanged(); } +/*! + \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 +{ +public: + DumpStudyFileDlg( QWidget* parent ) : SUIT_FileDlg( parent, false, true, true ) + { + QHBox* hB = new QHBox( this ); + myPublishChk = new QCheckBox( tr("PUBLISH_IN_STUDY"), hB ); + mySaveGUIChk = new QCheckBox( tr("SAVE_GUI_STATE"), hB ); + QPushButton* pb = new QPushButton(this); + addWidgets( new QLabel("", this), hB, pb ); + pb->hide(); + } + QCheckBox* myPublishChk; + QCheckBox* mySaveGUIChk; +}; + /*!Private SLOT. On dump study.*/ void SalomeApp_Application::onDumpStudy( ) { @@ -477,23 +534,35 @@ void SalomeApp_Application::onDumpStudy( ) QStringList aFilters; aFilters.append( tr( "PYTHON_FILES_FILTER" ) ); - SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg( desktop(), false, tr("PUBLISH_IN_STUDY"), true, true); + DumpStudyFileDlg* fd = new DumpStudyFileDlg( desktop() ); fd->setCaption( tr( "TOT_DESK_FILE_DUMP_STUDY" ) ); fd->setFilters( aFilters ); - fd->SetChecked(true); + fd->myPublishChk->setChecked( true ); + fd->mySaveGUIChk->setChecked( true ); fd->exec(); QString aFileName = fd->selectedFile(); - bool toPublish = fd->IsChecked(); + bool toPublish = fd->myPublishChk->isChecked(); + bool toSaveGUI = fd->mySaveGUIChk->isChecked(); delete fd; - if(!aFileName.isEmpty()) { + if ( !aFileName.isEmpty() ) { QFileInfo aFileInfo(aFileName); - bool res = aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish ); + 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 + 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 ) + appStudy->removeSavePoint(savePoint); //SRN: remove the created temporary save point. if ( !res ) - SUIT_MessageBox::warn1 ( desktop(), - QObject::tr("WRN_WARNING"), - tr("WRN_DUMP_STUDY_FAILED"), - QObject::tr("BUT_OK") ); + SUIT_MessageBox::warn1 ( desktop(), + QObject::tr("WRN_WARNING"), + tr("WRN_DUMP_STUDY_FAILED"), + QObject::tr("BUT_OK") ); } } @@ -529,6 +598,18 @@ void SalomeApp_Application::onLoadScript( ) } } +/*!Private SLOT. On save GUI state.*/ +void SalomeApp_Application::onSaveGUIState() +{ + SalomeApp_Study* study = dynamic_cast( activeStudy() ); + if ( study ) { + SalomeApp_VisualState( this ).storeState(); + updateSavePointDataObjects( study ); + objectBrowser()->updateTree( study->root() ); + } + updateActions(); +} + /*!Gets file filter. *\retval QString "(*.hdf)" */ @@ -589,6 +670,11 @@ void SalomeApp_Application::createPreferences( LightApp_Preferences* pref ) LightApp_Preferences::Bool, "ObjectBrowser", QString().sprintf( "visibility_column_%d", i ) ); } pref->setItemProperty( defCols, "columns", 1 ); + + // adding preference to LightApp_Application handled preferences.. a bit of hacking with resources.. + int genTab = pref->addPreference( LightApp_Application::tr( "PREF_TAB_GENERAL" ), salomeCat ); + int studyGroup = pref->addPreference( LightApp_Application::tr( "PREF_GROUP_STUDY" ), genTab ); + pref->addPreference( tr( "PREF_STORE_VISUAL_STATE" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_visual_state" ); } /*!Update desktop title.*/ @@ -630,8 +716,9 @@ CORBA::ORB_var SalomeApp_Application::orb() /*!Create and return SALOMEDS_StudyManager.*/ SALOMEDSClient_StudyManager* SalomeApp_Application::studyMgr() { - static SALOMEDSClient_StudyManager* _sm = new SALOMEDS_StudyManager(); - return _sm; + static _PTR(StudyManager) _sm; + if(!_sm) _sm = ClientFactory::StudyManager(); + return _sm.get(); } /*!Create and return SALOME_NamingService.*/ @@ -695,6 +782,15 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t LightApp_SelectionMgr* mgr = selectionMgr(); mgr->selectedObjects( aList, QString::null, false ); + // add GUI state commands: restore, rename + if ( aList.Extent() == 1 && aList.First()->hasEntry() && + QString( aList.First()->getEntry() ).startsWith( tr( "SAVE_POINT_DEF_NAME" ) ) ) { + thePopup->insertSeparator(); + thePopup->insertItem( tr( "MEN_RESTORE_VS" ), this, SLOT( onRestoreGUIState() ) ); + thePopup->insertItem( tr( "MEN_RENAME_VS" ), this, SLOT( onRenameGUIState() ) ); + thePopup->insertItem( tr( "MEN_DELETE_VS" ), this, SLOT( onDeleteGUIState() ) ); + } + // "Delete reference" item should appear only for invalid references // isInvalidRefs will be true, if at least one of selected objects is invalid reference @@ -729,6 +825,10 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t if (aList.Extent() != 1) return; Handle(SALOME_InteractiveObject) aIObj = aList.First(); + // check if item is a "GUI state" item (also a first level object) + QString entry( aIObj->getEntry() ); + if ( entry.startsWith( tr( "SAVE_POINT_DEF_NAME" ) ) ) + return; QString aModuleName(aIObj->getComponentDataType()); QString aModuleTitle = moduleTitle(aModuleName); CAM_Module* currentModule = activeModule(); @@ -740,7 +840,7 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t /*!Update obect browser: 1.if 'updateModels' true, update existing data models; 2. update "non-existing" (not loaded yet) data models; - 3. update object browser if it existing */ + 3. update object browser if it exists */ void SalomeApp_Application::updateObjectBrowser( const bool updateModels ) { // update "non-existing" (not loaded yet) data models @@ -767,14 +867,11 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels ) } } + // 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 ); - -/* if ( objectBrowser() ) - { - objectBrowser()->updateGeometry(); - objectBrowser()->updateTree(); - }*/ } /*!Display Catalog Genenerator dialog */ @@ -836,3 +933,173 @@ 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); +} + + +/*!Global utility funciton, returns selected GUI Save point object's ID */ +int getSelectedSavePoint( const LightApp_SelectionMgr* selMgr ) +{ + SALOME_ListIO aList; + selMgr->selectedObjects( aList ); + Handle(SALOME_InteractiveObject) aIObj = aList.First(); + QString entry( aIObj->getEntry() ); + QString startStr = QObject::tr( "SAVE_POINT_DEF_NAME" ); + if ( !entry.startsWith( startStr ) ) // it's a "GUI state" object + return -1; + bool ok; // conversion to integer is ok? + int savePoint = entry.right( entry.length() - startStr.length() ).toInt( &ok ); + return ok ? savePoint : -1; +} + +/*!Called on Restore GUI State popup command*/ +void SalomeApp_Application::onRestoreGUIState() +{ + int savePoint = ::getSelectedSavePoint( selectionMgr() ); + if ( savePoint == -1 ) + return; + SalomeApp_VisualState( this ).restoreState( savePoint ); +} + +/*!Called on Rename GUI State popup command*/ +void SalomeApp_Application::onRenameGUIState() +{ + int savePoint = ::getSelectedSavePoint( selectionMgr() ); + if ( savePoint == -1 ) + return; + SalomeApp_Study* study = dynamic_cast( activeStudy() ); + if ( !study ) + return; + + QString newName = LightApp_NameDlg::getName( desktop(), study->getNameOfSavePoint( savePoint ) ); + if ( !newName.isNull() && !newName.isEmpty() ) { + study->setNameOfSavePoint( savePoint, newName ); + updateSavePointDataObjects( study ); + objectBrowser()->updateTree( study->root() ); + } +} + + +/*!Called on Delete GUI State popup command*/ +void SalomeApp_Application::onDeleteGUIState() +{ + int savePoint = ::getSelectedSavePoint( selectionMgr() ); + if ( savePoint == -1 ) + return; + SalomeApp_Study* study = dynamic_cast( activeStudy() ); + if ( !study ) + return; + + study->removeSavePoint( savePoint ); + updateSavePointDataObjects( study ); +} + +/*!Called on Save study operation*/ +void SalomeApp_Application::onStudySaved( SUIT_Study* study ) +{ + LightApp_Application::onStudySaved( study ); + + if ( objectBrowser() ) { + updateSavePointDataObjects( dynamic_cast( study ) ); + objectBrowser()->updateTree( study->root() ); + } +} + +/*!Called on Open study operation*/ +void SalomeApp_Application::onStudyOpened( SUIT_Study* study ) +{ + LightApp_Application::onStudyOpened( study ); + + if ( objectBrowser() ) { + updateSavePointDataObjects( dynamic_cast( study ) ); + objectBrowser()->updateTree( study->root() ); + } +} + +/*! utility function. returns true if list view item that correspond to given SUIT_DataObject is open. + only first level items are traversed */ +bool isListViewItemOpen( QListView* lv, const SUIT_DataObject* dobj ) +{ + if ( !lv || !dobj ) + return false; + + QListViewItem* item = lv->firstChild(); + while ( item ) { + OB_ListItem* ob_item = dynamic_cast( item ); + if ( ob_item && ob_item->dataObject() == dobj ) + return ob_item->isOpen(); + item = item->nextSibling(); + } + return false; +} + +/*! updateSavePointDataObjects: syncronize data objects that correspond to save points (gui states)*/ +void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study ) +{ + OB_Browser* ob = objectBrowser(); + + if ( !study || !ob ) + return; + + // find GUI states root object + SUIT_DataObject* guiRootObj = 0; + DataObjectList ch; + study->root()->children( ch ); + DataObjectList::const_iterator it = ch.begin(), last = ch.end(); + for ( ; it != last ; ++it ) { + if ( dynamic_cast( *it ) ) { + guiRootObj = *it; + break; + } + } + std::vector savePoints = study->getSavePoints(); + // case 1: no more save points but they existed in study's tree + if ( savePoints.empty() && guiRootObj ) { + delete guiRootObj; + return; + } + // case 2: no more save points but root does not exist either + if ( savePoints.empty() && !guiRootObj ) + return; + // case 3: save points but no root for them - create it + if ( !savePoints.empty() && !guiRootObj ) + guiRootObj = new SalomeApp_SavePointRootObject( study->root() ); + // case 4: everything already exists.. here may be a problem: we want "GUI states" root object + // to be always the last one in the tree. Here we check - if it is not the last one - remove and + // re-create it. + if ( guiRootObj->nextBrother() ) { + study->root()->removeChild(guiRootObj); + study->root()->appendChild(guiRootObj); + //study->root()->dump(); + } + + // store data objects in a map id-to-DataObject + QMap mapDO; + ch.clear(); + guiRootObj->children( ch ); + for( it = ch.begin(), last = ch.end(); it != last ; ++it ) { + SalomeApp_SavePointObject* dobj = dynamic_cast( *it ); + if ( dobj ) + mapDO[dobj->getId()] = dobj; + } + + // iterate new save points. if DataObject with such ID not found in map - create DataObject + // if in the map - remove it from map. + for ( int i = 0; i < savePoints.size(); i++ ) + if ( !mapDO.contains( savePoints[i] ) ) + new SalomeApp_SavePointObject( guiRootObj, savePoints[i], study ); + 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(); +} + diff --git a/src/SalomeApp/SalomeApp_Application.h b/src/SalomeApp/SalomeApp_Application.h index 0a60577e6..9adf31b66 100644 --- a/src/SalomeApp/SalomeApp_Application.h +++ b/src/SalomeApp/SalomeApp_Application.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_Application.h // Created: 10/22/2004 3:37:25 PM // Author: Sergey LITONIN @@ -27,6 +45,7 @@ class QDockWindow; class LightApp_Preferences; class SalomeApp_Module; +class SalomeApp_Study; class SALOME_LifeCycleCORBA; @@ -37,7 +56,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 @@ -45,8 +65,9 @@ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application Q_OBJECT public: + enum { MenuToolsId = 5 }; enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId, - CatalogGenId, RegDisplayId, UserID }; + CatalogGenId, RegDisplayId, SaveGUIStateId, UserID }; public: SalomeApp_Application(); @@ -66,12 +87,20 @@ public: static SALOME_LifeCycleCORBA* lcc(); static QString defaultEngineIOR(); + SUIT_ViewManager* newViewManager(const QString&); + void updateSavePointDataObjects( SalomeApp_Study* ); + public slots: virtual bool onOpenDoc( const QString& ); virtual void onLoadDoc(); virtual bool onLoadDoc( const QString& ); virtual void onCopy(); virtual void onPaste(); + void onSaveGUIState();// called from VISU + +protected slots: + void onStudySaved( SUIT_Study* ); + void onStudyOpened( SUIT_Study* ); protected: virtual void createActions(); @@ -91,6 +120,10 @@ private slots: void onDumpStudy(); void onLoadScript(); + void onDeleteGUIState(); + void onRestoreGUIState(); + void onRenameGUIState(); + void onCatalogGen(); void onRegDisplay(); void onOpenWith(); diff --git a/src/SalomeApp/SalomeApp_CheckFileDlg.cxx b/src/SalomeApp/SalomeApp_CheckFileDlg.cxx index 370526ff8..a62a33d47 100644 --- a/src/SalomeApp/SalomeApp_CheckFileDlg.cxx +++ b/src/SalomeApp/SalomeApp_CheckFileDlg.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_CheckFileDlg.h" diff --git a/src/SalomeApp/SalomeApp_CheckFileDlg.h b/src/SalomeApp/SalomeApp_CheckFileDlg.h index 98989a70d..53e56683c 100644 --- a/src/SalomeApp/SalomeApp_CheckFileDlg.h +++ b/src/SalomeApp/SalomeApp_CheckFileDlg.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_CHECKFILEDIALOG_H #define SALOMEAPP_CHECKFILEDIALOG_H diff --git a/src/SalomeApp/SalomeApp_DataModel.cxx b/src/SalomeApp/SalomeApp_DataModel.cxx index 3b11eb669..6c7129543 100644 --- a/src/SalomeApp/SalomeApp_DataModel.cxx +++ b/src/SalomeApp/SalomeApp_DataModel.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_DataModel.cxx // Created: 10/25/2004 10:36:06 AM // Author: Sergey LITONIN @@ -23,16 +41,13 @@ #include #include CORBA_SERVER_HEADER(SALOME_Exception) -#include "SALOMEDS_Tool.hxx" - -//======================================================================= -// 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,25 +69,37 @@ 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; - QString name( so->GetName().c_str() ); + QString name = so->GetName().c_str(); bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) ); return res; } +/*! + Creates SUIT object by KERNEL object + \param so - corresponding KERNEL object + \param parent - parent for SUIT object + \param after - previous sibling for SUIT object + \param prepend - SUIT object must be added to start of children list +*/ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so, const suitPtr& parent, const suitPtr& after, - const bool asFirst ) const + const bool prepend ) const { if( !isCorrect( so ) ) return 0; @@ -91,15 +118,19 @@ suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so, else parent->appendChild( nitem ); } - else if( asFirst ) + else if( prepend ) parent->insertChild( nitem, 0 ); - else + else // append parent->appendChild( nitem ); else if( myRoot ) myRoot->appendChild( nitem ); return nitem; } +/*! + Deletes object with all children + \param p - SUIT object +*/ void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const { if( !p ) @@ -113,22 +144,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 ) && QString( 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 +189,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 +206,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 +241,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 +279,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 +324,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 +334,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,37 +347,15 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob SalomeApp_DataModelSync sync( study->studyDS(), study->root() ); - // QString srcName = sobj ? sobj->GetName().c_str() : ""; - // QString trgName = ( suitObj && !suitObj->name().isNull() ) ? suitObj->name() : ""; - // printf( "--- SalomeApp_DataModel::syncronize() calls synchronize()_1: src = %s, trg = %s ---\n", srcName.latin1(), trgName.latin1() ); - - SUIT_DataObject* o = ::synchronize( sobj, suitObj, sync ); -// showTree( o ); - return o; -} - -//================================================================ -// Function : synchronize -/*! Purpose : synchronizes kernel tree and suit data tree starting from 'sobj' and 'obj' correspondly */ -//================================================================ -SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SObject )& sobj, SUIT_DataObject* obj, - SalomeApp_Study* study ) -{ - if( !study ) + if( !suitObj || dynamic_cast( suitObj ) ) + return ::synchronize( sobj, suitObj, sync ); + else return 0; - SalomeApp_DataModelSync sync( study->studyDS(), study->root() ); - - // QString srcName = sobj ? sobj->GetName().c_str() : ""; - // QString trgName = ( obj && !obj->name().isNull() ) ? obj->name() : ""; - // printf( "--- SalomeApp_DataModel::syncronize() calls synchronize()_2: src = s, trg = %s ---\n", srcName.latin1(), trgName.latin1() ); - - return ::synchronize( sobj, obj, sync ); } -//================================================================ -// 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 ) ); @@ -326,20 +366,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; @@ -352,10 +389,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_DataModel.h b/src/SalomeApp/SalomeApp_DataModel.h index 62e649bc3..9c2bff16a 100644 --- a/src/SalomeApp/SalomeApp_DataModel.h +++ b/src/SalomeApp/SalomeApp_DataModel.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_DataModel.h // Created: 10/25/2004 10:32:33 AM // Author: Sergey LITONIN @@ -27,10 +45,9 @@ class SALOMEAPP_EXPORT SalomeApp_DataModel : public LightApp_DataModel public: static SUIT_DataObject* synchronize( const _PTR( SComponent )&, SalomeApp_Study* ); - static SUIT_DataObject* synchronize( const _PTR( SObject )&, SUIT_DataObject*, SalomeApp_Study* ); - SalomeApp_DataModel ( CAM_Module* theModule ); - virtual ~SalomeApp_DataModel(); + SalomeApp_DataModel ( CAM_Module* theModule ); + virtual ~SalomeApp_DataModel(); virtual bool open( const QString&, CAM_Study*, QStringList ); virtual bool create( CAM_Study* ); diff --git a/src/SalomeApp/SalomeApp_DataObject.cxx b/src/SalomeApp/SalomeApp_DataObject.cxx index ef7b8df7b..d3a4b5c9d 100644 --- a/src/SalomeApp/SalomeApp_DataObject.cxx +++ b/src/SalomeApp/SalomeApp_DataObject.cxx @@ -14,13 +14,15 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_DataObject.h" #include "SalomeApp_Study.h" #include "LightApp_RootObject.h" +#include + #include #include #include @@ -33,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 ), @@ -331,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 ) @@ -371,3 +368,50 @@ QString SalomeApp_ModuleObject::name() const return SalomeApp_DataObject::name(); } + + + +/*!Constructor.Initialize by \a parent.*/ +SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* _parent, const int id, SalomeApp_Study* study ) + : LightApp_DataObject( _parent ), CAM_DataObject( _parent ), // IMPORTANT TO CALL ALL VIRTUAL CONSTRUCTORS! + myId( id ), + myStudy( study ) +{ +} + +/*!Destructor. Do nothing.*/ +SalomeApp_SavePointObject::~SalomeApp_SavePointObject() +{ +} + +/*!Returns save points ID */ +int SalomeApp_SavePointObject::getId() const +{ + return myId; +} + +/*!Returns "invalid" entry, which does not correspond to any object in data structure + but indicates that it is a save point object */ +QString SalomeApp_SavePointObject::entry() const +{ + return QObject::tr( "SAVE_POINT_DEF_NAME" ) + QString::number( myId ); +} + +/*!Returns displayed name of object */ +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_DataObject.h b/src/SalomeApp/SalomeApp_DataObject.h index 15a1d96bf..7f3ae993d 100644 --- a/src/SalomeApp/SalomeApp_DataObject.h +++ b/src/SalomeApp/SalomeApp_DataObject.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_DATAOBJECT_H #define SALOMEAPP_DATAOBJECT_H @@ -82,7 +82,45 @@ public: SalomeApp_ModuleObject( CAM_DataModel*, const _PTR(SObject)&, SUIT_DataObject* = 0 ); virtual ~SalomeApp_ModuleObject(); - virtual QString name() const; + virtual QString name() const; +}; + +/*! + * SalomeApp_SavePointObject - class that represents persistent visual_state object + * these objects are stored in data model, but NOT in SObjects structure, so we + * must handle them separately using this special class for them + */ + +class SALOMEAPP_EXPORT SalomeApp_SavePointObject : public virtual LightApp_DataObject +{ +public: + SalomeApp_SavePointObject( SUIT_DataObject* parent, const int, SalomeApp_Study* study ); + virtual ~SalomeApp_SavePointObject(); + + virtual QString entry() const; + + virtual QString name() const; + virtual QPixmap icon() const; + virtual QString toolTip() const; + + int getId() const; + +private: + int myId; + SalomeApp_Study* myStudy; +}; + +/*! + * SalomeApp_SavePointRootObject - class that represents parent object for visual_state objects + */ + +class SALOMEAPP_EXPORT SalomeApp_SavePointRootObject : public SUIT_DataObject +{ +public: + SalomeApp_SavePointRootObject( SUIT_DataObject* parent ) : SUIT_DataObject( parent ) {} + + virtual QString name() const { return QObject::tr( "SAVE_POINT_ROOT_NAME" ); } + virtual QString toolTip() const{ return QObject::tr( "SAVE_POINT_ROOT_TOOLTIP" ); } }; #endif diff --git a/src/SalomeApp/SalomeApp_Displayer.cxx b/src/SalomeApp/SalomeApp_Displayer.cxx index 6e2caeda2..55ac92ba5 100644 --- a/src/SalomeApp/SalomeApp_Displayer.cxx +++ b/src/SalomeApp/SalomeApp_Displayer.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_Displayer.h" @@ -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_Displayer.h b/src/SalomeApp/SalomeApp_Displayer.h index 25ba911e2..db5319392 100644 --- a/src/SalomeApp/SalomeApp_Displayer.h +++ b/src/SalomeApp/SalomeApp_Displayer.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_DISPLAYER_HEADER diff --git a/src/SalomeApp/SalomeApp_EventFilter.cxx b/src/SalomeApp/SalomeApp_EventFilter.cxx index 0db6f5fe3..493d690c8 100755 --- a/src/SalomeApp/SalomeApp_EventFilter.cxx +++ b/src/SalomeApp/SalomeApp_EventFilter.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_EventFilter.h" @@ -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_EventFilter.h b/src/SalomeApp/SalomeApp_EventFilter.h index 1411a3f5e..e8849e231 100755 --- a/src/SalomeApp/SalomeApp_EventFilter.h +++ b/src/SalomeApp/SalomeApp_EventFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_EVENTFILTER_H #define SALOMEAPP_EVENTFILTER_H diff --git a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx index 3791d4d98..b22ab38d8 100644 --- a/src/SalomeApp/SalomeApp_ExceptionHandler.cxx +++ b/src/SalomeApp/SalomeApp_ExceptionHandler.cxx @@ -14,25 +14,18 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_ExceptionHandler.h" +#include "CASCatch.hxx" #include -#include -#include - #include #include #include -#include -#include -#include - - /*!Constructor. Initialize by \a floatSignal.*/ SalomeApp_ExceptionHandler::SalomeApp_ExceptionHandler( const bool floatSignal ) : SUIT_ExceptionHandler() @@ -43,32 +36,17 @@ SalomeApp_ExceptionHandler::SalomeApp_ExceptionHandler( const bool floatSignal ) /*!Try to call SUIT_ExceptionHandler::internalHandle(o, e), catch if failure.*/ bool SalomeApp_ExceptionHandler::handleSignals( QObject* o, QEvent* e ) { - - CASCatch_CatchSignals aCatchSignals; - aCatchSignals.Activate(); - - CASCatch_TRY { SUIT_ExceptionHandler::internalHandle( o, e ); } - CASCatch_CATCH(CASCatch_Failure) { - aCatchSignals.Deactivate(); - Handle(CASCatch_Failure) aFail = CASCatch_Failure::Caught(); - throw std::runtime_error( aFail->GetError() ); + CASCatch_CATCH(Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + throw Standard_Failure( aFail->GetMessageString() ); } - aCatchSignals.Deactivate(); return true; } -#ifdef try -#undef try -#endif - -#ifdef catch -#undef catch -#endif - /*!Try to call handleSignals( o, e ), catch and show error message.*/ bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e ) { @@ -99,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_ExceptionHandler.h b/src/SalomeApp/SalomeApp_ExceptionHandler.h index 823c3e530..4a4c0bdab 100644 --- a/src/SalomeApp/SalomeApp_ExceptionHandler.h +++ b/src/SalomeApp/SalomeApp_ExceptionHandler.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_EXCEPTIONHANDLER_H #define SALOMEAPP_EXCEPTIONHANDLER_H diff --git a/src/SalomeApp/SalomeApp_Filter.cxx b/src/SalomeApp/SalomeApp_Filter.cxx index 98f9a1a74..b3214ba00 100644 --- a/src/SalomeApp/SalomeApp_Filter.cxx +++ b/src/SalomeApp/SalomeApp_Filter.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_Filter.h" diff --git a/src/SalomeApp/SalomeApp_Filter.h b/src/SalomeApp/SalomeApp_Filter.h index e8afc8014..8de24ccdd 100644 --- a/src/SalomeApp/SalomeApp_Filter.h +++ b/src/SalomeApp/SalomeApp_Filter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_FILTER_H #define SALOMEAPP_FILTER_H diff --git a/src/SalomeApp/SalomeApp_ImportOperation.cxx b/src/SalomeApp/SalomeApp_ImportOperation.cxx index 5543f903f..5d19bf6f0 100644 --- a/src/SalomeApp/SalomeApp_ImportOperation.cxx +++ b/src/SalomeApp/SalomeApp_ImportOperation.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SalomeApp/SalomeApp_ImportOperation.h b/src/SalomeApp/SalomeApp_ImportOperation.h index 0cf83bb16..56b895584 100644 --- a/src/SalomeApp/SalomeApp_ImportOperation.h +++ b/src/SalomeApp/SalomeApp_ImportOperation.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SalomeApp/SalomeApp_ListView.cxx b/src/SalomeApp/SalomeApp_ListView.cxx index 6f3bd20e1..e2c354eaa 100644 --- a/src/SalomeApp/SalomeApp_ListView.cxx +++ b/src/SalomeApp/SalomeApp_ListView.cxx @@ -1,8 +1,22 @@ -// SALOME SalomeApp +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SalomeApp // // File : SalomeApp_ListView.cxx // Author : Vadim SANDLER @@ -27,14 +41,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 +70,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 +96,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 +108,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 +124,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 +140,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 +158,9 @@ void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup ) } } -//================================================================ -// Function : SalomeApp_ListView::clear -/*! Purpose : clears view*/ -//================================================================ +/*! + Clears view +*/ void SalomeApp_ListView::clear() { if (myEdit) { @@ -169,28 +171,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 +202,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 +217,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 +266,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 +279,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 +290,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 +301,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 +381,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 +416,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 +435,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 +447,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 +460,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 +472,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 +485,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 +499,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 +513,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 +527,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 +541,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 +561,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 +582,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 +603,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 +617,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 +630,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 +642,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 +782,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 +792,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 +819,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 +843,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 +854,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 +891,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 +925,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 +945,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 +965,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 +975,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 +1003,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 +1031,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 +1136,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 +1154,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 +1167,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 +1184,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 +1207,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 +1219,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 +1232,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 +1250,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 +1263,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 +1281,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 +1294,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 +1309,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 +1320,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 +1332,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 +1351,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 +1364,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 +1377,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 +1388,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..3fa857bb0 100644 --- a/src/SalomeApp/SalomeApp_ListView.h +++ b/src/SalomeApp/SalomeApp_ListView.h @@ -1,13 +1,26 @@ -// SALOME SalomeApp +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SalomeApp // // File : SalomeApp_ListView.h // Author : Vadim SANDLER // Module : SALOME -// $Header$ #ifndef SALOMEAPP_LISTVIEW_H #define SALOMEAPP_LISTVIEW_H @@ -44,10 +57,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 9284a5792..332441a65 100644 --- a/src/SalomeApp/SalomeApp_Module.cxx +++ b/src/SalomeApp/SalomeApp_Module.cxx @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_Module.cxx // Created: 10/25/2004 11:39:56 AM // Author: Sergey LITONIN @@ -11,6 +29,7 @@ #include "LightApp_Selection.h" #include "LightApp_Operation.h" #include "LightApp_Preferences.h" +//#include "LightApp_Displayer.h" #include "CAM_DataModel.h" @@ -19,12 +38,22 @@ #include #include #include +//#include #include +#include + +#include +//#include +//#include +//#include #include #include +//#include +//#include + /*!Constructor.*/ SalomeApp_Module::SalomeApp_Module( const QString& name ) : LightApp_Module( name ) @@ -54,6 +83,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() ); @@ -97,3 +132,24 @@ void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_Li dest.Append( obj ); } } + +/*! + * \brief Virtual public + * + * This method is called just before the study document is saved, so the module has a possibility + * to store visual parameters in AttributeParameter attribue(s) + */ +void SalomeApp_Module::storeVisualParameters(int savePoint) +{ +} + +/*! + * \brief Virtual public + * + * This method is called after the study document is opened, so the module has a possibility to restore + * visual parameters + */ +void SalomeApp_Module::restoreVisualParameters(int savePoint) +{ +} + diff --git a/src/SalomeApp/SalomeApp_Module.h b/src/SalomeApp/SalomeApp_Module.h index 433d918fd..07f4c0620 100644 --- a/src/SalomeApp/SalomeApp_Module.h +++ b/src/SalomeApp/SalomeApp_Module.h @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_Module.h // Created: 10/25/2004 11:33:06 AM // Author: Sergey LITONIN @@ -10,8 +28,6 @@ #include -#include - class CAM_DataModel; class SalomeApp_Application; class LightApp_Operation; @@ -41,6 +57,9 @@ public: SalomeApp_Application* getApp() const; + virtual void storeVisualParameters(int savePoint); + virtual void restoreVisualParameters(int savePoint); + protected: virtual CAM_DataModel* createDataModel(); virtual LightApp_Selection* createSelection() const; diff --git a/src/SalomeApp/SalomeApp_PyInterp.cxx b/src/SalomeApp/SalomeApp_PyInterp.cxx index 19bc57559..67606feae 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.cxx +++ b/src/SalomeApp/SalomeApp_PyInterp.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_PyInterp.h b/src/SalomeApp/SalomeApp_PyInterp.h index a15b3767f..a0db6377f 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.h +++ b/src/SalomeApp/SalomeApp_PyInterp.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/SalomeApp/SalomeApp_Study.cxx b/src/SalomeApp/SalomeApp_Study.cxx index 6b72dd880..e227a58e8 100644 --- a/src/SalomeApp/SalomeApp_Study.cxx +++ b/src/SalomeApp/SalomeApp_Study.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_Study.h" @@ -23,6 +23,7 @@ #include "SalomeApp_DataObject.h" #include "SalomeApp_Application.h" #include "SalomeApp_Engine_i.hxx" +#include "SalomeApp_VisualState.h" #include "LightApp_RootObject.h" @@ -31,16 +32,29 @@ #include #include +#include +#include #include "utilities.h" +#include #include #include +#include + +#include +#include + +#include "SALOMEDS_Tool.hxx" + +#include "SALOMEDSClient_ClientFactory.hxx" +#include "SALOMEDSClient_IParameters.hxx" + #include #include CORBA_SERVER_HEADER(SALOME_Exception) -#include "SALOMEDS_Tool.hxx" +using namespace std; /*! Constructor. @@ -99,10 +113,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" ); @@ -131,13 +145,21 @@ bool SalomeApp_Study::openDocument( const QString& theFileName ) emit opened( this ); study->IsSaved(true); + + bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); + if ( restore ) { + std::vector savePoints = getSavePoints(); + if ( savePoints.size() > 0 ) + SalomeApp_VisualState( (SalomeApp_Application*)application() ).restoreState( savePoints[savePoints.size()-1] ); + } + 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" ); @@ -168,17 +190,28 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName ) bool res = CAM_Study::openDocument( theStudyName ); emit opened( this ); + bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); + if ( restore ) { + std::vector savePoints = getSavePoints(); + if ( savePoints.size() > 0 ) + SalomeApp_VisualState( (SalomeApp_Application*)application() ).restoreState( savePoints[savePoints.size()-1] ); + } + //SRN: BugID IPAL9021: End return res; } -//======================================================================= -// name : saveDocumentAs -/*! Purpose : Save document*/ -//======================================================================= +/*! + Saves document + \param theFileName - name of file +*/ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName ) { + bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true ); + if ( store ) + SalomeApp_VisualState( (SalomeApp_Application*)application() ).storeState(); + ModelList list; dataModels( list ); SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first(); @@ -195,13 +228,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 ); @@ -209,12 +243,15 @@ 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 ); + if ( store ) + SalomeApp_VisualState( (SalomeApp_Application*)application() ).storeState(); + ModelList list; dataModels( list ); SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first(); @@ -222,7 +259,7 @@ bool SalomeApp_Study::saveDocument() for ( ; aModel; aModel = (SalomeApp_DataModel*)list.next() ) { listOfFiles.clear(); aModel->save(listOfFiles); - if ( !listOfFiles.isEmpty() ) + if ( !listOfFiles.isEmpty() ) saveModuleData(aModel->module()->name(), listOfFiles); } @@ -231,11 +268,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 ) @@ -244,10 +281,9 @@ bool SalomeApp_Study::saveDocument() return res; } -//================================================================ -// Function : closeDocument -/*! Purpose : Close document*/ -//================================================================ +/*! + Closes document +*/ void SalomeApp_Study::closeDocument(bool permanently) { LightApp_Study::closeDocument(permanently); @@ -262,10 +298,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(); @@ -275,23 +310,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(); @@ -309,10 +344,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 ); @@ -328,10 +364,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 ); @@ -342,10 +377,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; @@ -372,7 +406,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) { @@ -490,10 +524,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(); @@ -504,10 +538,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 ) { @@ -516,10 +551,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); @@ -527,10 +561,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) @@ -550,8 +583,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(); @@ -567,10 +602,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() ); @@ -581,10 +616,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() ) ); @@ -593,20 +627,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() ); @@ -620,6 +652,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() ) @@ -630,3 +666,77 @@ void SalomeApp_Study::components( QStringList& comps ) const comps.append( aComponent->ComponentDataType().c_str() ); } } + +/*! + \return a list of saved points' IDs +*/ +std::vector SalomeApp_Study::getSavePoints() +{ + std::vector v; + + _PTR(SObject) so = studyDS()->FindComponent("Interface Applicative"); + if(!so) return v; + + _PTR(StudyBuilder) builder = studyDS()->NewBuilder(); + _PTR(ChildIterator) anIter ( studyDS()->NewChildIterator( so ) ); + for(; anIter->More(); anIter->Next()) + { + _PTR(SObject) val( anIter->Value() ); + _PTR(GenericAttribute) genAttr; + if(builder->FindAttribute(val, genAttr, "AttributeParameter")) v.push_back(val->Tag()); + } + + return v; +} + +/*! + Removes a given save point +*/ +void SalomeApp_Study::removeSavePoint(int savePoint) +{ + if(savePoint <= 0) return; + _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint); + _PTR(SObject) so = AP->GetSObject(); + _PTR(StudyBuilder) builder = studyDS()->NewBuilder(); + builder->RemoveObjectWithChildren(so); +} + +/*! + \return a name of save point +*/ +QString SalomeApp_Study::getNameOfSavePoint(int savePoint) +{ + _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint); + _PTR(IParameters) ip = ClientFactory::getIParameters(AP); + return ip->getProperty("AP_SAVEPOINT_NAME").c_str(); +} + +/*! + Sets a name of save point +*/ +void SalomeApp_Study::setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint) +{ + _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint); + _PTR(IParameters) ip = ClientFactory::getIParameters(AP); + ip->setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1()); +} + +/*! + \return a name of the component where visual parameters are stored +*/ +std::string SalomeApp_Study::getVisualComponentName() +{ + return "Interface Applicative"; +} + +/*! + 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 ); + + // calling updateSavePointDataObjects in order to set correct order of "Gui states" object + // it must always be the last one. + ((SalomeApp_Application*)application())->updateSavePointDataObjects( this ); +} diff --git a/src/SalomeApp/SalomeApp_Study.h b/src/SalomeApp/SalomeApp_Study.h index c07d20528..ef5c127fd 100644 --- a/src/SalomeApp/SalomeApp_Study.h +++ b/src/SalomeApp/SalomeApp_Study.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_STUDY_H #define SALOMEAPP_STUDY_H @@ -22,6 +22,7 @@ #include "SalomeApp.h" #include +#include #ifdef WIN32 #pragma warning( disable:4251 ) @@ -66,6 +67,12 @@ public: virtual void children( const QString&, QStringList& ) const; virtual void components( QStringList& ) const; + std::vector getSavePoints(); + void removeSavePoint(int savePoint); + QString getNameOfSavePoint(int savePoint); + void setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint); + virtual std::string getVisualComponentName(); + protected: virtual void saveModuleData ( QString theModuleName, QStringList theListOfFiles ); virtual void openModuleData ( QString theModuleName, QStringList& theListOfFiles ); @@ -82,6 +89,9 @@ protected: virtual bool openDataModel( const QString&, CAM_DataModel* ); void setStudyDS(const _PTR(Study)& s ); +protected slots: + virtual void updateModelRoot( const CAM_DataModel* ); + private: QString newStudyName() const; diff --git a/src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx b/src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx index 2a7040d54..830536676 100644 --- a/src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx +++ b/src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx @@ -1,8 +1,22 @@ -// SALOME SalomeApp +// 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. // -// Copyright (C) 2005 CEA/DEN, EDF R&D +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// SALOME SalomeApp // // File : SalomeApp_StudyPropertiesDlg.cxx // Author : Sergey ANIKIN diff --git a/src/SalomeApp/SalomeApp_StudyPropertiesDlg.h b/src/SalomeApp/SalomeApp_StudyPropertiesDlg.h index 556a3d318..4abedf932 100644 --- a/src/SalomeApp/SalomeApp_StudyPropertiesDlg.h +++ b/src/SalomeApp/SalomeApp_StudyPropertiesDlg.h @@ -1,13 +1,24 @@ -// SALOME SalomeApp -// -// Copyright (C) 2005 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SalomeApp_StudyPropertiesDlg.h // Author : Sergey ANIKIN // Module : SALOME -// $Header$ #ifndef SALOMEAPP_STUDY_PROPERTIES_DLG_H #define SALOMEAPP_STUDY_PROPERTIES_DLG_H diff --git a/src/SalomeApp/SalomeApp_Tools.cxx b/src/SalomeApp/SalomeApp_Tools.cxx index f6b93b4ca..a20fbf0c8 100644 --- a/src/SalomeApp/SalomeApp_Tools.cxx +++ b/src/SalomeApp/SalomeApp_Tools.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_Tools.h" diff --git a/src/SalomeApp/SalomeApp_Tools.h b/src/SalomeApp/SalomeApp_Tools.h index 074367b32..a6f1e06dc 100644 --- a/src/SalomeApp/SalomeApp_Tools.h +++ b/src/SalomeApp/SalomeApp_Tools.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_TOOLS_H #define SALOMEAPP_TOOLS_H diff --git a/src/SalomeApp/SalomeApp_TypeFilter.cxx b/src/SalomeApp/SalomeApp_TypeFilter.cxx index 58ab6bb57..c82912207 100644 --- a/src/SalomeApp/SalomeApp_TypeFilter.cxx +++ b/src/SalomeApp/SalomeApp_TypeFilter.cxx @@ -14,15 +14,13 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeApp_TypeFilter.h" #include "LightApp_DataOwner.h" #include "SalomeApp_Study.h" -#include - /*! Constructor. */ diff --git a/src/SalomeApp/SalomeApp_TypeFilter.h b/src/SalomeApp/SalomeApp_TypeFilter.h index 9c95d25ee..533ea7269 100644 --- a/src/SalomeApp/SalomeApp_TypeFilter.h +++ b/src/SalomeApp/SalomeApp_TypeFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMEAPP_TYPEFILTER_H #define SALOMEAPP_TYPEFILTER_H diff --git a/src/SalomeApp/resources/SalomeApp.xml b/src/SalomeApp/resources/SalomeApp.xml index 4c290584a..f6cfb540c 100644 --- a/src/SalomeApp/resources/SalomeApp.xml +++ b/src/SalomeApp/resources/SalomeApp.xml @@ -1,12 +1,6 @@ -
    - - - - - -
    + @@ -23,10 +17,19 @@
    +
    +
    + + + + + +
    + @@ -40,239 +43,76 @@ - - - - - - - - - - - + - -
    -
    - -
    -
    - -
    -
    - - -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - - + +
    - - -
    - - +
    + + + + + +
    - - - - - - + + + + + + + +
    +
    + + +
    - - - - + + + + +
    - - - + + + +
    -
    - -
    - - - - - - - + + + + + + + +
    - - - -
    -
    - - - + + + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    + + +
    - -
    - - +
    + +
    diff --git a/src/SalomeApp/resources/SalomeApp_images.po b/src/SalomeApp/resources/SalomeApp_images.po index 29ec0e6e6..25df26cd8 100644 --- a/src/SalomeApp/resources/SalomeApp_images.po +++ b/src/SalomeApp/resources/SalomeApp_images.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: SalomeApp_images.po // Created: November, 2004 // Author: OCC team diff --git a/src/SalomeApp/resources/SalomeApp_msg_en.po b/src/SalomeApp/resources/SalomeApp_msg_en.po index a739779d2..ae12d309a 100644 --- a/src/SalomeApp/resources/SalomeApp_msg_en.po +++ b/src/SalomeApp/resources/SalomeApp_msg_en.po @@ -1,3 +1,21 @@ +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// // File: CATHAREGUI_msg_en.po // Created: 10/25/2004 12:46:36 PM // Author: Sergey LITONIN @@ -13,9 +31,6 @@ msgstr "" //======================================================================================= -msgid "BUT_OK" -msgstr "&OK" - msgid "BUT_NEW" msgstr "&New" @@ -25,9 +40,6 @@ msgstr "&Open" msgid "BUT_LOAD" msgstr "&Load" -msgid "BUT_CANCEL" -msgstr "&Cancel" - //======================================================================================= msgid "SalomeApp_Application::PYTHON_CONSOLE" @@ -42,6 +54,15 @@ msgstr "&Dump study..." msgid "SalomeApp_Application::PRP_DESK_FILE_DUMP_STUDY" msgstr "Dumps study to the python script" +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" + +msgid "SalomeApp_Application::PRP_DESK_FILE_SAVE_GUI_STATE" +msgstr "Saves current state of viewers, displayed objects, etc." + msgid "SalomeApp_Application::TOT_DESK_FILE_LOAD_SCRIPT" msgstr "Load python script" @@ -102,6 +123,17 @@ msgstr "Activate Module" msgid "SalomeApp_Application::MEN_DELETE_INVALID_REFERENCE" msgstr "Delete Invalid Reference" +msgid "SalomeApp_Application::PREF_STORE_VISUAL_STATE" +msgstr "Store/restore last GUI state" + +//======================================================================================= + +msgid "PUBLISH_IN_STUDY" +msgstr "Publish in study" + +msgid "SAVE_GUI_STATE" +msgstr "Save GUI state" + //======================================================================================= msgid "SalomeApp_Application::MEN_WINDOWS_NEW" @@ -190,3 +222,25 @@ msgstr "Publish in study" msgid "SalomeApp_Application::WRN_DUMP_STUDY_FAILED" msgstr "Dump study failed" +msgid "SAVE_POINT_OBJECT_TOOLTIP" +msgstr "Saved GUI state: %1" + +msgid "SAVE_POINT_DEF_NAME" +msgstr "GUI state: " + +msgid "SAVE_POINT_ROOT_TOOLTIP" +msgstr "Persistent GUI states" + +msgid "SAVE_POINT_ROOT_NAME" +msgstr "GUI states" + +//======================================================================================= + +msgid "SalomeApp_Application::MEN_RESTORE_VS" +msgstr "Restore" + +msgid "SalomeApp_Application::MEN_RENAME_VS" +msgstr "Rename" + +msgid "SalomeApp_Application::MEN_DELETE_VS" +msgstr "Delete" diff --git a/src/Session/InquireServersQThread.cxx b/src/Session/InquireServersQThread.cxx index 3a4b9ddd6..61fdc3eff 100755 --- a/src/Session/InquireServersQThread.cxx +++ b/src/Session/InquireServersQThread.cxx @@ -1,6 +1,20 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : InquireServersQThread.cxx // Author : Vasily RUSYAEV @@ -49,6 +63,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 +154,10 @@ InquireServersGUI::InquireServersGUI() myThread->start(); } +/*! + Sets pixmap of splash screen + \param pix - new pixmap +*/ void InquireServersGUI::setPixmap( QPixmap pix ) { if ( !pix.isNull() ) @@ -148,21 +169,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 +198,9 @@ void InquireServersGUI::ClickOnCancel() qApp->exit( 1 ); } +/*! + Custom event filter +*/ void InquireServersGUI::customEvent( QCustomEvent* pe ) { switch( pe->type() ) @@ -204,11 +235,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 +295,9 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r ) } } +/*! + The main loop of this thread +*/ void InquireServersQThread::run() { while ( IsChecking && receiver ) @@ -305,12 +345,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 82d58dc7d..2eca8fe32 100755 --- a/src/Session/InquireServersQThread.h +++ b/src/Session/InquireServersQThread.h @@ -1,11 +1,24 @@ -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : InquireServersQThread.h // Author : Vasily RUSYAEV // Module : SALOME -// $Header$ #include #include @@ -13,11 +26,10 @@ #include -/********************************************************** -** Class: InquireEvent -** Descr: Contains QCustomEvents for posting to InquireServersQThread -** Level: Private -***********************************************************/ +/*! + \class InquireEvent + Contains QCustomEvents for posting to InquireServersQThread +*/ class SESSION_EXPORT InquireEvent : public QCustomEvent { public: diff --git a/src/Session/Makefile.in b/src/Session/Makefile.in index 226711e2b..6379a1395 100755 --- a/src/Session/Makefile.in +++ b/src/Session/Makefile.in @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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,11 +47,10 @@ LIB = libSalomeSession.la LIB_SRC=Session_Session_i.cxx \ Session_ServerThread.cxx \ Session_ServerLauncher.cxx \ - Session_SignalsHandler.cxx \ + Session_ServerCheck.cxx \ SalomeApp_Engine_i.cxx \ - InquireServersQThread.cxx -LIB_MOC = InquireServersQThread.h +LIB_MOC = # Executables targets BIN = SALOME_Session_Server @@ -59,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 -lCASCatch -lSalomeCatalog -lSalomeDS $(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 ac7738582..21ceec290 100755 --- a/src/Session/SALOME_Session_Server.cxx +++ b/src/Session/SALOME_Session_Server.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,17 +53,17 @@ #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" -extern "C" int HandleSignals( QApplication *theQApplication ); - /*! - read arguments, define list of server to launch with their arguments. * - wait for naming service * - create and run a thread for launch of all servers @@ -182,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: @@ -233,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() { @@ -258,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; @@ -282,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" ); @@ -339,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(); @@ -417,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; @@ -427,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..813270515 100644 --- a/src/Session/SalomeApp_Engine_i.cxx +++ b/src/Session/SalomeApp_Engine_i.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/SalomeApp_Engine_i.hxx b/src/Session/SalomeApp_Engine_i.hxx index 67c29f993..abadbdd67 100755 --- a/src/Session/SalomeApp_Engine_i.hxx +++ b/src/Session/SalomeApp_Engine_i.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/Session/Session_ServerCheck.hxx b/src/Session/Session_ServerCheck.hxx index 0f84abe18..8de6a6d41 100644 --- a/src/Session/Session_ServerCheck.hxx +++ b/src/Session/Session_ServerCheck.hxx @@ -22,11 +22,7 @@ #if !defined(SESSION_SERVERCHECK_HXX) #define SESSION_SERVERCHECK_HXX -#ifdef WNT -#include -#else -#define SALOME_WNT_EXPORT -#endif +#include #include #include @@ -37,7 +33,7 @@ class QWaitCondition; /*! Class Session_ServerCheck : check SALOME servers */ -class SALOME_WNT_EXPORT Session_ServerCheck : public QThread +class SESSION_EXPORT Session_ServerCheck : public QThread { public: // constructor diff --git a/src/Session/Session_ServerLauncher.cxx b/src/Session/Session_ServerLauncher.cxx index b15f682a5..d4b055416 100755 --- a/src/Session/Session_ServerLauncher.cxx +++ b/src/Session/Session_ServerLauncher.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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 559833919..b3773adf1 100755 --- a/src/Session/Session_ServerLauncher.hxx +++ b/src/Session/Session_ServerLauncher.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -65,6 +65,7 @@ public: PortableServer::POA_ptr poa, QMutex *GUIMutex, QWaitCondition *ServerLaunch, + QMutex *SessionMutex, QWaitCondition *SessionStarted); virtual ~Session_ServerLauncher(); void run(); @@ -77,13 +78,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 7e3714518..d9ef4f806 100755 --- a/src/Session/Session_ServerThread.cxx +++ b/src/Session/Session_ServerThread.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -34,7 +34,8 @@ #include "SALOME_Container_i.hxx" #include "SALOME_ContainerManager.hxx" -#include "SALOMEDS_StudyManager_i.hxx" +#include +#include #include "SALOME_ModuleCatalog_impl.hxx" #include "RegistryService.hxx" #include "Session_Session_i.hxx" @@ -61,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]); @@ -185,12 +172,6 @@ void Session_ServerThread::Init() } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateModuleCatalog(int argc, char ** argv) { @@ -230,12 +211,6 @@ void Session_ServerThread::ActivateModuleCatalog(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateSALOMEDS(int argc, char ** argv) { @@ -246,15 +221,7 @@ void Session_ServerThread::ActivateSALOMEDS(int argc, // counted objects, they will be deleted by the POA when they are no // longer needed. - SALOMEDS_StudyManager_i * myStudyManager_i - = new SALOMEDS_StudyManager_i(_orb,_root_poa); - - // Activate the objects. This tells the POA that the objects are - // ready to accept requests. - - PortableServer::ObjectId_var myStudyManager_iid - = _root_poa->activate_object(myStudyManager_i); - myStudyManager_i->register_name("/myStudyManager"); + ClientFactory::createStudyManager(_orb,_root_poa); } catch(CORBA::SystemException&) { @@ -277,12 +244,6 @@ void Session_ServerThread::ActivateSALOMEDS(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateRegistry(int argc, char ** argv) { @@ -339,12 +300,6 @@ void Session_ServerThread::ActivateRegistry(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainerManager(int argc, char ** argv) { @@ -377,12 +332,6 @@ void Session_ServerThread::ActivateContainerManager(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateContainer(int argc, char ** argv) { @@ -467,12 +416,6 @@ void Session_ServerThread::ActivateContainer(int argc, } } -//============================================================================= -/*! - * - */ -//============================================================================= - void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/) { try @@ -500,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 1041c0f35..04ded4d2e 100755 --- a/src/Session/Session_ServerThread.hxx +++ b/src/Session/Session_ServerThread.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -52,8 +52,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: @@ -70,7 +69,6 @@ protected: int _servType; CORBA::ORB_var _orb; PortableServer::POA_var _root_poa; - QMutex* _GUIMutex; SALOME_NamingService * _NS; }; @@ -90,6 +88,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 d60c3e09d..ee239674e 100755 --- a/src/Session/Session_Session_i.cxx +++ b/src/Session/Session_Session_i.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,12 +192,32 @@ 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; } bool SALOME_Session_i::restoreVisualState(CORBA::Long theSavePoint) -{ +{ + class TEvent: public SALOME_Event { + int _savePoint; + public: + TEvent(int savePoint) { _savePoint = savePoint; } + virtual void Execute() { + SUIT_Study* study = SUIT_Session::session()->activeApplication()->activeStudy(); + if ( study ) { + study->restoreState(_savePoint); + } + } + }; + + if(SUIT_Session::session() && SUIT_Session::session()->activeApplication() ) { + SUIT_Study* study = SUIT_Session::session()->activeApplication()->activeStudy(); + if(!study) SUIT_Session::session()->activeApplication()->createEmptyStudy(); + ProcessVoidEvent( new TEvent(theSavePoint) ); + return true; + } + return false; } diff --git a/src/Session/Session_Session_i.hxx b/src/Session/Session_Session_i.hxx index ccc4424fc..3b06ab27f 100755 --- a/src/Session/Session_Session_i.hxx +++ b/src/Session/Session_Session_i.hxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/Session/Session_SignalsHandler.cxx b/src/Session/Session_SignalsHandler.cxx deleted file mode 100755 index 4eeface46..000000000 --- a/src/Session/Session_SignalsHandler.cxx +++ /dev/null @@ -1,45 +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 - - -#include -#include - -#include -#include -#include - -extern "C" int HandleSignals(QApplication *theQApplication) -{ - int aRet = -1; - CASCatch_CatchSignals aCatchSignals; - aCatchSignals.Activate(); - - CASCatch_TRY { - aRet = theQApplication->exec(); - } - CASCatch_CATCH(CASCatch_Failure) { - aCatchSignals.Deactivate(); - Handle(CASCatch_Failure) aFail = CASCatch_Failure::Caught(); - throw std::runtime_error( aFail->GetError() ); - } - - aCatchSignals.Deactivate(); - return aRet; -} diff --git a/src/Style/Makefile.in b/src/Style/Makefile.in index 1c79d2891..6de6bc78d 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/ or email : webmaster.salome@opencascade.com +# # 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..d35196cf5 100644 --- a/src/Style/SalomeStyle.cxx +++ b/src/Style/SalomeStyle.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SalomeStyle.h" @@ -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/Style/SalomeStyle.h b/src/Style/SalomeStyle.h index 32eec36bf..e6cdd5807 100644 --- a/src/Style/SalomeStyle.h +++ b/src/Style/SalomeStyle.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SALOMESTYLE_H #define SALOMESTYLE_H diff --git a/src/TOOLSGUI/Makefile.in b/src/TOOLSGUI/Makefile.in index e8e183e7f..bec8e5a2b 100755 --- a/src/TOOLSGUI/Makefile.in +++ b/src/TOOLSGUI/Makefile.in @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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..25b8aeee9 100755 --- a/src/TOOLSGUI/ToolsGUI.cxx +++ b/src/TOOLSGUI/ToolsGUI.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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.h b/src/TOOLSGUI/ToolsGUI.h index cb54ffdfc..ceb117928 100755 --- a/src/TOOLSGUI/ToolsGUI.h +++ b/src/TOOLSGUI/ToolsGUI.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx index d06d2e0e3..5cf6f399e 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..9169f0dde 100755 --- a/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h +++ b/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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..4581ab882 100755 --- a/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_HelpWindow.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_HelpWindow.h b/src/TOOLSGUI/ToolsGUI_HelpWindow.h index 61ff116c6..b4849baf0 100755 --- a/src/TOOLSGUI/ToolsGUI_HelpWindow.h +++ b/src/TOOLSGUI/ToolsGUI_HelpWindow.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx index 04d96c00a..7d4fcb0da 100755 --- a/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx +++ b/src/TOOLSGUI/ToolsGUI_IntervalWindow.cxx @@ -1,8 +1,20 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : ToolsGUI_IntervalWindow.cxx // Author : Oksana TCHEBANOVA @@ -20,8 +32,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 +88,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 +102,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_IntervalWindow.h b/src/TOOLSGUI/ToolsGUI_IntervalWindow.h index 3b53d7de8..242373657 100755 --- a/src/TOOLSGUI/ToolsGUI_IntervalWindow.h +++ b/src/TOOLSGUI/ToolsGUI_IntervalWindow.h @@ -1,8 +1,20 @@ -// SALOME RegistryDisplay : GUI for Registry server implementation -// -// Copyright (C) 2003 CEA/DEN, EDF R&D +// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : IntervalWindow.hxx // Author : Oksana TCHEBANOVA diff --git a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx index 332454c73..b6f3e34a5 100755 --- a/src/TOOLSGUI/ToolsGUI_RegWidget.cxx +++ b/src/TOOLSGUI/ToolsGUI_RegWidget.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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/TOOLSGUI/ToolsGUI_RegWidget.h b/src/TOOLSGUI/ToolsGUI_RegWidget.h index 6d3a66f04..be40bc8a2 100755 --- a/src/TOOLSGUI/ToolsGUI_RegWidget.h +++ b/src/TOOLSGUI/ToolsGUI_RegWidget.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/TOOLSGUI/resources/ToolsGUI_msg_en.po b/src/TOOLSGUI/resources/ToolsGUI_msg_en.po index 09ad7be89..cfab19fbb 100755 --- a/src/TOOLSGUI/resources/ToolsGUI_msg_en.po +++ b/src/TOOLSGUI/resources/ToolsGUI_msg_en.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/VTKViewer/Makefile.in b/src/VTKViewer/Makefile.in index dd5f7ea29..9fee23fb8 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/ or email : webmaster.salome@opencascade.com +# # 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.cxx b/src/VTKViewer/VTKViewer.cxx index 9755466c0..6a548f1df 100644 --- a/src/VTKViewer/VTKViewer.cxx +++ b/src/VTKViewer/VTKViewer.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer.h b/src/VTKViewer/VTKViewer.h index 27934b610..77de94830 100755 --- a/src/VTKViewer/VTKViewer.h +++ b/src/VTKViewer/VTKViewer.h @@ -14,14 +14,27 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +#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 da05fc98d..5f0e621e7 100755 --- a/src/VTKViewer/VTKViewer_Actor.cxx +++ b/src/VTKViewer/VTKViewer_Actor.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,16 +485,34 @@ VTKViewer_Actor myIsInfinite = theIsInfinite; } - +/*! + \return infinive flag +*/ bool VTKViewer_Actor ::IsInfinitive() { - return myIsInfinite; -} + if(myIsInfinite) + return true; + 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; + + return false; +} -float* +/*! + \return current bounding box +*/ +vtkFloatingPointType* VTKViewer_Actor ::GetBounds() { @@ -420,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 @@ -445,7 +547,7 @@ VTKViewer_Actor void VTKViewer_Actor -::SetSize( const float ) +::SetSize( const vtkFloatingPointType ) {} @@ -454,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() { @@ -471,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]; @@ -497,7 +612,9 @@ VTKViewer_Actor } -//---------------------------------------------------------------------------- +/*! + \return display mode +*/ int VTKViewer_Actor ::getDisplayMode() @@ -505,6 +622,9 @@ VTKViewer_Actor return myDisplayMode; } +/*! + Change display mode +*/ void VTKViewer_Actor ::setDisplayMode(int theMode) @@ -514,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() @@ -522,6 +644,9 @@ VTKViewer_Actor return false; } +/*! + \return true if the VTKViewer_Actor is already highlighted +*/ bool VTKViewer_Actor ::isHighlighted() @@ -529,6 +654,9 @@ VTKViewer_Actor return myIsHighlighted; } +/*! + Set preselection mode +*/ void VTKViewer_Actor ::SetPreSelected(bool thePreselect) @@ -536,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..a0d9c4ba0 100755 --- a/src/VTKViewer/VTKViewer_Actor.h +++ b/src/VTKViewer/VTKViewer_Actor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_Algorithm.h b/src/VTKViewer/VTKViewer_Algorithm.h index 6dcde3a40..b533f149b 100644 --- a/src/VTKViewer/VTKViewer_Algorithm.h +++ b/src/VTKViewer/VTKViewer_Algorithm.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_AppendFilter.cxx b/src/VTKViewer/VTKViewer_AppendFilter.cxx index dce05c44e..4218c4f20 100644 --- a/src/VTKViewer/VTKViewer_AppendFilter.cxx +++ b/src/VTKViewer/VTKViewer_AppendFilter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -28,38 +28,15 @@ #include "VTKViewer_AppendFilter.h" -#include "VTKViewer_ConvexTool.h" - -#include -#include +#include #include -#include -#include -#include +#include +#include #include #include -#include -#include -#include -#include -#include #include -#include -#include -#include - -#include -#include -using namespace std; - -#ifdef _DEBUG_ -//static int MYDEBUG = 0; -//static int MYDEBUGWITHFILES = 0; -#else -//static int MYDEBUG = 0; -//static int MYDEBUGWITHFILES = 0; -#endif +#include #if defined __GNUC__ #if __GNUC__ == 2 @@ -73,7 +50,7 @@ vtkStandardNewMacro(VTKViewer_AppendFilter); VTKViewer_AppendFilter ::VTKViewer_AppendFilter() { - myDoMappingFlag=false; + myDoMappingFlag = false; } VTKViewer_AppendFilter @@ -84,7 +61,12 @@ void VTKViewer_AppendFilter ::SetDoMappingFlag(const bool theFlag) { - myDoMappingFlag=theFlag; + if(myDoMappingFlag == theFlag) + return; + + myDoMappingFlag = theFlag; + + this->Modified(); } bool @@ -98,7 +80,12 @@ void VTKViewer_AppendFilter ::SetPoints(vtkPoints* thePoints) { + if(GetPoints() == thePoints) + return; + myPoints = thePoints; + + this->Modified(); } vtkPoints* @@ -112,199 +99,153 @@ void VTKViewer_AppendFilter ::Execute() { - if (myPoints.GetPointer()) { + if(myPoints.GetPointer()) MakeOutput(); - } - else { - vtkAppendFilter::Execute(); - } - if (myDoMappingFlag){ + else + Superclass::Execute(); + + if(myDoMappingFlag) DoMapping(); - } } + void VTKViewer_AppendFilter -::Reset() +::DoMapping() { - myNodeIds.clear(); - myCellIds.clear(); myNodeRanges.clear(); myCellRanges.clear(); - myNodeMapObjIDVtkID.clear(); - myCellMapObjIDVtkID.clear(); + + vtkIdType aPntStartId = 0; + vtkIdType aCellStartId = 0; + + for(vtkIdType aDataSetId = 0; aDataSetId < this->NumberOfInputs; ++aDataSetId){ + vtkDataSet* aDataSet = (vtkDataSet *)(this->Inputs[aDataSetId]); + // Do mapping of the nodes + if(!myPoints.GetPointer()){ + vtkIdType aNbPnts = aDataSet->GetNumberOfPoints(); + myNodeRanges.push_back(aPntStartId + aNbPnts); + aPntStartId += aNbPnts; + } + // Do mapping of the cells + vtkIdType aNbCells = aDataSet->GetNumberOfCells(); + myCellRanges.push_back(aCellStartId + aNbCells); + aCellStartId += aNbCells; + } } -//================================================================== -// function: DoMapping -// purpose : -//================================================================== -void -VTKViewer_AppendFilter -::DoMapping() + +namespace { - int i, j, i1, i2, iNodeCnt, iCellCnt; - IteratorOfDataMapOfIntegerInteger aMapIt; - vtkIdType aNbPnts, aNbCells, aId; - vtkDataSet *pDS; - // - Reset(); - // - iNodeCnt=0; - iCellCnt=0; - for (i=0; iGetNumberOfPoints(); - i1=myNodeIds.size(); - i2=i1+aNbPnts-1; - myNodeRanges.push_back(i1); - myNodeRanges.push_back(i2); - // - for(j=0; jGetNumberOfCells(); - i1=myCellIds.size(); - i2=i1+aNbCells-1; - myCellRanges.push_back(i1); - myCellRanges.push_back(i2); - for(j=0; j= aNbInputs) + return -1; + + vtkIdType aStartId = theRanges[theInputDataSetID]; + return aStartId + theInputID; } } -//--------------------------------------------------------------- vtkIdType VTKViewer_AppendFilter -::GetPointOutputID(vtkIdType theInputID) +::GetPointOutputID(vtkIdType theInputID, + vtkIdType theInputDataSetID) { - if (myPoints.GetPointer()) { + if(myPoints.GetPointer()) return theInputID; - } - // - int aVtkID=-1; - IteratorOfDataMapOfIntegerInteger aMapIt; - // - aMapIt=myNodeMapObjIDVtkID.find(theInputID); - if (aMapIt!=myNodeMapObjIDVtkID.end()) { - // found - PairOfDataMapOfIntegerInteger& aPair=(*aMapIt); - aVtkID=aPair.second; - } - return aVtkID; + + return GetOutputID(theInputID,theInputDataSetID,myNodeRanges); } -//--------------------------------------------------------------- vtkIdType VTKViewer_AppendFilter -::GetCellOutputID(vtkIdType theInputID) +::GetCellOutputID(vtkIdType theInputID, + vtkIdType theInputDataSetID) { - int aVtkID=-1; - IteratorOfDataMapOfIntegerInteger aMapIt; - // - aMapIt=myCellMapObjIDVtkID.find(theInputID); - if (aMapIt!=myCellMapObjIDVtkID.end()) { - // found - PairOfDataMapOfIntegerInteger& aPair=(*aMapIt); - aVtkID=aPair.second; - } - return aVtkID; + if(myPoints.GetPointer()) + return theInputID; + + return GetOutputID(theInputID,theInputDataSetID,myCellRanges); } -//--------------------------------------------------------------- -vtkIdType +namespace +{ + void + GetInputID(vtkIdType theOutputID, + vtkIdType& theInputID, + vtkIdType& theStartID, + vtkIdType& theInputDataSetID, + const VTKViewer_AppendFilter::TVectorIds& theRanges) + { + theInputID = theStartID = theInputDataSetID = -1; + + if(theRanges.empty()) + return; + + const vtkIdType& aRangeEnd = theRanges.back(); + if(theOutputID < 0 || theOutputID >= aRangeEnd) + return; + + vtkIdType aStartId = 0; + vtkIdType aNbInputs = theRanges.size(); + for(vtkIdType aDataSetId = 0; aDataSetId < aNbInputs; ++aDataSetId){ + vtkIdType aRange = theRanges[aDataSetId]; + if(aRange > theOutputID){ + theInputID = theOutputID - aStartId; + theInputDataSetID = aDataSetId; + theStartID = aStartId; + break; + } + aStartId = aRange; + } + } +} + +void VTKViewer_AppendFilter -::GetPointInputID(vtkIdType theOutputID, +::GetPointInputID(vtkIdType theOutputID, + vtkIdType& theInputID, + vtkIdType& theStartID, vtkIdType& theInputDataSetID) { - if (myPoints.GetPointer()) { - theInputDataSetID=0; - return theOutputID; - } - // - int aNb, aNbRanges, aRetID, i, i1, i2, j; - // - aRetID=-1; - theInputDataSetID=-1; - // - aNb=myNodeIds.size(); - if (theOutputID<0 || theOutputID>=aNb) { - return aRetID; - } - // - aRetID=(int)myNodeIds[theOutputID]; - // - aNbRanges=myNodeRanges.size()/2; - for (i=0; i=i1 && theOutputID<=i2) { - theInputDataSetID=i; - } + if(myPoints.GetPointer()) { + theStartID = theInputDataSetID = 0; + theInputID = theOutputID; + return; } - // - return aRetID; + + ::GetInputID(theOutputID, + theInputID, + theStartID, + theInputDataSetID, + myNodeRanges); } -//--------------------------------------------------------------- -vtkIdType +void VTKViewer_AppendFilter -::GetCellInputID(vtkIdType theOutputID, +::GetCellInputID(vtkIdType theOutputID, + vtkIdType& theInputID, + vtkIdType& theStartID, vtkIdType& theInputDataSetID) { - int aNb, aNbRanges, aRetID, i, i1, i2, j; - // - aRetID=-1; - theInputDataSetID=-1; - // - aNb=myCellIds.size(); - if (theOutputID<0 || theOutputID>=aNb) { - return aRetID; - } - // - aRetID=(int)myCellIds[theOutputID]; - // - aNbRanges=myCellRanges.size()/2; - for (i=0; i=i1 && theOutputID<=i2) { - theInputDataSetID=i; - } - } - // - return aRetID; + ::GetInputID(theOutputID, + theInputID, + theStartID, + theInputDataSetID, + myCellRanges); } -//--------------------------------------------------------------- void VTKViewer_AppendFilter ::MakeOutput() diff --git a/src/VTKViewer/VTKViewer_AppendFilter.h b/src/VTKViewer/VTKViewer_AppendFilter.h index f9c6b245a..c9a756381 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/ or email : webmaster.salome@opencascade.com +// #ifndef VTKVIEWER_APPENDFILTER_H #define VTKVIEWER_APPENDFILTER_H @@ -36,19 +54,27 @@ public: GetPoints(); vtkIdType - GetPointOutputID(vtkIdType theInputID); + GetPointOutputID(vtkIdType theInputID, + vtkIdType theInputDataSetID); vtkIdType - GetCellOutputID(vtkIdType theInputID); + GetCellOutputID(vtkIdType theInputID, + vtkIdType theInputDataSetID); - vtkIdType - GetPointInputID(vtkIdType theOutputID, - vtkIdType& theInputDataSetID); + void + GetPointInputID(vtkIdType theOutputID, + vtkIdType& theInputID, + vtkIdType& theStartID, + vtkIdType& theInputDataSetID); - vtkIdType - GetCellInputID(vtkIdType theOutputID, + void + GetCellInputID(vtkIdType theOutputID, + vtkIdType& theInputID, + vtkIdType& theStartID, vtkIdType& theInputDataSetID); + typedef std::vector TVectorIds; + protected: /*! \fn VTKViewer_AppendFilter(); * \brief Constructor @@ -69,23 +95,10 @@ protected: void MakeOutput(); - // + bool myDoMappingFlag; + TVectorIds myNodeRanges; + TVectorIds myCellRanges; vtkSmartPointer myPoints; - -private: - typedef std::vector TVectorId; - typedef std::vector VectorInt; - typedef std::map DataMapOfIntegerInteger; - typedef DataMapOfIntegerInteger::iterator IteratorOfDataMapOfIntegerInteger; - typedef DataMapOfIntegerInteger::value_type PairOfDataMapOfIntegerInteger; -private: - bool myDoMappingFlag; - TVectorId myNodeIds; - TVectorId myCellIds; - VectorInt myNodeRanges; - VectorInt myCellRanges; - DataMapOfIntegerInteger myNodeMapObjIDVtkID; - DataMapOfIntegerInteger myCellMapObjIDVtkID; }; #endif diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.cxx b/src/VTKViewer/VTKViewer_CellRectPicker.cxx index 36b1741b5..016da1f75 100755 --- a/src/VTKViewer/VTKViewer_CellRectPicker.cxx +++ b/src/VTKViewer/VTKViewer_CellRectPicker.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.h b/src/VTKViewer/VTKViewer_CellRectPicker.h index 8cbbe245d..f50636ab2 100755 --- a/src/VTKViewer/VTKViewer_CellRectPicker.h +++ b/src/VTKViewer/VTKViewer_CellRectPicker.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : VTKViewer_CellRectPicker.h // Author : Natalia KOPNOVA diff --git a/src/VTKViewer/VTKViewer_ConvexTool.cxx b/src/VTKViewer/VTKViewer_ConvexTool.cxx index 679e48428..988522562 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.cxx +++ b/src/VTKViewer/VTKViewer_ConvexTool.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -25,866 +25,566 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com #include "VTKViewer_ConvexTool.h" -#include -#include -#include -#include -#include -#include - #include -#include +#include #include -#include - -typedef vtkUnstructuredGrid TInput; -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..2bf024d5e 100644 --- a/src/VTKViewer/VTKViewer_ConvexTool.h +++ b/src/VTKViewer/VTKViewer_ConvexTool.h @@ -15,34 +15,189 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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 0aef6c3a1..5cb422e11 100755 --- a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx +++ b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // File: VISU_ExtractUnstructuredGrid.cxx @@ -26,13 +26,12 @@ #include "VTKViewer_ExtractUnstructuredGrid.h" -//#include "utilities.h" +#include "VTKViewer_CellLocationsArray.h" #include #include #include #include -#include #include #include @@ -238,7 +237,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(); @@ -327,7 +326,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_ExtractUnstructuredGrid.h b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h index a820bd25b..f5251a2b2 100755 --- a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h +++ b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_EXTRACTUNSTRUCTUREDGRID_H #define VTKVIEWER_EXTRACTUNSTRUCTUREDGRID_H diff --git a/src/VTKViewer/VTKViewer_Filter.cxx b/src/VTKViewer/VTKViewer_Filter.cxx index 3d1e9a20e..f33ea7bae 100755 --- a/src/VTKViewer/VTKViewer_Filter.cxx +++ b/src/VTKViewer/VTKViewer_Filter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_Filter.h b/src/VTKViewer/VTKViewer_Filter.h index 407bace53..7e72b8df5 100755 --- a/src/VTKViewer/VTKViewer_Filter.h +++ b/src/VTKViewer/VTKViewer_Filter.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_Functor.h b/src/VTKViewer/VTKViewer_Functor.h index 26fb08e61..7aa5630be 100644 --- a/src/VTKViewer/VTKViewer_Functor.h +++ b/src/VTKViewer/VTKViewer_Functor.h @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_GeometryFilter.cxx b/src/VTKViewer/VTKViewer_GeometryFilter.cxx index 37a9dda64..a95e47dec 100755 --- a/src/VTKViewer/VTKViewer_GeometryFilter.cxx +++ b/src/VTKViewer/VTKViewer_GeometryFilter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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,7 +58,7 @@ #endif #endif -#define USE_ROBUST_TRIANGULATION +//#define USE_ROBUST_TRIANGULATION //---------------------------------------------------------------------------- vtkCxxRevisionMacro(VTKViewer_GeometryFilter, "$Revision$"); @@ -81,7 +77,6 @@ VTKViewer_GeometryFilter {} -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::Execute() @@ -102,7 +97,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::UnstructuredGridExecute() @@ -128,28 +122,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 +291,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] }; + 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 aVector02[3] = { aCoord[2][0] - aCoord[0][0], - aCoord[2][1] - aCoord[0][1], - aCoord[2][2] - aCoord[0][2] }; - - 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 +745,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 +757,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetInside(int theShowInside) @@ -1069,7 +776,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetWireframeMode(int theIsWireframeMode) @@ -1089,7 +795,6 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- void VTKViewer_GeometryFilter ::SetStoreMapping(int theStoreMapping) @@ -1109,12 +814,8 @@ VTKViewer_GeometryFilter } -//---------------------------------------------------------------------------- -vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID) -{ - if ( myVTK2ObjIds.empty() || theVtkID > (int)myVTK2ObjIds.size() ) - return -1; - +vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){ + if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1; #if defined __GNUC_2__ return myVTK2ObjIds[theVtkID]; #else diff --git a/src/VTKViewer/VTKViewer_GeometryFilter.h b/src/VTKViewer/VTKViewer_GeometryFilter.h index 329064036..a74b70733 100755 --- a/src/VTKViewer/VTKViewer_GeometryFilter.h +++ b/src/VTKViewer/VTKViewer_GeometryFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_GEOMETRYFILTER_H #define VTKVIEWER_GEOMETRYFILTER_H diff --git a/src/VTKViewer/VTKViewer_InteractorStyle.cxx b/src/VTKViewer/VTKViewer_InteractorStyle.cxx index 1f69e6085..6bc13e78e 100644 --- a/src/VTKViewer/VTKViewer_InteractorStyle.cxx +++ b/src/VTKViewer/VTKViewer_InteractorStyle.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_RenderWindow.h b/src/VTKViewer/VTKViewer_RenderWindow.h index c83b0307e..e85b1c549 100755 --- a/src/VTKViewer/VTKViewer_RenderWindow.h +++ b/src/VTKViewer/VTKViewer_RenderWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_RENDERWINDOW_H #define VTKVIEWER_RENDERWINDOW_H diff --git a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx index daf93e15c..9445c5b15 100755 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx +++ b/src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "VTKViewer_RenderWindowInteractor.h" #include "VTKViewer_RenderWindow.h" @@ -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_RenderWindowInteractor.h b/src/VTKViewer/VTKViewer_RenderWindowInteractor.h index 9d06598b8..435e5b4b8 100755 --- a/src/VTKViewer/VTKViewer_RenderWindowInteractor.h +++ b/src/VTKViewer/VTKViewer_RenderWindowInteractor.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_RENDERWINDOWINTERACTOR_H #define VTKVIEWER_RENDERWINDOWINTERACTOR_H diff --git a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx index b2825687a..b4a7fb6a2 100755 --- a/src/VTKViewer/VTKViewer_ShrinkFilter.cxx +++ b/src/VTKViewer/VTKViewer_ShrinkFilter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -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_ShrinkFilter.h b/src/VTKViewer/VTKViewer_ShrinkFilter.h index 9b60d4978..4d2a416bb 100755 --- a/src/VTKViewer/VTKViewer_ShrinkFilter.h +++ b/src/VTKViewer/VTKViewer_ShrinkFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_SHRINKFILTER_H #define VTKVIEWER_SHRINKFILTER_H diff --git a/src/VTKViewer/VTKViewer_Transform.cxx b/src/VTKViewer/VTKViewer_Transform.cxx index d0f7db712..4526d4555 100755 --- a/src/VTKViewer/VTKViewer_Transform.cxx +++ b/src/VTKViewer/VTKViewer_Transform.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_Transform.h b/src/VTKViewer/VTKViewer_Transform.h index 478d982c6..9ef364577 100755 --- a/src/VTKViewer/VTKViewer_Transform.h +++ b/src/VTKViewer/VTKViewer_Transform.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_TRANSFORM_H #define VTKVIEWER_TRANSFORM_H diff --git a/src/VTKViewer/VTKViewer_TransformFilter.cxx b/src/VTKViewer/VTKViewer_TransformFilter.cxx index f54e97de1..cdfc14a1f 100755 --- a/src/VTKViewer/VTKViewer_TransformFilter.cxx +++ b/src/VTKViewer/VTKViewer_TransformFilter.cxx @@ -17,7 +17,7 @@ // License along with 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // diff --git a/src/VTKViewer/VTKViewer_TransformFilter.h b/src/VTKViewer/VTKViewer_TransformFilter.h index ecc2b3cb2..3087a03e9 100755 --- a/src/VTKViewer/VTKViewer_TransformFilter.h +++ b/src/VTKViewer/VTKViewer_TransformFilter.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_TRANSFORMFILTER_H #define VTKVIEWER_TRANSFORMFILTER_H diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx index a6670cb87..c426e0280 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.cxx +++ b/src/VTKViewer/VTKViewer_Trihedron.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "VTKViewer_Trihedron.h" #include "VTKViewer_Actor.h" @@ -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 d134740f8..0d29f11d8 100755 --- a/src/VTKViewer/VTKViewer_Trihedron.h +++ b/src/VTKViewer/VTKViewer_Trihedron.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_TRIHEDRON_H #define 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_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 a05b0a36f..5f061a64b 100755 --- a/src/VTKViewer/VTKViewer_Utilities.cxx +++ b/src/VTKViewer/VTKViewer_Utilities.cxx @@ -14,79 +14,100 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + +#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; - float bounds[6]; - int aCount = ComputeVisiblePropBounds(theRenderer,bounds); + if(!theRenderer) + return; + + vtkCamera* aCamera = theRenderer->GetActiveCamera(); + if(!aCamera) + return; + + vtkFloatingPointType aBounds[6]; + int aCount = ComputeVisiblePropBounds(theRenderer,aBounds); + if(theUsingZeroFocalPoint || aCount){ - float aLength = bounds[1]-bounds[0]; - aLength = max((bounds[3]-bounds[2]),aLength); - aLength = max((bounds[5]-bounds[4]),aLength); + static vtkFloatingPointType MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT; + + vtkFloatingPointType aLength = aBounds[1]-aBounds[0]; + aLength = max((aBounds[3]-aBounds[2]),aLength); + aLength = max((aBounds[5]-aBounds[4]),aLength); - double vn[3]; - if ( theRenderer->GetActiveCamera() != NULL ) - theRenderer->GetActiveCamera()->GetViewPlaneNormal(vn); - else{ + if(aLength < MIN_DISTANCE) return; - } + + vtkFloatingPointType aWidth = + sqrt((aBounds[1]-aBounds[0])*(aBounds[1]-aBounds[0]) + + (aBounds[3]-aBounds[2])*(aBounds[3]-aBounds[2]) + + (aBounds[5]-aBounds[4])*(aBounds[5]-aBounds[4])); + + if(aWidth < MIN_DISTANCE) + return; + + vtkFloatingPointType aViewPlaneNormal[3]; + aCamera->GetViewPlaneNormal(aViewPlaneNormal); - float center[3] = {0.0, 0.0, 0.0}; + vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0}; if(!theUsingZeroFocalPoint){ - center[0] = (bounds[0] + bounds[1])/2.0; - center[1] = (bounds[2] + bounds[3])/2.0; - center[2] = (bounds[4] + bounds[5])/2.0; + aCenter[0] = (aBounds[0] + aBounds[1])/2.0; + aCenter[1] = (aBounds[2] + aBounds[3])/2.0; + aCenter[2] = (aBounds[4] + aBounds[5])/2.0; } - theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]); - - float 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])); + aCamera->SetFocalPoint(aCenter[0],aCenter[1],aCenter[2]); - double ang = theRenderer->GetActiveCamera()->GetViewAngle(); - float distance = 2.0*width/tan(ang*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 *vup = theRenderer->GetActiveCamera()->GetViewUp(); - if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 ){ - theRenderer->GetActiveCamera()->SetViewUp(-vup[2], vup[0], vup[1]); - } + vtkFloatingPointType aViewUp[3]; + aCamera->GetViewUp(aViewUp); + if(fabs(vtkMath::Dot(aViewUp,aViewPlaneNormal)) > 0.999) + aCamera->SetViewUp(-aViewUp[2], aViewUp[0], aViewUp[1]); // update the camera - theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0], - center[1]+distance*vn[1], - center[2]+distance*vn[2]); + aCamera->SetPosition(aCenter[0]+aDistance*aViewPlaneNormal[0], + aCenter[1]+aDistance*aViewPlaneNormal[1], + aCenter[2]+aDistance*aViewPlaneNormal[2]); + // find size of the window - int* winsize = theRenderer->GetSize(); - if(winsize[0] < winsize[1]) width *= float(winsize[1])/float(winsize[0]); + int* aWinSize = theRenderer->GetSize(); + if(aWinSize[0] < aWinSize[1]) + aWidth *= vtkFloatingPointType(aWinSize[1])/vtkFloatingPointType(aWinSize[0]); - if(theUsingZeroFocalPoint) width *= sqrt(2.0); + if(theUsingZeroFocalPoint) + aWidth *= sqrt(2.0); - theRenderer->GetActiveCamera()->SetParallelScale(width/2.0); + aCamera->SetParallelScale(aWidth/2.0); } - //workaround on VTK - //theRenderer->ResetCameraClippingRange(bounds); + ResetCameraClippingRange(theRenderer); } /*! 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; @@ -94,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; @@ -150,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; @@ -180,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..7ef9cc550 100755 --- a/src/VTKViewer/VTKViewer_Utilities.h +++ b/src/VTKViewer/VTKViewer_Utilities.h @@ -14,27 +14,37 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #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..5ec7a8c58 100755 --- a/src/VTKViewer/VTKViewer_VectorText.cxx +++ b/src/VTKViewer/VTKViewer_VectorText.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // /*========================================================================= @@ -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_VectorText.h b/src/VTKViewer/VTKViewer_VectorText.h index 8ce64cdd4..5838f6a1d 100755 --- a/src/VTKViewer/VTKViewer_VectorText.h +++ b/src/VTKViewer/VTKViewer_VectorText.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // /*========================================================================= diff --git a/src/VTKViewer/VTKViewer_ViewManager.cxx b/src/VTKViewer/VTKViewer_ViewManager.cxx index 2dedb7984..d67c92d1e 100755 --- a/src/VTKViewer/VTKViewer_ViewManager.cxx +++ b/src/VTKViewer/VTKViewer_ViewManager.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "VTKViewer_ViewManager.h" #include "VTKViewer_ViewModel.h" diff --git a/src/VTKViewer/VTKViewer_ViewManager.h b/src/VTKViewer/VTKViewer_ViewManager.h index 03f6d21da..49d9a26c8 100755 --- a/src/VTKViewer/VTKViewer_ViewManager.h +++ b/src/VTKViewer/VTKViewer_ViewManager.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_VIEWMANAGER_H #define VTKVIEWER_VIEWMANAGER_H diff --git a/src/VTKViewer/VTKViewer_ViewModel.cxx b/src/VTKViewer/VTKViewer_ViewModel.cxx index f8fd9913e..9653aeacf 100755 --- a/src/VTKViewer/VTKViewer_ViewModel.cxx +++ b/src/VTKViewer/VTKViewer_ViewModel.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "VTKViewer_ViewModel.h" #include "VTKViewer_ViewWindow.h" diff --git a/src/VTKViewer/VTKViewer_ViewModel.h b/src/VTKViewer/VTKViewer_ViewModel.h index 0ca65ab79..06cab857f 100755 --- a/src/VTKViewer/VTKViewer_ViewModel.h +++ b/src/VTKViewer/VTKViewer_ViewModel.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_VIEWMODEL_H #define VTKVIEWER_VIEWMODEL_H diff --git a/src/VTKViewer/VTKViewer_ViewWindow.cxx b/src/VTKViewer/VTKViewer_ViewWindow.cxx index d4500095a..aba392028 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.cxx +++ b/src/VTKViewer/VTKViewer_ViewWindow.cxx @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "VTKViewer_ViewWindow.h" #include "VTKViewer_ViewModel.h" @@ -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); @@ -559,3 +559,54 @@ QImage VTKViewer_ViewWindow::dumpView() QPixmap px = QPixmap::grabWindow( myRenderWindow->winId() ); return px.convertToImage(); } + +/*! The method returns the visual parameters of this view as a formated string + */ +QString VTKViewer_ViewWindow::getVisualParameters() +{ + double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; + + vtkCamera* camera = myRenderer->GetActiveCamera(); + camera->GetPosition( pos ); + camera->GetFocalPoint( focalPnt ); + camera->GetViewUp( viewUp ); + parScale = camera->GetParallelScale(); + GetScale( scale ); + + 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] ); + return retStr; +} + +/*! The method restors visual parameters of this view from a formated string + */ +void VTKViewer_ViewWindow::setVisualParameters( const QString& parameters ) +{ + QStringList paramsLst = QStringList::split( '*', parameters, true ); + if ( paramsLst.size() == 13 ) { + double pos[3], focalPnt[3], viewUp[3], parScale, scale[3]; + pos[0] = paramsLst[0].toDouble(); + pos[1] = paramsLst[1].toDouble(); + pos[2] = paramsLst[2].toDouble(); + focalPnt[0] = paramsLst[3].toDouble(); + focalPnt[1] = paramsLst[4].toDouble(); + focalPnt[2] = paramsLst[5].toDouble(); + viewUp[0] = paramsLst[6].toDouble(); + viewUp[1] = paramsLst[7].toDouble(); + viewUp[2] = paramsLst[8].toDouble(); + parScale = paramsLst[9].toDouble(); + scale[0] = paramsLst[10].toDouble(); + scale[1] = paramsLst[11].toDouble(); + scale[2] = paramsLst[12].toDouble(); + + vtkCamera* camera = myRenderer->GetActiveCamera(); + camera->SetPosition( pos ); + camera->SetFocalPoint( focalPnt ); + camera->SetViewUp( viewUp ); + camera->SetParallelScale( parScale ); + myTransform->SetMatrixScale( scale[0], scale[1], scale[2] ); + myRWInteractor->Render(); + } +} diff --git a/src/VTKViewer/VTKViewer_ViewWindow.h b/src/VTKViewer/VTKViewer_ViewWindow.h index 951d96d4c..05c9ee9a8 100755 --- a/src/VTKViewer/VTKViewer_ViewWindow.h +++ b/src/VTKViewer/VTKViewer_ViewWindow.h @@ -14,7 +14,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef VTKVIEWER_VIEWWINDOW_H #define VTKVIEWER_VIEWWINDOW_H @@ -70,6 +70,9 @@ public: void AddActor( VTKViewer_Actor*, bool update = false ); void RemoveActor( VTKViewer_Actor*, bool update = false); + virtual QString getVisualParameters(); + virtual void setVisualParameters( const QString& parameters ); + public slots: void onFrontView(); void onBackView(); 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 7f2c72c31..000000000 --- a/src/VTKViewer/resources/VTKViewerM_msg_en.po +++ /dev/null @@ -1,109 +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_images.po b/src/VTKViewer/resources/VTKViewer_images.po index ba4e5f730..0f618ddc5 100755 --- a/src/VTKViewer/resources/VTKViewer_images.po +++ b/src/VTKViewer/resources/VTKViewer_images.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # diff --git a/src/VTKViewer/resources/VTKViewer_msg_en.po b/src/VTKViewer/resources/VTKViewer_msg_en.po index 603fbb3c0..e98a1dc3c 100755 --- a/src/VTKViewer/resources/VTKViewer_msg_en.po +++ b/src/VTKViewer/resources/VTKViewer_msg_en.po @@ -17,7 +17,7 @@ # License along with 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 +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # # @@ -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 index 3d01ad184..9065e6b45 100755 Binary files a/src/VTKViewer/resources/view_update_rate.png and b/src/VTKViewer/resources/view_update_rate.png differ