[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