]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix for bug PAL10982 ( T_3_1_0pre: can't change the trihedron size of a VTK view ).
authormzn <mzn@opencascade.com>
Tue, 20 Dec 2005 11:59:35 +0000 (11:59 +0000)
committermzn <mzn@opencascade.com>
Tue, 20 Dec 2005 11:59:35 +0000 (11:59 +0000)
src/LightApp/LightApp_Application.cxx
src/SVTK/SVTK_ViewWindow.cxx
src/SalomeApp/resources/SalomeApp.xml

index 475b2763b1fd455718d78a56ec399299fd895208..3aa523b1c07dfac37b31a1336a9548a5710bfeb6 100644 (file)
@@ -1504,6 +1504,7 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
 
   int vtkTS = pref->addPreference( tr( "PREF_TRIHEDRON_SIZE" ), vtkGroup,
                                   LightApp_Preferences::IntSpin, "VTKViewer", "trihedron_size" );
+  pref->addPreference( tr( "PREF_RELATIVE_SIZE" ), vtkGroup, LightApp_Preferences::Bool, "VTKViewer", "relative_size" );
   pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), vtkGroup,
                       LightApp_Preferences::Color, "VTKViewer", "background" );
 
@@ -1612,9 +1613,9 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
     }
   }
 
-  if ( sec == QString( "VTKViewer" ) && param == QString( "trihedron_size" ) )
+  if ( sec == QString( "VTKViewer" ) && (param == QString( "trihedron_size" ) || param == QString( "relative_size" )) )
   {
-    int sz = resMgr->integerValue( sec, param, -1 );
+    int sz = resMgr->integerValue( "VTKViewer", "trihedron_size", -1 );
     QPtrList<SUIT_ViewManager> lst;
     viewManagers( SVTK_Viewer::Type(), lst );
     for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current() && sz >= 0; ++it )
index cbe8d968c528088a43d9f5ed0331bf7732dc8425..6ee41df1389a82550a2107fab943af574e491ccb 100755 (executable)
@@ -749,9 +749,6 @@ int SVTK_ViewWindow::GetTrihedronSize() const
 
 void SVTK_ViewWindow::SetTrihedronSize( const int sz )
 {
-  if ( myTrihedronSize == sz )
-    return;
-
   myTrihedronSize = sz;
   AdjustTrihedrons( true );
 }
@@ -774,8 +771,12 @@ SVTK_ViewWindow
   myCubeAxes->GetBounds(bnd);
 
   int aVisibleNum = myTrihedron->GetVisibleActorCount( myRenderer );
+
+  SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+  bool isRelativeSize = aResMgr->booleanValue( "VTKViewer", "relative_size", true );
+  
   //if (aVisibleNum || theIsForcedUpdate) {
-  if (aVisibleNum) {
+  if (aVisibleNum || !isRelativeSize) {
     // if the new trihedron size have sufficient difference, then apply the value
     double aNewSize = 100, anOldSize=myTrihedron->GetSize();
     bool aTDisplayed = isTrihedronDisplayed();
@@ -783,13 +784,16 @@ SVTK_ViewWindow
     if(aTDisplayed) myTrihedron->VisibilityOff();
     if(aCDisplayed) myCubeAxes->VisibilityOff();
 
-    SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
-    QString aSetting = aResMgr->stringValue("Viewer", "TrihedronSize", "105");
-    static float aSizeInPercents = aSetting.toFloat();
-
+    int aDefaultSize = 100;
+    if (isRelativeSize) aDefaultSize = 105;
+    int aSizeFromPreferences = aResMgr->integerValue( "VTKViewer", "trihedron_size", aDefaultSize );
+    
     //bool isComputeTrihedronSize =
-      ::ComputeTrihedronSize(myRenderer, aNewSize, anOldSize, aSizeInPercents);
-
+    if (isRelativeSize)
+      ::ComputeTrihedronSize(myRenderer, aNewSize, anOldSize, (float)aSizeFromPreferences);
+    else
+      aNewSize = (double)aSizeFromPreferences;
+    
     myTrihedron->SetSize( aNewSize );
 
     // iterate through displayed objects and set size if necessary
index 5b525482a564c3fc930cac27ac1fcde69194e419..b32780274da45b31df639eff6df63853356a1870 100644 (file)
  </section>
  <section name="VTKViewer" >
     <parameter value="0, 0, 0" name="background" />
-    <parameter value="100" name="trihedron_size" />
+    <parameter value="105" name="trihedron_size" />
+    <parameter value="true" name="relative_size" />
  </section>
  <section name="Plot2d" >
     <parameter value="255, 255, 255" name="Background" />