2164 Commits

Author SHA1 Message Date
Nyall Dawson
b7ca001c9c Add __nonzero__ and __bool__ methods to QgsGeometry 2016-08-02 08:39:58 +10:00
Nyall Dawson
d075b128a8 Add missing docs 2016-08-02 07:26:11 +10:00
Nyall Dawson
4b78b1c208 Make all QgsGeometry methods return values, not pointers
Reduces likelihood of crashes and leaks
2016-08-01 22:41:55 +10:00
Nyall Dawson
bd7d913379 Refine QgsFeature geometry getters/setters
All pointer based methods have been removed.

Now we have only:

  void setGeometry( const QgsGeometry& geom )

and

  QgsGeometry geometry() const

Benefits include avoiding a whole lot of tricky pointer lifetime
issues, potential memory leaks, and finally closing #777, which
has survived for over 9 years!...

Impacts on PyQGIS code:
- no more need for the messy
  g = QgsGeometry( feature.geometry() )
  workaround, just use g = feature.geometry() instead
- IMPORTANT: you can no longer test whether a feature has geometry
 using `if f.geometry():`, since QgsFeature::geometry() will
 *always* return an object. Instead, use
 `if not f.geometry().isEmpty():`, or preferably the new method
 `if not f.hasGeometry():`

Fix #777
2016-08-01 16:25:46 +10:00
Nyall Dawson
aceddae65a QgsFeature cleanup, part 1
Deprecate some QgsFeature methods which take or return pointers,
update other classes as required
2016-07-31 21:23:07 +10:00
Nyall Dawson
429fe2d4ce Merge pull request #3335 from nyalldawson/vector_layer
QgsVectorDataProvider::Capability improvements
2016-07-29 05:10:37 +10:00
Nyall Dawson
10c92394e7 [FEATURE] API + expression function for merging linestrings
Adds a new method to QgsGeometry for merging linestrings.
By passing a multilinestring, any connected lines will
be joined into single linestrings. Behind the scenes this
uses GEOS' line merge.

A corresponding expression function "line_merge" has also
been added.
2016-07-28 20:33:27 +10:00
Nyall Dawson
85f37eebb3 Add method to QgsAbstractGeometryV2 for boundary
Returns the closure of the combinatorial boundary of the
geometry (ie the topological boundary of the geometry).
For instance, a polygon geometry will have a boundary
consisting of the linestrings for each ring in the polygon.

Follows OGC / SQL/MM specs for boundary calculation
2016-07-28 08:16:57 +10:00
Nyall Dawson
26160c95c6 Merge pull request #3332 from nyalldawson/transform2
Remove the extra QgsCoordinateTransform constructors
2016-07-27 08:14:29 +10:00
Nyall Dawson
6c0d97a06b Merge pull request #3337 from nyalldawson/remove_psuedo_shader
Remove the broken, unused QgsPseudoColorShader class
2016-07-27 07:11:55 +10:00
Nyall Dawson
4a3924ca3f Remove the extra QgsCoordinateTransform constructors
...and leave only:

QgsCoordinateTransform( const QgsCoordinateReferenceSystem& source,
                        const QgsCoordinateReferenceSystem& destination );

The other constructors were not used anyway in QGIS code,
had awkward/confusing API, and no unit tests.
2016-07-27 07:10:46 +10:00
Nyall Dawson
0fa6499bef Merge pull request #3329 from nyalldawson/annotations
Add an interface class for annotations, remove some hacks
2016-07-26 12:39:18 +10:00
Nyall Dawson
68b621ace6 Merge pull request #3314 from nyalldawson/units
Consolidate unit handling in QgsUnitTypes
2016-07-26 11:14:35 +10:00
Nyall Dawson
1e9274adbb Docs 2016-07-26 11:11:05 +10:00
Nyall Dawson
5ed31d887d Fix annotation position when maps are rotated, remove hacks
Adds a new interface class QgsAnnotation, and allows for removal
of a bunch of hacks in QgsComposerMap without breaking 2.x API
2016-07-26 10:18:19 +10:00
Nyall Dawson
ba26bc887a Remove the broken, unused QgsPseudoColorShader class 2016-07-26 10:11:57 +10:00
Nyall Dawson
813ed5e96f Add missing docs 2016-07-26 10:08:18 +10:00
Nyall Dawson
f186c11a72 Mark some QgsUnitType arguments as /Out/ 2016-07-26 08:31:29 +10:00
Nyall Dawson
f6b09eaee1 Add Distance*, Area*, Angle* prefixes to QgsUnitTypes enum values 2016-07-26 08:29:24 +10:00
Nyall Dawson
503d0941ee Add missing docs 2016-07-25 15:22:36 +10:00
Nyall Dawson
0324de3bf5 Remove QgsSymbolLayerV2Utils::encodeOutputUnit() and decodeOutputUnit()
QgsUnitTypes::encodeUnit() and QgsUnitTypes::decodeRenderUnit() should
be used instead.
2016-07-25 15:22:36 +10:00
Nyall Dawson
ce6bd6c973 Move QgsSymbolV2::OutputUnit enum to QgsUnitTypes
And rename to QgsUnitTypes::RenderUnits. This enum is used in
much more contexts than just symbols, so QgsUnitTypes is a
better fit for it.

All methods which previously accepted QgsSymbolV2::OutputUnit
parameters or QgsSymbolV2::OutputUnitList parameters now take
QgsUnitTypes::RenderUnit or QgsUnitTypes::RenderUnitList
parameters respectively.
2016-07-25 15:22:12 +10:00
Nyall Dawson
f6f5010131 Move QGis::UnitType to QgsUnitTypes::DistanceUnit
This change consolidates more unit handling and conversion into
QgsUnitTypes.

Additionally, UnknownUnit was renamed to UnknownDistanceUnit.
All methods which accepted QGis::UnitType parameters have been
updated to take QgsUnitTypes::DistanceUnit instead.

ALso remove the unit handling methods toLiteral, fromLiteral, tr,
fromTr, and fromUnitToUnitFactor from QGis. Their corresponding
counterparts in QgsUnitTypes should be used instead.
2016-07-25 14:47:16 +10:00
Nyall Dawson
59aed7b231 Remove deprecated units from QGis
- DecimalDegrees
- DegreesMinutesSeconds
- DegreesDecimalMinutes

all these were replaced long ago by QGis::Degrees
2016-07-25 13:00:46 +10:00
Nyall Dawson
58856fe82f Remove some deprecated QgsVectorDataProvider::Capabilities
Also make capabilities() return a QFlags
QgsVectorDataProvider::Capabilities, rather than an integer
value (for type safety)
2016-07-25 12:14:00 +10:00
Nyall Dawson
bb36c6048d Remove QgsCRSCache
No longer required now that QgsCoordinateReferenceSystem
internally uses caches for CRS initialization.
2016-07-25 10:15:46 +10:00
Nyall Dawson
ac36cb5dd2 Make QgsCoordinateReferenceSystem use an internal cache
for initializing CRS objects.

This avoids the need for the separate QgsCRSCache class,
and means that the caching benefits are available without the
need for calling methods from QgsCrsCache.
2016-07-25 10:14:19 +10:00
Nyall Dawson
bb220a0b43 Add some static methods for creating QgsCoordinateReferenceSystem
This avoids the need for

  QgsCoordinateReferenceSystem crs;
  crs.createFromSrsId(...)

and instead can be replaced with

  QgsCoordinateReferenceSystem crs = QgsCoordinateReferenceSystem::fromSrsId(...)
2016-07-25 10:14:19 +10:00
Nyall Dawson
ee62bdeeb4 Rename some QgsCoordinateReferenceSystem methods
- geographicFlag() -> isGeographic()
- axisInverted() -> hasAxisInverted()
2016-07-25 10:14:19 +10:00
Martin Dobias
ab4a83b49b Goodbye to QgsMapRenderer (#3333)
For the time being the class is kept in the server code while it is still being used there.
2016-07-24 22:40:52 +02:00
Nyall Dawson
791b2c3919 Merge pull request #3324 from nyalldawson/qgis
QGis class rename and cleanup
2016-07-22 19:28:06 +10:00
Nyall Dawson
12a2147427 [FEATURE] Add an option to show user color schemes menus
This adds the ability for users to set whether a user created
color scheme should show up in the color button drop-down menus.

It's accessed through the color picker dialog, on the lists tab.
Just add a new color scheme, then from the scheme menu tick the
new "show in buttons" option.

Handy if you have sets of common palettes and want them to be
instantly available through the color menu.
2016-07-22 07:32:07 +10:00
Nyall Dawson
8f203c9a87 Remove some unused constants 2016-07-22 05:35:26 +10:00
Nyall Dawson
713e22a9f5 Move some methods out of Qgis class 2016-07-21 22:14:46 +10:00
Nyall Dawson
1a2231f10c Rename QGis class to Qgis, for capitalisation consistency 2016-07-21 22:01:38 +10:00
Nyall Dawson
4cfacf14e3 Make API more consistent
- rename methods with XML to Xml, CRS to Crs, WMS to Wms, ID to Id
- rename methods with SRS to Crs
- rename methods with abbreviations like "dest" to "destination"
- rename methods with abbreviations like "src" to "source"
2016-07-21 08:40:50 +10:00
Martin Dobias
31c75ef22e Remove QgsLabel and QgsLabelAttributes + remove QgsPalLabeling from renderer jobs 2016-07-20 18:35:20 +08:00
Nyall Dawson
cd33ccf7f6 Revert "Fix label word and letter spacing cannot be decimals"
This reverts commit 48f090ca79f0d2d9ae341ae3617f20b2fe3fe14f.

Causes issues with font sizes/spacing
2016-07-20 19:44:20 +10:00
Nyall Dawson
48f090ca79 Fix label word and letter spacing cannot be decimals 2016-07-20 13:04:50 +10:00
Nyall Dawson
5384e203fb [composer] Fix editing of map item variables
On behalf of Faunalia, sponsored by ENEL
2016-07-20 11:01:00 +10:00
Matthias Kuhn
c8c623ecee Add methods to vectorlayercache and tests 2016-07-19 10:47:14 +02:00
Matthias Kuhn
d91a45ceaf Add shorthands to get features by fid, fids and expression
Adds new methods overloads to QgsVectorLayer

  getFeatures( expression )
  getFeatures( ids )
  getFeature( id )

These three methods to query features are by far the most used ones
and with this patch it is much easier to write and read code.
2016-07-19 10:37:09 +02:00
Nyall Dawson
c7ffdfa5e9 Make sure variable editor widgets always show current variables
On behalf of Faunalia, sponsored by ENEL
2016-07-19 12:00:35 +10:00
Martin Dobias
1444398208 Improve QgsCoordinateReferenceSystem API documentation (#3311) 2016-07-19 01:05:16 +08:00
Nyall Dawson
e6df492fdb Add missing docs, refine docs for QgsCoordinateTransform 2016-07-17 16:38:28 +10:00
Nyall Dawson
adafeda82a Avoid all use of QgsCoordinateTransform pointers, replace with
copies or references

Makes the code more robust, fixes leaks and avoids potential
null pointer dereferencing
2016-07-16 20:36:45 +10:00
Nyall Dawson
ffa9b9b676 API breaks and cleanups for QgsCoordinateTransform
- isInitialised() has been renamed to isValid()
- theCRS parameter in setSourceCrs has been renamed to 'crs'
- setDestCRS() has been renamed to setDestinationCrs() for consistency
- destCRS() has been renamed to destinationCrs() for consistency
- theSource, theDest, theSourceSrsId, theDestSrsId, theSourceWkt,
theDestWkt, theSourceCRSType parameters in the QgsCoordinateTransform
constructors have been renamed to source, destination, sourceSrsId,
destinationSrsId, sourceWkt, destinationWkt, sourceCrsType respectively
- 'p' argument in transform() has been renamed to 'point', 'theRect' to
'rectangle', 'poly' to 'polygon'
- setDestCRSID has been removed, use setDestinationCrs() instead
- 'theNode', 'theDoc' parameters in readXML and writeXML have been
renamed to 'node' and 'document' respectively
- readXML() and writeXML() have been renamed to readXml() and writeXml()
for consistency
2016-07-16 16:33:04 +10:00
Nyall Dawson
b18fcc0ddf Remove QgsCoordinateTransform::clone()
Just use direct copies instead
2016-07-16 14:16:00 +10:00
Nyall Dawson
736aab195f Make QgsCoordinateTransform implicitly shared, no longer a QObject
There was no code in core using the signals/slots associated with
QgsCoordinateTransform, and little reason to keep the class a
QObject. Making it not a QObject simplifies code and allows
QgsCoordinateTransform objects to be easily copied and passed
around without complication.
2016-07-16 10:07:10 +10:00
Nyall Dawson
21eab8c2ea Add missing docs 2016-07-15 08:08:24 +10:00