106 Commits

Author SHA1 Message Date
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
Matthias Kuhn
f06f65285d Fix api doc and sip issues 2018-04-09 13:10:48 +02:00
Matthias Kuhn
eb39d2379c Move processing algorithm configuration code to gui lib 2018-04-09 13:10:47 +02:00
Matthias Kuhn
3be4324d60 Move processing algorithm configuration widget to gui library
This way we can also use all the fancy widgets like a QgsExpressionLineEdit.
2018-04-09 13:10:47 +02:00
Nyall Dawson
dfa6b6ae19 Correctly set base style for QgsLayerTreeViewProxyStyle
Creates a new QgsProxyStyle subclass of QProxyStyle which
automatically sets the base style to match the current
application style (creating a new QStyle object, since
setting the base style takes ownership). Additionally,
QgsProxyStyle correctly parents the style to a parent
widget, avoiding leaks since calling QWidget::setStyle
doesn't transfer ownership.

Fixes incorrect theme used for layer tree view since
addition of indicator icons.
2018-03-11 10:23:18 +11:00
Martin Dobias
f56d70f3f8 [FEATURE] Indicators for layer tree view + filter indicator implementation
This adds a mini-framework for display of extra icons in layer tree views
next to layer and group names. Tool tip text can be associated with indicators
to give extra context for indicators. In addition, a signal gets emitted
when user clicks indicators and custom actions can be defined.

The main window's layer tree view (ToC) gets support for indicators
that are shown when a vector layer has a filter applied. This makes it easier
for users to understand that they are looking at a subset of all data.
Clicking the indicator's icon brings up query builder.
2018-02-26 18:34:43 +01:00
Denis Rouzaud
70f9c228d7 [options search] API refactoring
* avoid using lambdas and use dedicate class and subclasses for each widget type (lable, groupbox, tree, etc)
* this makes the code much more clearer
* allow creating custom highlight widgets with API
2018-02-03 15:52:33 -09:00
Nyall Dawson
536c586968 Style fixes 2018-02-02 19:52:01 +11:00
Denis Rouzaud
20722f4e5f [user input widget] use a floating widget rather than a dock
fix #15177
2018-01-15 21:41:01 -04:00
Nyall Dawson
1402f76e85 Show item size in status bar when creating a new item 2018-01-10 18:16:08 +10:00
Nyall Dawson
db906273b5 Drop all composer classes from Python bindings 2018-01-08 13:35:15 +10:00