225 Commits

Author SHA1 Message Date
Samweli
8846a1a265 refomartted updated provider files 2022-05-03 15:58:19 +10:00
Samweli
9fc2f58e71 updated the owssourcewidget to only update ows layers bbox 2022-05-03 15:58:19 +10:00
Samweli
d05e628ea8 set source uri when source widget is available 2022-05-03 15:58:19 +10:00
Samweli
5e7e0ae3d3 updated the raster layer properties dialog and wcs provider to accommodate adding an ows provider source widget 2022-05-03 15:58:19 +10:00
Nyall Dawson
4eede35d55 Allow any symbol to be an animated symbol
Users can now indicate that a symbol should be treated as a animated
symbol, through the new "Animation Settings" option in the symbol
widget's Advanced menu.

This settings panel allows users to enable animation for the symbol
and set a specific frame rate at which the symbol should be redrawn.
When enabled, the @symbol_frame variable can be used in any
symbol data defined property in order to animate that property.

For instance, setting the symbol's rotation to the data defined
expression

    @symbol_frame % 360

will cause the symbol to rotate over time. (with rotation speed
dictated by the symbol's refresh rate)
2022-04-09 18:14:44 +10:00
Nyall Dawson
2ee10c1327 Rename QgsPlotToolPan file 2022-04-07 19:22:19 +10:00
Nyall Dawson
62450ec373 Move files to elevation directory 2022-04-07 19:22:19 +10:00
Nyall Dawson
cf5c82c400 Implement zooming actions and tools for plots 2022-04-07 19:22:19 +10:00
Nyall Dawson
6480b974d7 Implement plot panning and zoom
With all the usual interaction, e.g.

- middle mouse button + drag = pan
- hold space + drag = pan
- wheel = zoom
- ctrl + wheel = smooth zoom
2022-04-07 19:22:19 +10:00
Nyall Dawson
2653f5146f Implement plot panning by drag 2022-04-07 19:22:19 +10:00
Nyall Dawson
52509be814 Condense excessive class heirarchy, fix unit test 2022-04-07 19:22:19 +10:00
Nyall Dawson
141f7bf9f2 Plot wip 2022-04-07 19:22:19 +10:00
uclaros
280b7cc00c fail on missing attributes, remove unused functions, sip 2022-03-18 10:40:36 +10:00
Nyall Dawson
b50232a5af Add QgsTableView subclass of QTableView for adding QGIS specific
tweaks on top of the base class
2022-03-15 13:16:25 +10:00
Nyall Dawson
092279e90d [feature] Run batch processing steps in tasks
Instead of forcing all steps in the batch processing dialog to execute
in the main thread, we now run each step as a separate task whenever
possible. This keeps the UI nice and responsive, and permits
responsive cancelation and progress reporting.

Individual steps are still run sequentially, not in parallel (yet!)
2022-03-15 11:44:08 +10:00
Denis Rouzaud
36a1019582
refactoring of QgsMapToolCapture to integrate shape map tools (#46687)
* make QgsMapToolCapture capable of capturing point/line/polygons

This moves part of the code from QgsMapToolDigitizeFeature to QgsMapToolCapture so the tool can actually capture point, line and polygons. It's mainly the 'cadCanvasReleaseEvent` which has been transfered.

* use a current CaptureTechnique in QgsMapToolCapture

QgisApp has been adapted to switch between the different techniques

* add point/line/polygon specific handlers for capture map tool

* convert add part map tool to use QgsMapToolCapture capabilities

* fix use of deprecated methods

* also create a virtual handler for QgsMapToolDigitizeFeature::featureDigitized

* more dox

* use const abstract geom in virtual handlers

* add new class QgsMapToolCaptureLayerGeometry to handle layer specific operation in capture map tool

such as avoiding intersections

* allow to add linear geometries on curved geometry layers

* make actions exclusive

* add settings registry to app

* add a registry for shape map tools

* abstract class for shape map tools

* adapt QgsMapToolCapture to correctly support shape map tools

* clean up of QgisApp

* new class QgsMapToolsDigitizingTechniqueManager to handle actions in app related to capture map tools

* clean up QgisInterface

* sipify

* refactoring of existing shape tools

* refactor add ring to fully support capture map tool

* add missing folder to Doxygen

* fix layout

* fix erasing at iterator pos

* fix unused warning

* fix more dox

* fix cpp check warning

* fix unused warning

* fix annotation map tool does not support shape + set tool name

* correctly handle case when the capture is not done on a vector layer (annotation, mesh, …)

* enable shapes in annotation map tool

* correctly undo and clean

* adapt existing shape tests

the deletion test with circular vertices has been dropped since the capture map tool behaves differently

* fix warning

* refactor fill ring to support shape digitizing

* fix win build

* fix more tests

* avoid detach warnings

* fix app test + clean up

* harmonize new settings with existing ones

* fix categories

* support adding multi lines as a part

* fix adding curve part to multi line

* also handle points

* code a bit clearer

* cast not always valid

* allow adding curved polygon to multipolygon

* add test for QgsGeometry::addPart with curved parts on non-curved geoms (lines and polygons)

* fix with Python < 3.9

* better dox for deprecated interface actions methods

* remove files leftover

* remove leftover circular string curve point tool

* add default Z/M values when calling QgsGeometry::coerceToType

* Apply suggestions from code review

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>

* fixes from review

* move layer specific part to specific tool

* fix typo

* fix leak

* fix dox

* fix segmentization

* call map tool implementation of addCurve when adding trace curve to avoid point duplication

* call sub-class implementation

* fix since 3.24 -> 3.26

* fix test

* add test to avoid extra curves when using tracing

* fix headers

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
2022-02-22 07:59:50 +01:00
Nyall Dawson
9c4bcf0092 Add widgets for creation of field domains 2022-02-20 06:48:03 +10:00
Denis Rouzaud
83c5e6fe04 add new class QgsMapToolCaptureLayerGeometry to handle layer specific operation in capture map tool
such as avoiding intersections
2022-01-28 06:30:24 +01:00
Nyall Dawson
0ad1324780 Split off part of custom projection dialog into reusable
QgsCrsDefinitionWidget widget
2022-01-11 19:50:46 +10:00
jakimowb
d7bf988817
Expose QgsFieldCalculator to public API (#46748)
* shows QgsFieldCalculator in public API

* removed unnecessary comment

* QgsFieldCalculator:
made public slots private and added code documentation

* fixed doc string

* Apply suggestions from code review

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>

* updated sip file

Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
2022-01-08 16:28:27 +01:00
Nyall Dawson
5e5540c890 [processing] Port algorithm log to new history provider API
No user visible changes, but we gain the flexibility for better
history storage, including the ability to store the outputs
calculated by the algorithm execution...!
2021-12-21 15:32:57 +10:00
Nyall Dawson
6783347896 Implement framework for history providers
As per https://github.com/qgis/QGIS-Enhancement-Proposals/issues/130
2021-12-21 15:32:57 +10:00
bdm-oslandia
345dd4dd87 fix: replace referer http header by dedicated class QgsHttpHeader 2021-12-02 11:16:53 +10:00
Denis Rouzaud
1b96632606 fix build + sip 2021-11-12 09:24:41 +01:00
Denis Rouzaud
93bb188e2a add python bindings 2021-11-09 14:13:52 +01:00
Nyall Dawson
db4b0fed86 Move to core 2021-09-24 15:47:10 +10:00
Nyall Dawson
d1e43b63fb Add new class QgsRecentStyleHandler
Accessible via QgsGui::recentStyleHandler(), this is intended as
a place to store recently used style items (e.g. symbols).

Initially it's used just for annotation items so that newly
created annotation items are automatically set to the same style
as the most recently modified item of the same type (e.g. so
that users drawing many point annotations don't need to keep
setting it back to the same appearance)! But the api is kept
flexible for additional uses in future... (eg layout items)
2021-09-24 15:47:10 +10:00
Nyall Dawson
8cf4903204 Don't expose QgsMapToolModifyAnnotation to python
We want to leave this private for now, to give flexibility to change
api if/when needed
2021-09-10 15:01:26 +10:00
Nyall Dawson
01226a3294 [annotations] Add framework for map tools for creating new annotation
items
2021-09-08 15:32:15 +10:00
Nyall Dawson
adcd793b89 Add QgsAnnotationItemCommonPropertiesWidget widget for controlling
common properties of annotation items (e.g. reference scale, z order)

And include this in the point text item configuration widget
2021-09-07 18:44:57 +10:00
Nyall Dawson
c7c7b6dd1e [api] Create annotation item gui registry
This registry is attached to QgsGui and handles registration of
functions which create widgets for modifying QgsAnnotationItems

Modeled heavily off the print layout API
2021-09-07 10:35:02 +10:00
Nyall Dawson
758b33ed2e [api] Add initial framework for QgsMapToolModifyAnnotation
This is the start of a map tool for interactive editing of items
in annotation layers. Currently it supports selecting items, and
pre-highlighting their nodes as the cursor is moved over the items.

(Not exposed in QGIS gui yet)
2021-09-07 10:35:02 +10:00
Alessandro Pasotti
a25f798d04
Merge pull request #44710 from elpaso/dd-form-actions
[feature] Drag & Drop designer form actions
2021-08-19 17:23:22 +02:00
Julien Cabieces
74512ffde9 Separate QgsFileWidget from QgsExternalStorageFileWidget 2021-08-16 09:18:14 +02:00
Alessandro Pasotti
889359c3a1 Form DD action widgets initial implementation 2021-08-14 19:06:52 +02:00
Nyall Dawson
7f700e35be Split QgsBrowserDockWidget to new QgsBrowserWidget class and QgsBrowserDockWidget
Moves the guts of QgsBrowserDockWidget to a reusable QWidget subclass
"QgsBrowserWidget", so that browser widgets can easily be created
which aren't a dock widget.
2021-07-25 15:20:13 +10:00
Matthias Kuhn
071e4b585d
Merge pull request #44132 from m-kuhn/respect_screen_dpi
Allow using physical DPI for map canvas
2021-07-14 08:02:42 +02:00
Matthias Kuhn
a4a100e376 sip_include 2021-07-12 18:32:00 +02:00
Alessandro Pasotti
d914a50b63 QgsQueryResultWidget 2021-07-06 20:52:19 +02:00
Matthias Kuhn
32af8100e5
Merge pull request #43164 from domi4484/jsonEdit
[FEATURE] Json edit widget
2021-05-14 09:04:42 +02:00
Damiano Lombardi
9fdcda41fa Added test for QgsJsonEditWidget 2021-05-10 22:54:44 +02:00
vcloarec
9a3ad85533 interpolated line symbol layer 2021-05-05 09:03:13 +02:00
Nyall Dawson
7ad31ca1df Create QgsRichTextEditor widget, as a straightforward port from
https://github.com/Anchakor/MRichTextEditor, with some QGIS
formatting and practices applied
2021-04-21 14:41:09 +10:00
Nyall Dawson
5245430461 Add widget for Embedded Symbols renderer
Allows users to control the default symbol used for features without
embedded styles
2021-03-06 16:37:46 +10:00
Denis Rouzaud
0fc4aee612
Merge pull request #40721 from suricactus/relregistry
Support multiple relation editors via relation widget registry
2021-01-08 21:39:39 +01:00
Ivan Ivanov
bb7f411304 Rename to Abstract prefix 2021-01-07 15:42:21 +02:00
Ivan Ivanov
891c89ae2a rename QgsBasicRelationWidget--> QgsRelationEditorWidget 2021-01-06 16:01:39 +02:00
Nyall Dawson
7fba697bf3 [FEATURE] New "Merged feature" renderer for polygon and line layers
This renderer merges (or unions/dissolves) the line or polygon features
from a layer prior to rendering them. It's useful for rendering
a polygon layer with overlapping features as one single "coverage" feature,
or a line layer consisting of many smaller component line features
using a regularly spaced marker line or similar.

Internally, this just moves the guts of the existing inverted polygons
renderer to a new base class, as that renderer already had an option
to merge features prior to rendering. Basically it just exposes a new
renderer to users which is the inverted polygon renderer without
the inversion step!
2021-01-04 13:52:18 +10:00
Ivan Ivanov
51cd712c76 Add relation widget registry 2020-12-30 04:46:51 +02:00
Nyall Dawson
d5c3b4b8a5 Add API to allow creation of widgets for customising a layer's source
This adds api in the provider gui to allow a provider to create a custom
widget which exposes options to customise and change the layer's source.

E.g. a file based layer provider could expose a widget for selecting
a new file path, and an online one could expose widgets for changing
the host, authentication, etc.
2020-12-26 09:51:34 +10:00