commit e08b99c3de74079c9107b0881fe6b50591094a97 Author: Mantia Andras Date: Tue Jul 6 01:38:21 2010 +0300 Enable multiline (continous) selection in the output views and add a Copy action, so you can copy from them (eg. from the Run/Debug/Build views). diff --git a/plugins/standardoutputview/outputwidget.cpp b/plugins/standardoutputview/outputwidget.cpp index c18949c..c073d71 100644 --- a/plugins/standardoutputview/outputwidget.cpp +++ b/plugins/standardoutputview/outputwidget.cpp @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include #include #include @@ -37,6 +39,7 @@ #include #include #include +#include #include #include @@ -74,6 +77,10 @@ OutputWidget::OutputWidget(QWidget* parent, ToolViewData* tvdata) addAction(nextAction); } + copyAction = KStandardAction::copy(this); + copyAction->setShortcut(KShortcut()); + connect(copyAction, SIGNAL(triggered()), SLOT(copySelection())); + addAction(copyAction); activateOnSelect = new KToggleAction( KIcon(), i18n("Select activated Item"), this ); addAction(activateOnSelect); activateOnSelect->setChecked( true ); @@ -102,6 +109,7 @@ OutputWidget::OutputWidget(QWidget* parent, ToolViewData* tvdata) void OutputWidget::addOutput( int id ) { QTreeView* listview = createListView(id); + listview->setSelectionMode(QAbstractItemView::ContiguousSelection); setCurrentWidget( listview ); connect( data->outputdata.value(id), SIGNAL(modelChanged(int)), this, SLOT(changeModel(int))); connect( data->outputdata.value(id), SIGNAL(delegateChanged(int)), this, SLOT(changeDelegate(int))); @@ -432,4 +440,24 @@ void OutputWidget::scrollToIndex( const QModelIndex& idx ) view->scrollTo( idx ); } +void OutputWidget::copySelection() +{ + QWidget* widget = currentWidget(); + if( !widget ) + return; + QAbstractItemView *view = dynamic_cast(widget); + if( !view ) + return; + + QClipboard *cb = QApplication::clipboard(); + QModelIndexList indexes = view->selectionModel()->selectedRows(); + QString content; + Q_FOREACH( QModelIndex index, indexes) { + content += view->model()->data(index).toString() + "\n"; + } + cb->setText(content); +} + + + #include "outputwidget.moc" diff --git a/plugins/standardoutputview/outputwidget.h b/plugins/standardoutputview/outputwidget.h index aa125c1..f316a08 100644 --- a/plugins/standardoutputview/outputwidget.h +++ b/plugins/standardoutputview/outputwidget.h @@ -60,6 +60,7 @@ private slots: void nextOutput(); void previousOutput(); void rowsInserted(const QModelIndex&, int, int); + void copySelection(); private: QTreeView* createListView(int id); @@ -75,6 +76,7 @@ private: QToolButton* m_closeButton; KAction* nextAction; KAction* previousAction; + KAction* copyAction; KToggleAction* activateOnSelect; KToggleAction* focusOnSelect; };