00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "qgscomposition.h"
00018 #include "qgscomposeritem.h"
00019 #include "qgscomposermap.h"
00020 #include "qgspaperitem.h"
00021 #include "qgslogger.h"
00022 #include <QDomDocument>
00023 #include <QDomElement>
00024 #include <QGraphicsRectItem>
00025 #include <QSettings>
00026
00027 QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer ): QGraphicsScene( 0 ), mMapRenderer( mapRenderer ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 )
00028 {
00029 setBackgroundBrush( Qt::gray );
00030
00031
00032 mPaperItem = new QgsPaperItem( 0, 0, 297, 210, this );
00033 mPaperItem->setBrush( Qt::white );
00034 addItem( mPaperItem );
00035 mPaperItem->setZValue( 0 );
00036 mPrintResolution = 300;
00037 loadGridAppearanceSettings();
00038
00039
00040 QSettings s;
00041 mPrintAsRaster = s.value( "/qgis/composerPrintAsRaster", false ).toBool();
00042 }
00043
00044 QgsComposition::QgsComposition(): QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mPrintAsRaster( false ), mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 )
00045 {
00046 loadGridAppearanceSettings();
00047
00048 QSettings s;
00049 mPrintAsRaster = s.value( "/qgis/composerPrintAsRaster", false ).toBool();
00050 }
00051
00052 QgsComposition::~QgsComposition()
00053 {
00054 delete mPaperItem;
00055
00056
00057
00058
00059 clear();
00060 }
00061
00062 void QgsComposition::setPaperSize( double width, double height )
00063 {
00064 if ( mPaperItem )
00065 {
00066 mPaperItem->setRect( QRectF( 0, 0, width, height ) );
00067 emit paperSizeChanged();
00068 }
00069 }
00070
00071 double QgsComposition::paperHeight() const
00072 {
00073 return mPaperItem->rect().height();
00074 }
00075
00076 double QgsComposition::paperWidth() const
00077 {
00078 return mPaperItem->rect().width();
00079 }
00080
00081 QgsComposerItem* QgsComposition::composerItemAt( const QPointF & position )
00082 {
00083 QList<QGraphicsItem *> itemList = items( position );
00084 QList<QGraphicsItem *>::iterator itemIt = itemList.begin();
00085
00086 for ( ; itemIt != itemList.end(); ++itemIt )
00087 {
00088 QgsComposerItem* composerItem = dynamic_cast<QgsComposerItem *>( *itemIt );
00089 if ( composerItem && composerItem != mPaperItem )
00090 {
00091 return composerItem;
00092 }
00093 }
00094 return 0;
00095 }
00096
00097 QList<QgsComposerItem*> QgsComposition::selectedComposerItems()
00098 {
00099 QList<QgsComposerItem*> composerItemList;
00100
00101 QList<QGraphicsItem *> graphicsItemList = selectedItems();
00102 QList<QGraphicsItem *>::iterator itemIter = graphicsItemList.begin();
00103
00104 for ( ; itemIter != graphicsItemList.end(); ++itemIter )
00105 {
00106 QgsComposerItem* composerItem = dynamic_cast<QgsComposerItem *>( *itemIter );
00107 if ( composerItem )
00108 {
00109 composerItemList.push_back( composerItem );
00110 }
00111 }
00112
00113 return composerItemList;
00114 }
00115
00116 QList<const QgsComposerMap*> QgsComposition::composerMapItems() const
00117 {
00118 QList<const QgsComposerMap*> resultList;
00119
00120 QList<QGraphicsItem *> itemList = items();
00121 QList<QGraphicsItem *>::iterator itemIt = itemList.begin();
00122 for ( ; itemIt != itemList.end(); ++itemIt )
00123 {
00124 const QgsComposerMap* composerMap = dynamic_cast<const QgsComposerMap *>( *itemIt );
00125 if ( composerMap )
00126 {
00127 resultList.push_back( composerMap );
00128 }
00129 }
00130
00131 return resultList;
00132 }
00133
00134 const QgsComposerMap* QgsComposition::getComposerMapById( int id ) const
00135 {
00136 QList<const QgsComposerMap*> resultList;
00137
00138 QList<QGraphicsItem *> itemList = items();
00139 QList<QGraphicsItem *>::iterator itemIt = itemList.begin();
00140 for ( ; itemIt != itemList.end(); ++itemIt )
00141 {
00142 const QgsComposerMap* composerMap = dynamic_cast<const QgsComposerMap *>( *itemIt );
00143 if ( composerMap )
00144 {
00145 if ( composerMap->id() == id )
00146 {
00147 return composerMap;
00148 }
00149 }
00150 }
00151
00152 return 0;
00153 }
00154
00155 int QgsComposition::pixelFontSize( double pointSize ) const
00156 {
00157
00158 double sizeMillimeters = pointSize * 0.3527;
00159 return ( sizeMillimeters + 0.5 );
00160 }
00161
00162 double QgsComposition::pointFontSize( int pixelSize ) const
00163 {
00164 double sizePoint = pixelSize / 0.3527;
00165 return sizePoint;
00166 }
00167
00168 bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
00169 {
00170 if ( composerElem.isNull() )
00171 {
00172 return false;
00173 }
00174
00175 QDomElement compositionElem = doc.createElement( "Composition" );
00176 if ( mPaperItem )
00177 {
00178 compositionElem.setAttribute( "paperWidth", mPaperItem->rect().width() );
00179 compositionElem.setAttribute( "paperHeight", mPaperItem->rect().height() );
00180 }
00181
00182
00183 if ( mSnapToGrid )
00184 {
00185 compositionElem.setAttribute( "snapping", "1" );
00186 }
00187 else
00188 {
00189 compositionElem.setAttribute( "snapping", "0" );
00190 }
00191 compositionElem.setAttribute( "snapGridResolution", mSnapGridResolution );
00192 compositionElem.setAttribute( "snapGridOffsetX", mSnapGridOffsetX );
00193 compositionElem.setAttribute( "snapGridOffsetY", mSnapGridOffsetY );
00194
00195 compositionElem.setAttribute( "printResolution", mPrintResolution );
00196
00197 composerElem.appendChild( compositionElem );
00198
00199 return true;
00200 }
00201
00202 bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocument& doc )
00203 {
00204 if ( compositionElem.isNull() )
00205 {
00206 return false;
00207 }
00208
00209
00210 bool widthConversionOk, heightConversionOk;
00211 double paperWidth = compositionElem.attribute( "paperWidth" ).toDouble( &widthConversionOk );
00212 double paperHeight = compositionElem.attribute( "paperHeight" ).toDouble( &heightConversionOk );
00213
00214 if ( widthConversionOk && heightConversionOk )
00215 {
00216 delete mPaperItem;
00217 mPaperItem = new QgsPaperItem( 0, 0, paperWidth, paperHeight, this );
00218 mPaperItem->setBrush( Qt::white );
00219 addItem( mPaperItem );
00220 mPaperItem->setZValue( 0 );
00221 }
00222
00223
00224 if ( compositionElem.attribute( "snapping" ) == "0" )
00225 {
00226 mSnapToGrid = false;
00227 }
00228 else
00229 {
00230 mSnapToGrid = true;
00231 }
00232 mSnapGridResolution = compositionElem.attribute( "snapGridResolution" ).toDouble();
00233 mSnapGridOffsetX = compositionElem.attribute( "snapGridOffsetX" ).toDouble();
00234 mSnapGridOffsetY = compositionElem.attribute( "snapGridOffsetY" ).toDouble();
00235
00236 mPrintResolution = compositionElem.attribute( "printResolution", "300" ).toInt();
00237
00238 if ( mPaperItem )
00239 {
00240 mPaperItem->update();
00241 }
00242
00243 return true;
00244 }
00245
00246 void QgsComposition::addItemToZList( QgsComposerItem* item )
00247 {
00248 if ( !item )
00249 {
00250 return;
00251 }
00252 mItemZList.push_back( item );
00253 QgsDebugMsg( QString::number( mItemZList.size() ) );
00254 item->setZValue( mItemZList.size() );
00255 }
00256
00257 void QgsComposition::removeItemFromZList( QgsComposerItem* item )
00258 {
00259 if ( !item )
00260 {
00261 return;
00262 }
00263 mItemZList.removeAll( item );
00264 }
00265
00266 void QgsComposition::raiseSelectedItems()
00267 {
00268 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00269 QList<QgsComposerItem*>::iterator it = selectedItems.begin();
00270 for ( ; it != selectedItems.end(); ++it )
00271 {
00272 raiseItem( *it );
00273 }
00274
00275
00276 updateZValues();
00277 update();
00278 }
00279
00280 void QgsComposition::raiseItem( QgsComposerItem* item )
00281 {
00282
00283 QMutableLinkedListIterator<QgsComposerItem*> it( mItemZList );
00284 if ( it.findNext( item ) )
00285 {
00286 if ( it.hasNext() )
00287 {
00288 it.remove();
00289 it.next();
00290 it.insert( item );
00291 }
00292 }
00293 }
00294
00295 void QgsComposition::lowerSelectedItems()
00296 {
00297 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00298 QList<QgsComposerItem*>::iterator it = selectedItems.begin();
00299 for ( ; it != selectedItems.end(); ++it )
00300 {
00301 lowerItem( *it );
00302 }
00303
00304
00305 updateZValues();
00306 update();
00307 }
00308
00309 void QgsComposition::lowerItem( QgsComposerItem* item )
00310 {
00311
00312 QMutableLinkedListIterator<QgsComposerItem*> it( mItemZList );
00313 if ( it.findNext( item ) )
00314 {
00315 it.previous();
00316 if ( it.hasPrevious() )
00317 {
00318 it.remove();
00319 it.previous();
00320 it.insert( item );
00321 }
00322 }
00323 }
00324
00325 void QgsComposition::moveSelectedItemsToTop()
00326 {
00327 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00328 QList<QgsComposerItem*>::iterator it = selectedItems.begin();
00329 for ( ; it != selectedItems.end(); ++it )
00330 {
00331 moveItemToTop( *it );
00332 }
00333
00334
00335 updateZValues();
00336 update();
00337 }
00338
00339 void QgsComposition::moveItemToTop( QgsComposerItem* item )
00340 {
00341
00342 QMutableLinkedListIterator<QgsComposerItem*> it( mItemZList );
00343 if ( it.findNext( item ) )
00344 {
00345 it.remove();
00346 }
00347 mItemZList.push_back( item );
00348 }
00349
00350 void QgsComposition::moveSelectedItemsToBottom()
00351 {
00352 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00353 QList<QgsComposerItem*>::iterator it = selectedItems.begin();
00354 for ( ; it != selectedItems.end(); ++it )
00355 {
00356 moveItemToBottom( *it );
00357 }
00358
00359
00360 updateZValues();
00361 update();
00362 }
00363
00364 void QgsComposition::moveItemToBottom( QgsComposerItem* item )
00365 {
00366
00367 QMutableLinkedListIterator<QgsComposerItem*> it( mItemZList );
00368 if ( it.findNext( item ) )
00369 {
00370 it.remove();
00371 }
00372 mItemZList.push_front( item );
00373 }
00374
00375 void QgsComposition::alignSelectedItemsLeft()
00376 {
00377 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00378 if ( selectedItems.size() < 2 )
00379 {
00380 return;
00381 }
00382
00383 QRectF selectedItemBBox;
00384 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00385 {
00386 return;
00387 }
00388
00389 double minXCoordinate = selectedItemBBox.left();
00390
00391
00392 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00393 for ( ; align_it != selectedItems.end(); ++align_it )
00394 {
00395 QTransform itemTransform = ( *align_it )->transform();
00396 itemTransform.translate( minXCoordinate - itemTransform.dx(), 0 );
00397 ( *align_it )->setTransform( itemTransform );
00398 }
00399 }
00400
00401 void QgsComposition::alignSelectedItemsHCenter()
00402 {
00403 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00404 if ( selectedItems.size() < 2 )
00405 {
00406 return;
00407 }
00408
00409 QRectF selectedItemBBox;
00410 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00411 {
00412 return;
00413 }
00414
00415 double averageXCoord = ( selectedItemBBox.left() + selectedItemBBox.right() ) / 2.0;
00416
00417
00418 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00419 for ( ; align_it != selectedItems.end(); ++align_it )
00420 {
00421 QTransform itemTransform = ( *align_it )->transform();
00422 itemTransform.translate( averageXCoord - itemTransform.dx() - ( *align_it )->rect().width() / 2.0, 0 );
00423 ( *align_it )->setTransform( itemTransform );
00424 }
00425 }
00426
00427 void QgsComposition::alignSelectedItemsRight()
00428 {
00429 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00430 if ( selectedItems.size() < 2 )
00431 {
00432 return;
00433 }
00434
00435 QRectF selectedItemBBox;
00436 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00437 {
00438 return;
00439 }
00440
00441 double maxXCoordinate = selectedItemBBox.right();
00442
00443
00444 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00445 for ( ; align_it != selectedItems.end(); ++align_it )
00446 {
00447 QTransform itemTransform = ( *align_it )->transform();
00448 itemTransform.translate( maxXCoordinate - itemTransform.dx() - ( *align_it )->rect().width(), 0 );
00449 ( *align_it )->setTransform( itemTransform );
00450 }
00451 }
00452
00453 void QgsComposition::alignSelectedItemsTop()
00454 {
00455 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00456 if ( selectedItems.size() < 2 )
00457 {
00458 return;
00459 }
00460
00461 QRectF selectedItemBBox;
00462 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00463 {
00464 return;
00465 }
00466
00467 double minYCoordinate = selectedItemBBox.top();
00468 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00469 for ( ; align_it != selectedItems.end(); ++align_it )
00470 {
00471 QTransform itemTransform = ( *align_it )->transform();
00472 itemTransform.translate( 0, minYCoordinate - itemTransform.dy() );
00473 ( *align_it )->setTransform( itemTransform );
00474 }
00475 }
00476
00477 void QgsComposition::alignSelectedItemsVCenter()
00478 {
00479 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00480 if ( selectedItems.size() < 2 )
00481 {
00482 return;
00483 }
00484
00485 QRectF selectedItemBBox;
00486 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00487 {
00488 return;
00489 }
00490
00491 double averageYCoord = ( selectedItemBBox.top() + selectedItemBBox.bottom() ) / 2.0;
00492 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00493 for ( ; align_it != selectedItems.end(); ++align_it )
00494 {
00495 QTransform itemTransform = ( *align_it )->transform();
00496 itemTransform.translate( 0, averageYCoord - itemTransform.dy() - ( *align_it )->rect().height() / 2 );
00497 ( *align_it )->setTransform( itemTransform );
00498 }
00499 }
00500
00501 void QgsComposition::alignSelectedItemsBottom()
00502 {
00503 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00504 if ( selectedItems.size() < 2 )
00505 {
00506 return;
00507 }
00508
00509 QRectF selectedItemBBox;
00510 if ( boundingRectOfSelectedItems( selectedItemBBox ) != 0 )
00511 {
00512 return;
00513 }
00514
00515 double maxYCoord = selectedItemBBox.bottom();
00516 QList<QgsComposerItem*>::iterator align_it = selectedItems.begin();
00517 for ( ; align_it != selectedItems.end(); ++align_it )
00518 {
00519 QTransform itemTransform = ( *align_it )->transform();
00520 itemTransform.translate( 0, maxYCoord - itemTransform.dy() - ( *align_it )->rect().height() );
00521 ( *align_it )->setTransform( itemTransform );
00522 }
00523 }
00524
00525 void QgsComposition::updateZValues()
00526 {
00527 int counter = 1;
00528 QLinkedList<QgsComposerItem*>::iterator it = mItemZList.begin();
00529 QgsComposerItem* currentItem = 0;
00530
00531 for ( ; it != mItemZList.end(); ++it )
00532 {
00533 currentItem = *it;
00534 if ( currentItem )
00535 {
00536 QgsDebugMsg( QString::number( counter ) );
00537 currentItem->setZValue( counter );
00538 }
00539 ++counter;
00540 }
00541 }
00542
00543 void QgsComposition::sortZList()
00544 {
00545 if ( mItemZList.size() < 2 )
00546 {
00547 return;
00548 }
00549
00550 #ifdef QGISDEBUG
00551
00552 QgsDebugMsg( "before sorting" );
00553 QLinkedList<QgsComposerItem*>::iterator before_it = mItemZList.begin();
00554 for ( ; before_it != mItemZList.end(); ++before_it )
00555 {
00556 QgsDebugMsg( QString( "%1" ).arg(( *before_it )->zValue() ) );
00557 }
00558 #endif
00559
00560 QLinkedList<QgsComposerItem*>::const_iterator lIt = mItemZList.constBegin();
00561 QLinkedList<QgsComposerItem*> sortedList;
00562
00563 for ( ; lIt != mItemZList.constEnd(); ++lIt )
00564 {
00565 QLinkedList<QgsComposerItem*>::iterator insertIt = sortedList.begin();
00566 for ( ; insertIt != sortedList.end(); ++insertIt )
00567 {
00568 if (( *lIt )->zValue() < ( *insertIt )->zValue() )
00569 {
00570 break;
00571 }
00572 }
00573 sortedList.insert( insertIt, ( *lIt ) );
00574 }
00575
00576 mItemZList = sortedList;
00577
00578 #ifdef QGISDEBUG
00579
00580
00581 QgsDebugMsg( "after sorting" );
00582 QLinkedList<QgsComposerItem*>::iterator after_it = mItemZList.begin();
00583 for ( ; after_it != mItemZList.end(); ++after_it )
00584 {
00585 QgsDebugMsg( QString( "%1" ).arg(( *after_it )->zValue() ) );
00586 }
00587 #endif
00588 }
00589
00590 QPointF QgsComposition::snapPointToGrid( const QPointF& scenePoint ) const
00591 {
00592 if ( !mSnapToGrid || mSnapGridResolution <= 0 )
00593 {
00594 return scenePoint;
00595 }
00596
00597
00598 int xRatio = ( int )(( scenePoint.x() - mSnapGridOffsetX ) / mSnapGridResolution + 0.5 );
00599 int yRatio = ( int )(( scenePoint.y() - mSnapGridOffsetY ) / mSnapGridResolution + 0.5 );
00600
00601 return QPointF( xRatio * mSnapGridResolution + mSnapGridOffsetX, yRatio * mSnapGridResolution + mSnapGridOffsetY );
00602 }
00603
00604 int QgsComposition::boundingRectOfSelectedItems( QRectF& bRect )
00605 {
00606 QList<QgsComposerItem*> selectedItems = selectedComposerItems();
00607 if ( selectedItems.size() < 1 )
00608 {
00609 return 1;
00610 }
00611
00612
00613 QgsComposerItem* currentItem = selectedItems.at( 0 );
00614 double minX = currentItem->transform().dx();
00615 double minY = currentItem->transform().dy();
00616 double maxX = minX + currentItem->rect().width();
00617 double maxY = minY + currentItem->rect().height();
00618
00619 double currentMinX, currentMinY, currentMaxX, currentMaxY;
00620
00621 for ( int i = 1; i < selectedItems.size(); ++i )
00622 {
00623 currentItem = selectedItems.at( i );
00624 currentMinX = currentItem->transform().dx();
00625 currentMinY = currentItem->transform().dy();
00626 currentMaxX = currentMinX + currentItem->rect().width();
00627 currentMaxY = currentMinY + currentItem->rect().height();
00628
00629 if ( currentMinX < minX )
00630 minX = currentMinX;
00631 if ( currentMaxX > maxX )
00632 maxX = currentMaxX;
00633 if ( currentMinY < minY )
00634 minY = currentMinY;
00635 if ( currentMaxY > maxY )
00636 maxY = currentMaxY;
00637 }
00638
00639 bRect.setTopLeft( QPointF( minX, minY ) );
00640 bRect.setBottomRight( QPointF( maxX, maxY ) );
00641 return 0;
00642 }
00643
00644 void QgsComposition::setSnapToGridEnabled( bool b )
00645 {
00646 mSnapToGrid = b;
00647 if ( mPaperItem )
00648 {
00649 mPaperItem->update();
00650 }
00651 }
00652
00653 void QgsComposition::setSnapGridResolution( double r )
00654 {
00655 mSnapGridResolution = r;
00656 if ( mPaperItem )
00657 {
00658 mPaperItem->update();
00659 }
00660 }
00661
00662 void QgsComposition::setSnapGridOffsetX( double offset )
00663 {
00664 mSnapGridOffsetX = offset;
00665 if ( mPaperItem )
00666 {
00667 mPaperItem->update();
00668 }
00669 }
00670
00671 void QgsComposition::setSnapGridOffsetY( double offset )
00672 {
00673 mSnapGridOffsetY = offset;
00674 if ( mPaperItem )
00675 {
00676 mPaperItem->update();
00677 }
00678 }
00679
00680 void QgsComposition::setGridPen( const QPen& p )
00681 {
00682 mGridPen = p;
00683 if ( mPaperItem )
00684 {
00685 mPaperItem->update();
00686 }
00687 saveGridAppearanceSettings();
00688 }
00689
00690 void QgsComposition::setGridStyle( GridStyle s )
00691 {
00692 mGridStyle = s;
00693 if ( mPaperItem )
00694 {
00695 mPaperItem->update();
00696 }
00697 saveGridAppearanceSettings();
00698 }
00699
00700 void QgsComposition::setPrintAsRaster( bool enabled )
00701 {
00702 mPrintAsRaster = enabled;
00703 QSettings s;
00704 s.setValue( "/qgis/composerPrintAsRaster", QVariant( mPrintAsRaster ) );
00705 }
00706
00707 void QgsComposition::loadGridAppearanceSettings()
00708 {
00709
00710 QSettings s;
00711
00712 QString gridStyleString;
00713 int red, green, blue;
00714 double penWidth;
00715
00716 gridStyleString = s.value( "/qgis/composerGridStyle", "Dots" ).toString();
00717 penWidth = s.value( "/qgis/composerGridWidth", 0.5 ).toDouble();
00718 red = s.value( "/qgis/composerGridRed", 0 ).toInt();
00719 green = s.value( "/qgis/composerGridGreen", 0 ).toInt();
00720 blue = s.value( "/qgis/composerGridBlue", 0 ).toInt();
00721
00722 mGridPen.setColor( QColor( red, green, blue ) );
00723 mGridPen.setWidthF( penWidth );
00724
00725 if ( gridStyleString == "Dots" )
00726 {
00727 mGridStyle = Dots;
00728 }
00729 else if ( gridStyleString == "Crosses" )
00730 {
00731 mGridStyle = Crosses;
00732 }
00733 else
00734 {
00735 mGridStyle = Solid;
00736 }
00737 }
00738
00739 void QgsComposition::saveGridAppearanceSettings()
00740 {
00741
00742 QSettings s;
00743 s.setValue( "/qgis/composerGridWidth", mGridPen.widthF() );
00744 s.setValue( "/qgis/composerGridRed", mGridPen.color().red() );
00745 s.setValue( "/qgis/composerGridGreen", mGridPen.color().green() );
00746 s.setValue( "/qgis/composerGridBlue", mGridPen.color().blue() );
00747
00748 if ( mGridStyle == Solid )
00749 {
00750 s.setValue( "/qgis/composerGridStyle", "Solid" );
00751 }
00752 else if ( mGridStyle == Dots )
00753 {
00754 s.setValue( "/qgis/composerGridStyle", "Dots" );
00755 }
00756 else if ( mGridStyle == Crosses )
00757 {
00758 s.setValue( "/qgis/composerGridStyle", "Crosses" );
00759 }
00760 }