]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
add removeSelected - to remove selected rows or columns
authorptv <ptv@opencascade.com>
Thu, 5 Oct 2006 12:07:22 +0000 (12:07 +0000)
committerptv <ptv@opencascade.com>
Thu, 5 Oct 2006 12:07:22 +0000 (12:07 +0000)
src/Qtx/QtxTable.cxx
src/Qtx/QtxTable.h

index 6d110e63fc7791b7a17335e744c4caea47251725..9d4cc49c21264625089a6e8523fd730f6e4e865e 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef QT_NO_TABLE
 
 #include <qlineedit.h>
+#include <qmemarray.h>
 
 /*!
   Constructor
@@ -475,4 +476,40 @@ void QtxTable::updateHeaderEditor()
   myHeaderEditor->move( r.topLeft() );
 }
 
+/*!
+  Remove selected rows or columns if any of cell selected in it
+*/
+void QtxTable::removeSelected( const bool row )
+{
+  QValueList<int> idsList;
+  QMap<int, int> idMap;
+  int i = 0;
+  for ( int nb = numSelections(); i < nb; i++ )
+  {
+    QTableSelection sel = selection( i );
+    int minId = row ? sel.topRow() : sel.leftCol();
+    int maxId = row ? sel.bottomRow() : sel.rightCol();
+    for ( ; minId <= maxId; minId++ )
+      if ( !idMap.contains( minId ) )
+      {
+        idMap[ minId ] = 1;
+        idsList.append( minId );
+      }
+  }
+  if ( idMap.isEmpty() )
+    return;
+
+  qHeapSort( idsList );
+  QMemArray<int> idsArr( idsList.count() );
+  QValueList<int>::const_iterator it = idsList.begin();
+  QValueList<int>::const_iterator itEnd = idsList.end();
+  for ( i = 0; it != itEnd; ++it, ++i )
+    idsArr[ i ] = *it;
+
+  if ( row )
+    removeRows ( idsArr );
+  else
+    removeColumns ( idsArr );
+}
+
 #endif
index a7d4f3ebf91f05c8eb90b1b0506666eabb66ab71..dd38208c75bb0e349e5c4a053e0eb19b6f79fd25 100644 (file)
@@ -46,6 +46,8 @@ public:
   bool             editHeader( Orientation, const int );
   void             endEditHeader( const bool = true );
 
+  void             removeSelected( const bool row = true );
+
   virtual bool     eventFilter( QObject*, QEvent* );
 
   virtual void     setNumRows( int );