[QGIS Commit] r11599 - in trunk/qgis/src: app core ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Sep 8 17:25:46 EDT 2009


Author: jef
Date: 2009-09-08 17:25:46 -0400 (Tue, 08 Sep 2009)
New Revision: 11599

Modified:
   trunk/qgis/src/app/qgsoptions.cpp
   trunk/qgis/src/core/qgsvectorlayer.cpp
   trunk/qgis/src/core/qgsvectorlayer.h
   trunk/qgis/src/ui/qgsoptionsbase.ui
Log:
[FEATURE] configurable vertex marker size (fixes #1922)

Modified: trunk/qgis/src/app/qgsoptions.cpp
===================================================================
--- trunk/qgis/src/app/qgsoptions.cpp	2009-09-08 17:51:43 UTC (rev 11598)
+++ trunk/qgis/src/app/qgsoptions.cpp	2009-09-08 21:25:46 UTC (rev 11599)
@@ -256,6 +256,7 @@
   {
     mMarkerStyleComboBox->setCurrentIndex( mMarkerStyleComboBox->findText( tr( "None" ) ) );
   }
+  mMarkerSizeSpinBox->setValue( settings.value( "/qgis/digitizing/marker_size", 7 ).toInt()*2+1 );
 
   chkDisableAttributeValuesDlg->setChecked( settings.value( "/qgis/digitizing/disable_enter_attribute_values_dialog", false ).toBool() );
 
@@ -483,6 +484,7 @@
   {
     settings.setValue( "/qgis/digitizing/marker_style", "None" );
   }
+  settings.setValue( "/qgis/digitizing/marker_size", (mMarkerSizeSpinBox->value()-1)/2 );
 
   settings.setValue( "/qgis/digitizing/disable_enter_attribute_values_dialog", chkDisableAttributeValuesDlg->isChecked() );
 

Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2009-09-08 17:51:43 UTC (rev 11598)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2009-09-08 21:25:46 UTC (rev 11599)
@@ -438,7 +438,7 @@
     std::vector<double>::const_iterator yIt;
     for ( xIt = x.begin(), yIt = y.begin(); xIt != x.end(); ++xIt, ++yIt )
     {
-      drawVertexMarker(( int )( *xIt ), ( int )( *yIt ), *p, mCurrentVertexMarkerType );
+      drawVertexMarker(( int )( *xIt ), ( int )( *yIt ), *p, mCurrentVertexMarkerType, mCurrentVertexMarkerSize );
     }
   }
 
@@ -631,7 +631,7 @@
       for ( int i = 0; i < path.elementCount(); ++i )
       {
         const QPainterPath::Element & e = path.elementAt( i );
-        drawVertexMarker(( int )e.x, ( int )e.y, *p, mCurrentVertexMarkerType );
+        drawVertexMarker(( int )e.x, ( int )e.y, *p, mCurrentVertexMarkerType, mCurrentVertexMarkerSize );
       }
     }
 
@@ -668,6 +668,7 @@
     QImage marker;
     //vertex marker type for selection
     QgsVectorLayer::VertexMarkerType vertexMarker = QgsVectorLayer::NoMarker;
+    int vertexMarkerSize = 7;
 
     if ( mEditable )
     {
@@ -675,6 +676,7 @@
       deleteCachedGeometries();
       mCachedGeometriesRect = rendererContext.extent();
       vertexMarker = currentVertexMarkerType();
+      vertexMarkerSize = currentVertexMarkerSize();
       mVertexMarkerOnlyForSelection = settings.value( "/qgis/digitizing/marker_only_for_selected", false ).toBool();
     }
 
@@ -717,6 +719,7 @@
         bool sel = mSelectedFeatureIds.contains( fet.id() );
 
         mCurrentVertexMarkerType = QgsVectorLayer::NoMarker;
+        mCurrentVertexMarkerSize = 7;
 
         if ( mEditable )
         {
@@ -726,6 +729,7 @@
           if ( !mVertexMarkerOnlyForSelection || sel )
           {
             mCurrentVertexMarkerType = vertexMarker;
+            mCurrentVertexMarkerSize = vertexMarkerSize;
           }
         }
 
@@ -777,18 +781,16 @@
   mCachedGeometriesRect = QgsRectangle();
 }
 
-void QgsVectorLayer::drawVertexMarker( int x, int y, QPainter& p, QgsVectorLayer::VertexMarkerType type )
+void QgsVectorLayer::drawVertexMarker( int x, int y, QPainter& p, QgsVectorLayer::VertexMarkerType type, int m )
 {
   if ( type == QgsVectorLayer::SemiTransparentCircle )
   {
     p.setPen( QColor( 50, 100, 120, 200 ) );
     p.setBrush( QColor( 200, 200, 210, 120 ) );
-    p.drawEllipse( QRectF( x - 7, y - 7, 14, 14 ) );
+    p.drawEllipse( x-m, y-m, m*2+1, m*2+1 );
   }
   else if ( type == QgsVectorLayer::Cross )
   {
-    int size = 15;
-    int m = ( size - 1 ) / 2;
     p.setPen( QColor( 255, 0, 0 ) );
     p.drawLine( x - m, y + m, x + m, y - m );
     p.drawLine( x - m, y - m, x + m, y + m );
@@ -3464,6 +3466,12 @@
   }
 }
 
+int QgsVectorLayer::currentVertexMarkerSize()
+{
+  QSettings settings;
+  return settings.value( "/qgis/digitizing/marker_size", 7 ).toInt();
+}
+
 void QgsVectorLayer::drawFeature( QgsRenderContext &renderContext,
                                   QgsFeature& fet,
                                   QImage * marker )

Modified: trunk/qgis/src/core/qgsvectorlayer.h
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.h	2009-09-08 17:51:43 UTC (rev 11598)
+++ trunk/qgis/src/core/qgsvectorlayer.h	2009-09-08 21:25:46 UTC (rev 11599)
@@ -578,7 +578,7 @@
     void deleteCachedGeometries();
 
     /** Draws a vertex symbol at (screen) coordinates x, y. (Useful to assist vertex editing.) */
-    void drawVertexMarker( int x, int y, QPainter& p, QgsVectorLayer::VertexMarkerType type );
+    void drawVertexMarker( int x, int y, QPainter& p, QgsVectorLayer::VertexMarkerType type, int vertexSize );
 
     /**Snaps to a geometry and adds the result to the multimap if it is within the snapping result
      @param startPoint start point of the snap
@@ -597,6 +597,9 @@
     /**Reads vertex marker type from settings*/
     QgsVectorLayer::VertexMarkerType currentVertexMarkerType();
 
+    /**Reads vertex marker size from settings*/
+    int currentVertexMarkerSize();
+
     /**Update feature with uncommited attribute updates*/
     void updateFeatureAttributes( QgsFeature &f );
 
@@ -700,6 +703,9 @@
     /**The current type of editing marker*/
     QgsVectorLayer::VertexMarkerType mCurrentVertexMarkerType;
 
+    /** The current size of editing marker */
+    int mCurrentVertexMarkerSize;
+
     /**Flag if the vertex markers should be drawn only for selection (true) or for all features (false)*/
     bool mVertexMarkerOnlyForSelection;
 

Modified: trunk/qgis/src/ui/qgsoptionsbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsoptionsbase.ui	2009-09-08 17:51:43 UTC (rev 11598)
+++ trunk/qgis/src/ui/qgsoptionsbase.ui	2009-09-08 21:25:46 UTC (rev 11599)
@@ -38,7 +38,7 @@
    <item row="0" column="0">
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>4</number>
      </property>
      <widget class="QWidget" name="tabGeneral">
       <attribute name="title">
@@ -859,6 +859,39 @@
             </property>
            </widget>
           </item>
+          <item row="2" column="2">
+           <widget class="QSpinBox" name="mMarkerSizeSpinBox">
+            <property name="layoutDirection">
+             <enum>Qt::LeftToRight</enum>
+            </property>
+            <property name="minimum">
+             <number>3</number>
+            </property>
+            <property name="singleStep">
+             <number>2</number>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0">
+           <widget class="QLabel" name="label_6">
+            <property name="text">
+             <string>Marker size</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <spacer name="horizontalSpacer">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
          </layout>
         </widget>
        </item>



More information about the QGIS-commit mailing list