116 Commits

Author SHA1 Message Date
Nyall Dawson
e3507ff24c Unit tests for selection modes 2020-01-14 19:08:20 +13:00
Nyall Dawson
f82fea5418 Hide formatting widget from sip
It's an internal detail only
2020-01-14 19:08:20 +13:00
Nyall Dawson
387787b539 Add interactive editor dialog for layout manual table items 2020-01-14 19:08:20 +13:00
Nyall Dawson
ccf6898eb9 Start on registry for numeric format configuration widgets 2020-01-08 16:20:43 +13:00
Nyall Dawson
552913cdeb Start on base class for numeric format widgets 2020-01-08 16:20:43 +13:00
Nyall Dawson
591e1a28e0 Start on GUI work 2020-01-08 16:20:43 +13:00
Vincent Cloarec
30569bce1f Move QgsRasterLayerProperties class to the gui API
Motivation :
Move the QgsRasterLayerProperties class to the GUI API.
So, this class could be used using the QGIS API, notably for standalone applications.

The instance of this class was dependent, since QGIS 3.8, from the QgisApp instance, when calling the askUserForDatumTransform(). As this method, defines a title and only call QgsDatumTransformDialog::run() method from the gui API, this PR purpose to :
2020-01-02 13:02:32 +10:00
Nyall Dawson
cb8b4a8831 Move guts of datum transformation dialog to a new standalone widget
QgsCoordinateOperationWidget

This widget shows a list of the available operations between a source
and destination CRS along with their properties
2019-12-21 05:07:39 +10:00
Alessandro Pasotti
09345b5130 Add QgsExpressionStoreDialog 2019-12-16 17:29:30 +01:00
Nyall Dawson
d3da0e0281 Also move labeling gui files to dedicated subdirectory 2019-12-11 14:05:44 +10:00
Nyall Dawson
ed93ebd91c Add QgsLabelObstacleSettingsWidget widget for customising label obstacle settings 2019-12-04 14:47:36 +10:00
Nyall Dawson
060cfb4eeb [api] New class QgsLabelSettingsWidgetBase
Base class for widgets which allow customisation of label engine properties,
such as label placement settings.
2019-12-04 14:47:36 +10:00
Hugo Mercier
845894b313
[FEATURE] Selective masking (#30747)
* [FEATURE] Selective masking

Advanced rendering feature that allows the definition of 'masks' areas around labels or with a new typ of symbol layer. These masks will "un-draw" symbol layers of other layers underneath.
It modifies the rendering process by adding an optional second pass.
2019-11-07 08:17:25 +01:00
Matthias Kuhn
4294dda083 Resipify 2019-11-03 21:05:34 +01:00
Julien Cabieces
3abbc0f178 Digitize the geometry from the relation reference widget add button (#30905)
* [FEATURE] [needs-docs] Add the possibility to digitize the geometry
when creating a feature from the plus button on the relation reference widget
2019-09-06 08:28:59 +02:00
Nyall Dawson
b298a197e7 Start on registry 2019-07-11 13:03:12 +10:00
Nyall Dawson
337f1d95f5 Move coordinate bounds map to its own reusable widget 2019-07-08 12:42:02 +10:00
Nyall Dawson
10d6a8a122 [processing][API] Add API to QgsProcessingGuiRegistry and QgsProcessingParameterWidgetFactoryInterface
to handle creation of parameter definition widgets

Previously, these configuration widgets were all hardcoded into the Python modeler
dialog. This prevented 3rd party, plugin provided, parameters from ever being full
first class citizens in QGIS, as there was no way to allow their use as inputs to
user created models to be customised.

Now, the registry is responsible for creating the configuration widget, allowing
for 3rd party parameter types to provide their own customised configuration
widgets.

Refs #26493
2019-07-01 17:01:34 +10:00
Nyall Dawson
640283f700 Add new reusable combo box widget for alignment choices
QgsAlignmentComboBox presents users with a (filterable) selection
of horizontal alignment choices, e.g. left/right/center
2019-06-28 09:45:48 +10:00
Martin Dobias
8e56f51c23 Merge remote-tracking branch 'origin/master' into providers 2019-06-25 22:11:51 +02:00
Nyall Dawson
4ea55fceaa Split symbol list off to its own reusable widget 2019-06-21 15:52:56 +10:00
Peter Petrik
62d615c2cd [QEP 149] Introduce static data providers [API BREAK]
- adds QgsProviderGuiRegistry and QgsProviderGuiMetadata
- adds QgsProjectStorageGuiRegistry
- requires providerMetadataFactory for dynamic data providers
- requires providerMetadataGuiFactory for dynamic data providers (GUI only)
- removes QgsProviderRegistry::WidgetMode
2019-06-18 15:15:36 +02:00
Nyall Dawson
fbd243be65 [processing] Port map layer selection combobox widget to c++
And:

- fix enable state of selected features only after changing between
map layers with/without selections
- fix state of selected features only when running an algorithm
from the history list, e.g. respect original setting for
selected features only (or not)
- ensure no duplicate changed signals are sent, and correctly
emit changed signals in all applicable circumstances
- handle drag and dropped layers from browser panel (UX fix)
- soak with unit tests
2019-06-15 15:05:48 +10:00
Nyall Dawson
788ee78d74 Sip update 2019-05-30 06:28:32 +10:00
olivierdalang
5b6dd73949 add missing docstring
with sip_include.sh
2019-05-15 18:09:27 +02:00
Nyall Dawson
3f4c3d0722 Add widget and dialog for finding files by pattern match, with an
optional recursive search
2019-04-30 14:43:58 +10:00
Alessandro Pasotti
b165258e6d [feature][needs-docs] HTML form widget
Shameless clone of QML widget, with some webview quirks.

Funded by ARPA Piemonte
2019-03-23 16:41:16 +01:00
Nyall Dawson
8d77a6bdcc New gui class QgsLayoutComboBox
Shows a list of layouts
2019-03-12 08:16:52 +10:00
Nyall Dawson
cccf974211 [processing] Port enum widget wrapper to new API
Fixes:
- enum parameters set to "allow multiple" only allow a single
value selection when used in modeler
- optional enum parameters cannot be set to no value when
used outside of modeler

Fixes #20406
2019-03-08 15:46:59 +10: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
Nyall Dawson
9d28a9699c Add a new widget QgsImageSourceLineEdit, based on QgsSvgSourceLineEdit
Allows images to be set to base64 embedded images, remote urls, etc
when used alongside QgsImageCache
2018-12-06 09:22:50 +10:00
Nyall Dawson
6ec7f02e83 Add a QgsDataItemGuiProvider interface and registry for providers
These providers will be used to control how the browser data items
behave within GUI, and to allow separation of GUI related
properties of browser items from the core code.

A new registry QgsDataItemGuiProviderRegistry has been created
(modeled off QgsDataItemProviderRegistry), with an application
wide instance available from QgsGui::instance()->dataItemGuiProviderRegistry()
2018-11-04 21:07:27 +10:00
Alessandro Pasotti
083208c1eb QgsDataSourceSelectDialog: a simple browser-based reusable data source select dialog 2018-11-01 12:02:38 +01:00
Matthias Kuhn
fe5ed43f26
Make sip code style test happy 2018-09-30 11:50:54 +02:00
Nyall Dawson
cb178a7bb8 New class QgsWindowManagerInterface
With implementation in app. This allows GUI library classes to
re-use standard dialogs which are created in app. The initial
use-case is to allow the GUI library symbol list widget to
focus/open an existing Style Manager dialog (created in app),
instead of opening a new modal style manager dialog.

Side benefit - moves some code out of the monolithic qgisapp.cpp
file.
2018-09-14 21:13:10 +10:00
Matthias Kuhn
b75f9f3b5b
Merge pull request #7801 from signedav/qml-widget
[FEATURE] QML chart and drawings widget
2018-09-14 11:35:26 +02:00
signedav
533ab61543 last fixes and sip_include 2018-09-11 18:36:44 +02:00
Matthias Kuhn
cebaa81996 Code completion for expression builder [FEATURE] 2018-09-08 11:50:03 +02:00
Matthias Kuhn
32ee71634f
Merge pull request #7711 from m-kuhn/mapToolSnapToGrid
Snap to grid for maptools [FEATURE]
2018-09-08 08:20:49 +02:00
Matthias Kuhn
5acd33b32d Work in progress 2018-09-05 11:01:32 +02:00
Nyall Dawson
d563034583 Address review comments 2018-09-04 19:06:07 +10:00
Nyall Dawson
a717b85e2e [FEATURE][processing] New modeler parameter widget
A new widget which handles parameter values for child algorithms
within a model. Instead of the previous approach of requiring
individual widget wrappers to handle creation of a suitable
model widget, we do all this automatically for them.

This widget uses a stacked widget with a toolbutton to select
the parameter's source, instead of the previous combo box approach
(which didn't scale well for large models). I.e. users select
first whether the value is taken from a static value, a
model input, or an output from a different child algorithm. The
widget then changes appearance and behavior based on this
choice.

Additionally, a new option is present for all parameters
of using a "precalculated expression". This expression is
evaluated once before the child algorithm is executed
and used during the execution of that algorithm.
2018-09-04 19:06:07 +10:00
Nyall Dawson
644ef6a752 [processing] Initial work on porting base GUI classes to c++
- Add abstract base class for Processing widget wrappers to c++
- Add wrapper factory interface to c++
- Make QgsProcessingGuiRegistry also register widget wrapper
factories, and be responsible for creation of new c++
processing widget wrapper instances
- Start on private c++ implementation of boolean widget wrapper,
including unit tests
2018-09-04 19:06:07 +10:00
Matthias Kuhn
1e81e03a18 Add QgsSnapToGridCanvasItem 2018-08-26 14:10:46 +02:00
Nyall Dawson
1a7ade7575 [FEATURE] Better UI for embedding SVG files
Adds a common widget for SVG sources, with a tool button with
some handy options:
- select file (old behaviour), pick a file from disk
- embed file (pick a file from disk, is embedded into project/symbol)
- extract embedded file (for embedded files, allows you to save these
back to a disk based svg file)
- from url (opens a dialog prompting for a url, exposing
the previously hidden functionality that svgs can be retrieved
from a remote url (eg github))

Sponsored by SMEC/SJ
2018-07-24 03:54:44 +10:00
Nyall Dawson
101c98fd17 Move toolbox tree view to c++ class 2018-07-16 11:38:13 +10:00
Nyall Dawson
f6075ca029 [processing] New class QgsProcessingToolboxModel which is
a QAbstractItemModel which represents the providers, groups
and algorithms from the processing registry
2018-07-16 11:38:13 +10:00
Nyall Dawson
d232cde514 [processing] Move recent algorithm log to c++ class 2018-07-05 02:37:03 +10:00
Peter Petrik
252e41d3dc fix travis issues: docs, sip, test 2018-06-26 11:07:45 +02:00
Denis Rouzaud
847f0e1829 adapt sipify scripts and test to place auto generated sip files in dedicated folder 2018-05-14 10:44:11 -04:00