]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Correction of Copy/Paste functionality in TableViewer.
authornds <nds@opencascade.com>
Thu, 10 Apr 2008 11:36:55 +0000 (11:36 +0000)
committernds <nds@opencascade.com>
Thu, 10 Apr 2008 11:36:55 +0000 (11:36 +0000)
src/TableViewer/TableViewer_ViewWindow.cxx
src/TableViewer/TableViewer_ViewWindow.h

index cb72a5f68ce8e2f9c50f6ce35bee55a40c742d99..1f53c9965b6970505add6657f76d0d4cc4abc630 100755 (executable)
@@ -473,6 +473,43 @@ void TableViewer_ViewWindow::pasteData()
   }
 }
 
+/**
+ *
+ */
+bool TableViewer_ViewWindow::canPasteData()
+{
+  QModelIndexList anItems = myTable->getSelectedIndexes();
+  if ( anItems.count() <= 0 || myCopyLst.count() <= 0 )
+    return false;
+
+  bool aCanPaste = true;
+  int aLeftCol = myTable->columnCount(), aTopRow = myTable->rowCount();
+  QModelIndexList::const_iterator anIt = anItems.begin(), aLast = anItems.end();
+  QTableWidgetItem* anItem;
+  int aCol, aRow;
+  for ( ; anIt != aLast; ++anIt ) {
+    aRow = (*anIt).row();
+    aCol = (*anIt).column();
+    if ( !canPaste( aRow, aCol, "" ) )
+      continue;
+    if ( aCol < aLeftCol )
+      aLeftCol = aCol;
+    if ( aRow < aTopRow )
+      aTopRow = aRow;
+  }
+  QList<TableDataItem>::const_iterator aCopyIt = myCopyLst.begin(),
+                                       aCopyLast = myCopyLst.end();
+  //int aCol, aRow;
+  TableDataItem aCopyItem;
+  for ( ; aCopyIt != aCopyLast && aCanPaste; aCopyIt++ ) {
+    aCopyItem = *aCopyIt;
+    aCol = aCopyItem.myCol+aLeftCol;
+    aRow = aCopyItem.myRow+aTopRow;
+    aCanPaste = canPaste( aRow, aCol, aCopyItem.myText );
+  }
+  return aCanPaste;
+}
+
 void TableViewer_ViewWindow::exportTableData( Handle(HTMLService_HTMLTable)& table,
                                               const ContentType type,
                                               const int rowOffset, const int colOffset )
index a598e42f830e58019f6e1f710862de8ce82c4617..6441844f70943489a20024be1a4dd541289d210f 100755 (executable)
@@ -56,6 +56,7 @@ public:
 
   void                copyData();
   void                pasteData();
+  bool                canPasteData();
 
 protected:
   typedef enum { VerticalHeader, HorizontalHeader, Cells } ContentType;
@@ -86,10 +87,10 @@ protected:
   QColor              backgroundColor( const ContentType, const int, const int ) const;
 
 protected slots:
-  virtual void selectionChanged();
+  virtual void        selectionChanged();
   void                onActivated();
 
-private:
+public:
   typedef struct {
     QString myText;
     QColor  myBgCol;