[QGIS Commit] r12794 - in trunk/qgis/src: core/symbology-ng gui
gui/symbology-ng ui ui/symbollayer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Jan 18 17:42:19 EST 2010
Author: wonder
Date: 2010-01-18 17:42:17 -0500 (Mon, 18 Jan 2010)
New Revision: 12794
Added:
trunk/qgis/src/gui/symbology-ng/characterwidget.cpp
trunk/qgis/src/gui/symbology-ng/characterwidget.h
trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui
Modified:
trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.h
trunk/qgis/src/core/symbology-ng/qgssymbollayerv2registry.cpp
trunk/qgis/src/core/symbology-ng/qgssymbolv2.cpp
trunk/qgis/src/gui/CMakeLists.txt
trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h
trunk/qgis/src/gui/symbology-ng/qgssymbolv2propertiesdialog.cpp
trunk/qgis/src/ui/CMakeLists.txt
Log:
[FEATURE] Added font marker symbol layer
Modified: trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -467,3 +467,85 @@
return path;
}
+
+
+//////////
+
+QgsFontMarkerSymbolLayerV2::QgsFontMarkerSymbolLayerV2( QString fontFamily, QChar chr, double pointSize, QColor color, double angle )
+{
+ mFontFamily = fontFamily;
+ mChr = chr;
+ mColor = color;
+ mAngle = angle;
+ mSize = pointSize;
+}
+
+QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::create( const QgsStringMap& props )
+{
+ QString fontFamily = DEFAULT_FONTMARKER_FONT;
+ QChar chr = DEFAULT_FONTMARKER_CHR;
+ double pointSize = DEFAULT_FONTMARKER_SIZE;
+ QColor color = DEFAULT_FONTMARKER_COLOR;
+ double angle = DEFAULT_FONTMARKER_ANGLE;
+
+ if ( props.contains( "font" ) )
+ fontFamily = props["font"];
+ if ( props.contains( "chr" ) && props["chr"].length() > 0 )
+ chr = props["chr"].at( 0 );
+ if ( props.contains( "size" ) )
+ pointSize = props["size"].toDouble();
+ if ( props.contains( "color" ) )
+ color = QgsSymbolLayerV2Utils::decodeColor( props["color"] );
+ if ( props.contains( "angle" ) )
+ angle = props["angle"].toDouble();
+
+ return new QgsFontMarkerSymbolLayerV2( fontFamily, chr, pointSize, color, angle );
+}
+
+QString QgsFontMarkerSymbolLayerV2::layerType() const
+{
+ return "FontMarker";
+}
+
+void QgsFontMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context )
+{
+ mFont = QFont( mFontFamily, MM2POINT( mSize ) );
+ QFontMetrics fm( mFont );
+ mChrOffset = QPointF( fm.width( mChr ) / 2, -fm.ascent() / 2 );
+}
+
+void QgsFontMarkerSymbolLayerV2::stopRender( QgsSymbolV2RenderContext& context )
+{
+}
+
+void QgsFontMarkerSymbolLayerV2::renderPoint( const QPointF& point, QgsSymbolV2RenderContext& context )
+{
+ QPainter* p = context.renderContext().painter();
+ p->setPen( mColor );
+ p->setFont( mFont );
+
+ if ( mAngle != 0 )
+ {
+ p->save();
+ p->rotate( mAngle );
+ }
+ p->drawText( point - mChrOffset, mChr );
+ if ( mAngle != 0 )
+ p->restore();
+}
+
+QgsStringMap QgsFontMarkerSymbolLayerV2::properties() const
+{
+ QgsStringMap props;
+ props["font"] = mFontFamily;
+ props["chr"] = mChr;
+ props["size"] = QString::number( mSize );
+ props["color"] = QgsSymbolLayerV2Utils::encodeColor( mColor );
+ props["angle"] = QString::number( mAngle );
+ return props;
+}
+
+QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2::clone() const
+{
+ return new QgsFontMarkerSymbolLayerV2( mFontFamily, mChr, mSize, mColor, mAngle );
+}
Modified: trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.h
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.h 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.h 2010-01-18 22:42:17 UTC (rev 12794)
@@ -14,6 +14,7 @@
#include <QBrush>
#include <QPicture>
#include <QPolygonF>
+#include <QFont>
class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
{
@@ -111,4 +112,61 @@
QPicture mPicture;
};
+
+//////////
+
+#define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
+#define MM2POINT(x) ( (x) * 72 / 25.4 )
+
+#define DEFAULT_FONTMARKER_FONT "Dingbats"
+#define DEFAULT_FONTMARKER_CHR QChar('A')
+#define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
+#define DEFAULT_FONTMARKER_COLOR QColor(Qt::black)
+#define DEFAULT_FONTMARKER_ANGLE 0
+
+class CORE_EXPORT QgsFontMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
+{
+ public:
+ QgsFontMarkerSymbolLayerV2( QString fontFamily = DEFAULT_FONTMARKER_FONT,
+ QChar chr = DEFAULT_FONTMARKER_CHR,
+ double pointSize = DEFAULT_FONTMARKER_SIZE,
+ QColor color = DEFAULT_FONTMARKER_COLOR,
+ double angle = DEFAULT_FONTMARKER_ANGLE );
+
+ // static stuff
+
+ static QgsSymbolLayerV2* create( const QgsStringMap& properties = QgsStringMap() );
+
+ // implemented from base classes
+
+ QString layerType() const;
+
+ void startRender( QgsSymbolV2RenderContext& context );
+
+ void stopRender( QgsSymbolV2RenderContext& context );
+
+ void renderPoint( const QPointF& point, QgsSymbolV2RenderContext& context );
+
+ QgsStringMap properties() const;
+
+ QgsSymbolLayerV2* clone() const;
+
+ // new methods
+
+ QString fontFamily() const { return mFontFamily; }
+ void setFontFamily( QString family ) { mFontFamily = family; }
+
+ QChar character() const { return mChr; }
+ void setCharacter( QChar ch ) { mChr = ch; }
+
+ protected:
+
+ QString mFontFamily;
+ QChar mChr;
+
+ QPointF mChrOffset;
+ QFont mFont;
+};
+
+
#endif
Modified: trunk/qgis/src/core/symbology-ng/qgssymbollayerv2registry.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgssymbollayerv2registry.cpp 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/core/symbology-ng/qgssymbollayerv2registry.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -21,10 +21,11 @@
QgsSimpleMarkerSymbolLayerV2::create ) );
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "SvgMarker", QgsSymbolV2::Marker,
QgsSvgMarkerSymbolLayerV2::create ) );
+ addSymbolLayerType( new QgsSymbolLayerV2Metadata( "FontMarker", QgsSymbolV2::Marker,
+ QgsFontMarkerSymbolLayerV2::create ) );
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "SimpleFill", QgsSymbolV2::Fill,
QgsSimpleFillSymbolLayerV2::create ) );
-
addSymbolLayerType( new QgsSymbolLayerV2Metadata( "SVGFill", QgsSymbolV2::Fill, QgsSVGFillSymbolLayer::create ) );
}
Modified: trunk/qgis/src/core/symbology-ng/qgssymbolv2.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgssymbolv2.cpp 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/core/symbology-ng/qgssymbolv2.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -180,7 +180,7 @@
if ( mType == QgsSymbolV2::Marker )
{
- p.setPen( QPen( QColor( 230, 230, 230 ) ) );
+ p.setPen( QPen( Qt::gray ) );
p.drawLine( 0, 50, 100, 50 );
p.drawLine( 50, 0, 50, 100 );
}
Modified: trunk/qgis/src/gui/CMakeLists.txt
===================================================================
--- trunk/qgis/src/gui/CMakeLists.txt 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/gui/CMakeLists.txt 2010-01-18 22:42:17 UTC (rev 12794)
@@ -17,6 +17,7 @@
symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp
symbology-ng/qgsvectorrandomcolorrampv2dialog.cpp
symbology-ng/qgsvectorcolorbrewercolorrampv2dialog.cpp
+symbology-ng/characterwidget.cpp
qgisgui.cpp
qgisinterface.cpp
@@ -64,6 +65,7 @@
symbology-ng/qgsvectorgradientcolorrampv2dialog.h
symbology-ng/qgsvectorrandomcolorrampv2dialog.h
symbology-ng/qgsvectorcolorbrewercolorrampv2dialog.h
+symbology-ng/characterwidget.h
qgscomposerview.h
qgsdetaileditemdelegate.h
Added: trunk/qgis/src/gui/symbology-ng/characterwidget.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/characterwidget.cpp (rev 0)
+++ trunk/qgis/src/gui/symbology-ng/characterwidget.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -0,0 +1,183 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info at nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info at nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#include "characterwidget.h"
+
+//! [0]
+CharacterWidget::CharacterWidget( QWidget *parent )
+ : QWidget( parent )
+{
+ squareSize = 24;
+ columns = 16;
+ lastKey = -1;
+ setMouseTracking( true );
+}
+//! [0]
+
+//! [1]
+void CharacterWidget::updateFont( const QFont &font )
+{
+ displayFont.setFamily( font.family() );
+ squareSize = qMax( 24, QFontMetrics( displayFont ).xHeight() * 3 );
+ adjustSize();
+ update();
+}
+//! [1]
+
+//! [2]
+void CharacterWidget::updateSize( double fontSize )
+{
+ displayFont.setPointSizeF( fontSize );
+ squareSize = qMax( 24, QFontMetrics( displayFont ).xHeight() * 3 );
+ adjustSize();
+ update();
+}
+//! [2]
+
+void CharacterWidget::updateStyle( const QString &fontStyle )
+{
+ QFontDatabase fontDatabase;
+ const QFont::StyleStrategy oldStrategy = displayFont.styleStrategy();
+ displayFont = fontDatabase.font( displayFont.family(), fontStyle, displayFont.pointSize() );
+ displayFont.setStyleStrategy( oldStrategy );
+ squareSize = qMax( 24, QFontMetrics( displayFont ).xHeight() * 3 );
+ adjustSize();
+ update();
+}
+
+void CharacterWidget::updateFontMerging( bool enable )
+{
+ if ( enable )
+ displayFont.setStyleStrategy( QFont::PreferDefault );
+ else
+ displayFont.setStyleStrategy( QFont::NoFontMerging );
+ adjustSize();
+ update();
+}
+
+//! [3]
+QSize CharacterWidget::sizeHint() const
+{
+ return QSize( columns*squareSize, ( 65536 / columns )*squareSize );
+}
+//! [3]
+
+//! [4]
+void CharacterWidget::mouseMoveEvent( QMouseEvent *event )
+{
+ QPoint widgetPosition = mapFromGlobal( event->globalPos() );
+ uint key = ( widgetPosition.y() / squareSize ) * columns + widgetPosition.x() / squareSize;
+
+ QString text = QString::fromLatin1( "<p>Character: <span style=\"font-size: 24pt; font-family: %1\">" ).arg( displayFont.family() )
+ + QChar( key )
+ + QString::fromLatin1( "</span><p>Value: 0x" )
+ + QString::number( key, 16 );
+ QToolTip::showText( event->globalPos(), text, this );
+}
+//! [4]
+
+//! [5]
+void CharacterWidget::mousePressEvent( QMouseEvent *event )
+{
+ if ( event->button() == Qt::LeftButton )
+ {
+ lastKey = ( event->y() / squareSize ) * columns + event->x() / squareSize;
+ if ( QChar( lastKey ).category() != QChar::NoCategory )
+ emit characterSelected( QChar( lastKey ) );
+ update();
+ }
+ else
+ QWidget::mousePressEvent( event );
+}
+//! [5]
+
+//! [6]
+void CharacterWidget::paintEvent( QPaintEvent *event )
+{
+ QPainter painter( this );
+ painter.fillRect( event->rect(), QBrush( Qt::white ) );
+ painter.setFont( displayFont );
+//! [6]
+
+//! [7]
+ QRect redrawRect = event->rect();
+ int beginRow = redrawRect.top() / squareSize;
+ int endRow = redrawRect.bottom() / squareSize;
+ int beginColumn = redrawRect.left() / squareSize;
+ int endColumn = redrawRect.right() / squareSize;
+//! [7]
+
+//! [8]
+ painter.setPen( QPen( Qt::gray ) );
+ for ( int row = beginRow; row <= endRow; ++row )
+ {
+ for ( int column = beginColumn; column <= endColumn; ++column )
+ {
+ painter.drawRect( column*squareSize, row*squareSize, squareSize, squareSize );
+ }
+//! [8] //! [9]
+ }
+//! [9]
+
+//! [10]
+ QFontMetrics fontMetrics( displayFont );
+ painter.setPen( QPen( Qt::black ) );
+ for ( int row = beginRow; row <= endRow; ++row )
+ {
+
+ for ( int column = beginColumn; column <= endColumn; ++column )
+ {
+
+ int key = row * columns + column;
+ painter.setClipRect( column*squareSize, row*squareSize, squareSize, squareSize );
+
+ if ( key == lastKey )
+ painter.fillRect( column*squareSize + 1, row*squareSize + 1, squareSize, squareSize, QBrush( Qt::red ) );
+
+ painter.drawText( column*squareSize + ( squareSize / 2 ) - fontMetrics.width( QChar( key ) ) / 2,
+ row*squareSize + 4 + fontMetrics.ascent(),
+ QString( QChar( key ) ) );
+ }
+ }
+}
+//! [10]
Added: trunk/qgis/src/gui/symbology-ng/characterwidget.h
===================================================================
--- trunk/qgis/src/gui/symbology-ng/characterwidget.h (rev 0)
+++ trunk/qgis/src/gui/symbology-ng/characterwidget.h 2010-01-18 22:42:17 UTC (rev 12794)
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info at nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info at nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CHARACTERWIDGET_H
+#define CHARACTERWIDGET_H
+
+#include <QFont>
+#include <QPoint>
+#include <QSize>
+#include <QString>
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+class QMouseEvent;
+class QPaintEvent;
+QT_END_NAMESPACE
+
+//! [0]
+class CharacterWidget : public QWidget
+{
+ Q_OBJECT
+
+ public:
+ CharacterWidget( QWidget *parent = 0 );
+ QSize sizeHint() const;
+
+ public slots:
+ void updateFont( const QFont &font );
+ void updateSize( double fontSize );
+ void updateStyle( const QString &fontStyle );
+ void updateFontMerging( bool enable );
+
+ signals:
+ void characterSelected( const QChar &character );
+
+ protected:
+ void mouseMoveEvent( QMouseEvent *event );
+ void mousePressEvent( QMouseEvent *event );
+ void paintEvent( QPaintEvent *event );
+
+ private:
+ QFont displayFont;
+ int columns;
+ int lastKey;
+ int squareSize;
+};
+//! [0]
+
+#endif
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -5,6 +5,7 @@
#include "qgsmarkersymbollayerv2.h"
#include "qgsfillsymbollayerv2.h"
+#include "characterwidget.h"
#include "qgsdashspacedialog.h"
#include "qgssymbolv2propertiesdialog.h"
@@ -684,3 +685,77 @@
mChangeOutlinePushButton->setIcon( icon );
}
}
+
+/////////////
+
+QgsFontMarkerSymbolLayerV2Widget::QgsFontMarkerSymbolLayerV2Widget( QWidget* parent )
+ : QgsSymbolLayerV2Widget( parent )
+{
+ mLayer = NULL;
+
+ setupUi( this );
+ widgetChar = new CharacterWidget;
+ scrollArea->setWidget( widgetChar );
+
+ connect( cboFont, SIGNAL( currentFontChanged( const QFont & ) ), this, SLOT( setFontFamily( const QFont& ) ) );
+ connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize( double ) ) );
+ connect( btnColor, SIGNAL( clicked() ), this, SLOT( setColor() ) );
+ connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle( double ) ) );
+ connect( widgetChar, SIGNAL( characterSelected( const QChar & ) ), this, SLOT( setCharacter( const QChar & ) ) );
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer )
+{
+ if ( layer->layerType() != "FontMarker" )
+ return;
+
+ // layer type is correct, we can do the cast
+ mLayer = static_cast<QgsFontMarkerSymbolLayerV2*>( layer );
+
+ // set values
+ cboFont->setCurrentFont( QFont( mLayer->fontFamily() ) );
+ spinSize->setValue( mLayer->size() );
+ btnColor->setColor( mLayer->color() );
+ spinAngle->setValue( mLayer->angle() );
+}
+
+QgsSymbolLayerV2* QgsFontMarkerSymbolLayerV2Widget::symbolLayer()
+{
+ return mLayer;
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setFontFamily( const QFont& font )
+{
+ mLayer->setFontFamily( font.family() );
+ widgetChar->updateFont( font );
+ emit changed();
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setColor()
+{
+ QColor color = QColorDialog::getColor( mLayer->color(), this );
+ if ( !color.isValid() )
+ return;
+ mLayer->setColor( color );
+ btnColor->setColor( mLayer->color() );
+ emit changed();
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setSize( double size )
+{
+ mLayer->setSize( size );
+ //widgetChar->updateSize(size);
+ emit changed();
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setAngle( double angle )
+{
+ mLayer->setAngle( angle );
+ emit changed();
+}
+
+void QgsFontMarkerSymbolLayerV2Widget::setCharacter( const QChar& chr )
+{
+ mLayer->setCharacter( chr );
+ emit changed();
+}
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbollayerv2widget.h 2010-01-18 22:42:17 UTC (rev 12794)
@@ -246,5 +246,38 @@
void on_mChangeOutlinePushButton_clicked();
};
+//////////
+
+#include "ui_widget_fontmarker.h"
+
+class QgsFontMarkerSymbolLayerV2;
+class CharacterWidget;
+
+class GUI_EXPORT QgsFontMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetFontMarker
+{
+ Q_OBJECT
+
+ public:
+ QgsFontMarkerSymbolLayerV2Widget( QWidget* parent = NULL );
+
+ static QgsSymbolLayerV2Widget* create() { return new QgsFontMarkerSymbolLayerV2Widget(); }
+
+ // from base class
+ virtual void setSymbolLayer( QgsSymbolLayerV2* layer );
+ virtual QgsSymbolLayerV2* symbolLayer();
+
+ public slots:
+ void setFontFamily( const QFont& font );
+ void setColor();
+ void setSize( double size );
+ void setAngle( double angle );
+ void setCharacter( const QChar& chr );
+
+ protected:
+ QgsFontMarkerSymbolLayerV2* mLayer;
+ CharacterWidget* widgetChar;
+};
+
+
#endif
Modified: trunk/qgis/src/gui/symbology-ng/qgssymbolv2propertiesdialog.cpp
===================================================================
--- trunk/qgis/src/gui/symbology-ng/qgssymbolv2propertiesdialog.cpp 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/gui/symbology-ng/qgssymbolv2propertiesdialog.cpp 2010-01-18 22:42:17 UTC (rev 12794)
@@ -102,6 +102,7 @@
_initWidgetFunction( "SimpleMarker", QgsSimpleMarkerSymbolLayerV2Widget::create );
_initWidgetFunction( "SvgMarker", QgsSvgMarkerSymbolLayerV2Widget::create );
+ _initWidgetFunction( "FontMarker", QgsFontMarkerSymbolLayerV2Widget::create );
_initWidgetFunction( "SimpleFill", QgsSimpleFillSymbolLayerV2Widget::create );
_initWidgetFunction( "SVGFill", QgsSVGFillSymbolLayerWidget::create );
Modified: trunk/qgis/src/ui/CMakeLists.txt
===================================================================
--- trunk/qgis/src/ui/CMakeLists.txt 2010-01-18 20:24:49 UTC (rev 12793)
+++ trunk/qgis/src/ui/CMakeLists.txt 2010-01-18 22:42:17 UTC (rev 12794)
@@ -4,4 +4,3 @@
QT4_WRAP_UI(QGIS_UIS_H ${QGIS_UIS} ${SYMBOLLAYER_UIS})
ADD_CUSTOM_TARGET(ui ALL DEPENDS ${QGIS_UIS_H})
-
Added: trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui
===================================================================
--- trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui (rev 0)
+++ trunk/qgis/src/ui/symbollayer/widget_fontmarker.ui 2010-01-18 22:42:17 UTC (rev 12794)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetFontMarker</class>
+ <widget class="QWidget" name="WidgetFontMarker">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Font family</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QFontComboBox" name="cboFont"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QgsColorButtonV2" name="btnColor">
+ <property name="text">
+ <string>Change</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Rotation</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QDoubleSpinBox" name="spinAngle">
+ <property name="suffix">
+ <string>°</string>
+ </property>
+ <property name="decimals">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QDoubleSpinBox" name="spinSize">
+ <property name="value">
+ <double>12.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QScrollArea" name="scrollArea">
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>378</width>
+ <height>158</height>
+ </rect>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>QgsColorButtonV2</class>
+ <extends>QPushButton</extends>
+ <header>qgscolorbutton.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
More information about the QGIS-commit
mailing list