From ff73f566925f8d0c4d81e3878dd412acabc70c79 Mon Sep 17 00:00:00 2001 From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Tue, 11 May 2010 15:57:40 +0000 Subject: [PATCH] New SequenceViewer, improved copy behavior git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2244 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/gui/src/sequence/sequence_viewer.cc | 33 ++++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc index 4164bbeec..b4e4a8cc3 100644 --- a/modules/gui/src/sequence/sequence_viewer.cc +++ b/modules/gui/src/sequence/sequence_viewer.cc @@ -186,18 +186,35 @@ void SequenceViewerV2::MouseWheelEvent(QWheelEvent* event) void SequenceViewerV2::CopyEvent(QKeyEvent* event) { - const QModelIndexList& list = seq_table_view_->selectionModel()->selectedIndexes(); + QItemSelectionModel* model = seq_table_view_->selectionModel(); + const QModelIndexList& list = model->selectedIndexes(); if(list.size()>0){ QString clipboard_string; - - QVarLengthArray<QString> clipboard_array(model_->rowCount()); + QSet<int> rows; + int min_col=0; + int max_col=0; for(int i = 0; i < list.size(); i++){ - const QModelIndex& index = list[i]; - clipboard_array[index.row()].append(model_->data(index,Qt::DisplayRole).toString()); + if(list[i].column()>max_col){ + max_col = list[i].column(); + } + if(list[i].column()<min_col){ + min_col = list[i].column(); + } + rows.insert(list[i].row()); } - for(int i = 0; i < clipboard_array.size(); i++){ - if(clipboard_array[i].size()>0){ - clipboard_string.append(clipboard_array[i]+"\n"); + + for(int i = 0; i < model_->rowCount(); i++){ + if(rows.contains(i)){ + for(int j=min_col; j<=max_col; j++){ + const QModelIndex& index = model_->index(i,j); + if(model->isSelected(index)){ + clipboard_string.append(model_->data(index,Qt::DisplayRole).toString()); + } + else{ + clipboard_string.append('-'); + } + } + clipboard_string.append("\n"); } } QApplication::clipboard()->setText(clipboard_string); -- GitLab