[QGIS Commit] r9966 - in branches/advanced_printing_branch2/src: app/composer core/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Jan 13 09:09:17 EST 2009


Author: mhugent
Date: 2009-01-13 09:09:17 -0500 (Tue, 13 Jan 2009)
New Revision: 9966

Modified:
   branches/advanced_printing_branch2/src/app/composer/qgscompositionwidget.cpp
   branches/advanced_printing_branch2/src/core/composer/qgscomposition.cpp
   branches/advanced_printing_branch2/src/core/composer/qgscomposition.h
   branches/advanced_printing_branch2/src/core/composer/qgspaperitem.cpp
Log:
Save composer snap grid appearance in settings and the rest of the snap grid settings in the project file

Modified: branches/advanced_printing_branch2/src/app/composer/qgscompositionwidget.cpp
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscompositionwidget.cpp	2009-01-13 09:18:06 UTC (rev 9965)
+++ branches/advanced_printing_branch2/src/app/composer/qgscompositionwidget.cpp	2009-01-13 14:09:17 UTC (rev 9966)
@@ -39,11 +39,25 @@
   //read with/height from composition and find suitable entries to display
   displayCompositionWidthHeight();
 
-  //read printout resolution from composition
   if ( mComposition )
   {
+    //read printout resolution from composition
     mResolutionLineEdit->setText( QString::number( mComposition->printResolution() ) );
 
+    //snap grid
+    if( mComposition->snapToGridEnabled() )
+    {
+      mSnapToGridCheckBox->setCheckState(Qt::Checked);
+    }
+    else
+    {
+      mSnapToGridCheckBox->setCheckState(Qt::Unchecked);
+    }
+    mResolutionSpinBox->setValue( mComposition->snapGridResolution() );
+    mOffsetXSpinBox->setValue( mComposition->snapGridOffsetX() );
+    mOffsetYSpinBox->setValue( mComposition->snapGridOffsetY() );
+
+
     //grid pen width
     mPenWidthSpinBox->blockSignals(true);
     mPenWidthSpinBox->setValue(mComposition->gridPen().widthF());
@@ -53,14 +67,27 @@
     mGridColorButton->blockSignals(true);
     mGridColorButton->setColor(mComposition->gridPen().color());
     mGridColorButton->blockSignals(false);
+
+    mGridStyleComboBox->blockSignals(true);
+    mGridStyleComboBox->insertItem( 0, tr("Solid"));
+    mGridStyleComboBox->insertItem( 1, tr("Dots"));
+    mGridStyleComboBox->insertItem( 2, tr("Crosses"));
+
+    QgsComposition::GridStyle snapGridStyle = mComposition->gridStyle();
+    if(snapGridStyle == QgsComposition::Solid)
+    {
+      mGridStyleComboBox->setCurrentIndex( 0 );
+    }
+    else if(snapGridStyle == QgsComposition::Dots)
+    {
+      mGridStyleComboBox->setCurrentIndex( 1 );
+    }
+    else
+    {
+      mGridStyleComboBox->setCurrentIndex( 2 );
+    }
+    mGridStyleComboBox->blockSignals(false);
   }
-
-  mGridStyleComboBox->blockSignals(true);
-  mGridStyleComboBox->insertItem( 0, tr("Solid"));
-  mGridStyleComboBox->insertItem( 1, tr("Dots"));
-  mGridStyleComboBox->insertItem( 2, tr("Crosses"));
-  mGridStyleComboBox->blockSignals(false);
-  mGridStyleComboBox->setCurrentIndex( 0 );
 }
 
 QgsCompositionWidget::QgsCompositionWidget(): QWidget( 0 ), mComposition( 0 )

Modified: branches/advanced_printing_branch2/src/core/composer/qgscomposition.cpp
===================================================================
--- branches/advanced_printing_branch2/src/core/composer/qgscomposition.cpp	2009-01-13 09:18:06 UTC (rev 9965)
+++ branches/advanced_printing_branch2/src/core/composer/qgscomposition.cpp	2009-01-13 14:09:17 UTC (rev 9966)
@@ -21,6 +21,7 @@
 #include <QDomDocument>
 #include <QDomElement>
 #include <QGraphicsRectItem>
+#include <QSettings>
 
 QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer ): QGraphicsScene( 0 ), mMapRenderer( mapRenderer ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mSnapToGrid(false), mSnapGridResolution(0.0), mSnapGridOffsetX(0.0), mSnapGridOffsetY(0.0)
 {
@@ -32,15 +33,12 @@
   addItem( mPaperItem );
   mPaperItem->setZValue( 0 );
   mPrintResolution = 300; //hardcoded default
-
-  //snap grid settings
-  mGridPen = QPen(QColor(127, 127, 127));
-  mGridPen.setWidthF(0.3);
+  loadGridAppearanceSettings();
 }
 
 QgsComposition::QgsComposition(): QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mSnapToGrid(false), mSnapGridResolution(0.0), mSnapGridOffsetX(0.0), mSnapGridOffsetY(0.0)
 {
-
+  saveGridAppearanceSettings();
 }
 
 QgsComposition::~QgsComposition()
@@ -166,6 +164,20 @@
     compositionElem.setAttribute( "paperWidth", mPaperItem->rect().width() );
     compositionElem.setAttribute( "paperHeight", mPaperItem->rect().height() );
   }
+
+  //snapping
+  if(mSnapToGrid)
+  {
+    compositionElem.setAttribute( "snapping", "1");
+  }
+  else
+  {
+    compositionElem.setAttribute( "snapping", "0");
+  }
+  compositionElem.setAttribute("snapGridResolution", mSnapGridResolution);
+  compositionElem.setAttribute("snapGridOffsetX", mSnapGridOffsetX);
+  compositionElem.setAttribute("snapGridOffsetY", mSnapGridOffsetY);
+
   composerElem.appendChild( compositionElem );
 
   return true;
@@ -192,6 +204,24 @@
     mPaperItem->setZValue( 0 );
   }
 
+  //snapping
+  if(compositionElem.attribute("snapping") == "0")
+  {
+    mSnapToGrid = false;
+  }
+  else
+  {
+    mSnapToGrid = true;
+  }
+  mSnapGridResolution = compositionElem.attribute("snapGridResolution").toDouble();
+  mSnapGridOffsetX = compositionElem.attribute("snapGridOffsetX").toDouble();
+  mSnapGridOffsetY = compositionElem.attribute("snapGridOffsetY").toDouble();
+
+  if(mPaperItem)
+  {
+    mPaperItem->update();
+  }
+
   return true;
 }
 
@@ -654,6 +684,7 @@
     {
       mPaperItem->update();
     }
+  saveGridAppearanceSettings();
 }
 
 void QgsComposition::setGridStyle(GridStyle s)
@@ -663,4 +694,60 @@
     {
       mPaperItem->update();
     }
+  saveGridAppearanceSettings();
 }
+
+void QgsComposition::loadGridAppearanceSettings()
+{
+   //read grid style, grid color and pen width from settings
+  QSettings s;
+
+  QString gridStyleString;
+  int red, green, blue;
+  double penWidth;
+
+  gridStyleString = s.value("/qgis/composerGridStyle", "Dots").toString();
+  penWidth = s.value("/qgis/composerGridWidth", 0.5).toDouble();
+  red = s.value("/qgis/composerGridRed", 0).toInt();
+  green = s.value("/qgis/composerGridGreen", 0).toInt();
+  blue = s.value("/qgis/composerGridBlue", 0).toInt();
+
+  mGridPen.setColor(QColor(red, green, blue));
+  mGridPen.setWidthF(penWidth);
+
+  if(gridStyleString == "Dots")
+  {
+    mGridStyle = Dots;
+  }
+  else if(gridStyleString == "Crosses")
+  {
+    mGridStyle = Crosses;
+  }
+  else
+  {
+    mGridStyle = Solid;
+  }
+}
+
+void QgsComposition::saveGridAppearanceSettings()
+{
+   //store grid appearance settings
+  QSettings s;
+  s.setValue("/qgis/composerGridWidth", mGridPen.widthF());
+  s.setValue("/qgis/composerGridRed", mGridPen.color().red());
+  s.setValue("/qgis/composerGridGreen", mGridPen.color().green());
+  s.setValue("/qgis/composerGridBlue", mGridPen.color().blue());
+
+  if(mGridStyle == Solid)
+  {
+    s.setValue("/qgis/composerGridStyle", "Solid");
+  }
+  else if(mGridStyle == Dots)
+  {
+    s.setValue("/qgis/composerGridStyle", "Dots");
+  }
+  else if(mGridStyle == Crosses)
+  {
+    s.setValue("/qgis/composerGridStyle", "Crosses");
+  }
+}

Modified: branches/advanced_printing_branch2/src/core/composer/qgscomposition.h
===================================================================
--- branches/advanced_printing_branch2/src/core/composer/qgscomposition.h	2009-01-13 09:18:06 UTC (rev 9965)
+++ branches/advanced_printing_branch2/src/core/composer/qgscomposition.h	2009-01-13 14:09:17 UTC (rev 9966)
@@ -178,6 +178,9 @@
     /**Returns the bounding rectangle of the selected items in scene coordinates
      @return 0 in case of success*/
     int boundingRectOfSelectedItems(QRectF& bRect);
+
+    void loadGridAppearanceSettings();
+    void saveGridAppearanceSettings();
 };
 
 #endif

Modified: branches/advanced_printing_branch2/src/core/composer/qgspaperitem.cpp
===================================================================
--- branches/advanced_printing_branch2/src/core/composer/qgspaperitem.cpp	2009-01-13 09:18:06 UTC (rev 9965)
+++ branches/advanced_printing_branch2/src/core/composer/qgspaperitem.cpp	2009-01-13 14:09:17 UTC (rev 9966)
@@ -75,7 +75,7 @@
           }
 
           //draw horizontal lines
-
+          currentYCoord = minYCoord;
           for(; currentYCoord <= rect().height(); currentYCoord += mComposition->snapGridResolution())
           {
             painter->drawLine(QPointF(0, currentYCoord), QPointF(rect().width(), currentYCoord));



More information about the QGIS-commit mailing list