[QGIS Commit] r8707 - in branches/advanced_printing_branch/src: app
app/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Jul 3 05:03:29 EDT 2008
Author: mhugent
Date: 2008-07-03 05:03:28 -0400 (Thu, 03 Jul 2008)
New Revision: 8707
Added:
branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h
branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui
Modified:
branches/advanced_printing_branch/src/app/CMakeLists.txt
branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp
branches/advanced_printing_branch/src/app/composer/qgslegendmodel.h
branches/advanced_printing_branch/src/ui/CMakeLists.txt
Log:
Started implementation of a widget to configure composer legend
Modified: branches/advanced_printing_branch/src/app/CMakeLists.txt
===================================================================
--- branches/advanced_printing_branch/src/app/CMakeLists.txt 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/CMakeLists.txt 2008-07-03 09:03:28 UTC (rev 8707)
@@ -67,6 +67,7 @@
composer/qgscomposerscalebarwidget.cpp
composer/qgslegendmodel.cpp
composer/qgscomposerlegend.cpp
+ composer/qgscomposerlegendwidget.cpp
composer/qgsscalebarstyle.cpp
composer/qgsdoubleboxscalebarstyle.cpp
composer/qgsnumericscalebarstyle.cpp
@@ -129,6 +130,7 @@
composer/qgscomposer.h
composer/qgscomposerlabelwidget.h
+ composer/qgscomposerlegendwidget.h
composer/qgscomposermap.h
composer/qgscomposermapwidget.h
composer/qgscomposerscalebar.h
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp 2008-07-03 09:03:28 UTC (rev 8707)
@@ -24,6 +24,7 @@
#include "qgscomposerlabel.h"
#include "qgscomposerlabelwidget.h"
#include "qgscomposerlegend.h"
+#include "qgscomposerlegendwidget.h"
#include "qgscomposermap.h"
#include "qgscomposermapwidget.h"
#include "qgscomposerscalebar.h"
@@ -1152,7 +1153,8 @@
}
//todo: create a composer legend widget
- mItemWidgetMap.insert(legend, 0);
+ QgsComposerLegendWidget* lWidget = new QgsComposerLegendWidget(legend);
+ mItemWidgetMap.insert(legend, lWidget);
}
void QgsComposer::deleteItem(QgsComposerItem* item)
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-07-03 09:03:28 UTC (rev 8707)
@@ -124,6 +124,8 @@
QStandardItem* secondItem;
int numChildren = layerItem->rowCount();
+ p->setFont(mItemFont);
+
for(int i = 0; i < numChildren; ++i)
{
currentYCoord += mSymbolSpace;
@@ -134,7 +136,8 @@
if(secondItem) //an item with an icon
{
- firstItem->icon().paint(p, QRect(currentXCoord, currentYCoord, mSymbolWidth, mSymbolHeight));
+ QIcon symbolIcon = firstItem->icon();
+ symbolIcon.paint(p, QRect(currentXCoord, currentYCoord + (itemHeight - mSymbolHeight) /2, mSymbolWidth, mSymbolHeight));
currentXCoord += (mSymbolWidth + mIconLabelSpace);
p->drawText(QPointF(currentXCoord, currentYCoord + itemFontMetrics.height()), secondItem->text());
}
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h 2008-07-03 09:03:28 UTC (rev 8707)
@@ -36,9 +36,37 @@
/**Returns pointer to the legend model*/
QgsLegendModel* model(){return &mLegendModel;}
+ //setters and getters
void setTitle(const QString& t) {mTitle = t;}
QString title() const {return mTitle;}
+ const QFont& titleFont() const {return mTitleFont;}
+ void setTitleFont(const QFont& f){mTitleFont = f;}
+
+ const QFont& layerFont() const {return mLayerFont;}
+ void setLayerFont(const QFont& f){mLayerFont = f;}
+
+ const QFont& itemFont() const {return mItemFont;}
+ void setItemFont(const QFont& f){mItemFont = f;}
+
+ double boxSpace() const {return mBoxSpace;}
+ void setBoxSpace(double s){mBoxSpace = s;}
+
+ double layerSpace() const {return mLayerSpace;}
+ void setLayerSpace(double s){mLayerSpace = s;}
+
+ double symbolSpace() const {return mSymbolSpace;}
+ void setSymbolSpace(double s){mSymbolSpace = s;}
+
+ double iconLabelSpace() const {return mIconLabelSpace;}
+ void setIconLabelSpace(double s){mIconLabelSpace = s;}
+
+ double symbolWidth() const {return mSymbolWidth;}
+ void setSymbolWidth(double w){mSymbolWidth = w;}
+
+ double symbolHeight() const {return mSymbolHeight;}
+ void setSymbolHeight(double h){mSymbolHeight = h;}
+
protected:
QString mTitle;
Added: branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp (rev 0)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp 2008-07-03 09:03:28 UTC (rev 8707)
@@ -0,0 +1,131 @@
+/***************************************************************************
+ qgscomposerlegendwidget.cpp
+ ---------------------------
+ begin : July 2008
+ copyright : (C) 2008 by Marco Hugentobler
+ email : marco dot hugentobler at karto dot baug dot ethz dot ch
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "qgscomposerlegendwidget.h"
+#include "qgscomposerlegend.h"
+#include <QFontDialog>
+
+QgsComposerLegendWidget::QgsComposerLegendWidget(QgsComposerLegend* legend): mLegend(legend)
+{
+ setupUi(this);
+}
+
+QgsComposerLegendWidget::QgsComposerLegendWidget(): mLegend(0)
+{
+ setupUi(this);
+}
+
+QgsComposerLegendWidget::~QgsComposerLegendWidget()
+{
+
+}
+
+void QgsComposerLegendWidget::on_mTitleLineEdit_textChanged(const QString& text)
+{
+ if(mLegend)
+ {
+ mLegend->setTitle(text);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mSymbolWidthSpinBox_valueChanged(double d)
+{
+ if(mLegend)
+ {
+ mLegend->setSymbolWidth(d);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mSymbolHeightSpinBox_valueChanged(double d)
+{
+ if(mLegend)
+ {
+ mLegend->setSymbolHeight(d);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mLayerSpaceSpinBox_valueChanged(double d)
+{
+ if(mLegend)
+ {
+ mLegend->setLayerSpace(d);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mSymbolSpaceSpinBox_valueChanged(double d)
+{
+ if(mLegend)
+ {
+ mLegend->setSymbolSpace(d);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mIconLabelSpaceSpinBox_valueChanged(double d)
+{
+ if(mLegend)
+ {
+ mLegend->setIconLabelSpace(d);
+ mLegend->update();
+ }
+}
+
+void QgsComposerLegendWidget::on_mTitleFontButton_clicked()
+{
+ if(mLegend)
+ {
+ bool ok;
+ QFont newFont = QFontDialog::getFont(&ok, mLegend->titleFont());
+ if(ok)
+ {
+ mLegend->setTitleFont(newFont);
+ mLegend->update();
+ }
+ }
+}
+
+void QgsComposerLegendWidget::on_mLayerFontButton_clicked()
+{
+ if(mLegend)
+ {
+ bool ok;
+ QFont newFont = QFontDialog::getFont(&ok, mLegend->layerFont());
+ if(ok)
+ {
+ mLegend->setLayerFont(newFont);
+ mLegend->update();
+ }
+ }
+}
+
+void QgsComposerLegendWidget::on_mItemFontButton_clicked()
+{
+ if(mLegend)
+ {
+ bool ok;
+ QFont newFont = QFontDialog::getFont(&ok, mLegend->itemFont());
+ if(ok)
+ {
+ mLegend->setItemFont(newFont);
+ mLegend->update();
+ }
+ }
+}
Added: branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h (rev 0)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h 2008-07-03 09:03:28 UTC (rev 8707)
@@ -0,0 +1,52 @@
+/***************************************************************************
+ qgscomposerlegendwidget.h
+ -------------------------
+ begin : July 2008
+ copyright : (C) 2008 by Marco Hugentobler
+ email : marco dot hugentobler at karto dot baug dot ethz dot ch
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef QGSCOMPOSERLEGENDWIDGET_H
+#define QGSCOMPOSERLEGENDWIDGET_H
+
+#include "ui_qgscomposerlegendwidgetbase.h"
+#include <QWidget>
+
+class QgsComposerLegend;
+
+class QgsComposerLegendWidget: public QWidget, private Ui::QgsComposerLegendWidgetBase
+{
+ Q_OBJECT
+
+ public:
+ QgsComposerLegendWidget(QgsComposerLegend* legend);
+ ~QgsComposerLegendWidget();
+
+ public slots:
+
+ void on_mTitleLineEdit_textChanged(const QString& text);
+ void on_mSymbolWidthSpinBox_valueChanged(double d);
+ void on_mSymbolHeightSpinBox_valueChanged(double d);
+ void on_mLayerSpaceSpinBox_valueChanged(double d);
+ void on_mSymbolSpaceSpinBox_valueChanged(double d);
+ void on_mIconLabelSpaceSpinBox_valueChanged(double d);
+ void on_mTitleFontButton_clicked();
+ void on_mLayerFontButton_clicked();
+ void on_mItemFontButton_clicked();
+
+ private:
+ QgsComposerLegendWidget();
+
+ QgsComposerLegend* mLegend;
+};
+
+#endif
Modified: branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp 2008-07-03 09:03:28 UTC (rev 8707)
@@ -18,6 +18,7 @@
#include "qgslegendmodel.h"
#include "qgsmaplayer.h"
#include "qgsmaplayerregistry.h"
+#include "qgsrasterlayer.h"
#include "qgsrenderer.h"
#include "qgssymbol.h"
#include "qgsvectorlayer.h"
@@ -59,6 +60,7 @@
addVectorLayerItems(layerItem, currentLayer);
break;
case QgsMapLayer::RASTER:
+ addRasterLayerItem(layerItem, currentLayer);
break;
default:
break;
@@ -146,3 +148,25 @@
return 0;
}
+int QgsLegendModel::addRasterLayerItem(QStandardItem* layerItem, QgsMapLayer* rlayer)
+{
+ if(!layerItem || !rlayer)
+ {
+ return 1;
+ }
+
+ QgsRasterLayer* rasterLayer = dynamic_cast<QgsRasterLayer*>(rlayer);
+ if(!rasterLayer)
+ {
+ return 2;
+ }
+
+ QStandardItem* currentSymbolItem = new QStandardItem(QIcon(rasterLayer->getLegendQPixmap(true)), "Raster");
+ QStandardItem* currentLabelItem = new QStandardItem("");
+
+ int currentRowCount = layerItem->rowCount();
+ layerItem->setChild(currentRowCount, 0, currentSymbolItem);
+ layerItem->setChild(currentRowCount, 1, currentLabelItem);
+
+ return 0;
+}
Modified: branches/advanced_printing_branch/src/app/composer/qgslegendmodel.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgslegendmodel.h 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/app/composer/qgslegendmodel.h 2008-07-03 09:03:28 UTC (rev 8707)
@@ -37,6 +37,10 @@
@return 0 in case of success*/
int addVectorLayerItems(QStandardItem* layerItem, QgsMapLayer* vlayer);
+ /**Adds item of raster layer
+ @return 0 in case of success*/
+ int addRasterLayerItem(QStandardItem* layerItem, QgsMapLayer* rlayer);
+
protected:
QStringList mLayerIds;
};
Modified: branches/advanced_printing_branch/src/ui/CMakeLists.txt
===================================================================
--- branches/advanced_printing_branch/src/ui/CMakeLists.txt 2008-07-03 07:44:11 UTC (rev 8706)
+++ branches/advanced_printing_branch/src/ui/CMakeLists.txt 2008-07-03 09:03:28 UTC (rev 8707)
@@ -8,6 +8,7 @@
qgsbookmarksbase.ui
qgscomposerbase.ui
qgscomposerlabelwidgetbase.ui
+ qgscomposerlegendwidgetbase.ui
qgscomposermapwidgetbase.ui
qgscomposerpicturebase.ui
qgscomposerscalebarwidgetbase.ui
Added: branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui
===================================================================
--- branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui (rev 0)
+++ branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui 2008-07-03 09:03:28 UTC (rev 8707)
@@ -0,0 +1,203 @@
+<ui version="4.0" >
+ <class>QgsComposerLegendWidgetBase</class>
+ <widget class="QWidget" name="QgsComposerLegendWidgetBase" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>482</width>
+ <height>415</height>
+ </rect>
+ </property>
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle" >
+ <string>Barscale Options</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="mGeneralGroupBox" >
+ <property name="title" >
+ <string>General</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="mTitleLabel" >
+ <property name="text" >
+ <string>Title:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="mTitleLineEdit" />
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="mFontLabel" >
+ <property name="text" >
+ <string>Font:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mTitleFontButton" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Title...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mLayerFontButton" >
+ <property name="text" >
+ <string>Layer...</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mItemFontButton" >
+ <property name="text" >
+ <string>Item...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="0" >
+ <layout class="QGridLayout" >
+ <item row="0" column="0" colspan="2" >
+ <widget class="QLabel" name="mSymbolWidthLabel" >
+ <property name="text" >
+ <string>Symbol width: </string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QDoubleSpinBox" name="mSymbolWidthSpinBox" />
+ </item>
+ <item row="0" column="3" colspan="2" >
+ <widget class="QLabel" name="mSymbolHeightLabel" >
+ <property name="text" >
+ <string>Symbol height:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="5" >
+ <widget class="QDoubleSpinBox" name="mSymbolHeightSpinBox" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="mLayerSpaceLabel" >
+ <property name="text" >
+ <string>Layer space: </string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="mLayerSpaceSpinBox" />
+ </item>
+ <item row="1" column="3" >
+ <widget class="QLabel" name="mSymbolSpaceLabel" >
+ <property name="text" >
+ <string>Symbol space:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="4" colspan="2" >
+ <widget class="QDoubleSpinBox" name="mSymbolSpaceSpinBox" />
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="mIconLabelSpaceLabel" >
+ <property name="text" >
+ <string>Icon label space:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="mIconLabelSpaceSpinBox" />
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>141</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="4" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QCheckBox" name="mBoxCheckBox" >
+ <property name="text" >
+ <string>Box</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>131</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="mBoxSpaceLabel" >
+ <property name="text" >
+ <string>Box space:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="mBoxSpaceSpinBox" />
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QGroupBox" name="mItemsGroupBox" >
+ <property name="title" >
+ <string>Items</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+ <tabstop>mTitleFontButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
More information about the QGIS-commit
mailing list