3163 Commits

Author SHA1 Message Date
Nyall Dawson
6502864c69 Add missing /Factory/ annotations to QgsProviderMetadata
Also sipify QgsProviderMetadata and QgsProviderRegistry
2017-05-06 12:20:59 +10:00
Nyall Dawson
767cb12c2a Add QgsMemoryProviderUtils.createMemoryLayer for easy creation
of new memory layers from QgsFields/QgsCoordinateReferenceSystem/etc

Since memory provider cannot use QgsVectorLayerImport we need
another centeralized function for creating new memory layers
without the need to manually create the uri string.
2017-05-06 12:05:12 +10:00
Nyall Dawson
5511b07e40 Move memory provider to core
This commit introduces basic support for non-library based
data providers, and moves the memory provider from a library
based provider to a core provider.

The memory provider is used so frequently throughout QGIS that
it has become integral to QGIS functionality and must be
available wherever the QGIS core library is used.

The changes here (while not exposed yet to Python) could potentially
be built on to allow creation of pure Python data providers.
2017-05-06 12:05:12 +10:00
Matthias Kuhn
931bf32a9f Doxymentation for QgsTransaction 2017-05-05 15:39:29 +02:00
Matthias Kuhn
5f7a2912f6 Expose "context" to expression functions 2017-05-05 15:39:29 +02:00
Nyall Dawson
67e1558fcf Remove unused symbols from qgis.h
Also slow down @NathanW2's build
2017-05-05 20:38:36 +10:00
Denis Rouzaud
cc887c631b [sipify] use a distinct header to simplify includes
there was an issue in libdxf which includes qgslogger in debug mode
and qgsdebug.h includes qgis.h include qgswkbtypes.h (which geometry directory was not listed in libdxrw included paths)
2017-05-04 10:49:17 +02:00
Matthias Kuhn
41dc9d1e17 SIP_SKIP QgsExpression::cloneTo 2017-05-04 09:41:29 +02:00
arnaud.morvan@camptocamp.com
3b43543e48 Sipify core.QgsGemlSchema 2017-05-04 08:26:31 +02:00
arnaud.morvan@camptocamp.com
742c1aa99d Sipify core.QgsGml 2017-05-04 08:26:31 +02:00
arnaud.morvan@camptocamp.com
264c9028de Sypify core.QgsHistogram 2017-05-04 08:26:31 +02:00
arnaud.morvan@camptocamp.com
8e61d48362 Sipify core.QgsJsonUtils 2017-05-04 08:26:31 +02:00
arnaud.morvan@camptocamp.com
d56eef1f4e Sipify core.QgsInterval 2017-05-04 08:26:31 +02:00
Nyall Dawson
8389b9a04f Sipify update 2017-05-04 07:30:27 +10:00
Nyall Dawson
75f5a5fbcf Add spatial and temporal extents to metadata 2017-05-04 07:29:56 +10:00
Nyall Dawson
8545b80487 Add doxygen note about metadata validation 2017-05-04 07:29:56 +10:00
Nyall Dawson
bf2ce3d8c9 Add history item to metadata 2017-05-04 07:29:56 +10:00
Nyall Dawson
b2f52d8a71 Add license section to metadata 2017-05-04 07:29:56 +10:00
Nyall Dawson
5600395e29 Add metadata validator
Adds a new abstract base class QgsMetadataValidator for validating
metadata against standard schemas.

Initially only QgsNativeMetadataValidator for validating against
the native QGIS metadata schema is implemented.

In future this could be extended with Dublin Core, ISO 19115
validators, etc...
2017-05-04 07:29:56 +10:00
Nyall Dawson
cc3d67a207 Add temporary methods to save layer metadata in layer custom properties
Allows temporary persistance of metadata inside a single project. Will
be removed when later work packages from the metadata project are
merged.
2017-05-04 07:29:56 +10:00
Nyall Dawson
40fccf550a Implement metadata store for map layers
QgsLayerMetadata handles storage and management of the metadata
for a QgsMapLayer. This class is an internal QGIS format with a common
metadata structure, which allows for code to access the metadata properties for
layers in a uniform way.

The metadata store is designed to be compatible with the Dublin Core metadata
specifications, and will be expanded to allow compatibility with ISO specifications
in future releases. However, the QGIS internal schema does not represent a superset
of all existing metadata schemas and accordingly conversion from specific
metadata formats to QgsLayerMetadata may result in a loss of information.

This class is designed to follow the specifications detailed in
the schema definition available at resources/qgis-resource-metadata.xsd
within the QGIS source code.
2017-05-04 07:29:56 +10:00
Nyall Dawson
3a965e6dbb Attach layer metadata to QgsMapLayer 2017-05-04 07:29:56 +10:00
Nyall Dawson
269bfe7bf7 Metadata class shell 2017-05-04 07:29:56 +10:00
Nyall Dawson
87e2aab0f3 Merge pull request #4492 from nyalldawson/driver_from_extension
Add method to retrieve corresponding OGR driver from a file extension
2017-05-04 07:21:57 +10:00
Nyall Dawson
32ff0921f4 Merge pull request #4491 from nyalldawson/proxy_sink
Add QgsProxyFeatureSink
2017-05-04 07:21:20 +10:00
arnaud.morvan@camptocamp.com
04a9264e86 Sipify core.QgsFeatureIterator 2017-05-03 19:11:16 +02:00
arnaud.morvan@camptocamp.com
05933b171a Sipify core.QgsFeatureFilterProvider 2017-05-03 19:07:52 +02:00
Nyall Dawson
e40cb0716c Move QgsProxyFeatureSink methods to header
To allow better compiler optimisation
2017-05-03 19:51:32 +10:00
Nyall Dawson
96ad51138b Add method to retrieve sink 2017-05-03 19:50:38 +10:00
Nyall Dawson
ce4f93b410 Add method to retrieve corresponding OGR driver from a file extension 2017-05-03 17:13:05 +10:00
Nyall Dawson
fde71cf9b2 Add QgsProxyFeatureSink
A simple feature sink which proxies feature addition on to another feature sink.

This class is designed to allow factory methods which always return new QgsFeatureSink
objects. Since it is not always possible to create an entirely new QgsFeatureSink
(e.g. if the feature sink is a layer or a layer's data provider), a new
QgsProxyFeatureSink can instead be returned which forwards features on to
the destination sink. The proxy sink can be safely deleted without affecting
the destination sink.
2017-05-03 16:56:37 +10:00
Denis Rouzaud
85f3b81b55 remove double spaces in sip files
fix indentation
2017-05-03 08:02:14 +02:00
Nyall Dawson
32e06f486a Make QgsProcessingContext::temporaryLayerStore() return a pointer to store 2017-05-03 08:43:31 +10:00
Nyall Dawson
d2ce9c69b1 Allow access to project's internal layer store, remove some duplicate code 2017-05-03 07:35:47 +10:00
Nyall Dawson
348c886602 Use a QgsMapLayerStore instead of whole QgsProject for
temporary layer storage in QgsProcessingContext
2017-05-03 07:09:44 +10:00
Nyall Dawson
26afb2e5b6 Use QgsMapLayerStore within QgsProject 2017-05-03 07:09:44 +10:00
Nyall Dawson
f9bd83c035 Split off map layer storage handling from QgsProject to QgsMapLayerStore
Turns out that there's valid use cases for having layer stores
outside of the cost of using a whole QgsProject.

Partially reverts the merger of QgsMapLayerRegistry into QgsProject,
except that there's no singletons here.
2017-05-03 07:09:44 +10:00
Matthias Kuhn
8d8fa9466c [feature] Expression performance improvements 2017-05-02 21:25:43 +02:00
Denis Rouzaud
b249d481e9 script to reverse engineering from SIP to header
go grab annotations in SIP files to write them in the header
or what could be called the headerizer
2017-05-02 10:11:50 +02:00
Mathieu Pellerin
81ccfb0de4 Merge pull request #4460 from nirvn/wallpapers 2017-05-02 13:24:56 +07:00
Denis Rouzaud
7d459149c7 [sip] align missing bits and replace nullptr by 0 2017-05-02 08:09:53 +02:00
nirvn
295c21227c Add a QgsMapSettingsUtils::worldFileContent() function 2017-05-02 12:15:46 +07:00
nirvn
a188d4f32a Add missing wordfile creation to revamped save as image 2017-05-02 11:41:11 +07:00
Nyall Dawson
df1ead5ed4 [processing] Remove vector.spatialindex()
Use QgsProcessingUtils.createSpatialIndex() instead.
2017-05-02 13:39:36 +10:00
Nyall Dawson
600518de72 Add unit tests for QgsProcessingUtils::mapLayerFromString 2017-05-02 12:33:22 +10:00
Nyall Dawson
11fb72eef7 Only expose a single mapLayerFromString method in QgsProcessingUtils 2017-05-02 12:33:22 +10:00
Nyall Dawson
f84d703234 Add method QgsProcessingUtils::mapLayerFromString
Algorithms and other processing code should use this method
(instead of dataobjects.getLayerFromString) to
retrieve layers from a string, as it considers the processing
context and allows resolving strings to temporarily stored layers.

This permits processing models to function correctly when
intermediate results are stored as memory layers. Subsequent
model algorithms can then access these temporary layers as inputs.
All temporary layers will be removed when the context object
is destroyed after the model algorithm is run.
2017-05-02 12:33:04 +10:00
Matthias Kuhn
f511401995 Fix bindings 2017-05-02 01:56:23 +02:00
Matthias Kuhn
6593754f9d Explicitly tag static variables 2017-05-02 01:56:23 +02:00
Matthias Kuhn
b9ec373f4c Fully qualify nested classes for vintage sip 2017-05-02 01:54:58 +02:00