[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdevplatform] e08b99c: Enable multiline (continous) selection in the
From:       Mantia Andras <amantia () kde ! org>
Date:       2010-07-05 22:24:03
Message-ID: 201007052224.o65MO3o1019398 () kore ! kollide ! net
[Download RAW message or body]

commit e08b99c3de74079c9107b0881fe6b50591094a97
Author: Mantia Andras <amantia@kde.org>
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 <QtGui/QScrollBar>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QStackedWidget>
+#include <QtGui/QApplication>
+#include <QtGui/QClipboard>
 #include <kmenu.h>
 #include <kaction.h>
 #include <kdebug.h>
@@ -37,6 +39,7 @@
 #include <klocale.h>
 #include <kicon.h>
 #include <ktabwidget.h>
+#include <kstandardaction.h>
 
 #include <outputview/ioutputviewmodel.h>
 #include <util/focusedtreeview.h>
@@ -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<QAbstractItemView*>(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;
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic