98 Commits

Author SHA1 Message Date
Denis Rouzaud
c063838f52 rename QgsFilePickerWidget to QgsFileWidget 2016-01-15 10:08:34 +01:00
Martin Dobias
b83f6e359a Merge pull request #2665 from wonder-sk/auto-trace
[FEATURE] Tracing of features (digitizing)

Tracing can be now used in various capturing map tools (add feature, add part, ...) including reshape and split tools.

Tracing is simply a new mode for these tools - when tracing is not enabled, the tools work as usual. When tracing is enabled (by clicking the new magnet icon or pressing T key), tools switch to tracing behavior:
- first click on a vertex/edge (must be snapped!) will start tracing - moving mouse on top of the map continuously updates the trace
- next click will confirm the trace and mark start of a new trace Tracing can be enabled/disabled anytime even while digitizing one feature, so it is possible to digitize some parts of the feature with tracing enabled and other parts with tracing disabled.

Tracing respects snapping configuration for the list of traceable layers.

If there are too many features in map display, tracing is disabled to avoid potentially long tracing structure preparation and large memory overhead. After zooming in or disabling some layers the tracing is enabled again.

Internally, things work like this:
- when tracing is requested, linestrings are extracted from vector layers, then noded (using GEOSNode to resolve all intersections) and finally a simple planar graph is built (vertices + edges)
- when tracing, endpoints are temporarily added to the graph (if not equal to one of existing vertices already) and Dijkstra's algorithm is run to get shortest path

Original specs for the curious ones (the interaction with QGIS is slightly improved from what has been specified): http://www.lutraconsulting.co.uk/crowdfunding/autotrace-phase-2/specification.pdf
2016-01-13 12:18:00 +01:00
Denis Rouzaud
492f1ad18b add sip bindings 2016-01-13 11:49:25 +01:00
Martin Dobias
3883a2e5fc [tracer] added docs and sip files 2016-01-11 20:57:28 +01:00
Nyall Dawson
881074b194 Boost coverage of SIP bindings
Now all classes and members are either exposed to bindings or marked
as "not available in Python bindings" in the docs.

Drop test thresholds to 0. Now it should be much easier to determine
what missing members have been added which are causing test
failures.
2016-01-05 11:16:15 +11:00
Matthias Kuhn
be01b7eec5 [FEATURE] Add N:M relation editing possibilities
This adds the possibility to manage data on a normalized relational
database in N:M relations. On the relation editor in a form, the tools
to add, delete, link and unlink work (also) on the linking table if a
relation is visualized as N:M relation.

Configuration is done through the fields tab where on the relation a
second relation can be chosen (if there is a suitable relation in terms
of a second relation on the linking table).

Limitations
===========

QGIS is not a database management system.

It is based on assumptions about the underlying database system. In
particular it expects

 * A `ON DELETE CASCADE` or similar measure on the second relation
 * Does not take care of setting the primary key when adding features.
   Either users need to be instructed to set them manually or - if it's a
   database derived value - the layers need to be in transaction mode
   (currently only activatable through the API)
2015-12-08 15:49:01 +01:00
Matthias Kuhn
313c34ce22 [py3] Updates to sip files 2015-11-16 07:42:48 +01:00
Nyall Dawson
719ff408a5 Add some missing SIP bindings, comment some classes as not available
in Python
2015-11-10 17:08:27 +11:00
Hugo Mercier
d16cdcf449 Add more options for filtering legend elements
This introduces two new options to filter legend elements:
- filter by expression: a boolean expression can be set. Only symbols of
features that make the expression evaluated to true will be kept in the legend
- filter by polygon: only symbols of features that are inside the given
polygon will be part of the legend.

The polygon filtering is used in particular for a new option in the
composer legend that allows to filter out anything that is not included
in the current atlas polygon.
2015-11-03 10:39:09 +01:00
elpaso
a141ffb390 Interactive selection by group of exported symbols
This fixes #11681
2015-10-28 17:31:21 +01:00
Matthias Kuhn
457c76d964 [sip] QgsMapCanvasSnappingUtils 2015-10-22 10:32:05 +02:00
Larry Shaffer
0975c9f7aa [auth] Redesign Authentication section of Options
- Separate management options from auth config table
- Add standalone certificate manager
- Add installed auth method plugin dialog, indicating usage per plugin
2015-09-24 13:05:49 -06:00
Larry Shaffer
c894357a94 [auth system] Python bindings for core and gui classes 2015-09-21 08:51:19 -06:00
Matthias Kuhn
3831668f2e Sip bindings for editing and cad map tools 2015-09-11 12:02:25 +02:00
Matthias Kuhn
efcbbfdaeb Move maptools from app->gui 2015-09-11 12:02:25 +02:00
Nyall Dawson
1c7a5b2dba Add editor widget for editing QgsExpressionContextScope variables 2015-08-22 19:01:39 +10:00
Nyall Dawson
6a3357fab8 Fix warnings, add missing sip bindings 2015-08-21 05:45:49 +10:00
Nyall Dawson
ca04bb6409 Allow more customisation of QgsNewNameDialog 2015-08-20 16:09:52 +10:00
Denis Rouzaud
710e7f74e3 sort include by file name 2015-06-02 08:15:34 +02:00
Denis Rouzaud
adcf119afa sip bindings for user input tool bar 2015-06-02 08:15:34 +02:00
vmora
1e46196937 [FEATURE] add expressions at the symbollist level
Size and Rotation can be defined by an expression for all symbols
composing a marker. Width can be defined by an expression for all
symbols composing a line.

For markers, a legend is generated for varying sizes. This allows
multivariate analysis legend in the case of classified/graduated colors.

The offset is now set along with size to maintain the relative position
of symbols composing a marker.

An asistant, with preview, is accessible through the data defined button
to help the user define the size expression. Three methods are
available: Frannery, Area and Radius.

Added a widget for use in categorized/classified symbology gui to set
the expression if needed. The assistant is also available from it.
2015-05-20 19:30:18 +10:00
Nyall Dawson
183286a006 [FEATURE] Add a graphical histogram for the graduated renderer
This adds a new histogram tab to the graduated renderer, which
shows an interactive histogram of the values from the assigned
field or expression. Class breaks can be moved or added using
the histogram widget.

A base class, QgsHistogramWidget, has been created to display
histograms for a field or expression. In future this could be
used to show a histogram within a "selection statistics" panel.

Sponsored by ADUGA (http://www.aduga.org)
2015-05-19 02:21:15 +10:00
Matthias Kuhn
24417fd75d Add python bindings for QgsWidgetWrapper
Allows the usage of `widget.wrapper()` from a form's python init script.
2015-05-13 09:49:55 +02:00
Nyall Dawson
742f3233ee [FEATURE] Paint effects for layers and symbol layers
This commit adds a new framework for implementing paint effects, which
modify the results of QPainter operations to apply visual effects
such as drop shadows and blurs.

The initial implementation allows for effects to be applied to entire
layers and individual symbol layers.

Included are a drop shadow, inner shadow, blur, inner glow, outer glow,
colorise and transform effect. A "stack" effect is also implemented
which allows other paint effects to be combined in various ways.

Sponsored by hundreds of generous kickstarter contributors!
2015-03-28 20:04:50 +11:00
Juergen E. Fischer
abd4a04399 sip update 2015-02-03 02:21:52 +01:00
Denis Rouzaud
127c882e98 create scale widget (scale combo box + button to set scale from map canvas) 2015-01-09 07:40:44 +01:00
Denis Rouzaud
07c41fd282 add SIP for QgsProjectionSelectionWidget 2015-01-05 11:41:50 +01:00
Nyall Dawson
486d408631 [FEATURE] Port new memory layer plugin to core 2014-12-04 14:57:52 +11:00
Nyall Dawson
727747658b [FEATURE] Live heatmap renderer
Allows for live, dynamic heatmaps for point layers. Options include
specifying heatmap radius in pixels, mm or map units, choice of
color ramp, and a slider for selecting a tradeoff between render
speed and quality.
2014-11-22 13:03:54 +11:00
Denis Rouzaud
48cdd749eb add Qgs(Double)SpinBox to SIP 2014-09-25 15:08:51 +02:00
Denis Rouzaud
2b2066abb7 [SIP] add QgsIdentifyMenu 2014-09-17 11:23:22 +02:00
Denis Rouzaud
8cd5e59e89 add RelationReferenceWidgetWrapper to SIP + complete RelationReferenceWidget 2014-09-15 18:24:47 +02:00
Nyall Dawson
b9fc2b51d9 Add a bunch of useful interactive color widgets to GUI, including
color wheels, ramps, boxes, and text edits.
2014-09-09 21:31:43 +10:00
Denis Rouzaud
5c5deec4a0 SIP file for new date time edit 2014-09-01 15:39:26 +02:00
Martin Dobias
6891aae19a Use QgsLayerTreeModel as a source of data for legend rendering instead of QgsLegendModel
This is work in progress, customization of legend is not working yet
2014-09-01 10:10:36 +07:00
Denis Rouzaud
4588d9bd6c new map tool to select single feature 2014-08-19 08:34:02 +02:00
Nyall Dawson
cd54d6a355 New GUI control for an editable list of colors from a color scheme.
Supports drag and drop reordering, drag and drop colors from external
apps (on supported OS).
2014-08-16 16:28:31 +10:00
Nyall Dawson
bfff4bd6b2 [FEATURE] New version of color button (QgsColorButtonV2) based off
QToolButton. Features:
- context menu items have been moved to the attached menu button
- new gui widget QgsColorSwatchGrid, which displays a grid of colors
- new class for QgsColorScheme, which generates colors to show in a
  color swatch grid
- new class QgsColorSchemeRegistry, with a global instance containing
  default color schemes. QgsColorButtonV2 accepts a color scheme
  registry, to control which schemes to show in the popup menu as
  color swatch grids.
- color button can have a default color
- color button can also be quickly set to a totally transparent color
- c++ and python unit tests for all core components
2014-08-11 20:37:52 +10:00
Nyall Dawson
d0e9d8d126 [FEATURE][composer] Allow specifying user stylesheets to apply to a HTML item's content 2014-07-27 22:18:45 +10:00
Juergen E. Fischer
3988ad0f63 make sip bindings to qscintilla derived classes optional (replaces 7e815cad & 8f0b8987) 2014-07-23 19:03:42 +02:00
Juergen E. Fischer
7e815cad76 debian packaging update with workaround for debian #755491 2014-07-21 14:31:21 +02:00
Nathan Woodrow
ea7343e0de Comment sip files for code editor to fix build error on ubuntu 2014-07-21 21:56:05 +10:00
Nathan Woodrow
a3447dd9a3 Add missing HTML editor sip files 2014-07-20 22:16:20 +10:00
Nathan Woodrow
a284c4e0d1 Code editor 2014-07-12 22:27:52 +10:00
Martin Dobias
cf4393e0e7 [layertree] Add Python bindings - part two (gui) 2014-06-03 19:27:28 +07:00
Martin Dobias
0775a89ed5 Merge pull request #1380 from Oslandia/mask_renderer
[FEATURE] Inverted polygons renderer
2014-05-24 11:26:41 +07:00
Hugo Mercier
66ac1eda38 Inverted polygons renderer: add SIP 2014-05-23 19:56:18 +02:00
Matthias Kuhn
ea91b6fe4a [FEATURE] Port editor widgets to new API
Create a new widget for for attribute form

fix #10281
fix #7319
fix #7013
fix #9335
fix #4417
2014-05-22 22:50:36 +02:00
Denis Rouzaud
8485b9ce6f set layer scale visibility for several layers 2014-05-21 14:49:08 +02:00
Martin Dobias
c9f9ea8985 Added layerTreeView() to QgisInterface, moved context menu provider to new file 2014-05-21 14:49:32 +07:00