Refs #53806
The crash here is coming from sip internals -- somewhere it is
triggering a Python SystemError. I can't solve this one, so just
port the algorithm to c++ and deal with the much improved performance
instead.
At model debug log level we'll show all the generic
logs for step preparation, inputs and outputs for every
child algorithm, including those which we normally skip
(eg raise warnings/outputs, string concatenation, etc).
This gives model designers more useful information to
debug their models.
Use this new log level when running models through the
model designer window.
through the toolbox
We were passing a float to a PyQt method requiring int in newer
Python versions, which raises an exception instead of silently
truncating.
SIP is totally messed up here -- the dialog wrapper or something
is always prematurely cleaned which results in broken QObject
connections throughout.
Hack around this by storing dialog instances in a global list to
prevent too early wrapper garbage collection
digital elevation model in order to classify pixels into ground
and non-ground cells
This is a port of the SAGA "DTM Filter (slope-based)" tool to a native
QGIS algorithm.
It also serves as a nice reference algorithm for raster based tools
which operate on a neighbourhood of pixels.
A shapefile can have a .cpg file to determine its encoding.
However, in processing, this file is not created when the
encoding is set to the magic "System" value.
This PR aims to propose to automatically determine the system
encoding using QT's codecForLocale.
So, even when using the magic "System" value, the cpg file
will be created with the true system encoding name.
Fixes#50603
algorithm (fix#53309)
If default value is not set and prameter is not optional its widget end
up in conflicting state: invalid CRS is set but widget requires a valid
one. As a result even if user selects a valid crs, widget fails to
validate selection.
It's possible that an algorithm's postProcessor may contain logic
relating to the layer tree, so make sure that all layers have
already been added to the tree before calling postProcessors