Skip to content

Commit 4a95d35

Browse files
committed
Fix #8590 - Copy and paste for rules
1 parent 02ed712 commit 4a95d35

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
121121
QgsSymbolV2* findSymbolForRange( double lowerBound, double upperBound, const QgsRangeList& ranges ) const;
122122
void refreshSymbolView();
123123

124-
125124
protected:
126125
QgsGraduatedSymbolRendererV2* mRenderer;
127126

src/gui/symbology-ng/qgsrendererv2widget.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ QgsRendererV2Widget::QgsRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* sty
2727
{
2828
contextMenu = new QMenu( "Renderer Options " );
2929

30+
contextMenu->addAction( tr( "Copy" ), this, SLOT( copy() ) );
31+
contextMenu->addAction( tr( "Paste" ), this, SLOT( paste() ) );
32+
3033
contextMenu->addAction( tr( "Change color" ), this, SLOT( changeSymbolColor( ) ) );
3134
contextMenu->addAction( tr( "Change transparency" ), this, SLOT( changeSymbolTransparency() ) );
3235
contextMenu->addAction( tr( "Change output unit" ), this, SLOT( changeSymbolUnit() ) );

src/gui/symbology-ng/qgsrendererv2widget.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ class GUI_EXPORT QgsRendererV2Widget : public QWidget
7171
void changeSymbolWidth();
7272
/**Change marker sizes of selected symbols*/
7373
void changeSymbolSize();
74+
75+
virtual void copy() {}
76+
virtual void paste() {}
77+
7478
};
7579

7680

src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ void QgsRuleBasedRendererV2Widget::currentRuleChanged( const QModelIndex& curren
197197
#include "qgsexpressionbuilderdialog.h"
198198
#include <QDialogButtonBox>
199199
#include <QInputDialog>
200+
#include <QKeyEvent>
201+
#include <QClipboard>
200202

201203
void QgsRuleBasedRendererV2Widget::refineRule( int type )
202204
{
@@ -403,6 +405,26 @@ void QgsRuleBasedRendererV2Widget::restoreSectionWidths()
403405
head->resizeSection( 5, settings.value( path + QString::number( 5 ), 50 ).toInt() );
404406
}
405407

408+
void QgsRuleBasedRendererV2Widget::copy()
409+
{
410+
QModelIndexList indexlist = viewRules->selectionModel()->selectedRows();
411+
QgsDebugMsg(QString("%1").arg(indexlist.count()));
412+
413+
if ( indexlist.isEmpty() )
414+
return;
415+
416+
QMimeData* mime = mModel->mimeData( indexlist );
417+
QApplication::clipboard()->setMimeData(mime);
418+
}
419+
420+
void QgsRuleBasedRendererV2Widget::paste()
421+
{
422+
const QMimeData* mime = QApplication::clipboard()->mimeData();
423+
QModelIndex index = viewRules->selectionModel()->selectedRows().first();
424+
mModel->dropMimeData( mime, Qt::CopyAction, index.row(), index.column(), index.parent() );
425+
}
426+
427+
406428
void QgsRuleBasedRendererV2Widget::countFeatures()
407429
{
408430
if ( !mLayer || !mRenderer || !mRenderer->rootRule() )

src/gui/symbology-ng/qgsrulebasedrendererv2widget.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ class GUI_EXPORT QgsRuleBasedRendererV2Widget : public QgsRendererV2Widget, priv
128128
void restoreSectionWidths();
129129

130130
protected:
131-
132131
void refineRule( int type );
133132
void refineRuleCategoriesGui( const QModelIndexList& index );
134133
void refineRuleRangesGui( const QModelIndexList& index );
@@ -143,6 +142,10 @@ class GUI_EXPORT QgsRuleBasedRendererV2Widget : public QgsRendererV2Widget, priv
143142
QgsRuleBasedRendererV2Model* mModel;
144143

145144
QMenu* mRefineMenu;
145+
146+
protected slots:
147+
void copy();
148+
void paste();
146149
};
147150

148151
///////

0 commit comments

Comments
 (0)