28
28
29
29
#include " qgsproject.h"
30
30
31
+ #include < QKeyEvent>
31
32
#include < QMenu>
32
33
#include < QMessageBox>
33
34
#include < QStandardItemModel>
@@ -68,6 +69,28 @@ void QgsGraduatedSymbolRendererV2Model::addClass( QgsSymbolV2* symbol )
68
69
endInsertRows ();
69
70
}
70
71
72
+ void QgsGraduatedSymbolRendererV2Model::addClass ( QgsRendererRangeV2 range )
73
+ {
74
+ if ( !mRenderer )
75
+ {
76
+ return ;
77
+ }
78
+ int idx = mRenderer ->ranges ().size ();
79
+ beginInsertRows ( QModelIndex (), idx, idx );
80
+ mRenderer ->addClass ( range );
81
+ endInsertRows ();
82
+ }
83
+
84
+ QgsRendererRangeV2 QgsGraduatedSymbolRendererV2Model::rendererRange ( const QModelIndex &index )
85
+ {
86
+ if ( !index .isValid () || !mRenderer || mRenderer ->ranges ().size () <= index .row () )
87
+ {
88
+ return QgsRendererRangeV2 ();
89
+ }
90
+
91
+ return mRenderer ->ranges ().value ( index .row () );
92
+ }
93
+
71
94
Qt::ItemFlags QgsGraduatedSymbolRendererV2Model::flags ( const QModelIndex & index ) const
72
95
{
73
96
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
@@ -606,6 +629,20 @@ QList<int> QgsGraduatedSymbolRendererV2Widget::selectedClasses()
606
629
return rows;
607
630
}
608
631
632
+ QgsRangeList QgsGraduatedSymbolRendererV2Widget::selectedRanges ()
633
+ {
634
+ QgsRangeList selectedRanges;
635
+ QModelIndexList selectedRows = viewGraduated->selectionModel ()->selectedRows ();
636
+ QModelIndexList::const_iterator sIt = selectedRows.constBegin ();
637
+
638
+ const QgsRangeList& ranges = mRenderer ->ranges ();
639
+ for ( ; sIt != selectedRows.constEnd (); ++sIt )
640
+ {
641
+ selectedRanges.append ( mModel ->rendererRange ( *sIt ) );
642
+ }
643
+ return selectedRanges;
644
+ }
645
+
609
646
void QgsGraduatedSymbolRendererV2Widget::rangesDoubleClicked ( const QModelIndex & idx )
610
647
{
611
648
if ( idx.isValid () && idx.column () == 0 )
@@ -622,6 +659,8 @@ void QgsGraduatedSymbolRendererV2Widget::rangesClicked( const QModelIndex & idx
622
659
mRowSelected = idx.row ();
623
660
}
624
661
662
+
663
+
625
664
void QgsGraduatedSymbolRendererV2Widget::changeSelectedSymbols ()
626
665
{
627
666
QItemSelectionModel* m = viewGraduated->selectionModel ();
@@ -778,3 +817,25 @@ void QgsGraduatedSymbolRendererV2Widget::rowsMoved()
778
817
{
779
818
viewGraduated->selectionModel ()->clear ();
780
819
}
820
+
821
+ void QgsGraduatedSymbolRendererV2Widget::keyPressEvent ( QKeyEvent* event )
822
+ {
823
+ if ( !event )
824
+ {
825
+ return ;
826
+ }
827
+
828
+ if ( event->key () == Qt::Key_C && event->modifiers () == Qt::ControlModifier )
829
+ {
830
+ mCopyBuffer .clear ();
831
+ mCopyBuffer = selectedRanges ();
832
+ }
833
+ else if ( event->key () == Qt::Key_V && event->modifiers () == Qt::ControlModifier )
834
+ {
835
+ QgsRangeList::const_iterator rIt = mCopyBuffer .constBegin ();
836
+ for ( ; rIt != mCopyBuffer .constEnd (); ++rIt )
837
+ {
838
+ mModel ->addClass ( *rIt );
839
+ }
840
+ }
841
+ }
0 commit comments