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 _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
