From b4d7e02d3a3cefdbd5f137ff43cc83b8fd8a2691 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Wed, 8 Jan 2014 09:46:16 +0100 Subject: [PATCH] fix windows build (also syncs QgsComposition sip binding) --- python/core/composer/qgscomposition.sip | 104 +++++++++++++++++----- src/core/composer/qgscomposerscalebar.cpp | 6 +- src/core/composer/qgscomposition.h | 16 ++-- 3 files changed, 95 insertions(+), 31 deletions(-) diff --git a/python/core/composer/qgscomposition.sip b/python/core/composer/qgscomposition.sip index 822fc44ce35..367de553cd6 100644 --- a/python/core/composer/qgscomposition.sip +++ b/python/core/composer/qgscomposition.sip @@ -27,14 +27,20 @@ class QgsComposition : QGraphicsScene Dots, Crosses }; - + + enum ZValueDirection + { + ZValueBelow, + ZValueAbove + }; + /**Composition atlas modes*/ enum AtlasMode { AtlasOff, // Composition is not being controlled by an atlas PreviewAtlas, // An atlas composition is being previewed in the app ExportAtlas // The composition is being exported as an atlas - }; + }; QgsComposition( QgsMapRenderer* mapRenderer ); ~QgsComposition(); @@ -55,23 +61,55 @@ class QgsComposition : QGraphicsScene /**Note: added in version 1.9*/ int numPages() const; + /**Note: added in version 2.1*/ + void setPageStyleSymbol( QgsFillSymbolV2* symbol /Transfer/ ); + /**Note: added in version 2.1*/ + QgsFillSymbolV2* pageStyleSymbol(); + + /**Returns the position within a page of a point in the composition + @note Added in QGIS 2.1 + */ + QPointF positionOnPage( const QPointF & position ) const; + + /**Returns the page number corresponding to a point in the composition + @note Added in QGIS 2.1 + */ + int pageNumberForPoint( const QPointF & position ) const; + + /**Sets the status bar message for the composer window + @note Added in QGIS 2.1 + */ + void setStatusMessage( const QString & message ); + + /**Refreshes the composition when composer related options change + *Note: added in version 2.1*/ + void updateSettings(); + void setSnapToGridEnabled( bool b ); bool snapToGridEnabled() const; void setGridVisible( bool b ); bool gridVisible() const; - /**Toggles state of smart guides*/ + /**Hides / shows custom snap lines*/ + void setSnapLinesVisible( bool visible ); + bool snapLinesVisible() const; + + void setAlignmentSnap( bool s ); + bool alignmentSnap() const; + void setSmartGuidesEnabled( bool b ); - /**Returns true if smart guides are enabled*/ - bool smartGuidesEnabled() const; - + bool smartGuidesEnabled() const; + /**Removes all snap lines*/ - void clearSnapLines(); + void clearSnapLines(); void setSnapGridResolution( double r ); double snapGridResolution() const; + void setSnapGridTolerance( double tolerance ); + double snapGridTolerance() const; + void setSnapGridOffsetX( double offset ); double snapGridOffsetX() const; @@ -84,9 +122,6 @@ class QgsComposition : QGraphicsScene void setGridStyle( GridStyle s ); GridStyle gridStyle() const; - void setAlignmentSnap( bool s ); - bool alignmentSnap() const; - void setAlignmentSnapTolerance( double t ); double alignmentSnapTolerance() const; @@ -96,6 +131,11 @@ class QgsComposition : QGraphicsScene /**Returns the topmost composer item. Ignores mPaperItem*/ QgsComposerItem* composerItemAt( const QPointF & position ); + /**Returns the highest composer item at a specified position which is below a specified item. Ignores mPaperItem + @note Added in QGIS 2.1 + */ + QgsComposerItem* composerItemAt( const QPointF & position, const QgsComposerItem* belowItem ); + /** Returns the page number (0-bsaed) given a coordinate */ int pageNumberAt( const QPointF& position ) const; @@ -145,6 +185,12 @@ class QgsComposition : QGraphicsScene bool printAsRaster() const; void setPrintAsRaster( bool enabled ); + bool generateWorldFile() const; + void setGenerateWorldFile( bool enabled ); + + QgsComposerMap* worldFileMap(); + void setWorldFileMap( QgsComposerMap* map ); + /**Returns true if a composition should use advanced effects such as blend modes @note added in 1.9*/ bool useAdvancedEffects() const; @@ -152,12 +198,6 @@ class QgsComposition : QGraphicsScene @note: added in version 1.9*/ void setUseAdvancedEffects( bool effectsEnabled ); - bool generateWorldFile() const; - void setGenerateWorldFile( bool enabled ); - - QgsComposerMap* worldFileMap(); - void setWorldFileMap( QgsComposerMap* map ); - /**Returns pointer to map renderer of qgis map canvas*/ QgsMapRenderer* mapRenderer(); @@ -214,6 +254,11 @@ class QgsComposition : QGraphicsScene void moveSelectedItemsToBottom(); void moveItemToBottom( QgsComposerItem* item ); + //functions to find items by their position in the z list + void selectNextByZOrder( ZValueDirection direction ); + QgsComposerItem* getComposerItemBelow( QgsComposerItem* item ); + QgsComposerItem* getComposerItemAbove( QgsComposerItem* item ); + //functions to align selected items void alignSelectedItemsLeft(); void alignSelectedItemsHCenter(); @@ -222,6 +267,12 @@ class QgsComposition : QGraphicsScene void alignSelectedItemsVCenter(); void alignSelectedItemsBottom(); + //functions to lock and unlock items + /**Lock the selected items*/ + void lockSelectedItems(); + /**Unlock all items*/ + void unlockAllItems(); + /**Sorts the zList. The only time where this function needs to be called is from QgsComposer after reading all the items from xml file*/ void sortZList(); @@ -229,6 +280,12 @@ class QgsComposition : QGraphicsScene /**Snaps a scene coordinate point to grid*/ QPointF snapPointToGrid( const QPointF& scenePoint ) const; + /**Returns pointer to snap lines collection*/ + QList< QGraphicsLineItem* >* snapLines(); + + /**Returns pointer to selection handles*/ + // QgsComposerMouseHandles* selectionHandles(); + /**Add a custom snap line (can be horizontal or vertical)*/ QGraphicsLineItem* addSnapLine(); /**Remove custom snap line (and delete the object)*/ @@ -237,10 +294,6 @@ class QgsComposition : QGraphicsScene * @note not available in python bindings */ // QGraphicsLineItem* nearestSnapLine( bool horizontal, double x, double y, double tolerance, QList< QPair< QgsComposerItem*, QgsComposerItem::ItemPositionMode > >& snappedItems ); - /**Hides / shows custom snap lines*/ - void setSnapLinesVisible( bool visible ); - /**Returns visibility of custom snap lines*/ - bool snapLinesVisible() const; /**Allocates new item command and saves initial state in it @param item target item @@ -286,6 +339,10 @@ class QgsComposition : QGraphicsScene /**Convenience function to create a QgsAddRemoveItemCommand, connect its signals and push it to the undo stack*/ void pushAddRemoveCommand( QgsComposerItem* item, const QString& text, QgsAddRemoveItemCommand::State state = QgsAddRemoveItemCommand::Added ); + /**If true, prevents any mouse cursor changes by the composition or by any composer items + Used by QgsComposer and QgsComposerView to prevent unwanted cursor changes*/ + void setPreventCursorChange( bool preventChange ); + bool preventCursorChange(); //printing @@ -314,7 +371,12 @@ class QgsComposition : QGraphicsScene void computeWorldFileParameters( double& a, double& b, double& c, double& d, double& e, double& f ) const; QgsAtlasComposition& atlasComposition(); - + + /**Resizes a QRectF relative to the change from boundsBefore to boundsAfter*/ + static void relativeResizeRect( QRectF& rectToResize, const QRectF& boundsBefore, const QRectF& boundsAfter ); + /**Returns a scaled position given a before and after range*/ + static double relativePosition( double position, double beforeMin, double beforeMax, double afterMin, double afterMax ); + /** Returns the current atlas mode of the composition */ QgsComposition::AtlasMode atlasMode() const; /** Sets the current atlas mode of the composition. Returns false if the mode could not be changed. */ diff --git a/src/core/composer/qgscomposerscalebar.cpp b/src/core/composer/qgscomposerscalebar.cpp index a229fe18997..14867151918 100644 --- a/src/core/composer/qgscomposerscalebar.cpp +++ b/src/core/composer/qgscomposerscalebar.cpp @@ -259,7 +259,7 @@ void QgsComposerScaleBar::applyDefaultSize( QgsComposerScaleBar::ScaleBarUnits u if ( mComposerMap ) { setUnits( u ); - double upperMagnitudeMultiplier; + double upperMagnitudeMultiplier = 1.0; double widthInSelectedUnits = mapWidth(); double initialUnitsPerSegment = widthInSelectedUnits / 10.0; //default scalebar width equals half the map width setNumUnitsPerSegment( initialUnitsPerSegment ); @@ -310,8 +310,8 @@ void QgsComposerScaleBar::applyDefaultSize( QgsComposerScaleBar::ScaleBarUnits u double segmentWidth = initialUnitsPerSegment / upperMagnitudeMultiplier; int segmentMagnitude = floor( log10( segmentWidth ) ); - double unitsPerSegment = upperMagnitudeMultiplier * ( pow( 10, segmentMagnitude ) ); - double multiplier = floor(( widthInSelectedUnits / ( unitsPerSegment * 10 ) ) / 2.5 ) * 2.5; + double unitsPerSegment = upperMagnitudeMultiplier * ( pow( 10.0, segmentMagnitude ) ); + double multiplier = floor(( widthInSelectedUnits / ( unitsPerSegment * 10.0 ) ) / 2.5 ) * 2.5; if ( multiplier > 0 ) { diff --git a/src/core/composer/qgscomposition.h b/src/core/composer/qgscomposition.h index fa74b8e113c..5dc6fc1d442 100644 --- a/src/core/composer/qgscomposition.h +++ b/src/core/composer/qgscomposition.h @@ -154,7 +154,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene void setAlignmentSnap( bool s ) { mAlignmentSnap = s; } bool alignmentSnap() const { return mAlignmentSnap; } - void setSmartGuidesEnabled( bool b ) { mSmartGuides = b; }; + void setSmartGuidesEnabled( bool b ) { mSmartGuides = b; } bool smartGuidesEnabled() const {return mSmartGuides;} /**Removes all snap lines*/ @@ -337,10 +337,12 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene QPointF snapPointToGrid( const QPointF& scenePoint ) const; /**Returns pointer to snap lines collection*/ - QList< QGraphicsLineItem* >* snapLines() {return &mSnapLines;}; + QList< QGraphicsLineItem* >* snapLines() {return &mSnapLines;} - /**Returns pointer to selection handles*/ - QgsComposerMouseHandles* selectionHandles() {return mSelectionHandles;}; + /**Returns pointer to selection handles + * @note not available in python bindings + */ + QgsComposerMouseHandles* selectionHandles() {return mSelectionHandles;} /**Add a custom snap line (can be horizontal or vertical)*/ QGraphicsLineItem* addSnapLine(); @@ -397,8 +399,8 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene /**If true, prevents any mouse cursor changes by the composition or by any composer items Used by QgsComposer and QgsComposerView to prevent unwanted cursor changes*/ - void setPreventCursorChange( bool preventChange ) { mPreventCursorChange = preventChange; }; - bool preventCursorChange() { return mPreventCursorChange; }; + void setPreventCursorChange( bool preventChange ) { mPreventCursorChange = preventChange; } + bool preventCursorChange() { return mPreventCursorChange; } //printing @@ -426,7 +428,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene /** Compute world file parameters */ void computeWorldFileParameters( double& a, double& b, double& c, double& d, double& e, double& f ) const; - QgsAtlasComposition& atlasComposition() { return mAtlasComposition; }; + QgsAtlasComposition& atlasComposition() { return mAtlasComposition; } /**Resizes a QRectF relative to the change from boundsBefore to boundsAfter*/ static void relativeResizeRect( QRectF& rectToResize, const QRectF& boundsBefore, const QRectF& boundsAfter );