]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
0021219: [CEA 463] Add a preference to setOpaqueResize
authorvsr <vsr@opencascade.com>
Wed, 6 Apr 2011 13:13:47 +0000 (13:13 +0000)
committervsr <vsr@opencascade.com>
Wed, 6 Apr 2011 13:13:47 +0000 (13:13 +0000)
src/LightApp/LightApp_Application.cxx
src/LightApp/resources/LightApp.xml
src/LightApp/resources/LightApp_msg_en.ts
src/Qtx/QtxWorkstack.cxx
src/Qtx/QtxWorkstack.h

index 532f43e27fc1afdd78b4f392f73e814556605cf5..b30c2719af64a7c8e4388192735eef3177bb738f 100644 (file)
@@ -1936,6 +1936,9 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->setItemProperty( "strings", aLangs, curLang );
   pref->setItemProperty( "icons",   aIcons, curLang );
 
+  int lookGroup = pref->addPreference( tr( "PREF_GROUP_LOOK_AND_FEEL" ), genTab );
+  pref->addPreference( tr( "PREF_OPAQUE_RESIZE" ), lookGroup, LightApp_Preferences::Bool, "desktop", "opaque_resize" );
+
   int studyGroup = pref->addPreference( tr( "PREF_GROUP_STUDY" ), genTab );
 
   pref->setItemProperty( "columns", 2, studyGroup );
@@ -2624,6 +2627,15 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
   {
     SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LANG_CHANGED" ) );
   }
+  if ( sec == "desktop" && param == "opaque_resize" ) {
+    bool opaqueResize = resMgr->booleanValue( "desktop", "opaque_resize", false );
+    QMainWindow::DockOptions dopts = desktop()->dockOptions();
+    if ( opaqueResize ) dopts |= QMainWindow::AnimatedDocks;
+    else                dopts &= ~QMainWindow::AnimatedDocks;
+    desktop()->setDockOptions( dopts );
+    if ( dynamic_cast<STD_TabDesktop*>( desktop() ) )
+      dynamic_cast<STD_TabDesktop*>( desktop() )->workstack()->setOpaqueResize( opaqueResize );
+  }
 }
 
 /*!
@@ -2672,8 +2684,16 @@ void LightApp_Application::loadPreferences()
       myWinVis.insert( *itr, arr );
   }
 
-  if ( desktop() )
+  if ( desktop() ) {
     desktop()->retrieveGeometry( aResMgr->stringValue( "desktop", "geometry" ) );
+    bool opaqueResize = aResMgr->booleanValue( "desktop", "opaque_resize", false );
+    QMainWindow::DockOptions dopts = desktop()->dockOptions();
+    if ( opaqueResize ) dopts |= QMainWindow::AnimatedDocks;
+    else                dopts &= ~QMainWindow::AnimatedDocks;
+    desktop()->setDockOptions( dopts );
+    if ( dynamic_cast<STD_TabDesktop*>( desktop() ) )
+      dynamic_cast<STD_TabDesktop*>( desktop() )->workstack()->setOpaqueResize( opaqueResize );
+  }
 }
 
 /*!
index 37962eb32b7ab29258acc138c925badda41e6382..9b703edb110b456e87ebf556277a0009999f67a2 100644 (file)
@@ -79,7 +79,8 @@
   </section>
   <section name="desktop" >
     <!-- Default GUI desktop state, position, size -->
-    <parameter name="geometry"  value="80%%x80%%+10%%+10%%"/>
+    <parameter name="geometry"      value="80%%x80%%+10%%+10%%"/>
+    <parameter name="opaque_resize" value="false"/>
   </section>
   <section name="PyConsole">
     <!-- Python console preferences -->
index 4141f4291fd15bc0d3503c9077e05042bef2b174..81095529387a9222ab09e1bd1cb1bd49d543c108 100644 (file)
@@ -506,6 +506,14 @@ The changes will be applied on the next application session.</translation>
         <source>PREF_CURRENT_LANGUAGE</source>
         <translation>Current language</translation>
     </message>
+    <message>
+        <source>PREF_GROUP_LOOK_AND_FEEL</source>
+        <translation>Look &amp; feel</translation>
+    </message>
+    <message>
+        <source>PREF_OPAQUE_RESIZE</source>
+        <translation>Opaque resize</translation>
+    </message>
     <message>
         <source>PREF_GROUP_STUDY</source>
         <translation>Study properties</translation>
index ae651bf48c39cd5858a5718ae096384fe743ecd9..5e9e66b038a364e397265eb89ad3279827e33d81 100644 (file)
@@ -3140,6 +3140,29 @@ bool QtxWorkstack::restoreState( QDataStream& stream )
   return ok;
 }
 
+/*!
+  \brief Set resize mode of all splitters opaque or transparent.
+  \param opaque opaque mode
+*/
+void QtxWorkstack::setOpaqueResize( bool opaque )
+{
+  QList<QSplitter*> splitList;
+  splitters( mySplit, splitList, true );
+  splitList << mySplit;
+  foreach( QSplitter* split, splitList )
+    split->setOpaqueResize( opaque );
+}
+
+/*!
+  \brief Get resize mode of all splitters: opaque (\c true) or transparent (\c false).
+  \return current opaque mode
+*/
+bool QtxWorkstack::opaqueResize() const
+{
+  return mySplit->opaqueResize();
+}
+
+
 /*!
   \fn void QtxWorkstack::windowActivated( QWidget* w )
   \brief Emitted when the workstack's child widget \w is activated.
index 2f365318795b76512fd9cb6c50a921056a381697..cf2725f45721eab3be6966334228d2bcd3237306 100644 (file)
@@ -111,6 +111,9 @@ public:
 
   QByteArray          saveState( int ) const;
   bool                restoreState( const QByteArray&, int );
+  
+  void                setOpaqueResize( bool = true );
+  bool                opaqueResize() const;
 
   void Split( QWidget* wid, const Qt::Orientation o, const SplitType type );
   void Attract( QWidget* wid1, QWidget* wid2, const bool all );