]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
New method appends header menu acions.
authornds <nds@opencascade.com>
Mon, 10 Dec 2007 10:43:07 +0000 (10:43 +0000)
committernds <nds@opencascade.com>
Mon, 10 Dec 2007 10:43:07 +0000 (10:43 +0000)
src/Qtx/QtxTreeView.cxx
src/Qtx/QtxTreeView.h

index 09100e5a7937dc0204751d1ebdc6cf399c6b5fca..001ebd6d3d7fbda1a9565e88f4141a9b7cdd4488 100644 (file)
@@ -41,11 +41,15 @@ public:
   void     setSortMenuEnabled( const bool );
   bool     sortMenuEnabled() const;
 
+  void     addMenuAction( QAction* );
+
 protected:
   void     contextMenuEvent( QContextMenuEvent* );
 
 private:
-  bool     myEnableSortMenu;
+  typedef QMap<int, QAction*> ActionsMap;
+  bool       myEnableSortMenu;
+  ActionsMap myActions;
 };
 
 /*!
@@ -88,6 +92,21 @@ bool QtxTreeView::Header::sortMenuEnabled() const
   return myEnableSortMenu;
 }
 
+/*
+  \brief Appends action to header popup menu.
+  \param action the action
+  \internal
+*/
+void QtxTreeView::Header::addMenuAction( QAction* action )
+{
+  bool aFind = false;
+  ActionsMap::const_iterator anIt = myActions.begin(), aLast = myActions.end();
+  for ( ; anIt != aLast && !aFind; anIt++ )
+    aFind = anIt.value() == action;
+  if ( !aFind )
+    myActions[myActions.size()] = action;
+}
+
 /*!
   \brief Customize context menu event.
   \internal
@@ -127,6 +146,12 @@ void QtxTreeView::Header::contextMenuEvent( QContextMenuEvent* e )
     sortAction->setCheckable( true );
     sortAction->setChecked( isSortIndicatorShown() );
   }
+  if ( myActions.size() > 0 ) {
+    menu.addSeparator();
+    ActionsMap::const_iterator anIt = myActions.begin(), aLast = myActions.end();
+    for ( ; anIt != aLast; anIt++ )
+      menu.addAction( anIt.value() );
+  }
   if ( !menu.isEmpty() ) {
     Qtx::simplifySeparators( &menu );
     QAction* a = menu.exec( e->globalPos() );
@@ -271,6 +296,17 @@ bool QtxTreeView::sortMenuEnabled() const
   return h ? h->sortMenuEnabled() : false;
 }
 
+/*
+  \brief Appends header menu action.
+  \param action the action
+*/
+void QtxTreeView::addHeaderMenuAction( QAction* action )
+{
+  Header* h = dynamic_cast<Header*>( header() );
+  if ( h )
+    h->addMenuAction( action );
+}
+
 /*
   \brief Called when the header section is clicked.
   \param column header column index
index 4d5935f8de30cc7596c37f6f55c5884e4c343e8e..b11a31c40782c0fbe3b4883118a8c31da6ec1b0a 100644 (file)
@@ -51,6 +51,8 @@ public:
   void     setSortMenuEnabled( const bool );
   bool     sortMenuEnabled() const;
 
+  void     addHeaderMenuAction( QAction* );
+
 protected slots:
   void     onHeaderClicked( int );
   void     selectionChanged( const QItemSelection&, const QItemSelection& );