[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