[Qgis-developer] QBrowser & Customization

Radim Blazek radim.blazek at gmail.com
Wed May 18 05:23:11 EDT 2011


Hi all,
we are ready (Martin Dobias and me) to merge browser-and-customization
branch to master.

You can get idea about features in that branch from some snapshots:
https://picasaweb.google.com/radim.blazek/QGISCustomizationQBrowser

Briefly for people who were not present at last HF:

Customization support allows users to disable (hide) parts of QGIS UI.
You can see example of minimal (maximal)  customization of version 1.7
on the first snapshot. It is possible to disable almost any element of
UI: menus, sub menus, toolbars, tools, parts of dialogs, docked
windows and status bar items. UI elements can be switched on/off
either in tree (second snapshot) or interactively in QGIS application
using customization select tool and clicking on UI elements.
Customization is saved in separate settings and can be saved/loaded
to/from file. There is also support for customized packages. If
customization file is included in installation package, it is loaded
the first time QGIS is started.

The QBrowser is intended to be a geographic data resources browser and
manager. Now it is implemented as a stand alone application but we
would like to include it also in QGIS as alternative 'Add layer'
dialog. Currently it is supported only by ogr, gdal and wms providers.
At this moment QBrowser allows you to browse file system (where it
identifies known geographic data) and defined WMS servers (shared with
QGIS). If you select a layer you can view its metadata, preview and
attributes (for vectors). It is possible to assign CRS to a layer (if
supported by provider), create a new shapefile and manage WMS servers.


We would like to discuss some issues with other developers before the merge:

QBrowser:

A1) All the data format specific functionality is implemented in
providers. Each provider which wants to show his data in browser must
implement 2 additional functions:
    QGISEXTERN int dataCapabilities ()
    QGISEXTERN QgsDataItem * dataItem ( QString thePath, QgsDataItem*
parentItem )
The dataCapabilities function says what kind of data is supported
(File,Dir,Database,Net) so that e.g. WMS provider is not called on
files or dirs. The dataItem() function returns QgsDataItem
representing either known geographic resources for given file system
path (gdal, ogr) or top level item (wms). It is important to design
providers interface well, because it may be implemented also by custom
providers and we cannot change it easily in future (after release).
Please look at the QgsDataItem and its children methods and
implementation.

A2) To get access from QBrowser to QgsWMSSourceSelect  via
QgsDataItem, we had to move QgsWMSSourceSelect to wms provider. That
is beginning of providers specific UI migration to providers, which
has been discussed already before and generally accepted. To get
select widget from main application we added in WMS provider another
function:
    QGISEXTERN QgsWMSSourceSelect * selectWidget( QWidget * parent,
Qt::WFlags fl )
Currently it is more or less a hack for QgisApp::addWmsLayer(). We
should probably define some QgsSelect either with methods returning
URI or better signals for add new layer. Currently it is using
signals, because WMS selector can add more layers.

Customization:

B1) The customization dialog tree is using Qt designer icons for
various widgets. It looks nice but it adds 192K to QGIS package. Is it
acceptable or do you prefer tree without icons?

B2) For dialogs, the interactive customization select tool can only be
activated by shortcut (because the dialogs are modal) which has to be
defined for main application. We have used Ctrl+M because it is not
yet used and M is close to right Ctrl. May be we should spare such a
good key for better occasion?

Please let us know your opinion or objections.

Radim


More information about the Qgis-developer mailing list