Salome HOME
SIMAN removal
[modules/gui.git] / src / Qtx / QtxPagePrefMgr.cxx
index 8ce69e23d949f06dd970531834fb2a1996e1c166..c419ff90b397075e9860eb759a5cbe029a8b83f3 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // 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.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -47,6 +47,7 @@
 #include <QDateTimeEdit>
 #include <QStackedWidget>
 #include <QSlider>
+#include <QScrollArea>
 
 #include <stdio.h>
 
@@ -1198,7 +1199,7 @@ void QtxPagePrefTabsItem::updateTabs()
   \param param resource file parameter associated with the preference item
 */
 QtxPagePrefFrameItem::QtxPagePrefFrameItem( const QString& title, QtxPreferenceItem* parent,
-                                            const QString& sect, const QString& param )
+                                            const QString& sect, const QString& param, const bool scrollable )
 : QtxPagePrefItem( title, parent, sect, param )
 {
   QWidget* main = new QWidget();
@@ -1207,7 +1208,15 @@ QtxPagePrefFrameItem::QtxPagePrefFrameItem( const QString& title, QtxPreferenceI
   base->setSpacing( 0 );
 
   base->addWidget( myBox = new QtxGridBox( 1, Qt::Horizontal, main, 5, 5 ) );
-  base->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding ) );
+  base->addStretch();
+
+  if ( scrollable ) {
+    QScrollArea* scroll = new QScrollArea();
+    scroll->setWidget( main );
+    scroll->setWidgetResizable( true );
+    base->layout()->setSizeConstraint(QLayout::SetMinAndMaxSize);
+    main = scroll;
+  }
 
   setWidget( main );
 }
@@ -1334,7 +1343,10 @@ bool QtxPagePrefFrameItem::stretch() const
 void QtxPagePrefFrameItem::setStretch( const bool on )
 {
   QSpacerItem* s = 0;
-  QLayout* l = widget() ? widget()->layout() : 0;
+  QWidget* w = widget();
+  if ( qobject_cast<QScrollArea*>( w ) )
+    w = qobject_cast<QScrollArea*>( w )->widget();
+  QLayout* l = w ? w->layout() : 0;
   for ( int i = 0; l && i < l->count() && !s; i++ )
     s = l->itemAt( i )->spacerItem();
 
@@ -2009,7 +2021,7 @@ QtxPagePrefCheckItem::QtxPagePrefCheckItem( const QString& title, QtxPreferenceI
 : QtxPagePrefItem( title, parent, sect, param )
 {
   myCheck = new QCheckBox( title );
-  myCheck->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myCheck->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
   setWidget( myCheck );
 }