[QGIS Commit] r8929 - branches/advanced_printing_branch/src/app/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sun Jul 27 10:55:08 EDT 2008


Author: mhugent
Date: 2008-07-27 10:55:08 -0400 (Sun, 27 Jul 2008)
New Revision: 8929

Modified:
   branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h
   branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h
   branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
   branches/advanced_printing_branch/src/app/composer/qgscomposerlabelwidget.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/qgscomposermap.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
   branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
   branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposition.h
   branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.cpp
   branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.h
Log:
Read and write xml implemented for paper item and composer label

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -147,7 +147,7 @@
   //connect with signals from QgsProject to read/write project files
   if(QgsProject::instance())
     {
-      connect(QgsProject::instance(), SIGNAL(readProject(const QDomDocument&)), this, SLOT(readXML(const QDomDocument& doc)));
+      connect(QgsProject::instance(), SIGNAL(readProject(const QDomDocument&)), this, SLOT(readXML(const QDomDocument&)));
       connect(QgsProject::instance(), SIGNAL(writeProject(QDomDocument&)), this, SLOT(writeXML(QDomDocument&)));
     }
 }
@@ -1128,26 +1128,102 @@
       return;
     }
   
-  QDomElement composerNode = doc.createElement("composer");
-  qgisElem.appendChild( composerNode );
+  QDomElement composerElem = doc.createElement("Composer");
+  qgisElem.appendChild( composerElem );
 
   //store composer items:
   QMap<QgsComposerItem*, QWidget*>::const_iterator itemIt = mItemWidgetMap.constBegin();
   for(; itemIt != mItemWidgetMap.constEnd(); ++itemIt)
     {
-      itemIt.key()->writeXML(composerNode, doc);
+      itemIt.key()->writeXML(composerElem, doc);
     }
 
   //store composer view
 
   //store composition
+  if(mComposition)
+    {
+      mComposition->writeXML(composerElem, doc);
+    }
 
+
   return;
 }
 
 void QgsComposer::readXML(const QDomDocument& doc)
 {
-  //todo...
+  //delete composer view and composition
+  delete mView;
+  mView = 0;
+  //delete every child of mViewFrame
+  QObjectList viewFrameChildren = mViewFrame->children();
+  QObjectList::iterator it = viewFrameChildren.begin();
+  for(; it != viewFrameChildren.end(); ++it)
+    {
+      delete (*it);
+    }
+
+  //delete composition widget
+  QgsCompositionWidget* oldCompositionWidget = dynamic_cast<QgsCompositionWidget*>(mCompositionOptionsFrame->children().at(0));
+  delete oldCompositionWidget;
+  delete mCompositionOptionsLayout;
+  mCompositionOptionsLayout = 0;
+
+  //look for Composer element
+
+  QDomNodeList nl = doc.elementsByTagName("Composer");
+  if(nl.size() < 1)
+    {
+      return; //nothing to do...
+    }
+  QDomElement composerElem = nl.at(0).toElement();
+
+  //look for Composition element
+  QDomNodeList cnl = composerElem.elementsByTagName("Composition");
+  if(cnl.size() > 0)
+    {
+      QDomElement compositionElem = cnl.at(0).toElement();
+
+      //todo: move in function because duplicated code with constructor
+      mView = new QgsComposerView(mViewFrame);
+      connect(mView, SIGNAL(selectedItemChanged(const QgsComposerItem*)), this, SLOT(showItemOptions(const QgsComposerItem*)));
+      connect(mView, SIGNAL(composerLabelAdded(QgsComposerLabel*)), this, SLOT(addComposerLabel(QgsComposerLabel*)));
+      connect(mView, SIGNAL(composerMapAdded(QgsComposerMap*)), this, SLOT(addComposerMap(QgsComposerMap*)));
+      connect(mView, SIGNAL(itemRemoved(QgsComposerItem*)), this, SLOT(deleteItem(QgsComposerItem*)));
+      connect(mView, SIGNAL(composerScaleBarAdded(QgsComposerScaleBar*)), this, SLOT(addComposerScaleBar(QgsComposerScaleBar*)));
+      connect(mView, SIGNAL(composerLegendAdded(QgsComposerLegend*)), this, SLOT(addComposerLegend(QgsComposerLegend*)));
+
+      mComposition = new QgsComposition(mQgis->getMapCanvas());
+      mComposition->readXML(compositionElem, doc);
+
+      QGridLayout *l = new QGridLayout(mViewFrame );
+      l->setMargin(0);
+      l->addWidget( mView, 0, 0 );
+
+      //create compositionwidget
+      QgsCompositionWidget* compositionWidget = new QgsCompositionWidget(mCompositionOptionsFrame, mComposition);
+      compositionWidget->show();
+
+      mCompositionOptionsLayout = new QGridLayout( mCompositionOptionsFrame );
+      mCompositionOptionsLayout->setMargin(0);
+      mCompositionOptionsLayout->addWidget(compositionWidget);
+
+      //read and restore all the items
+      
+      //composer labels
+      QDomNodeList composerLabelList = composerElem.elementsByTagName("ComposerLabel");
+      for(int i = 0; i < composerLabelList.size(); ++i)
+	{
+	  QDomElement currentComposerLabelElem = composerLabelList.at(i).toElement();
+	  QgsComposerLabel* newLabel = new QgsComposerLabel(mComposition);
+	  newLabel->readXML(currentComposerLabelElem, doc);
+	  addComposerLabel(newLabel);
+	  mComposition->addItem(newLabel);
+	  mComposition->update();
+	}
+    }
+
+  mView->setComposition(mComposition);
 }
 
 void QgsComposer::addComposerMap(QgsComposerMap* map)

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -89,8 +89,42 @@
   return true;
 }
 
-bool QgsComposerItem::readXML( QDomElement& elem) {  return true; }
+bool QgsComposerItem::_readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  if(itemElem.isNull())
+    {
+      return false;
+    }
+  
+  //frame
+  QString frame = itemElem.attribute("frame");
+  if(frame.compare("true", Qt::CaseInsensitive) == 0)
+    {
+      mFrame = true;
+    }
+  else
+    {
+      mFrame = false;
+    }
 
+  //position
+  double x, y, width, height;
+  bool xOk, yOk, widthOk, heightOk;
+
+  x = itemElem.attribute("x").toDouble(&xOk);
+  y = itemElem.attribute("y").toDouble(&yOk);
+  width = itemElem.attribute("width").toDouble(&widthOk);
+  height = itemElem.attribute("height").toDouble(&heightOk);
+
+  if(!xOk || !yOk || !widthOk || !heightOk)
+    {
+      return false;
+    }
+
+  setSceneRect(QRectF(x, y, width, height));
+  return true;
+}
+
 void QgsComposerItem::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
 {
   qWarning("QgsComposerItem::mouseMoveEvent");

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -80,14 +80,17 @@
      */
     virtual bool writeXML(QDomElement& elem, QDomDocument & doc) = 0;
 
-    /**Writes parameter that are not subclass specific in document. Usually called from subclass specific methods*/
+    /**Writes parameter that are not subclass specific in document. Usually called from writeXML methods of subclasses*/
     bool _writeXML(QDomElement& itemElem, QDomDocument& doc);
 
     /** sets state from DOM document
-     * @param node is DOM node corresponding to 'Composer' tag
+     * @param itemElem is DOM node corresponding to item tag
      */
-    virtual bool readXML( QDomElement& elem);
+    virtual bool readXML(const QDomElement& itemElem, const QDomDocument& doc) = 0;
 
+    /**Reads parameter that are not subclass specific in document. Usually called from readXML methods of subclasses*/
+    bool _readXML(const QDomElement& itemElem, const QDomDocument& doc);
+
     
 
     bool frame() const {return mFrame;}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -167,5 +167,10 @@
 
 bool QgsComposerItemGroup::writeXML(QDomElement& elem, QDomDocument & doc)
 {
-  return true;
+  return true; //soon...
 }
+
+bool QgsComposerItemGroup::readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  return false; //soon...
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -46,6 +46,11 @@
      */
   bool writeXML(QDomElement& elem, QDomDocument & doc);
 
+  /** sets state from DOM document
+     * @param itemElem is DOM node corresponding to item tag
+     */
+  bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
+
  signals:
   void childItemDeleted(QgsComposerItem* item);
 

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -75,7 +75,7 @@
   QDomElement composerLabelElem = doc.createElement("ComposerLabel");
 
   composerLabelElem.setAttribute("labelText", mText);
-  composerLabelElem.setAttribute("margin", mMargin);
+  composerLabelElem.setAttribute("margin", QString::number(mMargin));
 
 
   //font
@@ -87,4 +87,35 @@
   return _writeXML(composerLabelElem, doc);
 }
 
+bool QgsComposerLabel::readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  if(itemElem.isNull())
+    {
+      return false;
+    }
 
+  //restore label specific properties
+  
+  //text
+  mText = itemElem.attribute("labelText");
+
+  //margin
+  mMargin = itemElem.attribute("margin").toDouble();
+
+  //font
+  QDomNodeList labelFontList = itemElem.elementsByTagName("LabelFont");
+  if(labelFontList.size() > 0)
+    {
+      QDomElement labelFontElem = labelFontList.at(0).toElement();
+      mFont.fromString(labelFontElem.attribute("description"));
+    }
+
+  //restore general composer item properties
+  QDomNodeList composerItemList = itemElem.elementsByTagName("ComposerItem");
+  if(composerItemList.size() > 0)
+    {
+      QDomElement composerItemElem = composerItemList.at(0).toElement();
+      _readXML(composerItemElem, doc);
+    }
+  return false; //soon...
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -43,6 +43,11 @@
      * @param temp write template file
      */
   bool writeXML(QDomElement& elem, QDomDocument & doc);
+
+  /** sets state from DOM document
+     * @param node is DOM node corresponding to 'ComposerLabel' tag
+     */
+  bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
  
  private:
   // Text 

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabelwidget.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabelwidget.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabelwidget.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -35,6 +35,7 @@
 	{
 	  mBoxCheckBox->setCheckState(Qt::Unchecked);
 	}
+      mMarginDoubleSpinBox->setValue(mComposerLabel->margin());
     }
 }
 

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -320,5 +320,10 @@
 
 bool QgsComposerLegend::writeXML(QDomElement& elem, QDomDocument & doc)
 {
-  return true;
+  return true; //soon...
 }
+
+bool QgsComposerLegend::readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  return false; //soon...
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -78,6 +78,11 @@
      */
   bool writeXML(QDomElement& elem, QDomDocument & doc);
 
+  /** sets state from DOM document
+     * @param itemElem is DOM node corresponding to item tag
+     */
+  bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
+
  protected:
   QString mTitle;
 

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -328,5 +328,10 @@
 
 bool QgsComposerMap::writeXML(QDomElement& elem, QDomDocument & doc)
 {
-  return true;
+  return true; //soon...
 }
+
+bool QgsComposerMap::readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  return false; //soon...
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -110,6 +110,11 @@
      */
     bool writeXML(QDomElement& elem, QDomDocument & doc);
 
+    /** sets state from DOM document
+     * @param itemElem is DOM node corresponding to 'ComposerMap' tag
+     */
+    bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
+
 public slots:
 
     // Called if map canvas has changed

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -243,7 +243,12 @@
 
 bool QgsComposerScaleBar::writeXML(QDomElement& elem, QDomDocument & doc)
 {
-  return true;
+  return true; //soon...
 }
 
+bool QgsComposerScaleBar::readXML(const QDomElement& itemElem, const QDomDocument& doc)
+{
+  return false; //soon...
+}
 
+

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -104,6 +104,11 @@
      */
   bool writeXML(QDomElement& elem, QDomDocument & doc);
 
+  /** sets state from DOM document
+     * @param itemElem is DOM node corresponding to item tag
+     */
+  bool readXML(const QDomElement& itemElem, const QDomDocument& doc);
+
  public slots:
   void updateSegmentSize();
   /**Sets mCompositionMap to 0 if the map is deleted*/

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -17,6 +17,8 @@
 #include "qgscomposition.h"
 #include "qgscomposeritem.h"
 #include "qgscomposermap.h"
+#include <QDomDocument>
+#include <QDomElement>
 #include <QGraphicsRectItem>
 
 QgsComposition::QgsComposition(QgsMapCanvas* mapCanvas): QGraphicsScene(0), mMapCanvas(mapCanvas), mPlotStyle(QgsComposition::Preview), mPaperItem(0)
@@ -131,3 +133,41 @@
 
   return 0;
 }
+
+bool QgsComposition::writeXML(QDomElement& composerElem, QDomDocument& doc)
+{
+  if(composerElem.isNull())
+    {
+      return false;
+    }
+
+  QDomElement compositionElem = doc.createElement("Composition");
+  if(mPaperItem)
+    {
+      compositionElem.setAttribute("paperWidth", mPaperItem->rect().width());
+      compositionElem.setAttribute("paperHeight", mPaperItem->rect().height());
+    }
+  composerElem.appendChild(compositionElem);
+}
+
+bool QgsComposition::readXML(const QDomElement& compositionElem, const QDomDocument& doc)
+{
+  if(compositionElem.isNull())
+    {
+      return false;
+    }
+
+  //create paper item
+  bool widthConversionOk, heightConversionOk;
+  double paperWidth = compositionElem.attribute("paperWidth").toDouble(&widthConversionOk);
+  double paperHeight = compositionElem.attribute("paperHeight").toDouble(&heightConversionOk);
+
+  if(widthConversionOk && heightConversionOk)
+    {
+      delete mPaperItem;
+      mPaperItem = new QGraphicsRectItem( 0, 0, paperWidth, paperHeight, 0);
+      mPaperItem->setBrush(Qt::white);
+      addItem(mPaperItem);
+      mPaperItem->setZValue(0);
+    }
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposition.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposition.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposition.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -23,6 +23,9 @@
 class QGraphicsRectItem;
 class QgsMapCanvas;
 
+class QDomDocument;
+class QDomElement;
+
 /**Graphics scene for map printing. It manages the paper item which always is the item in the back (z-value 0)*/
 class QgsComposition: public QGraphicsScene
 {
@@ -66,6 +69,12 @@
   QgsComposition::PlotStyle plotStyle() const {return mPlotStyle;}
   void setPlotStyle(QgsComposition::PlotStyle style) {mPlotStyle = style;}
 
+  /**Writes settings to xml (paper dimension)*/
+  bool writeXML(QDomElement& composerElem, QDomDocument& doc);
+
+  /**Reads settings from xml file*/
+  bool readXML(const QDomElement& compositionElem, const QDomDocument& doc);
+
  private:
   QgsMapCanvas* mMapCanvas;
   QgsComposition::PlotStyle mPlotStyle;

Modified: branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.cpp	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.cpp	2008-07-27 14:55:08 UTC (rev 8929)
@@ -29,8 +29,9 @@
   mPaperOrientationComboBox->insertItem(1, tr("Portrait"));
   mPaperOrientationComboBox->blockSignals(false);
   mPaperOrientationComboBox->setCurrentItem(0);
-
-  applyCurrentPaperSettings();
+  
+  //read with/height from composition and find suitable entries to display
+  displayCompositionWidthHeight();
 }
 
 QgsCompositionWidget::QgsCompositionWidget(): QWidget(0), mComposition(0)
@@ -76,8 +77,6 @@
   mPaperMap.insert ( tr("Legal (8.5x14 inches)"), QgsCompositionPaper( tr("Legal (8.5x14 inches)"), 216, 356 ) );
   mPaperSizeComboBox->insertItem(14, tr("Legal (8.5x14 inches)"));
   mPaperSizeComboBox->blockSignals(false);
-
-  mPaperSizeComboBox->setCurrentIndex(2); //A4 default
 }
 
 void QgsCompositionWidget::on_mPaperSizeComboBox_currentIndexChanged(const QString& text)
@@ -203,3 +202,64 @@
 {
   applyWidthHeight();
 }
+
+void QgsCompositionWidget::displayCompositionWidthHeight()
+{
+  if(!mComposition)
+    {
+      return;
+    }
+
+  //block all signals to avoid infinite recursion
+  mPaperSizeComboBox->blockSignals(true);
+  mPaperUnitsComboBox->blockSignals(true);
+  mPaperWidthLineEdit->blockSignals(true);
+  mPaperHeightLineEdit->blockSignals(true);
+  mPaperOrientationComboBox->blockSignals(true);
+  mResolutionLineEdit->blockSignals(true);
+
+  double paperWidth = mComposition->paperWidth();
+  mPaperWidthLineEdit->setText(QString::number(paperWidth));
+
+  double paperHeight = mComposition->paperHeight();
+  mPaperHeightLineEdit->setText(QString::number(paperHeight));
+
+  //set orientation
+  if(paperWidth > paperHeight)
+    {
+      mPaperOrientationComboBox->setCurrentIndex(mPaperOrientationComboBox->findText(tr("Landscape")));
+    }
+  else
+    {
+      mPaperOrientationComboBox->setCurrentIndex(mPaperOrientationComboBox->findText(tr("Portrait")));
+    }
+
+  //set paper name
+  bool found = false;
+  QMap<QString, QgsCompositionPaper>::const_iterator paper_it = mPaperMap.constBegin();
+  for(; paper_it != mPaperMap.constEnd(); ++paper_it)
+    {
+      QgsCompositionPaper currentPaper = paper_it.value();
+
+      //consider width and height values may be exchanged
+      if( (currentPaper.mWidth == paperWidth && currentPaper.mHeight == paperHeight)
+	  || (currentPaper.mWidth == paperHeight && currentPaper.mHeight == paperWidth) )
+	{
+	  mPaperSizeComboBox->setCurrentItem(mPaperSizeComboBox->findText(paper_it.key()));
+	  found = true;
+	}
+    }
+
+  if(!found)
+    {
+      //custom
+      mPaperSizeComboBox->setCurrentItem(0);
+    }
+
+  mPaperSizeComboBox->blockSignals(false);
+  mPaperUnitsComboBox->blockSignals(false);
+  mPaperWidthLineEdit->blockSignals(false);
+  mPaperHeightLineEdit->blockSignals(false);
+  mPaperOrientationComboBox->blockSignals(false);
+  mResolutionLineEdit->blockSignals(false);
+}

Modified: branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.h	2008-07-27 14:28:11 UTC (rev 8928)
+++ branches/advanced_printing_branch/src/app/composer/qgscompositionwidget.h	2008-07-27 14:55:08 UTC (rev 8929)
@@ -51,6 +51,8 @@
   void applyWidthHeight();
   /**Makes sure width/height values for custom paper matches the current orientation*/
   void adjustOrientation();
+  /**Sets GUI elements to width/height from composition*/
+  void displayCompositionWidthHeight();
   
   void createPaperEntries();
   void insertPaperEntries();



More information about the QGIS-commit mailing list