214 Commits

Author SHA1 Message Date
Sandro Mani
d573e3be95
Merge pull request #33764 from kadas-albireo/install_sip
Install source sip files
2020-01-17 00:23:15 +01:00
Sandro Mani
666b839517 Install source sip files 2020-01-15 19:43:03 +01:00
Nyall Dawson
387787b539 Add interactive editor dialog for layout manual table items 2020-01-14 19:08:20 +13:00
Nyall Dawson
591e1a28e0 Start on GUI work 2020-01-08 16:20:43 +13:00
Nyall Dawson
d0b5a01729 [api] Add registry and interface for QgsNumericFormats
QgsNumericFormat subclasses provide a means to format a numeric value
as a string, applying various formatting options. E.g. a default
string to value formatter (included here) includes settings for
controlling the number of decimal places, whether a thousands separator
should be shown, whether a leading + sign should be shown, whether
trailing zeros should be shown.

This PR also includes a formatter for bearings, allowing various
formats of numeric bearings to be applied (e.g. control over decimal
places, etc + control over whether direction E/W suffixes are shown,
or whether values should be limited to either the +/- 180 range or
0-360 degree range)

When formatting values, a QgsNumericFormatContext class is used
to provide context. Currently, this includes the thousands and
decimal separators to apply when formatting (which are taken by
default from the user's locale).

A registry of formatters is included to allow easy addition of
other formats in future (e.g. currencies, percentages, scientific
notation, etc...) and to allow plugin based formats.

The intention is to follow this up with gui configuration widgets
for the formats, and then expose them in various places through
the qgis ui (e.g. in the range editor widget for fields, in scalebar
numbers, as an option for formatting numeric labels, etc)
2020-01-08 16:20:43 +13:00
Peter Petrik
229245ce65 fix building on macos due to missing include of spatialite 2019-12-13 12:56:07 +01:00
Nyall Dawson
d3da0e0281 Also move labeling gui files to dedicated subdirectory 2019-12-11 14:05:44 +10:00
Nyall Dawson
a8adb2d6c2 Code shuffle: move all labeling related code into src/core/labeling
So that these files are all grouped together, making it easier to locate
all the components of the labeling engine and hopefully making things
easier to navigate
2019-12-11 14:05:44 +10:00
Denis Rouzaud
8ef8efa7fb
include nlohmann/json_fwd.hpp in core source headers (#32294)
the file was manually added later to the installted headers, but not on mac

it is not possible to install a file in a Headers subfolder within a framework if the original header is not in the same cmake current directory

installing a header in a subdirectory is achieved by setting the MACOSX_PACKAGE_LOCATION property of the source file
but setting a property can only be achieved if it is in the same cmake directory (from the docs: Source file properties are visible only to targets added in the same directory [0])

[0] https://cmake.org/cmake/help/latest/command/set_source_files_properties.html
2019-10-18 09:08:12 +02:00
Denis Rouzaud
68a9ea5d70 move src/core/symbology/classification to src/core/classification 2019-09-02 09:46:40 +02:00
Denis Rouzaud
41495058d1 run sipify 2019-08-30 12:45:37 +02:00
Alessandro Pasotti
92ac7a2e93
[server] Server api and WFS3 (#10016)
Implementation of OGC API and WFS3 core draft specification
2019-08-06 16:38:21 +02:00
Nyall Dawson
b298a197e7 Start on registry 2019-07-11 13:03:12 +10:00
Nyall Dawson
fb1a610007 Early prototype of label callouts 2019-07-11 13:03:12 +10:00
Tom Elwertowski
35da038860 macOS needs path to GEOS framework for PAL 2019-06-21 07:04:11 +10:00
Alessandro Pasotti
63711510b6 Dear Qt, I love you but ...
... you are too slow and QJson API is so ugly.

Now using this wonderful json lib:
https://github.com/nlohmann/json

Results in release mode (QJson tests are not shown but
QJson was even slower than string concat).

PASS   : TestQgsJsonUtils::testExportAttributesJson(Use json)
RESULT : TestQgsJsonUtils::testExportAttributesJson():"Use json":
     0.0022 msecs per iteration (total: 75, iterations: 32768)
PASS   : TestQgsJsonUtils::testExportAttributesJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportAttributesJson():"Use old string concat":
     0.0032 msecs per iteration (total: 54, iterations: 16384)
PASS   : TestQgsJsonUtils::testExportFeatureJson(Use json)
RESULT : TestQgsJsonUtils::testExportFeatureJson():"Use json":
     0.011 msecs per iteration (total: 96, iterations: 8192)
PASS   : TestQgsJsonUtils::testExportFeatureJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportFeatureJson():"Use old string concat":
     0.015 msecs per iteration (total: 64, iterations: 4096)
PASS   : TestQgsJsonUtils::testExportGeomToJson(Use json)
RESULT : TestQgsJsonUtils::testExportGeomToJson():"Use json":
     0.76 msecs per iteration (total: 98, iterations: 128)
PASS   : TestQgsJsonUtils::testExportGeomToJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportGeomToJson():"Use old string concat":
     0.85 msecs per iteration (total: 55, iterations: 64)
PASS   : TestQgsJsonUtils::cleanupTestCase()
2019-04-18 17:04:30 +02:00
Peter Petrik
cd9a84e11c [feature] [mesh] Mesh Calculator
Similarly to raster calculator, mesh calculator can take dataset groups from current mesh layer and
combine them with various aritmentic/logical operators to new dataset group.
2019-01-14 12:32:36 +01:00
Nyall Dawson
7ccaa3df32 [FEATURE][API] Add flexible framework for custom "validity checks"
Adds a new interface QgsAbstractValidityCheck which defines
a single "check" which can be performed on a given QgsValidityCheckContext.
A new application-wide QgsValidityCheckRegistry registers
and manages instances of all known checks, and allows running
of all registered checks of a specific type at once.

Initially the framework is focused toward print layout validity
checks, but the interface has been designed to be generic enough
to allow alternative types of validity checks (e.g. project save
validity checks, processing model validity checks, etc.).

The API is designed to be used both by internal validity checks
and also to be extended by custom, organisation-specific
validity checks. E.g., for print layout validity checks we could have:
2019-01-03 04:53:07 +10:00
Nathan Woodrow
87d2da13fb
[FEATURE][needs-docs] Add new @alg decorator for nicer python processing scripts. (#8586)
@alg()
@alg.help()
@alg.input()
@alg.output()
2018-12-10 16:35:52 +10:00
Juergen E. Fischer
4464089487 auto-detect name of sip module used by PyQt5 2018-10-24 13:38:03 +02:00
Nyall Dawson
fee1f95a1c Make sip import path configurable, default to upstream path 2018-10-24 08:10:50 +10:00
Nyall Dawson
0fad3e5731 Fix build with newer sip versions
Fixes #19476
2018-10-24 08:10:50 +10:00
Salvatore Larosa
3cb9ef2294 fix build without server and 3d 2018-10-16 18:45:25 +02:00
Salvatore Larosa
20c9a5da33 add 3d module to API file 2018-10-16 12:52:48 +02:00
Martin Dobias
88cb8313c8 Python bindings for QGIS 3D library 2018-10-13 22:05:39 +02:00
Matthias Kuhn
bee5470e10
Python bindings for QgsGeometryCheck and co
Adds

 - python bindings
 - geometry check factory
 - geometry check registry
 - QgsFeedback for geometry checks (lots of potential still)
 - An IsValid geometry check
 - Splits classes into their own files
 - Decouples feature pools from the configuration context
2018-09-28 13:33:24 +02:00
Denis Rouzaud
3ceecbf806
no override in SIP 2018-09-19 20:13:29 -04:00
Matthias Kuhn
b2072d8298
Add missing sip magic 2018-09-19 13:48:47 +02:00
Juergen E. Fischer
86c3e8b8a6 fix build crashes with SIP 4.19.11 2018-07-04 23:37:52 +02:00
Denis Rouzaud
4d0d19b0f7
fix build without gui but with bindings
console and plugin installed are gui components
2018-06-28 21:55:38 +02:00
Juergen E. Fischer
212cffcab1 Port gps support to QSerialPort (byebye QExtSerialPort) 2018-06-28 17:31:01 +02:00
Denis Rouzaud
8ef0d1f7d9 [pyqgis] add missing install of __init__.py for modules 2018-06-05 03:25:47 -08:00
Nyall Dawson
bd0ec6e4e9 Don't use old policy for CMP0040
Seems no longer required in any case
2018-06-05 14:08:30 +10:00
Denis Rouzaud
1fb02e8d83 concatenate auto_additions files with python module __init__.py.in 2018-06-03 11:07:09 -08:00
Denis Rouzaud
e5b02cd2a8 use dedicated files for auto additions 2018-06-03 11:07:09 -08:00
Alexander Bruy
6cac1bdcbd use complex condition for CMake < 3.7 2018-05-28 14:20:10 +03:00
Nyall Dawson
5cf33969ae Cleaner conditional generation of pyi typehint stub files 2018-05-28 10:04:38 +10:00
Alexander Bruy
b150f41f12 fix build with SIP < 4.18 2018-05-28 10:04:38 +10:00
Nyall Dawson
e906a2c9ce [python] Generate type hint stub files
Causes sip to generate the type hinting stub (".pyi") files
alongside the generated python modules.

This allows editors like PyCharm to become aware of the
types of objects returned by functions, making the autocompletion
much more useful (e.g. by showing all the members available
for a returned type). It also fixes a bunch of incorrect
warnings highlighted in PyCharm for things like calling
static methods in a class (and, generates some new, but valid,
warnings when unexpected types are passed to functions!)

TODO: work out why PyCharm can't show the docstrings
for methods when the pyi file is present.
2018-05-24 06:56:16 +10:00
Denis Rouzaud
ff35e694bb fix (again) install of qgis.core.additions 2018-05-15 17:26:41 -04:00
Denis Rouzaud
cd34da8038
also install additions py files in their directory (#7000) 2018-05-15 05:02:08 -08:00
Denis Rouzaud
831512c98f [pyqgis] fix py files in subdirectory not correctly installed 2018-05-14 18:01:09 -04:00
Nyall Dawson
3f6e411edb Remove some redundant geos includes 2018-04-26 17:28:59 +12:00
Peter Petrik
50422a1165 [FEATURE] QgsMeshLayer part 1: Reading raw mesh
Introducting MDAL, QgsMeshLayer, mesh data providers (mesh_memory, mdal)
to read and visualize raw meshes: vertices and faces. Support dragging
2dm files from browser on canvas to visualize 2dm meshes.
Support for QgsMeshLayer in Python API.
2018-04-19 10:50:33 +02:00
Nyall Dawson
b3256ad2c3 [python] Always release the GIL before calling PyQGIS c++ methods
Switches on the sip "-g" switch, which forces sip to release the
Python Global Interpreter Lock before calling a qgis c++ method,
and reacquire it after.

While this flag is not a default sip flag, it is used when building
the PyQt API, so can't forsee any issues from enabling it.

The benefit however is extreme for PyQGIS based scripts which
rely on threads, potentially resulting in massive performance
boosts.

Without this switch, calling an expensive c++ method (say,
building a QgsSpatialIndex using a QgsFeatureIterator) would lock
the Python GIL for the duration of the c++ call... which could
potentially take minutes or more. With the switch, the lock
is released before all calls, so other Python threads are free
to merrily grab the lock and do other processing while the
original thread chugs away in c++ land.

Benchtests of worst-case scenarios (single thread calling
thousands of very inexpensive PyQGIS methods (simple getters))
regressed from mean of 154 seconds to 158 with this flag. But
that's worst case (and as Intel have recently demonstrated...
we can't take yesterday's computing speed as the benchmark
for todays ;). Given that best case scenarious (multi-threaded
operations calling slow c++ methods) will benefit so greatly
from this change, I think it's an acceptable trade off.

*This is a step toward potentially re-enabling background
execution of python based Processing algorithms, and also
should greatly improve QGIS responsiveness when using
python based renderers/symbols.
2018-01-26 14:55:31 +10:00
Nyall Dawson
d8402acee8 Remove composer from more code, port georeferencer reports to layouts 2018-01-18 09:21:45 +10:00
Denis Rouzaud
0644f59cde fix variable used for configuration 2018-01-17 10:16:37 -04:00
Denis Rouzaud
4a0eedde2e version compare is not strict
also fix sipify test
2018-01-17 10:16:37 -04:00
Denis Rouzaud
1d4e6a820a [sipify] use configuration file for SIP sources (*.sip.in)
to allow preprocessing the files to handle version specific features such as template based classes documentation in 4.19.7+
2018-01-17 10:16:37 -04:00
Denis Rouzaud
d1a922b565
let's build python API for server....
is it just me or it was never built?
2018-01-16 08:35:51 -04:00