[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