remove cross grid type and set default marker to cross; remove annotation position option

This commit is contained in:
Etienne Tourigny 2012-06-25 12:30:24 -03:00
parent 52d9f3a3a4
commit dce914d15f
4 changed files with 161 additions and 194 deletions

View File

@ -28,6 +28,7 @@
#include "qgsproject.h"
#include "qgssymbollayerv2utils.h" //for pointOnLineWithDistance
#include "qgssymbolv2.h" //for symbology
#include "qgsmarkersymbollayerv2.h"
#include "qgsrendercontext.h"
#include "qgsmapcanvas.h"
#include "qgsmaprenderer.h"
@ -100,15 +101,16 @@ void QgsDecorationGrid::projectRead()
mMapUnits = ( QGis::UnitType ) QgsProject::instance()->readNumEntry( mNameConfig, "/MapUnits",
QGis::UnknownUnit );
mGridStyle = ( GridStyle ) QgsProject::instance()->readNumEntry( mNameConfig, "/Style",
QgsDecorationGrid::Solid );
QgsDecorationGrid::Line );
mGridIntervalX = QgsProject::instance()->readDoubleEntry( mNameConfig, "/IntervalX", 10 );
mGridIntervalY = QgsProject::instance()->readDoubleEntry( mNameConfig, "/IntervalY", 10 );
mGridOffsetX = QgsProject::instance()->readDoubleEntry( mNameConfig, "/OffsetX", 0 );
mGridOffsetY = QgsProject::instance()->readDoubleEntry( mNameConfig, "/OffsetY", 0 );
mCrossLength = QgsProject::instance()->readDoubleEntry( mNameConfig, "/CrossLength", 3 );
// mCrossLength = QgsProject::instance()->readDoubleEntry( mNameConfig, "/CrossLength", 3 );
mShowGridAnnotation = QgsProject::instance()->readBoolEntry( mNameConfig, "/ShowAnnotation", false );
mGridAnnotationPosition = ( GridAnnotationPosition ) QgsProject::instance()->readNumEntry( mNameConfig,
"/AnnotationPosition", 0 );
// mGridAnnotationPosition = ( GridAnnotationPosition ) QgsProject::instance()->readNumEntry( mNameConfig,
// "/AnnotationPosition", 0 );
mGridAnnotationPosition = InsideMapFrame; // don't allow outside frame, doesn't make sense
mGridAnnotationDirection = ( GridAnnotationDirection ) QgsProject::instance()->readNumEntry( mNameConfig,
"/AnnotationDirection", 0 );
QString fontStr = QgsProject::instance()->readEntry( mNameConfig, "/AnnotationFont", "" );
@ -152,7 +154,14 @@ void QgsDecorationGrid::projectRead()
mMarkerSymbol = dynamic_cast<QgsMarkerSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol( elem ) );
}
if ( ! mMarkerSymbol )
mMarkerSymbol = new QgsMarkerSymbolV2();
{
// set default symbol : cross with width=20
QgsSymbolLayerV2List symbolList;
symbolList << new QgsSimpleMarkerSymbolLayerV2( "cross", DEFAULT_SIMPLEMARKER_COLOR,
DEFAULT_SIMPLEMARKER_BORDERCOLOR, 20, 0 );
mMarkerSymbol = new QgsMarkerSymbolV2( symbolList );
// mMarkerSymbol = new QgsMarkerSymbolV2();
}
}
void QgsDecorationGrid::saveToProject()
@ -165,10 +174,10 @@ void QgsDecorationGrid::saveToProject()
QgsProject::instance()->writeEntry( mNameConfig, "/IntervalY", mGridIntervalY );
QgsProject::instance()->writeEntry( mNameConfig, "/OffsetX", mGridOffsetX );
QgsProject::instance()->writeEntry( mNameConfig, "/OffsetX", mGridOffsetY );
QgsProject::instance()->writeEntry( mNameConfig, "/CrossLength", mCrossLength );
// QgsProject::instance()->writeEntry( mNameConfig, "/CrossLength", mCrossLength );
// missing mGridPen, but should use styles anyway
QgsProject::instance()->writeEntry( mNameConfig, "/ShowAnnotation", mShowGridAnnotation );
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationPosition", ( int ) mGridAnnotationPosition );
// QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationPosition", ( int ) mGridAnnotationPosition );
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationDirection", ( int ) mGridAnnotationDirection );
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationFont", mGridAnnotationFont.toString() );
QgsProject::instance()->writeEntry( mNameConfig, "/AnnotationFrameDistance", mAnnotationFrameDistance );
@ -184,7 +193,7 @@ void QgsDecorationGrid::saveToProject()
// FIXME this works, but XML will not be valid as < is replaced by &lt;
QgsProject::instance()->writeEntry( mNameConfig, "/LineSymbol", doc.toString() );
}
if ( mLineSymbol )
if ( mMarkerSymbol )
{
doc.setContent( QString( "" ) );
elem = QgsSymbolLayerV2Utils::saveSymbol( "marker symbol", mMarkerSymbol, doc );
@ -223,7 +232,7 @@ void QgsDecorationGrid::render( QPainter * p )
// p->setClipRect( thisPaintRect );
//simpler approach: draw vertical lines first, then horizontal ones
if ( mGridStyle == QgsDecorationGrid::Solid )
if ( mGridStyle == QgsDecorationGrid::Line )
{
if ( ! mLineSymbol )
return;
@ -252,6 +261,7 @@ void QgsDecorationGrid::render( QPainter * p )
mLineSymbol->stopRender( context );
}
#if 0
else if ( mGridStyle == QgsDecorationGrid::Cross )
{
QPointF intersectionPoint, crossEnd1, crossEnd2;
@ -299,6 +309,7 @@ void QgsDecorationGrid::render( QPainter * p )
p->drawLine( hIt->second.p2(), crossEnd1 );
}
}
#endif
else //marker
{
if ( ! mMarkerSymbol )
@ -308,7 +319,7 @@ void QgsDecorationGrid::render( QPainter * p )
context.setPainter( p );
mMarkerSymbol->startRender( context, 0 );
QPointF intersectionPoint, crossEnd1, crossEnd2;
QPointF intersectionPoint;
for ( ; vIt != verticalLines.constEnd(); ++vIt )
{
//test for intersection with every horizontal line

View File

@ -40,9 +40,9 @@ class QgsDecorationGrid: public QgsDecorationItem
enum GridStyle
{
Solid = 0, //solid lines
Cross = 1, //only draw line crossings
Marker = 2 //user-defined marker
Line = 0, //solid lines
// Cross = 1, //only draw line crossings
Marker = 1 //user-defined marker
};
enum GridAnnotationPosition
@ -113,8 +113,8 @@ class QgsDecorationGrid: public QgsDecorationItem
GridAnnotationDirection gridAnnotationDirection() const {return mGridAnnotationDirection;}
/**Sets length of the cros segments (if grid style is cross) */
void setCrossLength( double l ) {mCrossLength = l;}
double crossLength() {return mCrossLength;}
/* void setCrossLength( double l ) {mCrossLength = l;} */
/* double crossLength() {return mCrossLength;} */
/**Set symbol that is used to draw grid lines. Takes ownership*/
void setLineSymbol( QgsLineSymbolV2* symbol );
@ -164,7 +164,7 @@ class QgsDecorationGrid: public QgsDecorationItem
Top
};
/**Solid or crosses*/
/** Line or Symbol */
GridStyle mGridStyle;
/**Grid line interval in x-direction (map units)*/
double mGridIntervalX;
@ -189,7 +189,7 @@ class QgsDecorationGrid: public QgsDecorationItem
/**Annotation can be horizontal / vertical or different for axes*/
GridAnnotationDirection mGridAnnotationDirection;
/**The length of the cross sides for mGridStyle Cross*/
double mCrossLength;
/* double mCrossLength; */
QgsLineSymbolV2* mLineSymbol;
QgsMarkerSymbolV2* mMarkerSymbol;

View File

@ -43,11 +43,11 @@ QgsDecorationGridDialog::QgsDecorationGridDialog( QgsDecorationGrid& deco, QWidg
// mXMinLineEdit->setValidator( new QDoubleValidator( mXMinLineEdit ) );
mGridTypeComboBox->insertItem( QgsDecorationGrid::Solid, tr( "Lines" ) );
mGridTypeComboBox->insertItem( QgsDecorationGrid::Cross, tr( "Cross" ) );
mGridTypeComboBox->insertItem( QgsDecorationGrid::Line, tr( "Line" ) );
// mGridTypeComboBox->insertItem( QgsDecorationGrid::Cross, tr( "Cross" ) );
mGridTypeComboBox->insertItem( QgsDecorationGrid::Marker, tr( "Marker" ) );
mAnnotationPositionComboBox->insertItem( QgsDecorationGrid::InsideMapFrame, tr( "Inside frame" ) );
// mAnnotationPositionComboBox->insertItem( QgsDecorationGrid::InsideMapFrame, tr( "Inside frame" ) );
// mAnnotationPositionComboBox->insertItem( QgsDecorationGrid::OutsideMapFrame, tr( "Outside frame" ) );
mAnnotationDirectionComboBox->insertItem( QgsDecorationGrid::Horizontal,
@ -77,8 +77,8 @@ void QgsDecorationGridDialog::updateGuiElements()
mOffsetYSpinBox->setValue( mDeco.gridOffsetY() );
mGridTypeComboBox->setCurrentIndex(( int ) mDeco.gridStyle() );
mCrossWidthSpinBox->setValue( mDeco.crossLength() );
mAnnotationPositionComboBox->setCurrentIndex(( int ) mDeco.gridAnnotationPosition() );
// mCrossWidthSpinBox->setValue( mDeco.crossLength() );
// mAnnotationPositionComboBox->setCurrentIndex(( int ) mDeco.gridAnnotationPosition() );
mDrawAnnotationCheckBox->setChecked( mDeco.showGridAnnotation() );
mAnnotationDirectionComboBox->setCurrentIndex(( int ) mDeco.gridAnnotationDirection() );
mCoordinatePrecisionSpinBox->setValue( mDeco.gridAnnotationPrecision() );
@ -118,28 +118,28 @@ void QgsDecorationGridDialog::updateDecoFromGui()
mDeco.setGridOffsetX( mOffsetXSpinBox->value() );
mDeco.setGridOffsetY( mOffsetYSpinBox->value() );
// mDeco.setGridPenWidth( mLineWidthSpinBox->value() );
if ( mGridTypeComboBox->currentText() == tr( "Cross" ) )
{
mDeco.setGridStyle( QgsDecorationGrid::Cross );
}
else if ( mGridTypeComboBox->currentText() == tr( "Marker" ) )
// if ( mGridTypeComboBox->currentText() == tr( "Cross" ) )
// {
// mDeco.setGridStyle( QgsDecorationGrid::Cross );
// }
if ( mGridTypeComboBox->currentText() == tr( "Marker" ) )
{
mDeco.setGridStyle( QgsDecorationGrid::Marker );
}
else
else if ( mGridTypeComboBox->currentText() == tr( "Line" ) )
{
mDeco.setGridStyle( QgsDecorationGrid::Solid );
mDeco.setGridStyle( QgsDecorationGrid::Line );
}
mDeco.setCrossLength( mCrossWidthSpinBox->value() );
// mDeco.setCrossLength( mCrossWidthSpinBox->value() );
mDeco.setAnnotationFrameDistance( mDistanceToMapFrameSpinBox->value() );
if ( mAnnotationPositionComboBox->currentText() == tr( "Inside frame" ) )
{
mDeco.setGridAnnotationPosition( QgsDecorationGrid::InsideMapFrame );
}
else
{
mDeco.setGridAnnotationPosition( QgsDecorationGrid::OutsideMapFrame );
}
// if ( mAnnotationPositionComboBox->currentText() == tr( "Inside frame" ) )
// {
// mDeco.setGridAnnotationPosition( QgsDecorationGrid::InsideMapFrame );
// }
// else
// {
// mDeco.setGridAnnotationPosition( QgsDecorationGrid::OutsideMapFrame );
// }
mDeco.setShowGridAnnotation( mDrawAnnotationCheckBox->isChecked() );
QString text = mAnnotationDirectionComboBox->currentText();
if ( text == tr( "Horizontal" ) )
@ -218,8 +218,8 @@ void QgsDecorationGridDialog::on_buttonBox_rejected()
void QgsDecorationGridDialog::on_mGridTypeComboBox_currentIndexChanged( int index )
{
mLineSymbolButton->setEnabled( index == QgsDecorationGrid::Solid );
mCrossWidthSpinBox->setEnabled( index == QgsDecorationGrid::Cross );
mLineSymbolButton->setEnabled( index == QgsDecorationGrid::Line );
// mCrossWidthSpinBox->setEnabled( index == QgsDecorationGrid::Cross );
mMarkerSymbolButton->setEnabled( index == QgsDecorationGrid::Marker );
}
@ -231,6 +231,7 @@ void QgsDecorationGridDialog::on_mLineSymbolButton_clicked()
QgsLineSymbolV2* lineSymbol = dynamic_cast<QgsLineSymbolV2*>( mLineSymbol->clone() );
QgsSymbolV2PropertiesDialog dlg( lineSymbol, 0, this );
// QgsSymbolV2SelectorDialog dlg( lineSymbol, 0, this );
if ( dlg.exec() == QDialog::Rejected )
{
delete lineSymbol;
@ -254,6 +255,7 @@ void QgsDecorationGridDialog::on_mMarkerSymbolButton_clicked()
QgsMarkerSymbolV2* markerSymbol = dynamic_cast<QgsMarkerSymbolV2*>( mMarkerSymbol->clone() );
QgsSymbolV2PropertiesDialog dlg( markerSymbol, 0, this );
// QgsSymbolV2SelectorDialog dlg( markerSymbol, 0, this );
if ( dlg.exec() == QDialog::Rejected )
{
delete markerSymbol;

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>613</width>
<height>367</height>
<width>628</width>
<height>335</height>
</rect>
</property>
<property name="windowTitle">
@ -88,23 +88,6 @@
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="mCrossWidthLabel">
<property name="text">
<string>Cross width</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mMarkerSymbolLabel">
<property name="text">
<string>Marker symbol</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="mGridTypeComboBox">
<property name="sizePolicy">
@ -143,103 +126,6 @@
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="mCrossWidthSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="decimals">
<number>5</number>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="mMarkerSymbolButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="mOffsetXLabel">
<property name="text">
<string>Offset X</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="mOffsetYLabel">
<property name="text">
<string>Offset Y</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QDoubleSpinBox" name="mOffsetXSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QDoubleSpinBox" name="mOffsetYSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="mIntervalXSpinBox">
<property name="sizePolicy">
@ -319,19 +205,6 @@
<enum>QLayout::SetMinimumSize</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="mAnnotationPositionLabel">
<property name="text">
<string>Annotation position</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="mAnnotationPositionComboBox"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mAnnotationDirectionLabel">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
@ -344,17 +217,17 @@
</property>
</widget>
</item>
<item row="1" column="1">
<item row="0" column="1">
<widget class="QComboBox" name="mAnnotationDirectionComboBox"/>
</item>
<item row="2" column="0" colspan="2">
<item row="1" column="0" colspan="2">
<widget class="QPushButton" name="mAnnotationFontButton">
<property name="text">
<string>Font...</string>
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="0">
<widget class="QLabel" name="mDistanceToFrameLabel">
<property name="text">
<string>Distance to map frame</string>
@ -364,10 +237,10 @@
</property>
</widget>
</item>
<item row="3" column="1">
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="mDistanceToMapFrameSpinBox"/>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QLabel" name="mCoordinatePrecisionLabel">
<property name="text">
<string>Coordinate precision</string>
@ -377,42 +250,123 @@
</property>
</widget>
</item>
<item row="4" column="1">
<item row="3" column="1">
<widget class="QSpinBox" name="mCoordinatePrecisionSpinBox"/>
</item>
</layout>
</widget>
</item>
<item row="9" column="3" colspan="2">
<widget class="QLabel" name="label">
<property name="midLineWidth">
<number>0</number>
</property>
<item row="6" column="0">
<widget class="QLabel" name="mMarkerSymbolLabel">
<property name="text">
<string>Update Interval:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<string>Marker symbol</string>
</property>
</widget>
</item>
<item row="10" column="4">
<widget class="QPushButton" name="mPbtnUpdateFromLayer">
<item row="6" column="1">
<widget class="QPushButton" name="mMarkerSymbolButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>From Layer</string>
<string/>
</property>
</widget>
</item>
<item row="10" column="3">
<item row="7" column="0" colspan="2">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="mOffsetXLabel">
<property name="text">
<string>Offset X</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QDoubleSpinBox" name="mOffsetXSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="mOffsetYLabel">
<property name="text">
<string>Offset Y</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QDoubleSpinBox" name="mOffsetYSpinBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="decimals">
<number>5</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item row="8" column="3" rowspan="2" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Update Interval / Offset from</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QPushButton" name="mPbtnUpdateFromExtents">
<property name="text">
<string>From Extents</string>
<string>Canvas Extents</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="mPbtnUpdateFromLayer">
<property name="text">
<string>Active Raster Layer</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>