Summary

This document tries to give an overview about status of splitting QGIS into several libraries which could be then used by third party applications. For more information refer to QGIS_Architecture_Roadmap. Tasks marked as done are already in SVN trunk and will be a part of 0.9 release.

Refactoring has started in January 2006 by Tim - code from one directory has been split into several directories:

Tasks

Tasks already completed:

Some tasks that has to be done (still growing):

Global tasks:

Class list

Core library

Class

Description

Python

QGis

class with some basic enumerations and constants

(./)

QgsApplication

accessors for application-wide data

(./)

QgsLogger

class to print debug/warning/error messages to the console

(./)

Providers

QgsProviderMetadata

metadata class for describing a data provider

(./)

QgsProviderRegistry

singleton class for registering data providers

(./)

QgsDataProvider

base class for spatial data provider implementations

(./)

QgsVectorDataProvider

base class for all vector data providers

(./)

QgsRasterDataProvider

base class for all raster data providers

(./)

Geometry and spatial references:

QgsPoint

represents 2D point

(./)

QgsLine

a simple line composed of two endpoints

QgsRect

a rectangle specified by double values

(./)

QgsFeature

encapsulates a single feature including id and field/value

(./)

QgsField

encapsulates a field in an attribute table or data source

(./)

QgsGeometry

represents geometry in WKB/WKT, contains functions for geoprocessing

(./)

QgsGeometryVertexIndex

identifies particular vertex in a given OGC geometry

(./)

QgsClipper

class that clips line segments and polygons

QgsDistanceArea

distance and area calculations on the ellipsoid

(./)

QgsSpatialRefSys

class for storing a spatial reference system (SRS)

(./)

QgsCoordinateTransform

class for doing transformations between two map coordinate systems

(./)

QgsSpatialIndex

wrapper class for spatial indexing library

(./)

Exceptions:

QgsException

QGIS exception class (derived from std::exception)

QgsIOException

for qgis I/O exceptions

QgsProjectBadLayerException

for files missing layers while reading project files

QgsCsException

coordinate system exception

Searching:

Flex + Bison sources

parser engine

QgsSearchString

interface for parsing and evaluation of search strings

QgsSearchTreeNode

definition of node for parsed tree of search string

Layers:

QgsMapLayer

base class for all map layer types

(./)

QgsMapLayerRegistry

singleton class for keeping track of loaded layers

(./)

QgsVectorLayer

vector layer backed by a data source provider

(./)

Mapping rendering stuff:

QgsMapRender

class for rendering map layer set

(./)

QgsMapToPixel

class for transformation between map and device coordinates

(./)

QgsScaleCalculator

calculates scale based on map extent and units

(./)

QgsLabel

class for rendering labels

(./)

QgsLabelAttributes

storage of attributes for label rendering

(./)

Renderers: (in "renderer" dir)

QgsRenderer

abstract base for all renderers. Renderer holds info needed to draw the contents of vector layer

(./)

QgsContinuousColorRenderer

renderer class which interpolates RGB values between min,max of the classification field

(./)

QgsGraduatedSymbolRenderer

renders and contains the information for graduated symbol rendering

(./)

QgsSingleSymbolRenderer

render class to display all the features with a single QgsSymbol

(./)

QgsUniqueValueRenderer

renderer class to show every feature with unique value

(./)

Symbology: (in "symbology" dir)

QgsSymbologyUtils

namespace containing useful methods for symbology widgets

(./)

QgsSymbol

encapsulates settings for drawing and classification

(./)

QgsMarkerCatalogue

catalogue of point symbols

(./)

Raster layers: (in "raster" dir)

QgsRasterLayer

provides capability to render raster datasets

(./)

QgsRasterBandStats

container for statistics about a single raster band

(./)

QgsRasterViewPort

provides details of the viewable area that a raster will be rendered into

(./)

QgsRasterPyramid

used to store pyramid info for the raster layer

(./)

QgsColorTable

color table

(./)

Attribute actions:

QgsAction

encapsulates an action and associated information

QgsAttributeAction

stores and controls management and execution of actions for layer attributes

QGIS Project files:

QgsProject

implements persistent project state

(./)

QgsProperty, QgsProperyValue, QgsPropertyKey

helper classes for QgsProject

Misc:

QgsHttpTransaction

Tracks a HTTP request with its response

QgsMessageOutput

Interface for showing messages from QGIS in GUI independent way

(./)

QgsMessageOutputConsole

Displays messages to console

(./)

QgsContextHelp

provides a context based help browser for a dialog

(./)

QgsDataSourceURI

structure for storing the component parts of a PgSQL/RDBMS datasource URI

(./)

QgsProviderCountCalcEvent

custom event to be fired when layer count has been fully calculated

used only by postgresql provider

QgsProviderExtentCalcEvent

custom event to be fired when layer extent has been fully calculated

used only by postgresql provider

QgsRunProcess

executes external program/script, optionally captures output

QgsVectorFileWriter

generic vector file writer

(./)

GUI library

QgisGui

constants used throughout the QGIS GUI

QGisInterface

abstract interface for exposing functions for use by plugins

(./)

QgsColorButton

color button

QgsEncodingFileDialog

file dialog which lets user select encoding for a data provider

QgsFileDropEdit

file dropable LineEdit

QgsMessageViewer

simple dialog for showing longer messages

(./)

Map canvas:

QgsMapCanvas

map canvas class for displaying all GIS data types

(./)

QgsMapCanvasItem

base class for map canvas items

(./)

QgsMapCanvasMap

class which holds the rendered map

(./)

QgsMapTool

base class for map canvas tools

(./)

QgsMapToolPan

tool for panning in map canvas

(./)

QgsMapToolZoom

tool for zooming in/out using rubberband

(./)

QgsMapOverviewCanvas

overview canvas

(./)

QgsPanningWidget

widget for panning in overview canvas

(./)

QgsRubberBand

rubberband for drawing multilines and polygons

(./)

QgsVertexMarker

map canvas item for drawing vertex markers

(./)

Projection support:

QgsProjectionSelector

widget for selection of projection

(./)

QgsLayerProjectionSelector

dialog for setting projection system for a layer

(./)

QGIS application

Class

Description

Notes

QgisApp

main window for the QGIS application

too big class, should be refactored

QGisAppInterface

implementation of QgisInterface

QgsAbout

about dialog for QGIS

QgsBookmarkItem

spatial bookmark item (stored in sqlite3)

QgsBookmarks

dialog with spatial bookmarks

QgsClipboard

internal clipboard for storage of features

QgsMapLayerInterface

interface class for map layer plugins

QgsOptions

dialog for setting user options and preferences

routines with qgis database should be moved somewhere else

QgsNewConnection

dialog for configuring connection info for a PostgreSQL db

QgsPgQueryBuilder

query builder for PostgreSQL

QgsProjectProperties

dialog used for project-wide settings

QgsCustomProjectionDialog

custom projection widget for defining parameters of a projection

QgsIdentifyResults

dialog for displaying results of identify tool

QgsMapServerExport

export QGIS MapCanvas to MapServer

so far doesn't make use of map canvas

QgsNumericSortListViewItem

a QListViewItem that can sort numerically

Attributes handling:

QgsAddAttrDialog

dialog for setting new attribute

QgsDelAttrDialog

dialog for deleting attributes

QgsAdvancedAttrSearch

dialog for advanced searching by attribute

QgsAttributeActionDialog

attribute action dialog

QgsAttributeDialog

dialog for viewing/editing attributes

QgsAttributeTable

customized QTable for displaying attribute table

QgsAttributeTableDisplay

dialog for browsing and editing attribute table

Layer properties:

QgsDlgVectorLayerProperties

unified property dialog for vector layers

QgsRasterLayerProperties

dialog for setting up how raster layers are displayed

QgsVectorSymbologyWidget

widget for setting symbology for a vector layer

QgsMarkerDialog

class for choosing marker SVG images by clicking icons

QgsSiSyDialog

dialog to set the symbology for the legend type single symbol

QgsGraSyDialog

dialog for graduated symbols

QgsPatternDialog

dialog for selecting pattern for rendering vector layers

QgsContColDialog

dialog for continuous color renderer

QgsUValDialog

??

QgsLUDialog

??

QgsPointStyleWidget

widget for selecting point style

QgsLineStyleWidget

widget for selecting line style

QgsFillStyleWidget

widget for selecting fill style

QgsLineStyleDialog

dialog for settings line styles

QgsGeomTypeDialog

dialog for setting new vector geometry type and attributes

QgsLabelDialog

dialog for setting rendering of labels for vector layers

Map canvas tools:

QgsMapToolCapture

tool for digitizing

QgsMapToolSelect

tool for selecting features using rubberband

QgsMapToolVertexEdit

tool for adding/moving/deleting vertices

QgsMeasure

tool and widget for measuring distances and areas

Plugin management:

QgsPluginItem

contains info about loadable plugin - name, description and full path

QgsPluginMetadata

stores info about loaded plugin, including pointer to the inst. object

QgsPluginManager

plugin manager for loading/unloading plugins

QgsPluginRegistry

singleton class for keeping track of installed plugins

PostgreSQL GUI stuff:

QgsDbSourceSelect

dialog to create connections and add tables from PostgreSQL

WMS GUI stuff:

QgsNewHttpConnection

dialog for configuring connection info for WMS server

QgsServerSourceSelect

dialog to create connections and add layers from WMS

QgsPasteTransformations

dialog for setting transformation from source to destination fields (using copy/paste)

not implemented yet

QgsTable

class to represent an attribute table related to a map layer

used nowhere?

Composer:

QgsComposer

dialog for composing map output

QgsComposerView

composer canvas

QgsComposition

stores map composition for printing

QgsComposerItem

base class for composer items

QgsComposerMap

represents map window

QgsComposerLabel

represents label

QgsComposerPicture

represents picture

QgsComposerScalebar

represents scale bar

QgsComposerVectorLegend

represents vector legend

Legend:

QgsLegend

legend treeview

QgsLegendItem

abstract base class for all legend items

QgsLegendGroup

special legend item, items below are treated as a group

QgsLegendLayerFileGroup

container for layer file group

QgsLegendPropertyGroup

container for layer properties

QgsLegendSymbologyGroup

container for symbology

QgsLegendLayer

container for layer, including layer file(s), symbology, properties

QgsLegendLayerFile

legend item for layer file

QgsLegendPropertyItem

legend item for representing layer property

QgsLegendSymbologyItem

item for symbology

QgsLegendVectorSymbologyItem

item for symbology of a vector layer

Python support:

QgsPythonDialog

dialog with embedded python console

QgsPythonUtils

routines for interfacing Python

Splitting Into Libraries (last edited 2007-04-17 09:09:25 by MartinDobias)