91 Commits

Author SHA1 Message Date
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
Nyall Dawson
eea36c0212 Add custom drop handlers for layout windows 2017-12-07 08:49:54 +10:00
Nyall Dawson
ce170918c9 Start moving processing algorithm dialog to c++
In an attempt to avoid Python global interpreter locks which
block the UI thread.
2017-12-01 18:15:40 +11:00
Matthias Kuhn
fdd00870ee [FEATURE] Search widget for relations using aggregates
For each child relations, the subform is visible.

Each attribute of the children has a tool button option to define to which
aggregate the specified value should be compared. This allows for searching
things like

 * Each city where the highest building is more than 300 m
 * Each sensor where the median value is lower than 50 ppm
 * Each feature with a child with a missing value
 * ...
2017-11-20 20:31:38 +01:00
Matthias Kuhn
f5559b5143 Add QgsAttributeFormWidget 2017-11-20 20:31:38 +01:00
Nyall Dawson
1f769da68d Work on resurrecting overviews 2017-11-07 11:32:38 +10:00
Nyall Dawson
7f0142c86a Working move item content tool 2017-11-07 11:32:38 +10:00
Nyall Dawson
ab7bb7235a Start work on node edit tool 2017-11-07 11:32:38 +10:00
Nyall Dawson
44fe2a8d08 Add tools to create node based items 2017-11-07 11:32:38 +10:00
Martin Dobias
6476fef419
Merge pull request #5451 from wonder-sk/snap-indicators
Snap indicators improvements
2017-10-27 20:50:53 +01:00
Matthias Kuhn
7811f38e48
[FEATURE] Add QgsFeatureListComboBox with live-filter-capabilities 2017-10-26 15:30:38 +02:00
Martin Dobias
b508bf7f1c Build and review fixes 2017-10-26 11:28:17 +02:00
Martin Dobias
1edc1a790f Move handling of snap indicators from map tools to a new class 2017-10-24 09:04:59 +01:00
Sandro Mani
1f300cfa2e Add QgsVScrollArea sip bindings 2017-10-23 17:25:08 +02:00
Nyall Dawson
587072cae9 Split QgsFileDownloader into separate core/gui classes
So that the guts of this class can be used from non-gui code
2017-10-19 06:32:50 +10:00
Blottiere Paul
c2b829011c Update documentation and sip binding 2017-10-09 05:13:59 +01:00