1239 Commits

Author SHA1 Message Date
Denis Rouzaud
694c8113e5 sipify gui part 1 2017-05-24 09:49:46 +02:00
Nyall Dawson
27077c875e Add a QgsStatusBar widget/interface for adding messages/widgets to
main window statusbar

QStatusBar gives almost no control over display and placement
of child widgets. It's not possible to subclass and reimplement
either, due to how QMainWindow works internally, and also due to
the special handling for the size grip and other platform specific
handling in QStatusBar.

Instead, we embed a single QgsStatusBar covering the whole real
status bar. All child widgets and temporary messages instead
are pushed to the QgsStatusBar instead - giving us as much control
as we desire over how these widgets are placed and their behavior.

As a result the locator widget has been moved to its logical placement
on the left of the status bar.

All plugins must ensure that they use the status bar interface
available via iface.statusBarIface() instead of directly interacting
with the status bar (e.g. iface.mainWindow().statusBar()...)
2017-05-18 10:35:33 +10:00
Nyall Dawson
8267fa3ddd Allow filters to provide configuration dialogs 2017-05-17 21:33:48 +10:00
Nyall Dawson
df9d9f6748 Invalidate current locator results when locator options are changed 2017-05-17 21:33:48 +10:00
Nyall Dawson
e8d3ae9264 Enable disabling filters via options dialog 2017-05-17 21:33:48 +10:00
Nyall Dawson
ce66393636 Add (non-functional) locator configuration dialog 2017-05-17 21:33:48 +10:00
Nyall Dawson
5a0bcf0776 Style fixes 2017-05-17 21:33:48 +10:00
Nyall Dawson
2435dbc712 Nicer results, always show an icon, show description 2017-05-17 21:33:47 +10:00
Nyall Dawson
ea86049c5e Show a list of shortcut prefixes in locator bar if no text is entered 2017-05-17 21:33:47 +10:00
Nyall Dawson
56c8baaccb Provide a standard string comparison method in QgsLocatorFilter
Subclasses should use this method instead of directly calling
QString::contains or using Python 's in search' type matches.
This ensures consistent matching behaviour across different filters.
2017-05-17 21:33:47 +10:00
Nyall Dawson
6649d2b1ed Sort filter results so closer matches appear higher
A closer match means more of the text is matched, ie
a short string inside a long string is penalised
2017-05-17 21:33:47 +10:00
Nyall Dawson
a53516d71d Only show action results when . prefix is used 2017-05-17 21:33:47 +10:00
Nyall Dawson
102a46662b Implement prefix based locator searching
Filters can indicate their preferred search prefix. Searches which
begin with this character will be restricted to the single matching
filter.

E.g. entering 'l buffer' will searching only layers containing 'buffer'

Other prefixes are:
- . search actions
- pl search print layouts
- a search algorithms

Plugins are restricted to a minimum 3 character prefix. We do this
to avoid plugins 'stealing' desirable prefixes, and instead we
want to reserve them for future core filters.
2017-05-17 21:33:47 +10:00
Nyall Dawson
b33ce0bf47 Allow speciyfing the priority for filters
Higher priority (i.e. more important) filter results get shown
first. This means filters like project layers & composers will
show above 'cruder' filters like the actions/processing filters.
2017-05-17 21:33:47 +10:00
Nyall Dawson
0f80df09a7 Show locator filter names in results, sort results and group by filter 2017-05-17 21:33:47 +10:00
Nyall Dawson
ab02f2b79c Allowing associating QgsLocatorWidget with a map canvas
This allows the widget's locator to prioritise results which
are close to the current canvas extent
2017-05-17 21:33:47 +10:00
Nyall Dawson
a7d590e041 Add a context variable for locator searches
This allows encapsulation of properties relating to the context
of a search, such as a target map extent. Locator filters could
use this to prioritise results close to the current canvas extent.
2017-05-17 21:33:47 +10:00
Nyall Dawson
376d6b3d08 Add missing docs, sip bindings 2017-05-17 21:33:47 +10:00
Nyall Dawson
1174b335dc Add inbuilt filters for project layers and compositions
The project layer filter allows you to quickly select a layer
from the current project and highlight it in the layer tree.
It's useful for complex project with lots of groups, where
it's easy to "lose" layers somewhere in the tree...

The composition filter allows searching for and opening
compositions from the current project
2017-05-17 21:33:47 +10:00
Nyall Dawson
71f7872251 [FEATURE] Implement a QtCreator style locator bar in the QGIS status bar
This adds a new "locator" bar to the QGIS status bar. If you're not
familiar with QtCreator's locator, it's a quick search bar
(activated by Ctrl+K) which displays matching search results
from any number of registered search filters.

Search filters are subclassed from QgsLocatorFilter, and
added to the app's locator via iface.registerLocatorFilter(...)

Searching is handled using threads, so that results always
become available as quickly as possible, regardless of whether
any slow search filters may be installed. They also appear
as soon as each result is encountered by each filter, which means
that e.g. a file search filter will show results one by one
as the file tree is scanned. This ensures that the UI is always
responsive even if a very slow search filter is present (e.g.
one which uses an online service).

This framework is designed to be extended by plugins, such as
OSM nominatim searches, direct database searching (i.e. Discovery
plugin), layer catalog searches, etc...
2017-05-17 21:33:47 +10:00
Denis Rouzaud
922b162b86 attachment widget: data defined button for document type 2017-05-15 17:57:25 +02:00
Nyall Dawson
6efe160a65 Move QgsNative instance from app->QgsGui singleton
This allows gui widgets to utilise native platform interfaces.
Additionally attaching the instance to QgsGui allows QgsNative
to become a QObject in future if required and for use
of signals/slots in the native interfaces.
2017-05-15 09:56:52 +10:00
Nyall Dawson
14882058ba Sipify update 2017-05-15 07:34:14 +10:00
Nyall Dawson
ac94345331 Rename QgisGui to QgsGuiUtils
Better reflects what this namespace contains, and replaces the
non-standard Qgis prefix with the Qgs standard
2017-05-15 07:33:52 +10:00
Nyall Dawson
436844b205 QgsMapLayerActionRegistry is no longer a singleton
Moved the global instance to QgsGui::QgsMapLayerActionRegistry()
2017-05-15 07:32:38 +10:00
Nyall Dawson
a86b93e957 QgsLayerTreeEmbeddedWidgetRegistry is no longer a singleton
Moved the global instance to QgsGui::layerTreeEmbeddedWidgetRegistry()
2017-05-15 07:32:01 +10:00
Nyall Dawson
711f6dcc50 QgsShortcutsManager is no longer a singleton
Move the global instance to QgsGui::shortcutsManager()
2017-05-15 07:32:01 +10:00
Nyall Dawson
4a5c9a7ba3 Make a new global QgsGui singleton
Move QgsEditorWidgetRegistry from being a singleton itself to
instead being a member of the QgsGui singleton
2017-05-15 07:32:01 +10:00
Martin Dobias
c882f88c1d Remove "relative path" checkbox from svg selector widget
It is decided on different level whether files are saved with relative paths
and internally now QGIS always uses absolute paths to SVG files.
2017-05-13 19:43:47 +08:00
Martin Dobias
23a7bd0fd9 Introduce QgsReadWriteContext that encapsulates QgsPathResolver
This should make the read/write methods more flexible if we need to give them extra context.
2017-05-13 18:09:26 +08:00
Martin Dobias
8ffd91ea90 Propagate path resolver through renderers, annotations, diagrams
This is necessary in order to be able to correctly translate between absolute and relative paths
deeper in the code - e.g. paths to SVG files used in marker or fill symbols.

Until now, relative paths were translated to absolute paths on the fly.
This is now changed - paths to files should be always absolute within QGIS objects - and paths
only get turned into relative when saving projects. When loading a project, relative paths
are translated to absolute paths immediately.

This should lower the overall confusion about relative/absolute paths within QGIS, and also
allow having different base directories for relative paths (e.g. QML or QPT files may use relative paths
to their directory - rather than to the project directory)
2017-05-13 18:02:19 +08:00
Denis Rouzaud
97866f4a20 [sip] add missing ConvertToClassCode
This was causing an issue if you tried to access widgets in a form using findChildren
widgets could not be casted to QGIs native types

also sipify QgsFilterLineEdit and QgsRelationEditorWidget
2017-05-10 14:40:31 +02:00
Nyall Dawson
a4e3c8336e Merge pull request #4520 from nyalldawson/raster_combo_box
QgsRasterBandComboBox
2017-05-09 20:36:33 +10:00
Nyall Dawson
c9bfb9f2a1 Add a "not set" option to QgsRasterBandComboBox 2017-05-09 19:23:08 +10:00
Nyall Dawson
a32314d8b5 Add a new QgsRasterBandComboBox widget
And use wherever custom widgets were being created. Reduces
duplicate code and allows specialised handling for raster
band display/selection to be centralized.
2017-05-09 19:23:08 +10:00
Denis Rouzaud
0824280296 sipify gui editor widgets 2017-05-09 08:59:07 +02:00
Denis Rouzaud
85f3b81b55 remove double spaces in sip files
fix indentation
2017-05-03 08:02:14 +02:00
Denis Rouzaud
7d459149c7 [sip] align missing bits and replace nullptr by 0 2017-05-02 08:09:53 +02:00
Denis Rouzaud
7b60d89d6c align pointer and reference in sip files batch 2 2017-05-01 20:00:51 +02:00
Denis Rouzaud
93971d5ed3 [sip] align pointer and reference in blacklisted files
this will facilitate sip diff checking
2017-05-01 17:49:43 +02:00
Etienne Trimaille
1f8c311158 sipify QgsColor* 2017-05-01 14:54:49 +02:00
raymondnijssen
dce5b59fcb sipified qgsadvanceddigitizingdockwidget 2017-05-01 11:20:39 +02:00
Etienne Trimaille
5c021dc6be sipify groupwmsdatadialog and qgsgroupbox 2017-05-01 11:04:39 +02:00
Etienne Trimaille
bb3a41883d sipify qgsoverlayanalyzer and qgsnewmemorylayer 2017-04-30 23:07:57 +02:00
Etienne Trimaille
e4d2f34f3f sipify QgsScaleCombobox 2017-04-30 21:00:52 +02:00
Matthias Kuhn
28a21209b9 [sipify] seealso 2017-04-30 16:52:05 +02:00
Denis Rouzaud
897e2f0410 [sipify] do not take // comments into docstrings 2017-04-30 16:34:08 +02:00
Denis Rouzaud
45266cd03e [sipify] improvements
* add In annotation
 * remove struct forward declarations
 * fix members initialization list in header
 * merge removal code for function bodies and constructor definition
2017-04-26 10:25:50 +02:00
Larry Shaffer
66f4ff9710 Merge pull request #4407 from boundlessgeo/filedownloader-auth
[auth] Add authentication configuration support to QgsFileDownloader
2017-04-25 17:39:22 -06:00
Denis Rouzaud
c1832854a2 sipify batch
* QgsDial
* QgsDialog
* QgsDockWidget
* QgsEncodingFileDialog
* QgsErrorDialog
2017-04-25 13:46:56 +02:00