39822 Commits

Author SHA1 Message Date
Nyall Dawson
274d684f64 Fix procesing test layer loading 2017-07-07 09:28:19 +10:00
Nyall Dawson
b917a82662 Better debuging from processing alg tests 2017-07-07 09:28:19 +10:00
Nyall Dawson
6654aec6a5 Fix execution of script algorithms was not releasing layers/sinks 2017-07-07 09:28:19 +10:00
Nyall Dawson
f82899540e Fix build 2017-07-07 09:28:19 +10:00
Nyall Dawson
5f02e9c89d Avoid QgsFeedback flooding progress report signals
We only emit the progress changed signal when there's been at
least a 0.1% change since the last progress report. Otherwise
it's possible that things like processing algorithms which
are reporting feedback every feature in a 500k feature dataset
cause a gazillion signals to be emitted and everything to
slow to a crawl
2017-07-07 09:28:19 +10:00
Nyall Dawson
e9e335a7bd Don't set thinking cursors when running processing algorithms
Since now they're run in a background thread, it's not appropriate
anymore
2017-07-07 09:28:19 +10:00
Nyall Dawson
e1184cd69a Make QgsProcessingAlgRunnerTask work correctly
It now safely can execute algorithms in background threads
without issues
2017-07-07 09:28:19 +10:00
Nyall Dawson
e5b156b86a Make processing algorithms safe to run in threads 2017-07-07 09:28:19 +10:00
Nyall Dawson
0231e773a1 Remove unused member 2017-07-07 09:28:19 +10:00
Nyall Dawson
5350483c90 Add method to take results from another processing context and
add to the current context

With appropriate note and tests to ensure that both the current
context and that which the results being taken from share the
same thread affinity
2017-07-07 09:28:19 +10:00
Nyall Dawson
d20c68d3f1 Add method to copy thread safe settings between processing contexts 2017-07-07 09:28:19 +10:00
Nyall Dawson
6c6f646291 Add methods to retrieve current thread affinity and push contexts
to another thread

With suitable assert in place to ensure that pushes are only
made when current thread == existing thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
1dce459610 Add method to transfer all layers from one map store to another
With a note and assert that both stores must have the same
thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
2543e079a5 Better assert messages
Issues is actually when prepare/postProcess is called in a different
thread to context - it doesn't have to be the main thread
2017-07-07 09:27:35 +10:00
Nyall Dawson
1b2086e8a6 Make algorithm dialog use background tasks to execute algorithms 2017-07-07 09:27:35 +10:00
Nyall Dawson
8cfcf57541 Fix tests 2017-07-07 09:27:35 +10:00
Nyall Dawson
7a1fd93ace Flush sink buffers instead of deleting sink/sources in processAlgorithm
Avoids potential issues if processAlgorithm is run in a different
thread
2017-07-07 09:27:35 +10:00
Nyall Dawson
e0c7daa2d8 Rename QgsProcessingAlgorithm::clone to ::create
Since it better describes what the function does. It returns a new
pristine copy of the algorithm, not a clone of its current state
2017-07-07 09:27:35 +10:00
Nyall Dawson
cd7776ca1c Upgrade ported python algs to be thread ready 2017-07-07 09:27:35 +10:00
Nyall Dawson
c2621b1275 Split algorithm execution into separate prepare/process/postProcess steps
The prepare and postProcess steps are designed to be run in main
thread only, while the process step can safely be run in a background
thread.
2017-07-07 09:26:17 +10:00
Nyall Dawson
5c4f64270d Add clone method to ScriptAlgorithm 2017-07-07 09:26:17 +10:00
Nyall Dawson
cd9328d259 Fix some processing algorithm exception handling 2017-07-07 09:26:17 +10:00
Nyall Dawson
1b2afea23e Add some more clone methods to algorithm subclasses 2017-07-07 09:26:17 +10:00
Nyall Dawson
0c6b19cd85 Improvements to QgsProcessingAlgRunnerTask
- take a clone of algs before running them. This avoids issues
if the algorithm is removed or edited while a background task
is running

- accept an optional existing feedback object
2017-07-07 09:26:17 +10:00
Nyall Dawson
6d7b0a3bbc Fix re-saving already saved models 2017-07-07 09:26:17 +10:00
Nyall Dawson
9156933c9e Add a pure virtual clone method for algorithms
This is required for safely executing the algorithm in a background
thread.
2017-07-07 09:26:17 +10:00
Nyall Dawson
603168e8fa Update sip 2017-07-07 08:54:00 +10:00
Nyall Dawson
014b0400da Merge pull request #4736 from nyalldawson/text_button
New gui widget QgsFontButton
2017-07-07 07:38:18 +10:00
Juergen E. Fischer
536f6432a3 debian packaging: update oracle dependencies 2017-07-06 18:37:54 +02:00
Matthias Kuhn
91f908f754 Protected -> Private 2017-07-06 17:31:09 +02:00
Matthias Kuhn
11e24c29e7 Remove leftovers 2017-07-06 17:31:09 +02:00
Matthias Kuhn
c973c83c8c Remove unused variable 2017-07-06 17:31:09 +02:00
Nathan Woodrow
e49aaedcb1 Don't duplicate layer tree node when alt is held
Looks like it duplicates the layer but it really just copies the node
meaning QGIS can get confused

Duplicate on Alt will come at a later date
2017-07-06 22:11:36 +10:00
Nyall Dawson
e2acf5369f Add custom widget for QgsFontButton 2017-07-06 20:02:25 +10:00
Nyall Dawson
bacad8cea6 [needs-docs] Show recently used fonts in submenu in font button 2017-07-06 19:56:39 +10:00
Nyall Dawson
e95b65ef48 [needs-docs] Mouse wheeling over font buttons can change font size
With ctrl+mouse wheel changing in smaller size increments
2017-07-06 19:56:39 +10:00
Nyall Dawson
49ad7836d3 Recommend that QgsFontButton is used instead of getFont 2017-07-06 19:56:39 +10:00
Nyall Dawson
43f11f4fa0 Use QgsFontButton everywhere we can 2017-07-06 19:56:39 +10:00
Nyall Dawson
0fd1f8e563 Fix size hint for font button 2017-07-06 19:56:39 +10:00
Nyall Dawson
99855ea35a Add method to use QgsFontButton in cut down mode for QFont settings only
The button can now be used in two different modes. The default behavior
is to include all settings used for configuring
QgsTextFormat/QgsTextRenderer classes. A cut down mode (without settings
for color/buffer/drop shadow/etc) is also available when the resultant
font is to be used only in a QFont object.
2017-07-06 19:56:39 +10:00
Nyall Dawson
5ac9745cad Add methods to convert QFont to/from mime data 2017-07-06 19:56:39 +10:00
Nyall Dawson
0b9fb5d6e1 [needs-docs] New gui widget QgsFontButton
A standard widget for configuring text format properties for use
with QgsTextRenderer/QgsTextFormat.

It's modelled heavily off QgsColorButton, and supports lots of nice
things like dragging formats between buttons, copying and pasting
format settings, dropping colors from color buttons, dragging colors
from font buttons to color buttons, directly setting font size
and opacity/color without having to open a dialog.
2017-07-06 19:56:39 +10:00
Denis Rouzaud
a73131176f reason spelling 2017-07-06 11:29:08 +02:00
Nyall Dawson
ddf5acebe7 Merge pull request #4807 from nyalldawson/layout_item_registry
Create a layout item registry for item types
2017-07-06 19:12:43 +10:00
Denis Rouzaud
f3a6df5c0d obscure spelling 2017-07-06 11:10:04 +02:00
Denis Rouzaud
df209774d4 simplify custom widgets CMakeLists.txt 2017-07-06 10:50:38 +02:00
Nyall Dawson
2745797fcd Use windows path format for project_path/project_folder variables on windows 2017-07-06 14:00:02 +10:00
Juergen E. Fischer
ecae3c9519 Only convert geometries to provider type when provider does strict type checking
(ie. not for shapes; fixes #16593, #16784, #16792, #16770;
followup 87116abd72; forward ported from d19ed1c6)
2017-07-05 19:08:24 +02:00
Denis Rouzaud
5b8e2c2f27 remove QgsVectorLayer::hasGeometryType in favor of QgsMapLayer::isSpatial 2017-07-05 10:18:32 +02:00
Nathan Woodrow
1c273f815d [MSSQL] Fix string length when using nchar, nvarchar, ntext 2017-07-05 14:25:13 +10:00