]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Harmonisation of GUI.
authormzn <mzn@opencascade.com>
Thu, 23 Oct 2014 09:26:35 +0000 (09:26 +0000)
committermzn <mzn@opencascade.com>
Thu, 23 Oct 2014 09:26:35 +0000 (09:26 +0000)
src/HYDROGUI/HYDROGUI_PriorityWidget.cxx
src/HYDROGUI/HYDROGUI_PriorityWidget.h

index f842733bad178838730b735016613710340e9610..fe011338dd2644189f5b1cc74cb6282b5467a70c 100644 (file)
 #include <SUIT_MessageBox.h>
 
 #include <QComboBox>
+#include <QHeaderView>
 #include <QLayout>
-#include <QStyledItemDelegate>
 #include <QTableView>
 #include <QToolButton>
 
 
-/**
-  Custom item delegate (combobox)
- */
-class HYDROGUI_PriorityWidget::Delegate : public QStyledItemDelegate
-{
-public:
-  Delegate( QObject* theParent = 0 );
-  
-  QWidget* createEditor( QWidget*, const QStyleOptionViewItem&,
-                         const QModelIndex& ) const;
-  
-  void setEditorData( QWidget*, const QModelIndex& ) const;
-  void setModelData( QWidget*, QAbstractItemModel*, const QModelIndex& ) const;
-};
-
 /**
   Constructor.
   @param theParent the parent object
@@ -73,11 +58,12 @@ QWidget* HYDROGUI_PriorityWidget::Delegate::createEditor(
       aComboBox->addItem( aText, aMap.value( aText ).toInt() );
     }
   } else if ( theIndex.column() == 0 || theIndex.column() ==  2 ) {
-    QStringList anItems = theIndex.data( Qt::UserRole ).toStringList();
     QStringList anObjNames = theIndex.data( Qt::UserRole ).toStringList();
     aComboBox->addItems( anObjNames );
   }
   
+  connect( aComboBox, SIGNAL( activated( int ) ), this, SLOT( finishEditing() ) );
+
   return aComboBox;
 }
 
@@ -126,6 +112,18 @@ void HYDROGUI_PriorityWidget::Delegate::setModelData(
   }
 }
 
+/**
+ Emit signal indicating that the user has finished editing.
+ */
+void HYDROGUI_PriorityWidget::Delegate::finishEditing()
+{
+  QWidget* anEditor = qobject_cast<QWidget*>( sender() );
+  if ( anEditor ) {
+    emit commitData( anEditor );
+    emit closeEditor( anEditor );
+  }
+}
+
 
 /**
   Constructor.
@@ -150,12 +148,23 @@ HYDROGUI_PriorityWidget::HYDROGUI_PriorityWidget( QWidget* theParent )
   // Table view
   myTable = new QTableView( this );
   myTable->setItemDelegate( new Delegate( this ) );
-  myTable->setEditTriggers( QAbstractItemView::DoubleClicked   | QAbstractItemView::SelectedClicked );
-
+  myTable->setEditTriggers( QAbstractItemView::DoubleClicked |
+                            QAbstractItemView::SelectedClicked |
+                            QAbstractItemView::EditKeyPressed );
+  
   // Set the custom model
   HYDROGUI_PriorityTableModel* aModel = new HYDROGUI_PriorityTableModel();
   myTable->setModel( aModel );
 
+  // Set resize mode
+  myTable->horizontalHeader()->setStretchLastSection( false);
+  myTable->horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
+  myTable->horizontalHeader()->setResizeMode( 1, QHeaderView::ResizeToContents );
+  myTable->horizontalHeader()->setResizeMode( 2, QHeaderView::Stretch );
+  myTable->horizontalHeader()->setResizeMode( 3, QHeaderView::ResizeToContents );
+
+  myTable->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents );
   // Layout
   // buttons
   QHBoxLayout* aButtonsLayout = new QHBoxLayout();
@@ -301,9 +310,6 @@ void HYDROGUI_PriorityWidget::updateControls()
     myAdd->setEnabled( aModel->canCreateNewRule() );
     bool isTableNotEmpty = aModel->rowCount() > 0;
     myClear->setEnabled( isTableNotEmpty );
-    if ( isTableNotEmpty ) {
-      myTable->resizeColumnsToContents();
-    }
   }
   onSelectionChanged();
 }
@@ -312,5 +318,5 @@ void HYDROGUI_PriorityWidget::updateControls()
  Show error message.
  */
 void HYDROGUI_PriorityWidget::onShowError( const QString& theMsg ) {
-  SUIT_MessageBox::critical( this, tr( "ERROR" ), theMsg );
+  SUIT_MessageBox::warning( this, tr( "INCORRECT_INPUT" ), theMsg );
 }
\ No newline at end of file
index 39b45a3b2112beb67fc5b42b06fbd9eb29df1780..4162327c32a3bfa37fc067a19cf403751b5aed35 100644 (file)
@@ -28,6 +28,7 @@
 #include <HYDROData_Object.h>
 #include <HYDROData_PriorityQueue.h>
 
+#include <QStyledItemDelegate>
 #include <QWidget>
 
 class QTableView;
@@ -74,4 +75,25 @@ private:
   QToolButton* myClear;  ///< the clear all rules button
 };
 
+/** 
+ * \class HYDROGUI_PriorityWidget::Delegate
+ * \brief The class representing custom item delegate (combobox)
+ */
+class HYDROGUI_PriorityWidget::Delegate : public QStyledItemDelegate
+{
+  Q_OBJECT
+
+public:
+  Delegate( QObject* theParent = 0 );
+  
+  QWidget* createEditor( QWidget*, const QStyleOptionViewItem&,
+                         const QModelIndex& ) const;
+  
+  void setEditorData( QWidget*, const QModelIndex& ) const;
+  void setModelData( QWidget*, QAbstractItemModel*, const QModelIndex& ) const;
+
+protected slots:
+  void finishEditing();
+};
+
 #endif