From 7250f116546c44743d9cf86ac2bae4823a2043e5 Mon Sep 17 00:00:00 2001 From: vsr Date: Mon, 15 Nov 2010 06:49:50 +0000 Subject: [PATCH] Merge from PHASE_25_BR 14/11/2010 --- doc/salome/gui/images/image111.png | Bin 0 -> 3389 bytes doc/salome/gui/images/image157.png | Bin 32606 -> 8220 bytes doc/salome/gui/images/occviewer_toolbar.png | Bin 6277 -> 6848 bytes doc/salome/gui/images/pref12.png | Bin 73726 -> 79569 bytes doc/salome/gui/input/occ_3d_viewer.doc | 6 ++ doc/salome/gui/input/salome_preferences.doc | 7 ++ doc/salome/gui/input/vtk_3d_viewer.doc | 7 ++ src/LightApp/LightApp_Application.cxx | 91 ++++++++++++++++- src/LightApp/LightApp_Application.h | 3 + src/LightApp/LightApp_WgViewModel.cxx | 55 ++++++++++ src/LightApp/LightApp_WgViewModel.h | 47 +++++++++ src/LightApp/Makefile.am | 9 +- src/LightApp/resources/LightApp.xml | 2 + src/LightApp/resources/LightApp_msg_en.ts | 12 +++ src/OCCViewer/Makefile.am | 4 +- src/OCCViewer/OCCViewer_ViewModel.cxx | 32 ++++++ src/OCCViewer/OCCViewer_ViewModel.h | 4 + src/OCCViewer/OCCViewer_ViewPort3d.cxx | 29 +++++- src/OCCViewer/OCCViewer_ViewPort3d.h | 5 + src/OCCViewer/OCCViewer_ViewWindow.cxx | 59 ++++++++++- src/OCCViewer/OCCViewer_ViewWindow.h | 6 +- src/OCCViewer/resources/OCCViewer_images.ts | 4 + src/OCCViewer/resources/OCCViewer_msg_en.ts | 8 ++ .../occ_view_zooming_style_switch.png | Bin 0 -> 3389 bytes .../SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx | 9 ++ .../SALOME_PYQT_GUI/SALOME_PYQT_Module.h | 1 + .../SALOME_PYQT_ModuleLight.cxx | 90 +++++++++++++---- .../SALOME_PYQT_ModuleLight.h | 4 +- src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx | 94 ++++++++++++++++++ src/SALOME_PYQT/SalomePyQt/SalomePyQt.h | 7 +- src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip | 3 + src/SUIT/SUIT_ViewManager.cxx | 10 +- src/SUIT/SUIT_ViewManager.h | 1 + src/SUIT/SUIT_ViewWindow.cxx | 20 +++- src/SUIT/SUIT_ViewWindow.h | 6 +- src/SVTK/Makefile.am | 1 + src/SVTK/SVTK_InteractorStyle.cxx | 19 +++- src/SVTK/SVTK_InteractorStyle.h | 5 + src/SVTK/SVTK_ViewModel.cxx | 28 ++++++ src/SVTK/SVTK_ViewModel.h | 7 ++ src/SVTK/SVTK_ViewWindow.cxx | 49 ++++++++- src/SVTK/SVTK_ViewWindow.h | 7 ++ src/SVTK/resources/SVTK_images.ts | 4 + src/SVTK/resources/SVTK_msg_en.ts | 8 ++ .../vtk_view_zooming_style_switch.png | Bin 0 -> 3389 bytes src/SalomeApp/resources/SalomeApp.xml | 2 + 46 files changed, 717 insertions(+), 48 deletions(-) create mode 100755 doc/salome/gui/images/image111.png create mode 100644 src/LightApp/LightApp_WgViewModel.cxx create mode 100644 src/LightApp/LightApp_WgViewModel.h create mode 100755 src/OCCViewer/resources/occ_view_zooming_style_switch.png create mode 100755 src/SVTK/resources/vtk_view_zooming_style_switch.png diff --git a/doc/salome/gui/images/image111.png b/doc/salome/gui/images/image111.png new file mode 100755 index 0000000000000000000000000000000000000000..8f3a4867098920df40aebdfd7981a0720d638444 GIT binary patch literal 3389 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 v^v5Yd=wG#pTs~^TYdMg(D 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

i-;5`Hwwa`F%;|se{@6aEa?D@d78Fae`RwJ1 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


+\image html image111.png +\n
Zooming style switch - allows to switch between standard +(zooming at the center of the view) and advanced (zooming at the current cursor +position) zooming styles.
+
+ \image html image88.png \n
Show/Hide Trihedron - shows or hides coordinate axes.

diff --git a/doc/salome/gui/input/salome_preferences.doc b/doc/salome/gui/input/salome_preferences.doc index 2a6378900..8e4065d36 100644 --- a/doc/salome/gui/input/salome_preferences.doc +++ b/doc/salome/gui/input/salome_preferences.doc @@ -97,6 +97,13 @@ operations are assigned to the buttons differently: rotation is made with the left button, translation with the right and zoom with both pressed in the same time. +
  • Zooming mode - this option allows to choose a zooming mode.
  • +
      +
    • Relative to the view's center - allows to zoom the view +relatively to its center.
    • +
    • Relative to the cursor - allows to zoom the view +relatively to the current cursor position..
    • +
  • [+]/[-] Speed Increment - defines the number of units by which the speed increases or respectively decreases after pressing [+] or [-] keyboard buttons.
  • diff --git a/doc/salome/gui/input/vtk_3d_viewer.doc b/doc/salome/gui/input/vtk_3d_viewer.doc index a33ab8e16..e5b73f294 100644 --- a/doc/salome/gui/input/vtk_3d_viewer.doc +++ b/doc/salome/gui/input/vtk_3d_viewer.doc @@ -24,6 +24,13 @@ left mouse button, panning - by middle mouse button, zooming - by left and middl mouse buttons pressed simultaneously.
    +\image html image111.png +\n
    Zooming style switch - allows to switch between standard +(zooming at the center of the view) and advanced (zooming at the current cursor +position) zooming styles. The second mode is available only for parallel +(non-perspective) view's mode.
    +
    + \image html image88.png \n
    Show/Hide Trihedron - shows or hides coordinate axes.

    diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index 12b1e9c6b..8ad007ba5 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -54,6 +54,7 @@ #include "LightApp_OBSelector.h" #include "LightApp_SelectionMgr.h" #include "LightApp_DataObject.h" +#include "LightApp_WgViewModel.h" #include @@ -176,6 +177,14 @@ #include #endif +#include + +#ifdef OCC_VERSION_SERVICEPACK +#define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8 | OCC_VERSION_SERVICEPACK) +#else +#define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8) +#endif + #define ToolBarMarker 0 #define DockWidgetMarker 1 @@ -1354,6 +1363,7 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType v = resMgr->integerValue( "OCCViewer", "iso_number_v", v ); vm->setIsos( u, v ); vm->setInteractionStyle( resMgr->integerValue( "OCCViewer", "navigation_mode", vm->interactionStyle() ) ); + vm->setZoomingStyle( resMgr->integerValue( "OCCViewer", "zooming_mode", vm->zoomingStyle() ) ); viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface new LightApp_OCCSelector( (OCCViewer_Viewer*)viewMgr->getViewModel(), mySelMgr ); } @@ -1376,6 +1386,7 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType resMgr->booleanValue( "VTKViewer", "relative_size", vm->trihedronRelative() ) ); vm->setStaticTrihedronVisible( resMgr->booleanValue( "VTKViewer", "show_static_trihedron", vm->isStaticTrihedronVisible() ) ); vm->setInteractionStyle( resMgr->integerValue( "VTKViewer", "navigation_mode", vm->interactionStyle() ) ); + vm->setZoomingStyle( resMgr->integerValue( "VTKViewer", "zooming_mode", vm->zoomingStyle() ) ); vm->setIncrementalSpeed( resMgr->integerValue( "VTKViewer", "speed_value", vm->incrementalSpeed() ), resMgr->integerValue( "VTKViewer", "speed_mode", vm->incrementalSpeedMode() ) ); vm->setSpacemouseButtons( resMgr->integerValue( "VTKViewer", "spacemouse_func1_btn", vm->spacemouseBtn(1) ), @@ -1404,6 +1415,24 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType return viewMgr; } +SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType, QWidget* w ) +{ + SUIT_ViewManager* vm = new SUIT_ViewManager( activeStudy(), + desktop(), + new LightApp_WgViewModel( vmType, w ) ); + vm->setTitle( QString( "%1: %M - viewer %V" ).arg( vmType ) ); + + addViewManager( vm ); + SUIT_ViewWindow* vw = vm->createViewWindow(); + if ( vw && desktop() ) + vw->resize( (int)( desktop()->width() * 0.6 ), (int)( desktop()->height() * 0.6 ) ); + + if ( !vmType.isEmpty() && !myUserWmTypes.contains( vmType ) ) + myUserWmTypes << vmType; + + return vm; +} + /*! SLOT: Removes view manager from application */ @@ -1949,6 +1978,17 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) pref->setItemProperty( "strings", aStyleModeList, occStyleMode ); pref->setItemProperty( "indexes", aModeIndexesList, occStyleMode ); +#if OCC_VERSION_LARGE > 0x06030010 // available only with OCC-6.3-sp11 and higher version + int occZoomingStyleMode = pref->addPreference( tr( "PREF_ZOOMING" ), occGroup, + LightApp_Preferences::Selector, "OCCViewer", "zooming_mode" ); + QStringList anOCCZoomingStyleModeList; + anOCCZoomingStyleModeList.append( tr("PREF_ZOOMING_AT_CENTER") ); + anOCCZoomingStyleModeList.append( tr("PREF_ZOOMING_AT_CURSOR") ); + + pref->setItemProperty( "strings", anOCCZoomingStyleModeList, occZoomingStyleMode ); + pref->setItemProperty( "indexes", aModeIndexesList, occZoomingStyleMode ); +#endif + // VTK Viewer int vtkGen = pref->addPreference( "", vtkGroup, LightApp_Preferences::Frame ); pref->setItemProperty( "columns", 2, vtkGen ); @@ -1979,7 +2019,15 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref ) pref->setItemProperty( "strings", aStyleModeList, vtkStyleMode ); pref->setItemProperty( "indexes", aModeIndexesList, vtkStyleMode ); - pref->addPreference( "", vtkGroup, LightApp_Preferences::Space ); + int vtkZoomingStyleMode = pref->addPreference( tr( "PREF_ZOOMING" ), vtkGen, + LightApp_Preferences::Selector, "VTKViewer", "zooming_mode" ); + + QStringList aVTKZoomingStyleModeList; + aVTKZoomingStyleModeList.append( tr("PREF_ZOOMING_AT_CENTER") ); + aVTKZoomingStyleModeList.append( tr("PREF_ZOOMING_AT_CURSOR") ); + + pref->setItemProperty( "strings", aVTKZoomingStyleModeList, vtkZoomingStyleMode ); + pref->setItemProperty( "indexes", aModeIndexesList, vtkZoomingStyleMode ); int vtkSpeed = pref->addPreference( tr( "PREF_INCREMENTAL_SPEED" ), vtkGen, LightApp_Preferences::IntSpin, "VTKViewer", "speed_value" ); @@ -2235,6 +2283,25 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString } #endif +#ifndef DISABLE_OCCVIEWER + if ( sec == QString( "OCCViewer" ) && param == QString( "zooming_mode" ) ) + { + int mode = resMgr->integerValue( "OCCViewer", "zooming_mode", 0 ); + QList lst; + viewManagers( OCCViewer_Viewer::Type(), lst ); + QListIterator it( lst ); + while ( it.hasNext() ) + { + SUIT_ViewModel* vm = it.next()->getViewModel(); + if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) ) + continue; + + OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm; + occVM->setZoomingStyle( mode ); + } + } +#endif + #ifndef DISABLE_VTKVIEWER if ( sec == QString( "VTKViewer" ) && (param == QString( "trihedron_size" ) || param == QString( "relative_size" )) ) { @@ -2325,6 +2392,27 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString } #endif +#ifndef DISABLE_VTKVIEWER + if ( sec == QString( "VTKViewer" ) && param == QString( "zooming_mode" ) ) + { + int mode = resMgr->integerValue( "VTKViewer", "zooming_mode", 0 ); + QList lst; +#ifndef DISABLE_SALOMEOBJECT + viewManagers( SVTK_Viewer::Type(), lst ); + QListIterator it( lst ); + while ( it.hasNext() ) + { + SUIT_ViewModel* vm = it.next()->getViewModel(); + if ( !vm || !vm->inherits( "SVTK_Viewer" ) ) + continue; + + SVTK_Viewer* vtkVM = dynamic_cast( vm ); + if( vtkVM ) vtkVM->setZoomingStyle( mode ); + } +#endif + } +#endif + #ifndef DISABLE_VTKVIEWER if ( sec == QString( "VTKViewer" ) && param == QString( "show_static_trihedron" ) ) { @@ -3281,6 +3369,7 @@ bool LightApp_Application::openAction( const int choice, const QString& aName ) QStringList LightApp_Application::viewManagersTypes() const { QStringList aTypesList; + aTypesList += myUserWmTypes; #ifndef DISABLE_GLVIEWER aTypesList< #include +#include class LogWindow; #ifndef DISABLE_PYCONSOLE @@ -124,6 +125,7 @@ public: virtual void addViewManager( SUIT_ViewManager* ); virtual void removeViewManager( SUIT_ViewManager* ); virtual SUIT_ViewManager* createViewManager( const QString& vmType ); + virtual SUIT_ViewManager* createViewManager( const QString& vmType, QWidget* w ); QWidget* getWindow( const int, const int = -1 ); QWidget* dockWindow( const int ) const; @@ -285,6 +287,7 @@ protected: static LightApp_Preferences* _prefs_; static int lastStudyId; + QStringList myUserWmTypes; }; #ifdef WIN32 diff --git a/src/LightApp/LightApp_WgViewModel.cxx b/src/LightApp/LightApp_WgViewModel.cxx new file mode 100644 index 000000000..e4a337cb4 --- /dev/null +++ b/src/LightApp/LightApp_WgViewModel.cxx @@ -0,0 +1,55 @@ +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : LightApp_LightApp_WgViewModel.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#include "LightApp_WgViewModel.h" +#include "SUIT_ViewWindow.h" + +LightApp_WgViewModel::LightApp_WgViewModel( const QString& type, QWidget* w ) + : SUIT_ViewModel(), + myType( type ), + myWidget( w ), + myCreated( false ) +{ +} + +LightApp_WgViewModel::~LightApp_WgViewModel() +{ +} + +SUIT_ViewWindow* LightApp_WgViewModel::createView( SUIT_Desktop* d ) +{ + SUIT_ViewWindow* vw = 0; + if ( !myCreated ) { + vw = new SUIT_ViewWindow( d ); + vw->setCentralWidget( myWidget ); + myCreated = true; + vw->setClosable( false );/////////////////// + } + return vw; +} + +QString LightApp_WgViewModel::getType() const +{ + return myType; +} diff --git a/src/LightApp/LightApp_WgViewModel.h b/src/LightApp/LightApp_WgViewModel.h new file mode 100644 index 000000000..a75b628f3 --- /dev/null +++ b/src/LightApp/LightApp_WgViewModel.h @@ -0,0 +1,47 @@ +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File : LightApp_LightApp_WgViewModel.h +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) + +#ifndef LIGHTAPP_WGVIEWMODEL_H +#define LIGHTAPP_WGVIEWMODEL_H + +#include "SUIT_ViewModel.h" +#include "SUIT_ViewManager.h" + +class LightApp_WgViewModel : public SUIT_ViewModel +{ + Q_OBJECT + +public: + LightApp_WgViewModel( const QString& type, QWidget* w ); + virtual ~LightApp_WgViewModel(); + + virtual SUIT_ViewWindow* createView( SUIT_Desktop* d ); + virtual QString getType() const; + +private: + QString myType; + QWidget* myWidget; + bool myCreated; +}; +#endif // LIGHTAPP_WGVIEWMODEL_H diff --git a/src/LightApp/Makefile.am b/src/LightApp/Makefile.am index c1edf8b1b..a28fcc3bd 100755 --- a/src/LightApp/Makefile.am +++ b/src/LightApp/Makefile.am @@ -59,7 +59,8 @@ salomeinclude_HEADERS = \ LightApp_SwitchOp.h \ LightApp_Preferences.h \ LightApp_PreferencesDlg.h \ - LightApp_UpdateFlags.h + LightApp_UpdateFlags.h \ + LightApp_WgViewModel.h if ENABLE_PYCONSOLE salomeinclude_HEADERS += LightApp_PyInterp.h @@ -106,7 +107,8 @@ dist_libLightApp_la_SOURCES = \ LightApp_Study.cxx \ LightApp_SwitchOp.cxx \ LightApp_Preferences.cxx \ - LightApp_PreferencesDlg.cxx + LightApp_PreferencesDlg.cxx \ + LightApp_WgViewModel.cxx if ENABLE_PYCONSOLE dist_libLightApp_la_SOURCES += LightApp_PyInterp.cxx @@ -145,7 +147,8 @@ MOC_FILES = \ LightApp_Study_moc.cxx \ LightApp_SwitchOp_moc.cxx \ LightApp_Preferences_moc.cxx \ - LightApp_PreferencesDlg_moc.cxx + LightApp_PreferencesDlg_moc.cxx \ + LightApp_WgViewModel_moc.cxx if ENABLE_VTKVIEWER if ENABLE_SALOMEOBJECT diff --git a/src/LightApp/resources/LightApp.xml b/src/LightApp/resources/LightApp.xml index 9395de3b3..cfe20ec81 100644 --- a/src/LightApp/resources/LightApp.xml +++ b/src/LightApp/resources/LightApp.xml @@ -123,6 +123,7 @@ +
    @@ -132,6 +133,7 @@ + diff --git a/src/LightApp/resources/LightApp_msg_en.ts b/src/LightApp/resources/LightApp_msg_en.ts index cc69e4730..7b3a8b008 100644 --- a/src/LightApp/resources/LightApp_msg_en.ts +++ b/src/LightApp/resources/LightApp_msg_en.ts @@ -134,6 +134,18 @@ The changes will be applied on the next application session. PREF_KEYFREE_STYLE Keyboard free style + + PREF_ZOOMING + Zooming: + + + PREF_ZOOMING_AT_CENTER + Relative to the view's center + + + PREF_ZOOMING_AT_CURSOR + Relative to the cursor + PREF_INCREMENTAL_SPEED Speed increment: diff --git a/src/OCCViewer/Makefile.am b/src/OCCViewer/Makefile.am index 4d56e731b..887374043 100755 --- a/src/OCCViewer/Makefile.am +++ b/src/OCCViewer/Makefile.am @@ -108,7 +108,9 @@ dist_salomeres_DATA = \ resources/occ_view_top.png \ resources/occ_view_triedre.png \ resources/occ_view_zoom.png \ - resources/occ_view_rotation_point.png + resources/occ_view_rotation_point.png \ + resources/occ_view_style_switch.png \ + resources/occ_view_zooming_style_switch.png nodist_salomeres_DATA = \ OCCViewer_images.qm \ diff --git a/src/OCCViewer/OCCViewer_ViewModel.cxx b/src/OCCViewer/OCCViewer_ViewModel.cxx index caea77326..3e3c962aa 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.cxx +++ b/src/OCCViewer/OCCViewer_ViewModel.cxx @@ -119,6 +119,9 @@ OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron, bool DisplayStaticTri // set interaction style to standard myInteractionStyle = 0; + // set zooming style to standard + myZoomingStyle = 0; + // selection mySelectionEnabled = true; myMultiSelectionEnabled = true; @@ -159,6 +162,7 @@ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view ) view->initLayout(); view->initSketchers(); view->setInteractionStyle( interactionStyle() ); + view->setZoomingStyle( zoomingStyle() ); OCCViewer_ViewPort3d* vp3d = view->getViewPort(); if ( vp3d ) @@ -328,6 +332,34 @@ void OCCViewer_Viewer::setInteractionStyle( const int theStyle ) } } +/*! + \return zooming style +*/ +int OCCViewer_Viewer::zoomingStyle() const +{ + return myZoomingStyle; +} + +/*! + Sets zooming style: 0 - standard, 1 - advanced (at cursor) + \param theStyle - new zooming style +*/ +void OCCViewer_Viewer::setZoomingStyle( const int theStyle ) +{ + myZoomingStyle = theStyle; + //!! To be done for view windows + if ( !myViewManager ) + return; + + QVector wins = myViewManager->getViews(); + for ( int i = 0; i < (int)wins.count(); i++ ) + { + OCCViewer_ViewWindow* win = ::qobject_cast( wins.at( i ) ); + if ( win ) + win->setZoomingStyle( theStyle ); + } +} + /*! Sets selection enabled status \param isEnabled - new status diff --git a/src/OCCViewer/OCCViewer_ViewModel.h b/src/OCCViewer/OCCViewer_ViewModel.h index fc0463e79..8a61c8b46 100755 --- a/src/OCCViewer/OCCViewer_ViewModel.h +++ b/src/OCCViewer/OCCViewer_ViewModel.h @@ -170,6 +170,9 @@ public: int interactionStyle() const; void setInteractionStyle( const int ); + int zoomingStyle() const; + void setZoomingStyle( const int ); + void enableSelection(bool isEnabled); bool isSelectionEnabled() const { return mySelectionEnabled; } @@ -217,6 +220,7 @@ private: viewAspectList myViewAspects; int myInteractionStyle; + int myZoomingStyle; bool mySelectionEnabled; bool myMultiSelectionEnabled; diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.cxx b/src/OCCViewer/OCCViewer_ViewPort3d.cxx index f59075989..0703c8f80 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort3d.cxx @@ -51,6 +51,14 @@ static int sx = 0; static int sy = 0; static Standard_Boolean zRotation = Standard_False; +#include + +#ifdef OCC_VERSION_SERVICEPACK +#define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8 | OCC_VERSION_SERVICEPACK) +#else +#define OCC_VERSION_LARGE (OCC_VERSION_MAJOR << 24 | OCC_VERSION_MINOR << 16 | OCC_VERSION_MAINTENANCE << 8) +#endif + /*! Constructor */ @@ -59,7 +67,8 @@ OCCViewer_ViewPort3d::OCCViewer_ViewPort3d( QWidget* parent, const Handle( V3d_V myScale( 1.0 ), myDegenerated( true ), myAnimate( false ), - myBusy( true ) + myBusy( true ), + myIsAdvancedZoomingEnabled( false ) { selectVisualId(); @@ -308,6 +317,17 @@ void OCCViewer_ViewPort3d::fitRect( const QRect& rect ) activeView()->WindowFit( rect.left(), rect.top(), rect.right(), rect.bottom() ); } +/*! + Inits 'zoom' transformation. [ protected ] +*/ +void OCCViewer_ViewPort3d::startZoomAtPoint( int x, int y ) +{ +#if OCC_VERSION_LARGE > 0x06030010 // available only with OCC-6.3-sp11 and higher version + if ( !activeView().IsNull() && isAdvancedZoomingEnabled() ) + activeView()->StartZoomAtPoint( x, y ); +#endif +} + /*! Called at 'zoom' transformation. [ virtual protected ] */ @@ -317,7 +337,12 @@ void OCCViewer_ViewPort3d::zoom( int x0, int y0, int x, int y ) // as OCCT respects a sign of only dx, // but we want both signes to be taken into account //activeView()->Zoom( x0, y0, x, y ); - activeView()->Zoom( x0 + y0, 0, x + y, 0 ); +#if OCC_VERSION_LARGE > 0x06030010 // available only with OCC-6.3-sp11 and higher version + if ( isAdvancedZoomingEnabled() ) + activeView()->ZoomAtPoint( x0, y0, x, y ); + else +#endif + activeView()->Zoom( x0 + y0, 0, x + y, 0 ); } } diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.h b/src/OCCViewer/OCCViewer_ViewPort3d.h index 469ce17cb..125fcfa93 100755 --- a/src/OCCViewer/OCCViewer_ViewPort3d.h +++ b/src/OCCViewer/OCCViewer_ViewPort3d.h @@ -69,6 +69,7 @@ public: virtual void pan( int , int ); virtual void setCenter( int , int ); virtual void fitRect( const QRect& ); + virtual void startZoomAtPoint( int, int ); virtual void zoom( int, int, int, int ); virtual void fitAll( bool keepScale = false, bool withZ = true, bool upd = true ); @@ -77,6 +78,9 @@ public: virtual void endRotation(); bool isBusy() {return myBusy;} // check that View Port is fully initialized + void setAdvancedZoomingEnabled( const bool theState ) { myIsAdvancedZoomingEnabled = theState; } + bool isAdvancedZoomingEnabled() const { return myIsAdvancedZoomingEnabled; } + protected: // EVENTS virtual void paintEvent( QPaintEvent* ); @@ -100,6 +104,7 @@ private: bool myAnimate; bool myBusy; double myScale; + bool myIsAdvancedZoomingEnabled; }; #ifdef WIN32 diff --git a/src/OCCViewer/OCCViewer_ViewWindow.cxx b/src/OCCViewer/OCCViewer_ViewWindow.cxx index 3f542c61d..a1200fd76 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.cxx +++ b/src/OCCViewer/OCCViewer_ViewWindow.cxx @@ -385,20 +385,26 @@ void OCCViewer_ViewWindow::vpMousePressEvent( QMouseEvent* theEvent ) break; case ZOOMVIEW: - if ( theEvent->button() == Qt::LeftButton ) + if ( theEvent->button() == Qt::LeftButton ) { + myViewPort->startZoomAtPoint( myStartX, myStartY ); emit vpTransformationStarted ( ZOOMVIEW ); + } break; case PANVIEW: - if ( aSwitchToZoom ) + if ( aSwitchToZoom ) { + myViewPort->startZoomAtPoint( myStartX, myStartY ); activateZoom(); + } else if ( theEvent->button() == Qt::LeftButton ) emit vpTransformationStarted ( PANVIEW ); break; case ROTATE: - if ( aSwitchToZoom ) + if ( aSwitchToZoom ) { + myViewPort->startZoomAtPoint( myStartX, myStartY ); activateZoom(); + } else if ( theEvent->button() == Qt::LeftButton ) { myViewPort->startRotation(myStartX, myStartY, myCurrPointType, mySelectedPoint); emit vpTransformationStarted ( ROTATE ); @@ -409,7 +415,8 @@ void OCCViewer_ViewWindow::vpMousePressEvent( QMouseEvent* theEvent ) /* Try to activate a transformation */ switch ( getButtonState(theEvent, anInteractionStyle) ) { case ZOOMVIEW: - activateZoom(); + myViewPort->startZoomAtPoint( myStartX, myStartY ); + activateZoom(); break; case PANVIEW: activatePanning(); @@ -1160,12 +1167,20 @@ void OCCViewer_ViewWindow::createActions() toolMgr()->registerAction( aAction, AmbientId ); // Switch between interaction styles - aAction = new QtxAction(tr("MNU_STYLE_SWITCH"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_SVTK_STYLE_SWITCH" ) ), + aAction = new QtxAction(tr("MNU_STYLE_SWITCH"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_STYLE_SWITCH" ) ), tr( "MNU_STYLE_SWITCH" ), 0, this); aAction->setStatusTip(tr("DSC_STYLE_SWITCH")); aAction->setCheckable(true); connect(aAction, SIGNAL(toggled(bool)), this, SLOT(onSwitchInteractionStyle(bool))); toolMgr()->registerAction( aAction, SwitchInteractionStyleId ); + + // Switch between zooming styles + aAction = new QtxAction(tr("MNU_ZOOMING_STYLE_SWITCH"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_ZOOMING_STYLE_SWITCH" ) ), + tr( "MNU_ZOOMING_STYLE_SWITCH" ), 0, this); + aAction->setStatusTip(tr("DSC_ZOOMING_STYLE_SWITCH")); + aAction->setCheckable(true); + connect(aAction, SIGNAL(toggled(bool)), this, SLOT(onSwitchZoomingStyle(bool))); + toolMgr()->registerAction( aAction, SwitchZoomingStyleId ); } /*! @@ -1177,6 +1192,9 @@ void OCCViewer_ViewWindow::createToolBar() toolMgr()->append( DumpId, tid ); toolMgr()->append( SwitchInteractionStyleId, tid ); +#if OCC_VERSION_LARGE > 0x06030010 // available only with OCC-6.3-sp11 and higher version + toolMgr()->append( SwitchZoomingStyleId, tid ); +#endif if( myModel->trihedronActivated() ) toolMgr()->append( TrihedronShowId, tid ); @@ -1566,6 +1584,19 @@ void OCCViewer_ViewWindow::onSwitchInteractionStyle( bool on ) a->setChecked( on ); } +/*! + \brief Toogles advanced zooming style (relatively to the cursor position) on/off +*/ +void OCCViewer_ViewWindow::onSwitchZoomingStyle( bool on ) +{ + myViewPort->setAdvancedZoomingEnabled( on ); + + // update action state if method is called outside + QtxAction* a = dynamic_cast( toolMgr()->action( SwitchZoomingStyleId ) ); + if ( a->isChecked() != on ) + a->setChecked( on ); +} + /*! \brief Get current interaction style \return interaction style @@ -1584,6 +1615,24 @@ void OCCViewer_ViewWindow::setInteractionStyle( const int theStyle ) onSwitchInteractionStyle( theStyle == (int)SUIT_ViewModel::KEY_FREE ); } +/*! + \brief Get current zooming style + \return zooming style +*/ +int OCCViewer_ViewWindow::zoomingStyle() const +{ + return myViewPort->isAdvancedZoomingEnabled() ? 1 : 0; +} + +/*! + \brief Set current zooming style + \param theStyle zooming style +*/ +void OCCViewer_ViewWindow::setZoomingStyle( const int theStyle ) +{ + onSwitchZoomingStyle( theStyle == 1 ); +} + /*! \brief Dump view window contents to the pixmap. \return pixmap containing all scene rendered in the window diff --git a/src/OCCViewer/OCCViewer_ViewWindow.h b/src/OCCViewer/OCCViewer_ViewWindow.h index 02300ef18..3850bb2a5 100755 --- a/src/OCCViewer/OCCViewer_ViewWindow.h +++ b/src/OCCViewer/OCCViewer_ViewWindow.h @@ -51,7 +51,7 @@ public: enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, ChangeRotationPointId, RotationId, FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, CloneId, ClippingId, MemId, RestoreId, - TrihedronShowId, AxialScaleId, GraduatedAxesId, AmbientId, SwitchInteractionStyleId }; + TrihedronShowId, AxialScaleId, GraduatedAxesId, AmbientId, SwitchInteractionStyleId, SwitchZoomingStyleId }; enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW, @@ -90,6 +90,9 @@ public: int interactionStyle() const; void setInteractionStyle( const int ); + int zoomingStyle() const; + void setZoomingStyle( const int ); + void setTransformEnabled( const OperationType, const bool ); bool transformEnabled( const OperationType ) const; @@ -119,6 +122,7 @@ public slots: void onTrihedronShow(); void setRestoreFlag(); void onSwitchInteractionStyle( bool on ); + void onSwitchZoomingStyle( bool on ); void activateSetRotationGravity(); void activateSetRotationSelected( double theX, double theY, double theZ ); diff --git a/src/OCCViewer/resources/OCCViewer_images.ts b/src/OCCViewer/resources/OCCViewer_images.ts index bcc888b20..429a1ad1b 100644 --- a/src/OCCViewer/resources/OCCViewer_images.ts +++ b/src/OCCViewer/resources/OCCViewer_images.ts @@ -124,5 +124,9 @@ ICON_OCCVIEWER_STYLE_SWITCH occ_view_style_switch.png + + ICON_OCCVIEWER_ZOOMING_STYLE_SWITCH + occ_view_zooming_style_switch.png + diff --git a/src/OCCViewer/resources/OCCViewer_msg_en.ts b/src/OCCViewer/resources/OCCViewer_msg_en.ts index aea134ee6..c19bb5d05 100644 --- a/src/OCCViewer/resources/OCCViewer_msg_en.ts +++ b/src/OCCViewer/resources/OCCViewer_msg_en.ts @@ -231,6 +231,14 @@ MNU_STYLE_SWITCH Interaction style switch + + DSC_ZOOMING_STYLE_SWITCH + Zooming style switch + + + MNU_ZOOMING_STYLE_SWITCH + Zooming style switch + OCC_IMAGE_FILES Images Files (*.bmp *.png *.jpg *.jpeg) diff --git a/src/OCCViewer/resources/occ_view_zooming_style_switch.png b/src/OCCViewer/resources/occ_view_zooming_style_switch.png new file mode 100755 index 0000000000000000000000000000000000000000..8f3a4867098920df40aebdfd7981a0720d638444 GIT binary patch literal 3389 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 // ... (the Python module is already imported) // ... finally call Python module's initialize() method - if ( PyObject_HasAttrString( myModule, "initialize" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"initialize" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"initialize", (char*)"" ) ); if ( !res ) { PyErr_Print(); @@ -876,7 +876,7 @@ void SALOME_PYQT_ModuleLight::init( CAM_Application* app ) myWindowsMap.insert( LightApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea ); myWindowsMap.insert( LightApp_Application::WT_LogWindow, Qt::BottomDockWidgetArea ); - if ( PyObject_HasAttrString( myModule , "windows" ) ) { + if ( PyObject_HasAttrString( myModule , (char*)"windows" ) ) { PyObjWrapper res1( PyObject_CallMethod( myModule, (char*)"windows", (char*)"" ) ); if ( !res1 ) { PyErr_Print(); @@ -903,7 +903,7 @@ void SALOME_PYQT_ModuleLight::init( CAM_Application* app ) // get compatible view windows types from the Python module // by calling views() method - if ( PyObject_HasAttrString( myModule , "views" ) ) { + if ( PyObject_HasAttrString( myModule , (char*)"views" ) ) { PyObjWrapper res2( PyObject_CallMethod( myModule, (char*)"views", (char*)"" ) ); if ( !res2 ) { PyErr_Print(); @@ -966,7 +966,7 @@ void SALOME_PYQT_ModuleLight::activate( SUIT_Study* theStudy ) PyLockWrapper aLock = myInterp->GetLockWrapper(); // call Python module's activate() method (for the new modules) - if ( PyObject_HasAttrString( myModule , "activate" ) ) { + if ( PyObject_HasAttrString( myModule , (char*)"activate" ) ) { PyObject* res1 = PyObject_CallMethod( myModule, (char*)"activate", (char*)"" ); if ( !res1 || !PyBool_Check( res1 ) ) { PyErr_Print(); @@ -1039,7 +1039,7 @@ void SALOME_PYQT_ModuleLight::customize( SUIT_Study* theStudy ) if ( IsCallOldMethods ) { // call Python module's setSettings() method (obsolete) - if ( PyObject_HasAttrString( myModule , "setSettings" ) ) { + if ( PyObject_HasAttrString( myModule , (char*)"setSettings" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"setSettings", (char*)"" ) ); if( !res ) { PyErr_Print(); @@ -1066,7 +1066,7 @@ void SALOME_PYQT_ModuleLight::deactivate( SUIT_Study* theStudy ) return; } // then call Python module's deactivate() method - if ( PyObject_HasAttrString( myModule , "deactivate" ) ) { + if ( PyObject_HasAttrString( myModule , (char*)"deactivate" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"deactivate", (char*)"" ) ); if( !res ) { PyErr_Print(); @@ -1120,7 +1120,7 @@ void SALOME_PYQT_ModuleLight::studyChanged( SUIT_Study* theStudy ) PyLockWrapper aLock = myInterp->GetLockWrapper(); // call Python module's activeStudyChanged() method - if ( PyObject_HasAttrString( myModule, "activeStudyChanged" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"activeStudyChanged" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"activeStudyChanged", (char*)"i", aStudyId ) ); if( !res ) { PyErr_Print(); @@ -1154,7 +1154,7 @@ void SALOME_PYQT_ModuleLight::contextMenu( const QString& theContext, QMenu* the QString aContext( "" ), aObject( "" ), aParent( theContext ); - if ( IsCallOldMethods && PyObject_HasAttrString( myModule, "definePopup" ) ) { + if ( IsCallOldMethods && PyObject_HasAttrString( myModule, (char*)"definePopup" ) ) { // call definePopup() Python module's function // this is obsolete function, used only for compatibility reasons PyObjWrapper res( PyObject_CallMethod( myModule, @@ -1189,7 +1189,7 @@ void SALOME_PYQT_ModuleLight::contextMenu( const QString& theContext, QMenu* the #endif // then call Python module's createPopupMenu() method (for new modules) - if ( PyObject_HasAttrString( myModule, "createPopupMenu" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"createPopupMenu" ) ) { PyObjWrapper res1( PyObject_CallMethod( myModule, (char*)"createPopupMenu", (char*)"Os", @@ -1200,7 +1200,7 @@ void SALOME_PYQT_ModuleLight::contextMenu( const QString& theContext, QMenu* the } } - if ( IsCallOldMethods && PyObject_HasAttrString( myModule, "customPopup" ) ) { + if ( IsCallOldMethods && PyObject_HasAttrString( myModule, (char*)"customPopup" ) ) { // call customPopup() Python module's function // this is obsolete function, used only for compatibility reasons PyObjWrapper res2( PyObject_CallMethod( myModule, @@ -1233,7 +1233,7 @@ void SALOME_PYQT_ModuleLight::guiEvent( const int theId ) if ( !myInterp || !myModule ) return; - if ( PyObject_HasAttrString( myModule, "OnGUIEvent" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"OnGUIEvent" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"OnGUIEvent", (char*)"i", theId ) ); if( !res ) { PyErr_Print(); @@ -1260,7 +1260,7 @@ void SALOME_PYQT_ModuleLight::initPreferences() // might be called during the module intialization process myInitModule = this; - if ( PyObject_HasAttrString( myModule, "createPreferences" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"createPreferences" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"createPreferences", (char*)"" ) ); if( !res ) { PyErr_Print(); @@ -1404,7 +1404,7 @@ void SALOME_PYQT_ModuleLight::setWorkSpace() PyObjWrapper pyws( sipBuildResult( 0, "D", aWorkspace, sipType_QWidget , NULL) ); #endif // ... and finally call Python module's setWorkspace() method (obsolete) - if ( PyObject_HasAttrString( myModule, "setWorkSpace" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"setWorkSpace" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"setWorkSpace", (char*)"O", pyws.get() ) ); if( !res ) { PyErr_Print(); @@ -1431,7 +1431,7 @@ void SALOME_PYQT_ModuleLight::prefChanged( const QString& section, const QString if ( !myInterp || !myModule ) return; - if ( PyObject_HasAttrString( myModule, "preferenceChanged" ) ) { + if ( PyObject_HasAttrString( myModule, (char*)"preferenceChanged" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"preferenceChanged", (char*)"ss", @@ -1829,7 +1829,7 @@ void SALOME_PYQT_ModuleLight::activeViewChanged( const SUIT_ViewWindow* pview ) connectView( pview ); - if ( PyObject_HasAttrString( myModule, "activeViewChanged" ) ) + if ( PyObject_HasAttrString( myModule, (char*)"activeViewChanged" ) ) { if ( !pview ) return; @@ -1876,7 +1876,7 @@ void SALOME_PYQT_ModuleLight::viewCloned( const SUIT_ViewWindow* pview ) if ( !myInterp || !myModule || !pview ) return; - if ( PyObject_HasAttrString( myModule, "viewCloned" ) ) + if ( PyObject_HasAttrString( myModule, (char*)"viewCloned" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"viewCloned", (char*)"i", pview->getId() ) ); if( !res ) @@ -1884,6 +1884,52 @@ void SALOME_PYQT_ModuleLight::viewCloned( const SUIT_ViewWindow* pview ) } } +/*! + \brief Signal handler tryClose(SUIT_ViewWindow*) of a view + \param pview view being closed +*/ +void SALOME_PYQT_ModuleLight::onViewTryClose( SUIT_ViewWindow* pview ) +{ + class ViewTryClose : public PyInterp_LockRequest + { + public: + ViewTryClose( PyInterp_Interp* _py_interp, SALOME_PYQT_ModuleLight* _obj, const SUIT_ViewWindow* _pview ) + : PyInterp_LockRequest( _py_interp, 0, true ), + myObj(_obj),myView(_pview) {} + + protected: + virtual void execute() + { + myObj->viewTryClose( myView ); + } + + private: + SALOME_PYQT_ModuleLight* myObj; + const SUIT_ViewWindow * myView; + }; + + PyInterp_Dispatcher::Get()->Exec( new ViewTryClose( myInterp, this, pview ) ); +} + +/*! + \brief Processes the view closing attempt, calls Python module's viewTryClose() method + \param pview view user tries to close +*/ +void SALOME_PYQT_ModuleLight::viewTryClose( const SUIT_ViewWindow* pview ) +{ + if ( !myInterp || !myModule ) + return; + + if ( PyObject_HasAttrString( myModule, (char*)"viewTryClose" ) ) + { + PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"viewTryClose", (char*)"i", pview->getId() ) ); + if ( !res ) + { + PyErr_Print(); + } + } +} + /*! \brief Signal handler closing(SUIT_ViewWindow*) of a view \param pview view being closed @@ -1920,7 +1966,7 @@ void SALOME_PYQT_ModuleLight::viewClosed( const SUIT_ViewWindow* pview ) if ( !myInterp || !myModule ) return; - if ( PyObject_HasAttrString( myModule, "viewClosed" ) ) + if ( PyObject_HasAttrString( myModule, (char*)"viewClosed" ) ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"viewClosed", (char*)"i", pview->getId() ) ); if ( !res ) @@ -1941,9 +1987,13 @@ void SALOME_PYQT_ModuleLight::connectView( const SUIT_ViewWindow* pview ) if ( viewMgr ) { + disconnect( viewMgr, SIGNAL( tryCloseView( SUIT_ViewWindow* ) ), + this, SLOT( onViewTryClose( SUIT_ViewWindow* ) ) ); disconnect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ), - this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) ); + this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) ); + connect( viewMgr, SIGNAL( tryCloseView( SUIT_ViewWindow* ) ), + this, SLOT( onViewTryClose( SUIT_ViewWindow* ) ) ); connect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ), this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) ); } @@ -2388,7 +2438,7 @@ void SALOME_PYQT_ModuleLight::saveEvent(QStringList& theListOfFiles) if ( !myInterp || !myModule || (it == theListOfFiles.end())) return; - if ( PyObject_HasAttrString(myModule, "saveFiles") ) { + if ( PyObject_HasAttrString(myModule, (char*)"saveFiles") ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"saveFiles", (char*)"s", (*it).toLatin1().constData())); if( !res ) { @@ -2470,7 +2520,7 @@ void SALOME_PYQT_ModuleLight::openEvent(QStringList theListOfFiles, bool &opened #else PyObjWrapper sipList( sipBuildResult( 0, "D", theList, sipType_QStringList , NULL) ); #endif - if ( PyObject_HasAttrString(myModule , "openFiles") ) { + if ( PyObject_HasAttrString(myModule , (char*)"openFiles") ) { PyObjWrapper res( PyObject_CallMethod( myModule, (char*)"openFiles", (char*)"O", sipList.get())); if( !res || !PyBool_Check( res )) { diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUILight/SALOME_PYQT_ModuleLight.h b/src/SALOME_PYQT/SALOME_PYQT_GUILight/SALOME_PYQT_ModuleLight.h index 90fce3969..1fa012262 100644 --- a/src/SALOME_PYQT/SALOME_PYQT_GUILight/SALOME_PYQT_ModuleLight.h +++ b/src/SALOME_PYQT/SALOME_PYQT_GUILight/SALOME_PYQT_ModuleLight.h @@ -158,12 +158,13 @@ public slots: void onGUIEvent(); void onActiveViewChanged( SUIT_ViewWindow* ); + void onViewTryClose( SUIT_ViewWindow* ); void onViewClosed( SUIT_ViewWindow* ); void onViewCloned( SUIT_ViewWindow* ); protected: /* create data model */ - virtual CAM_DataModel* createDataModel(); + virtual CAM_DataModel* createDataModel(); private: void init( CAM_Application* ); @@ -182,6 +183,7 @@ private: void setWorkSpace(); void activeViewChanged( const SUIT_ViewWindow* ); + void viewTryClose( const SUIT_ViewWindow* ); void viewClosed( const SUIT_ViewWindow* ); void viewCloned( const SUIT_ViewWindow* ); void connectView( const SUIT_ViewWindow* ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx index bfda59f2d..f466eb966 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx @@ -2365,6 +2365,45 @@ int SalomePyQt::createView( const QString& type ) return ProcessEvent( new TCreateView( type ) ); } +/*! + \fn int SalomePyQt::createView( const QString& type, QWidget* w ) + \brief Create new view with custom widget embedded and activate it + \param type viewer type + \param w custom widget + \return integer identifier of created view (or -1 if view could not be created) +*/ + +class TCreateViewWg: public SALOME_Event +{ +public: + typedef int TResult; + TResult myResult; + QString myType; + QWidget* myWidget; + TCreateViewWg( const QString& theType, QWidget* w ) + : myResult( -1 ), + myType( theType ), + myWidget( w ) {} + virtual void Execute() + { + LightApp_Application* app = getApplication(); + if ( app ) + { + SUIT_ViewManager* viewMgr = app->createViewManager( myType, myWidget ); + if ( viewMgr ) + { + SUIT_ViewWindow* wnd = viewMgr->getActiveView(); + if ( wnd ) + myResult = wnd->getId(); + } + } + } +}; +int SalomePyQt::createView( const QString& type, QWidget* w ) +{ + return ProcessEvent( new TCreateViewWg( type, w ) ); +} + /*! \fn bool SalomePyQt::closeView( const int id ) \brief Close view @@ -2483,6 +2522,61 @@ bool SalomePyQt::isViewVisible( const int id ) return ProcessEvent( new TIsViewVisible( id ) ); } +/*! + \fn bool SalomePyQt::setViewClosable( const int id, const bool on ) + \brief Set / clear view's "closable" option. By default any view is closable + (i.e. can be closed by the user). + \param id window identifier + \param on new "closable" option's value +*/ + +void SalomePyQt::setViewClosable( const int id, const bool on ) +{ + class TEvent: public SALOME_Event + { + int myWndId; + bool myOn; + public: + TEvent( const int id, const bool on ) + : myWndId( id ), myOn( on ) {} + virtual void Execute() + { + SUIT_ViewWindow* wnd = getWnd( myWndId ); + if ( wnd ) wnd->setClosable( myOn ); + } + }; + ProcessVoidEvent( new TEvent( id, on ) ); +} + +/*! + \fn bool SalomePyQt::isViewClosable( const int id ) + \brief Check whether view is closable (i.e. can be closed by the user) + \param id window identifier + \return \c true if view is closable or \c false otherwise +*/ + +class TIsViewClosable: public SALOME_Event +{ +public: + typedef bool TResult; + TResult myResult; + int myWndId; + TIsViewClosable( const int id ) + : myResult( true ), + myWndId( id ) {} + virtual void Execute() + { + SUIT_ViewWindow* wnd = getWnd( myWndId ); + if ( wnd ) + myResult = wnd->closable(); + } +}; + +bool SalomePyQt::isViewClosable( const int id ) +{ + return ProcessEvent( new TIsViewClosable( id ) ); +} + /*! \fn bool SalomePyQt::groupAllViews() \brief Group all views to the single tab area diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h index 0aaa9f395..885b708db 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.h @@ -230,10 +230,13 @@ public: static QList findViews( const QString& ); static bool activateView( const int ); static int createView( const QString& ); + static int createView( const QString&, QWidget* ); static bool closeView( const int ); static int cloneView( const int ); - static bool isViewVisible( const int id ); - + static bool isViewVisible( const int ); + static void setViewClosable( const int, const bool ); + static bool isViewClosable( const int ); + static bool groupAllViews(); static bool splitView( const int, const Orientation, const Action ); static bool moveView( const int, const int, const bool ); diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip index 60bbb4f42..229c82736 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.sip @@ -317,9 +317,12 @@ public: static QList findViews( const QString& ) /ReleaseGIL/ ; static bool activateView( const int ) /ReleaseGIL/ ; static int createView( const QString& ) /ReleaseGIL/ ; + static int createView( const QString&, QWidget* ) /ReleaseGIL/ ; static bool closeView( const int ) /ReleaseGIL/ ; static int cloneView( const int ) /ReleaseGIL/ ; static bool isViewVisible( const int id ) /ReleaseGIL/ ; + static void setViewClosable( const int id, const bool ) /ReleaseGIL/ ; + static bool isViewClosable( const int id ) /ReleaseGIL/ ; static bool groupAllViews() /ReleaseGIL/ ; static bool splitView( const int, Orientation, Action ) /ReleaseGIL/ ; diff --git a/src/SUIT/SUIT_ViewManager.cxx b/src/SUIT/SUIT_ViewManager.cxx index 212702c5f..1e55aecef 100755 --- a/src/SUIT/SUIT_ViewManager.cxx +++ b/src/SUIT/SUIT_ViewManager.cxx @@ -46,9 +46,9 @@ SUIT_ViewManager::SUIT_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop, SUIT_ViewModel* theViewModel ) : QObject( 0 ), -myDesktop( theDesktop ), -myTitle( "Default: %M - viewer %V" ), -myStudy( NULL ) + myDesktop( theDesktop ), + myTitle( "Default: %M - viewer %V" ), + myStudy( NULL ) { myViewModel = 0; myActiveView = 0; @@ -209,6 +209,9 @@ bool SUIT_ViewManager::insertView(SUIT_ViewWindow* theView) connect(theView, SIGNAL(closing(SUIT_ViewWindow*)), this, SLOT(onClosingView(SUIT_ViewWindow*))); + connect(theView, SIGNAL(tryClosing(SUIT_ViewWindow*)), + this, SIGNAL(tryCloseView(SUIT_ViewWindow*))); + connect(theView, SIGNAL(mousePressed(SUIT_ViewWindow*, QMouseEvent*)), this, SLOT(onMousePressed(SUIT_ViewWindow*, QMouseEvent*))); @@ -261,6 +264,7 @@ void SUIT_ViewManager::closeView( SUIT_ViewWindow* theView ) QPointer view( theView ); + view->setClosable( false ); view->hide(); if ( !view->testAttribute( Qt::WA_DeleteOnClose ) ) diff --git a/src/SUIT/SUIT_ViewManager.h b/src/SUIT/SUIT_ViewManager.h index a011b11fb..07c8ca8bf 100755 --- a/src/SUIT/SUIT_ViewManager.h +++ b/src/SUIT/SUIT_ViewManager.h @@ -89,6 +89,7 @@ public slots: signals: void lastViewClosed(SUIT_ViewManager*); + void tryCloseView(SUIT_ViewWindow*); void deleteView(SUIT_ViewWindow*); void viewCreated(SUIT_ViewWindow*); void mousePress(SUIT_ViewWindow*, QMouseEvent*); diff --git a/src/SUIT/SUIT_ViewWindow.cxx b/src/SUIT/SUIT_ViewWindow.cxx index 68d27fb67..7ef4d882d 100755 --- a/src/SUIT/SUIT_ViewWindow.cxx +++ b/src/SUIT/SUIT_ViewWindow.cxx @@ -136,7 +136,8 @@ void SUIT_ViewWindow::setDestructiveClose( const bool on ) void SUIT_ViewWindow::closeEvent( QCloseEvent* e ) { e->ignore(); - emit closing( this ); + emit tryClosing( this ); + if ( closable() ) emit closing( this ); } /*! Context menu requested for event \a e. @@ -215,10 +216,25 @@ bool SUIT_ViewWindow::action( const int ) return true; } +/*! Returns \c true if view window can be closed by the user +*/ +bool SUIT_ViewWindow::closable() const +{ + QVariant val = property( "closable" ); + return !val.isValid() || val.toBool(); +} + +/*! Set / reset "closable" option of the view window +*/ +bool SUIT_ViewWindow::setClosable( const bool on ) +{ + setProperty( "closable", on ); +} + /*! \return string containing visual parameters of window */ -QString SUIT_ViewWindow::getVisualParameters() +QString SUIT_ViewWindow::getVisualParameters() { return "empty"; } diff --git a/src/SUIT/SUIT_ViewWindow.h b/src/SUIT/SUIT_ViewWindow.h index 5b09273da..2bb6a39b4 100755 --- a/src/SUIT/SUIT_ViewWindow.h +++ b/src/SUIT/SUIT_ViewWindow.h @@ -53,6 +53,9 @@ public: bool onAccelAction( int ); + bool closable() const; + bool setClosable( const bool ); + virtual QString getVisualParameters(); virtual void setVisualParameters( const QString& parameters ); @@ -70,6 +73,7 @@ public slots: virtual void onDumpView(); signals: + void tryClosing( SUIT_ViewWindow* ); void closing( SUIT_ViewWindow* ); void mousePressed( SUIT_ViewWindow*, QMouseEvent* ); void mouseReleased( SUIT_ViewWindow*, QMouseEvent* ); @@ -95,4 +99,4 @@ private: QMap myCustomData; }; -#endif // !defined(AFX_SUIT_VIEWWINDOW_H__82C3D51A_6F10_45B0_BCFE_3CB3EF596A4D__INCLUDED_) +#endif // SUIT_VIEWWINDOW_H diff --git a/src/SVTK/Makefile.am b/src/SVTK/Makefile.am index 3842a639f..232e9ef83 100755 --- a/src/SVTK/Makefile.am +++ b/src/SVTK/Makefile.am @@ -128,6 +128,7 @@ dist_salomeres_DATA=\ resources/vtk_view_perspective.png \ resources/vtk_view_parameters.png \ resources/vtk_view_style_switch.png \ + resources/vtk_view_zooming_style_switch.png \ resources/vtk_view_recording_start.png \ resources/vtk_view_recording_play.png \ resources/vtk_view_recording_pause.png \ diff --git a/src/SVTK/SVTK_InteractorStyle.cxx b/src/SVTK/SVTK_InteractorStyle.cxx index b9cd1aec0..ec679bdcb 100644 --- a/src/SVTK/SVTK_InteractorStyle.cxx +++ b/src/SVTK/SVTK_InteractorStyle.cxx @@ -93,7 +93,8 @@ SVTK_InteractorStyle::SVTK_InteractorStyle(): myControllerIncrement(SVTK_ControllerIncrement::New()), myControllerOnKeyDown(SVTK_ControllerOnKeyDown::New()), myHighlightSelectionPointActor(SVTK_Actor::New()), - myRectBand(0) + myRectBand(0), + myIsAdvancedZoomingEnabled(false) { myPointPicker->Delete(); @@ -289,8 +290,22 @@ void SVTK_InteractorStyle::DollyXY(int dx, int dy) double zoomFactor = pow((double)1.1, dxf + dyf); vtkCamera *aCam = GetCurrentRenderer()->GetActiveCamera(); - if (aCam->GetParallelProjection()) + if (aCam->GetParallelProjection()) { + int x0 = 0, y0 = 0, x1 = 0, y1 = 0; + if( IsAdvancedZoomingEnabled() ) { // zoom relatively to the cursor + int* aSize = GetCurrentRenderer()->GetRenderWindow()->GetSize(); + int w = aSize[0]; + int h = aSize[1]; + x0 = w / 2; + y0 = h / 2; + x1 = myOtherPoint.x(); + y1 = h - myOtherPoint.y(); + TranslateView( x0, y0, x1, y1 ); + } aCam->SetParallelScale(aCam->GetParallelScale()/zoomFactor); + if( IsAdvancedZoomingEnabled() ) + TranslateView( x1, y1, x0, y0 ); + } else{ aCam->Dolly(zoomFactor); // Move camera in/out along projection direction GetCurrentRenderer()->ResetCameraClippingRange(); diff --git a/src/SVTK/SVTK_InteractorStyle.h b/src/SVTK/SVTK_InteractorStyle.h index 51bb52657..f002752e5 100644 --- a/src/SVTK/SVTK_InteractorStyle.h +++ b/src/SVTK/SVTK_InteractorStyle.h @@ -228,6 +228,9 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle int CurrentState() const { return State; } + void SetAdvancedZoomingEnabled( const bool theState ) { myIsAdvancedZoomingEnabled = theState; } + bool IsAdvancedZoomingEnabled() const { return myIsAdvancedZoomingEnabled; } + protected: SVTK_InteractorStyle(); ~SVTK_InteractorStyle(); @@ -350,6 +353,8 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle bool myBBFirstCheck; QRubberBand* myRectBand; //!< selection rectangle rubber band + + bool myIsAdvancedZoomingEnabled; }; #ifdef WIN32 diff --git a/src/SVTK/SVTK_ViewModel.cxx b/src/SVTK/SVTK_ViewModel.cxx index 35c168563..58d4e47d8 100644 --- a/src/SVTK/SVTK_ViewModel.cxx +++ b/src/SVTK/SVTK_ViewModel.cxx @@ -80,6 +80,7 @@ SVTK_Viewer::SVTK_Viewer() myIncrementMode = 0; myProjMode = 0; myStyle = 0; + myZoomingStyle = 0; mySpaceBtn[0] = 1; mySpaceBtn[1] = 2; mySpaceBtn[2] = 9; @@ -134,6 +135,7 @@ SUIT_ViewWindow* SVTK_Viewer::createView( SUIT_Desktop* theDesktop ) aViewWindow->SetStaticTrihedronVisible( isStaticTrihedronVisible() ); aViewWindow->SetProjectionMode( projectionMode() ); aViewWindow->SetInteractionStyle( interactionStyle() ); + aViewWindow->SetZoomingStyle( zoomingStyle() ); aViewWindow->SetIncrementalSpeed( incrementalSpeed(), incrementalSpeedMode() ); aViewWindow->SetSpacemouseButtons( spacemouseBtn(1), spacemouseBtn(2), spacemouseBtn(3) ); @@ -262,6 +264,32 @@ void SVTK_Viewer::setInteractionStyle( const int theStyle ) } } +/*! + \return zooming style +*/ +int SVTK_Viewer::zoomingStyle() const +{ + return myZoomingStyle; +} + +/*! + Sets zooming style: 0 - standard, 1 - advanced (at cursor) + \param theStyle - new zooming style +*/ +void SVTK_Viewer::setZoomingStyle( const int theStyle ) +{ + myZoomingStyle = theStyle; + + if (SUIT_ViewManager* aViewManager = getViewManager()) { + QVector aViews = aViewManager->getViews(); + for ( uint i = 0; i < aViews.count(); i++ ) + { + if ( TViewWindow* aView = dynamic_cast(aViews.at( i )) ) + aView->SetZoomingStyle( theStyle ); + } + } +} + /*! \return incremental speed value */ diff --git a/src/SVTK/SVTK_ViewModel.h b/src/SVTK/SVTK_ViewModel.h index cf4ca31fe..5e038d2c7 100644 --- a/src/SVTK/SVTK_ViewModel.h +++ b/src/SVTK/SVTK_ViewModel.h @@ -96,6 +96,12 @@ public: //! Sets interaction style void setInteractionStyle( const int ); + //! Gets zooming style + int zoomingStyle() const; + + //! Sets zooming style + void setZoomingStyle( const int ); + //! Get incremental speed (see #SVTK_InteractorStyle::ControllerIncrement) int incrementalSpeed() const; @@ -175,6 +181,7 @@ private: int myIncrementMode; int myProjMode; int myStyle; + int myZoomingStyle; int mySpaceBtn[3]; }; diff --git a/src/SVTK/SVTK_ViewWindow.cxx b/src/SVTK/SVTK_ViewWindow.cxx index 440bf08ce..a0118be86 100755 --- a/src/SVTK/SVTK_ViewWindow.cxx +++ b/src/SVTK/SVTK_ViewWindow.cxx @@ -171,9 +171,9 @@ void SVTK_ViewWindow::Initialize(SVTK_ViewModelBase* theModel) myViewParameterDlg = new SVTK_ViewParameterDlg ( getAction( ViewParametersId ), this, "SVTK_ViewParameterDlg" ); - SVTK_InteractorStyle* aStyle = SVTK_InteractorStyle::New(); - myInteractor->PushInteractorStyle(aStyle); - aStyle->Delete(); + myDefaultInteractorStyle = SVTK_InteractorStyle::New(); + myInteractor->PushInteractorStyle(myDefaultInteractorStyle); + myDefaultInteractorStyle->Delete(); myRecorder = SVTK_Recorder::New(); @@ -680,6 +680,15 @@ void SVTK_ViewWindow::SetInteractionStyle(const int theStyle) onSwitchInteractionStyle( theStyle==1 ); } +/*! + Sets actual zooming style + \param theStyle - type of zooming style ( 0 - standard, 1 - advanced (at cursor) ) +*/ +void SVTK_ViewWindow::SetZoomingStyle(const int theStyle) +{ + onSwitchZoomingStyle( theStyle==1 ); +} + /*! Switches "keyboard free" interaction style on/off */ @@ -710,6 +719,22 @@ void SVTK_ViewWindow::onSwitchInteractionStyle(bool theOn) if ( a->isChecked() != theOn ) a->setChecked( theOn ); } +/*! + Toogles advanced zooming style (relatively to the cursor position) on/off +*/ +void SVTK_ViewWindow::onSwitchZoomingStyle( bool theOn ) +{ + if( myDefaultInteractorStyle.GetPointer() ) + myDefaultInteractorStyle->SetAdvancedZoomingEnabled( theOn ); + if( myKeyFreeInteractorStyle.GetPointer() ) + myKeyFreeInteractorStyle->SetAdvancedZoomingEnabled( theOn ); + + // update action state if method is called outside + QtxAction* a = getAction( SwitchZoomingStyleId ); + if ( a->isChecked() != theOn ) + a->setChecked( theOn ); +} + /*! Sets incremental speed \param theValue - new incremental speed @@ -1549,8 +1574,14 @@ void SVTK_ViewWindow::activateStartPointSelection() */ void SVTK_ViewWindow::onPerspectiveMode() { + bool anIsParallelMode = toolMgr()->action( ParallelModeId )->isChecked(); + + // advanced zooming is not available in perspective mode + if( QtxAction* anAction = getAction( SwitchZoomingStyleId ) ) + anAction->setEnabled( anIsParallelMode ); + vtkCamera* aCamera = getRenderer()->GetActiveCamera(); - aCamera->SetParallelProjection(toolMgr()->action( ParallelModeId )->isChecked()); + aCamera->SetParallelProjection(anIsParallelMode); GetInteractor()->GetDevice()->CreateTimer(VTKI_TIMER_FIRST); } @@ -1764,6 +1795,15 @@ void SVTK_ViewWindow::createActions(SUIT_ResourceMgr* theResourceMgr) connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onSwitchInteractionStyle(bool))); mgr->registerAction( anAction, SwitchInteractionStyleId ); + // Switch between zomming styles + anAction = new QtxAction(tr("MNU_SVTK_ZOOMING_STYLE_SWITCH"), + theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_SVTK_ZOOMING_STYLE_SWITCH" ) ), + tr( "MNU_SVTK_ZOOMING_STYLE_SWITCH" ), 0, this); + anAction->setStatusTip(tr("DSC_SVTK_ZOOMING_STYLE_SWITCH")); + anAction->setCheckable(true); + connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onSwitchZoomingStyle(bool))); + mgr->registerAction( anAction, SwitchZoomingStyleId ); + // Start recording myStartAction = new QtxAction(tr("MNU_SVTK_RECORDING_START"), theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_SVTK_RECORDING_START" ) ), @@ -1809,6 +1849,7 @@ void SVTK_ViewWindow::createToolBar() mgr->append( DumpId, myToolBar ); mgr->append( SwitchInteractionStyleId, myToolBar ); + mgr->append( SwitchZoomingStyleId, myToolBar ); mgr->append( ViewTrihedronId, myToolBar ); QtxMultiAction* aScaleAction = new QtxMultiAction( this ); diff --git a/src/SVTK/SVTK_ViewWindow.h b/src/SVTK/SVTK_ViewWindow.h index 9d6e24707..9c2f82700 100755 --- a/src/SVTK/SVTK_ViewWindow.h +++ b/src/SVTK/SVTK_ViewWindow.h @@ -59,6 +59,7 @@ class SVTK_NonIsometricDlg; class SVTK_UpdateRateDlg; class SVTK_CubeAxesDlg; class SVTK_SetRotationPointDlg; +class SVTK_InteractorStyle; class SVTK_KeyFreeInteractorStyle; class SVTK_ViewParameterDlg; class SVTK_Recorder; @@ -220,6 +221,9 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow //! Redirect the request to #SVTK_MainWindow::SetInteractionStyle virtual void SetInteractionStyle( const int ); + //! Redirect the request to #SVTK_MainWindow::SetZoomingStyle + virtual void SetZoomingStyle( const int ); + //! Redirect the request to #SVTK_MainWindow::SetSpacemouseButtons virtual void SetSpacemouseButtons( const int, const int, const int ); @@ -294,6 +298,7 @@ public slots: void onViewParameters(bool theIsActivate); void onSwitchInteractionStyle(bool theOn); + void onSwitchZoomingStyle(bool theOn); void onStartRecording(); void onPlayRecording(); @@ -373,6 +378,7 @@ protected: FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate, ParallelModeId, ProjectionModeId, ViewParametersId, SwitchInteractionStyleId, + SwitchZoomingStyleId, StartRecordingId, PlayRecordingId, PauseRecordingId, StopRecordingId }; @@ -381,6 +387,7 @@ protected: SVTK_ViewModelBase* myModel; SVTK_RenderWindowInteractor* myInteractor; + vtkSmartPointer myDefaultInteractorStyle; vtkSmartPointer myKeyFreeInteractorStyle; QString myVisualParams; // used for delayed setting of view parameters diff --git a/src/SVTK/resources/SVTK_images.ts b/src/SVTK/resources/SVTK_images.ts index 2236a59ba..6150f90b3 100644 --- a/src/SVTK/resources/SVTK_images.ts +++ b/src/SVTK/resources/SVTK_images.ts @@ -56,6 +56,10 @@ ICON_SVTK_STYLE_SWITCH vtk_view_style_switch.png + + ICON_SVTK_ZOOMING_STYLE_SWITCH + vtk_view_zooming_style_switch.png + ICON_SVTK_RECORDING_START vtk_view_recording_start.png diff --git a/src/SVTK/resources/SVTK_msg_en.ts b/src/SVTK/resources/SVTK_msg_en.ts index 056572c0e..b717790b9 100644 --- a/src/SVTK/resources/SVTK_msg_en.ts +++ b/src/SVTK/resources/SVTK_msg_en.ts @@ -187,6 +187,14 @@ MNU_SVTK_STYLE_SWITCH Interaction Style Switch + + DSC_SVTK_ZOOMING_STYLE_SWITCH + Zooming style switch + + + MNU_SVTK_ZOOMING_STYLE_SWITCH + Zomming style switch + SVTK_FontWidget diff --git a/src/SVTK/resources/vtk_view_zooming_style_switch.png b/src/SVTK/resources/vtk_view_zooming_style_switch.png new file mode 100755 index 0000000000000000000000000000000000000000..8f3a4867098920df40aebdfd7981a0720d638444 GIT binary patch literal 3389 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 +
    @@ -146,6 +147,7 @@ + -- 2.39.2