[QGIS Commit] r9075 - in branches/advanced_printing_branch/src: app
app/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Aug 19 16:45:19 EDT 2008
Author: mhugent
Date: 2008-08-19 16:45:12 -0400 (Tue, 19 Aug 2008)
New Revision: 9075
Added:
branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.h
branches/advanced_printing_branch/src/ui/qgscomposeritemwidgetbase.ui
Modified:
branches/advanced_printing_branch/src/app/CMakeLists.txt
branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h
branches/advanced_printing_branch/src/ui/CMakeLists.txt
branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui
Log:
Created a widget for general item properties that can be embedded into the item widgets. Only done for composer legend so far, the other item widgets will follow
Modified: branches/advanced_printing_branch/src/app/CMakeLists.txt
===================================================================
--- branches/advanced_printing_branch/src/app/CMakeLists.txt 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/app/CMakeLists.txt 2008-08-19 20:45:12 UTC (rev 9075)
@@ -58,6 +58,7 @@
composer/qgscomposer.cpp
composer/qgscomposeritem.cpp
composer/qgscomposeritemgroup.cpp
+ composer/qgscomposeritemwidget.cpp
composer/qgscomposerlabel.cpp
composer/qgscomposerlabelwidget.cpp
composer/qgscomposerpicture.cpp
@@ -134,6 +135,7 @@
qgsdbtablemodel.h
composer/qgscomposer.h
+ composer/qgscomposeritemwidget.h
composer/qgscomposerlabelwidget.h
composer/qgscomposerlegend.h
composer/qgscomposerlegendwidget.h
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp 2008-08-19 20:45:12 UTC (rev 9075)
@@ -31,6 +31,12 @@
{
setFlag(QGraphicsItem::ItemIsSelectable, true);
setAcceptsHoverEvents(true);
+
+ //set default pen and brush
+ setBrush(QBrush(QColor(255, 255, 255, 255)));
+ QPen defaultPen(QColor(0, 0, 0));
+ defaultPen.setWidth(1);
+ setPen(defaultPen);
}
QgsComposerItem::QgsComposerItem(qreal x, qreal y, qreal width, qreal height, QgsComposition* composition): QGraphicsRectItem(0, 0, width, height, 0), mComposition(composition), mBoundingResizeRectangle(0), mFrame(true)
@@ -41,6 +47,12 @@
QTransform t;
t.translate(x, y);
setTransform(t);
+
+ //set default pen and brush
+ setBrush(QBrush(QColor(255, 255, 255, 255)));
+ QPen defaultPen(QColor(0, 0, 0));
+ defaultPen.setWidth(1);
+ setPen(defaultPen);
}
QgsComposerItem::~QgsComposerItem()
@@ -85,7 +97,26 @@
composerItemElem.setAttribute("width", rect().width());
composerItemElem.setAttribute("height", rect().height());
composerItemElem.setAttribute("zValue", QString::number(zValue()));
+ composerItemElem.setAttribute("outlineWidth", QString::number(pen().widthF()));
+ //frame color
+ QDomElement frameColorElem = doc.createElement("FrameColor");
+ QColor frameColor = pen().color();
+ frameColorElem.setAttribute("red", QString::number(frameColor.red()));
+ frameColorElem.setAttribute("green", QString::number(frameColor.green()));
+ frameColorElem.setAttribute("blue", QString::number(frameColor.blue()));
+ frameColorElem.setAttribute("alpha", QString::number(frameColor.alpha()));
+ composerItemElem.appendChild(frameColorElem);
+
+ //background color
+ QDomElement bgColorElem = doc.createElement("BackgroundColor");
+ QColor bgColor = brush().color();
+ bgColorElem.setAttribute("red", QString::number(bgColor.red()));
+ bgColorElem.setAttribute("green", QString::number(bgColor.green()));
+ bgColorElem.setAttribute("blue", QString::number(bgColor.blue()));
+ bgColorElem.setAttribute("alpha", QString::number(bgColor.alpha()));
+ composerItemElem.appendChild(bgColorElem);
+
itemElem.appendChild(composerItemElem);
return true;
@@ -125,6 +156,44 @@
setSceneRect(QRectF(x, y, width, height));
setZValue(itemElem.attribute("zValue").toDouble());
+
+ //pen
+ QDomNodeList frameColorList = itemElem.elementsByTagName("FrameColor");
+ if(frameColorList.size() > 0)
+ {
+ QDomElement frameColorElem = frameColorList.at(0).toElement();
+ bool redOk, greenOk, blueOk, alphaOk, widthOk;
+ int penRed, penGreen, penBlue, penAlpha, penWidth;
+ penWidth = itemElem.attribute("outlineWidth").toDouble(&widthOk);
+ penRed = frameColorElem.attribute("red").toDouble(&redOk);
+ penGreen = frameColorElem.attribute("green").toDouble(&greenOk);
+ penBlue = frameColorElem.attribute("blue").toDouble(&blueOk);
+ penAlpha = frameColorElem.attribute("alpha").toDouble(&alphaOk);
+ if(redOk && greenOk && blueOk && alphaOk && widthOk)
+ {
+ QPen framePen(QColor(penRed, penGreen, penBlue, penAlpha));
+ framePen.setWidth(penWidth);
+ setPen(framePen);
+ }
+ }
+
+ //brush
+ QDomNodeList bgColorList = itemElem.elementsByTagName("BackgroundColor");
+ if(bgColorList.size() > 0)
+ {
+ QDomElement bgColorElem = bgColorList.at(0).toElement();
+ bool redOk, greenOk, blueOk, alphaOk;
+ int bgRed, bgGreen, bgBlue, bgAlpha;
+ bgRed = bgColorElem.attribute("red").toDouble(&redOk);
+ bgGreen = bgColorElem.attribute("green").toDouble(&greenOk);
+ bgBlue = bgColorElem.attribute("blue").toDouble(&blueOk);
+ bgAlpha = bgColorElem.attribute("alpha").toDouble(&alphaOk);
+ if(redOk && greenOk && blueOk && alphaOk)
+ {
+ QColor brushColor(bgRed, bgGreen, bgBlue, bgAlpha);
+ setBrush(QBrush(brushColor));
+ }
+ }
return true;
}
@@ -371,7 +440,7 @@
void QgsComposerItem::drawFrame(QPainter* p)
{
- if(mFrame)
+ if(mFrame && p)
{
p->setPen(pen());
p->setBrush(Qt::NoBrush);
@@ -419,9 +488,13 @@
void QgsComposerItem::drawBackground(QPainter* p)
{
- p->setBrush(brush());
- p->setRenderHint(QPainter::Antialiasing, true);
- p->drawRect (QRectF( 0, 0, rect().width(), rect().height()));
+ if(p)
+ {
+ p->setBrush(brush());
+ p->setPen(Qt::NoPen);
+ p->setRenderHint(QPainter::Antialiasing, true);
+ p->drawRect (QRectF( 0, 0, rect().width(), rect().height()));
+ }
}
void QgsComposerItem::hoverMoveEvent ( QGraphicsSceneHoverEvent * event )
Added: branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.cpp (rev 0)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.cpp 2008-08-19 20:45:12 UTC (rev 9075)
@@ -0,0 +1,149 @@
+/***************************************************************************
+ qgscomposeritemwidget.cpp
+ -------------------------
+ begin : August 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 "qgscomposeritemwidget.h"
+#include "qgscomposeritem.h"
+#include <QColorDialog>
+
+QgsComposerItemWidget::QgsComposerItemWidget(QWidget* parent, QgsComposerItem* item): QWidget(parent), mItem(item)
+{
+ setupUi(this);
+ setValuesForGuiElements();
+}
+
+QgsComposerItemWidget::QgsComposerItemWidget(): QWidget(0), mItem(0)
+{
+
+}
+
+QgsComposerItemWidget::QgsComposerItemWidget::~QgsComposerItemWidget()
+{
+
+}
+
+//slots
+void QgsComposerItemWidget::on_mFrameColorButton_clicked()
+{
+ if(!mItem)
+ {
+ return;
+ }
+
+ QColor newFrameColor = QColorDialog::getColor(mItem->pen().color(), 0);
+ if(!newFrameColor.isValid())
+ {
+ return; //dialog canceled
+ }
+
+ QPen thePen;
+ thePen.setColor(newFrameColor);
+ thePen.setWidthF(mOutlineWidthSpinBox->value());
+
+ mItem->setPen(thePen);
+ mItem->update();
+}
+
+void QgsComposerItemWidget::on_mBackgroundColorButton_clicked()
+{
+ if(!mItem)
+ {
+ return;
+ }
+
+ QColor newBackgroundColor = QColorDialog::getColor(mItem->brush().color(), 0);
+ if(!newBackgroundColor.isValid())
+ {
+ return; //dialog canceled
+ }
+
+ newBackgroundColor.setAlpha(mOpacitySlider->value());
+ mItem->setBrush(QBrush(QColor(newBackgroundColor), Qt::SolidPattern));
+ mItem->update();
+}
+
+void QgsComposerItemWidget::on_mOpacitySlider_sliderReleased()
+{
+ if(!mItem)
+ {
+ return;
+ }
+ int value = mOpacitySlider->value();
+
+ QBrush itemBrush = mItem->brush();
+ QColor brushColor = itemBrush.color();
+ brushColor.setAlpha(value);
+ mItem->setBrush(QBrush(brushColor));
+ mItem->update();
+}
+
+void QgsComposerItemWidget::on_mOutlineWidthSpinBox_valueChanged(double d)
+{
+ if(!mItem)
+ {
+ return;
+ }
+
+ QPen itemPen = mItem->pen();
+ itemPen.setWidthF(d);
+ mItem->setPen(itemPen);
+}
+
+void QgsComposerItemWidget::on_mFrameCheckBox_stateChanged(int state)
+{
+ if(!mItem)
+ {
+ return;
+ }
+
+ if(state == Qt::Checked)
+ {
+ mItem->setFrame(true);
+ }
+ else
+ {
+ mItem->setFrame(false);
+ }
+ mItem->update();
+}
+
+void QgsComposerItemWidget::setValuesForGuiElements()
+{
+ if(!mItem)
+ {
+ return;
+ }
+
+ mOpacitySlider->blockSignals(true);
+ mOutlineWidthSpinBox->blockSignals(true);
+ mFrameCheckBox->blockSignals(true);
+
+ mOpacitySlider->setValue(mItem->brush().color().alpha());
+ mOutlineWidthSpinBox->setValue(mItem->pen().widthF());
+ if(mItem->frame())
+ {
+ mFrameCheckBox->setCheckState(Qt::Checked);
+ }
+ else
+ {
+ mFrameCheckBox->setCheckState(Qt::Unchecked);
+ }
+
+ mOpacitySlider->blockSignals(false);
+ mOutlineWidthSpinBox->blockSignals(false);
+ mFrameCheckBox->blockSignals(false);
+
+}
Added: branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.h (rev 0)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemwidget.h 2008-08-19 20:45:12 UTC (rev 9075)
@@ -0,0 +1,48 @@
+/***************************************************************************
+ qgscomposeritemwidget.h
+ -------------------------
+ begin : August 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 QGSCOMPOSERITEMWIDGET_H
+#define QGSCOMPOSERITEMWIDGET_H
+
+#include "ui_qgscomposeritemwidgetbase.h"
+
+class QgsComposerItem;
+
+/**A class to enter generic properties for composer items (e.g. background, outline, frame).
+ This widget can be embedded into other item widgets*/
+class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBase
+{
+ Q_OBJECT
+ public:
+ QgsComposerItemWidget(QWidget* parent, QgsComposerItem* item);
+ ~QgsComposerItemWidget();
+
+ public slots:
+ void on_mFrameColorButton_clicked();
+ void on_mBackgroundColorButton_clicked();
+ void on_mOpacitySlider_sliderReleased();
+ void on_mOutlineWidthSpinBox_valueChanged(double d);
+ void on_mFrameCheckBox_stateChanged(int state);
+
+ private:
+ QgsComposerItemWidget();
+ void setValuesForGuiElements();
+
+ QgsComposerItem* mItem;
+};
+
+#endif //QGSCOMPOSERITEMWIDGET_H
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-08-19 20:45:12 UTC (rev 9075)
@@ -68,6 +68,8 @@
QSizeF size;
double maxXCoord = 0;
+
+
//go through model...
QStandardItem* rootItem = mLegendModel.invisibleRootItem();
if(!rootItem)
@@ -75,9 +77,12 @@
return size;
}
+
if(painter)
{
painter->save();
+ drawBackground(painter);
+ painter->setPen(QPen(QColor(0, 0, 0))); //draw all text black
}
int numLayerItems = rootItem->rowCount();
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.cpp 2008-08-19 20:45:12 UTC (rev 9075)
@@ -18,12 +18,17 @@
#include "qgscomposerlegendwidget.h"
#include "qgscomposerlegend.h"
#include "qgscomposerlegenditemdialog.h"
+#include "qgscomposeritemwidget.h"
#include <QFontDialog>
QgsComposerLegendWidget::QgsComposerLegendWidget(QgsComposerLegend* legend): mLegend(legend)
{
setupUi(this);
+ //add widget for item properties
+ QgsComposerItemWidget* itemPropertiesWidget = new QgsComposerItemWidget(this, legend);
+ gridLayout->addWidget(itemPropertiesWidget, 2, 0, 1, 1);
+
if(legend)
{
mItemTreeView->setModel(legend->model());
@@ -58,14 +63,6 @@
mIconLabelSpaceSpinBox->setValue(mLegend->iconLabelSpace());
mBoxSpaceSpinBox->setValue(mLegend->boxSpace());
- if(mLegend->frame())
- {
- mBoxCheckBox->setCheckState(Qt::Checked);
- }
- else
- {
- mBoxCheckBox->setCheckState(Qt::Unchecked);
- }
blockSignals(false);
}
@@ -175,23 +172,7 @@
}
}
-void QgsComposerLegendWidget::on_mBoxCheckBox_stateChanged(int state)
-{
- if(mLegend)
- {
- if(state == Qt::Checked)
- {
- mLegend->setFrame(true);
- }
- else
- {
- mLegend->setFrame(false);
- }
- mLegend->update();
- }
-}
-
void QgsComposerLegendWidget::on_mBoxSpaceSpinBox_valueChanged(double d)
{
if(mLegend)
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegendwidget.h 2008-08-19 20:45:12 UTC (rev 9075)
@@ -45,7 +45,6 @@
void on_mTitleFontButton_clicked();
void on_mLayerFontButton_clicked();
void on_mItemFontButton_clicked();
- void on_mBoxCheckBox_stateChanged(int state);
void on_mBoxSpaceSpinBox_valueChanged(double d);
//item manipulation
Modified: branches/advanced_printing_branch/src/ui/CMakeLists.txt
===================================================================
--- branches/advanced_printing_branch/src/ui/CMakeLists.txt 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/ui/CMakeLists.txt 2008-08-19 20:45:12 UTC (rev 9075)
@@ -10,6 +10,7 @@
qgscomposerlabelwidgetbase.ui
qgscomposerlegenditemdialogbase.ui
qgscomposerlegendwidgetbase.ui
+ qgscomposeritemwidgetbase.ui
qgscomposermapwidgetbase.ui
qgscomposerpicturewidgetbase.ui
qgscomposerscalebarwidgetbase.ui
Added: branches/advanced_printing_branch/src/ui/qgscomposeritemwidgetbase.ui
===================================================================
--- branches/advanced_printing_branch/src/ui/qgscomposeritemwidgetbase.ui (rev 0)
+++ branches/advanced_printing_branch/src/ui/qgscomposeritemwidgetbase.ui 2008-08-19 20:45:12 UTC (rev 9075)
@@ -0,0 +1,84 @@
+<ui version="4.0" >
+ <class>QgsComposerItemWidgetBase</class>
+ <widget class="QWidget" name="QgsComposerItemWidgetBase" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>355</width>
+ <height>203</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="mComposerItemPropertiesGroupBox" >
+ <property name="title" >
+ <string>Composer item properties</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="mColorLabel" >
+ <property name="text" >
+ <string>Color:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2" >
+ <widget class="QPushButton" name="mFrameColorButton" >
+ <property name="text" >
+ <string>Frame...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" >
+ <widget class="QPushButton" name="mBackgroundColorButton" >
+ <property name="text" >
+ <string>Background...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2" >
+ <widget class="QLabel" name="mOpacityLabel" >
+ <property name="text" >
+ <string>Opacity:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" colspan="2" >
+ <widget class="QSlider" name="mOpacitySlider" >
+ <property name="maximum" >
+ <number>255</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QLabel" name="mOutlineWidthLabel" >
+ <property name="text" >
+ <string>Outline width: </string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2" colspan="2" >
+ <widget class="QDoubleSpinBox" name="mOutlineWidthSpinBox" />
+ </item>
+ <item row="3" column="0" colspan="2" >
+ <widget class="QCheckBox" name="mFrameCheckBox" >
+ <property name="text" >
+ <string>Frame</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
Modified: branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui
===================================================================
--- branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui 2008-08-19 08:36:29 UTC (rev 9074)
+++ branches/advanced_printing_branch/src/ui/qgscomposerlegendwidgetbase.ui 2008-08-19 20:45:12 UTC (rev 9075)
@@ -6,7 +6,7 @@
<x>0</x>
<y>0</y>
<width>496</width>
- <height>575</height>
+ <height>626</height>
</rect>
</property>
<property name="sizePolicy" >
@@ -134,43 +134,6 @@
<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>
@@ -186,9 +149,9 @@
</widget>
</item>
<item row="1" column="0" >
- <widget class="QGroupBox" name="mItemsGroupBox" >
+ <widget class="QGroupBox" name="mLegendItemsGroupBox" >
<property name="title" >
- <string>Items</string>
+ <string>Legend items</string>
</property>
<layout class="QGridLayout" >
<item row="0" column="0" >
More information about the QGIS-commit
mailing list