/*! \page wxpythonlib GRASS wxPython-based GUI

The GUI (Graphical User Interface) is written in the Python
programming language using <a
href="http://www.wxpython.org">wxPython</a> library - a blending of
the <a href="http://www.wxwidgets.org">wxWidgets</a> library for
Python.

The wxPython GUI (so called <em>wxGUI</em>) is composed of two main
<em>components</em>:

- <b>Layer Manager</b> and
- <b>Map Display Window</b>.

The <em>Layer Manager</em> allows users to run different GRASS modules
from a menu, includes map layer management, integrated command-line
prompt, and command output window. The <em>Map Display Window</em>
integrates basic tools for zooming, panning, data querying,
decorations (north arrows, barscale, etc.). Additional tools like
vector digitizer or georectification tool are also available.

<b>Table of content</b>

- \ref background
- \ref classes
 - \ref core
 - \ref gui_core
 - \ref lmgr
 - \ref mapdisp
 - \ref wscreen
 - \ref dbmgr
 - \ref gpc
 - \ref gmodeler
 - \ref vdigit
 - \ref wxnviz
 - \ref psmap
 - \ref locWizard
 - \ref plot
 - \ref mapswipe
 - \ref other
- \ref devel
- \ref seeAlso
- \ref refs

\section background Background

The plan for a native GUI for GRASS found its origin in the project <a
href="http://geo.fsv.cvut.cz/~landa/publications/2008/unpublished/fbk-report/technology-for-geoinformatics.html">GFOSS-TN</a>,
a collaboration between <a href="http://www.fbk.eu">FBK</a>
(Fondazione Bruno Kessler) and the Information System Service of the
Trento municipality (Italy). The wxGUI is successor of Tcl/Tk GUI
available in GRASS 5 and GRASS 6.

\section classes List of Modules and Classes

\subsection core Core modules

- core::debug
 - debug::DebugMsg
- core::globalvar
- core::gcmd
 - gcmd::GError
 - gcmd::GWarning
 - gcmd::GMessage
 - gcmd::GException
 - gcmd::Popen
 - gcmd::Command
 - gcmd::CommandThread
- core::gconsole
 - goutput::CmdThread
 - goutput::GStdout
 - goutput::GStderr
 - goutput::GConsole
- core::menutree
 - menutree::MenuTreeModelBuilder
- core::modulesdata
 - modulesdata::ModulesData
- core::render
 - render::Layer
 - render::MapLayer
 - render::Overlay
 - render::Map
- core::settings
 - settings::Settings
- core::units
 - units::BaseUnits
- core::utils
- core::workspace
 - workspace::ProcessWorkspaceFile
 - workspace::WriteWorkspaceFile
 - workspace::ProcessGrcFile

\subsection gui_core GUI core modules

- gui_core::dialogs
 - dialogs::SimpleDialog
 - dialogs::LocationDialog
 - dialogs::MapsetDialog
 - dialogs::NewVectorDialog
 - dialogs::SavedRegion
 - dialogs::DecorationDialog
 - dialogs::TextLayerDialog 
 - dialogs::GroupDialog
 - dialogs::MapLayersDialog
 - dialogs::ImportDialog
 - dialogs::GdalImportDialog
 - dialogs::GdalOutputDialog
 - dialogs::DxfImportDialog
 - dialogs::LayersList (used by MultiImport) 
 - dialogs::SetOpacityDialog
 - dialogs::StaticWrapText
 - dialogs::ImageSizeDialog
 - dialogs::SqlQueryFrame
 - dialogs::SymbolDialog
- gui_core::forms
 - forms::TaskFrame
 - forms::CmdPanel
 - forms::GrassGUIApp
- gui_core::ghelp
 - ghelp::AboutWindow
 - ghelp::HelpFrame
 - ghelp::HelpWindow
 - ghelp::HelpPanel
- gui_core::goutput
 - goutput::GConsoleWindow
 - goutput::GStc
- gui_core::gselect
 - gselect::Select
 - gselect::VectorSelect
 - gselect::TreeCrtlComboPopup
 - gselect::VectorDBInfo
 - gselect::LayerSelect
 - gselect::DriverSelect
 - gselect::DatabaseSelect
 - gselect::ColumnSelect
 - gselect::DbaseSelect
 - gselect::LocationSelect
 - gselect::MapsetSelect
 - gselect::SubGroupSelect
 - gselect::FormatSelect
 - gselect::GdalSelect
 - gselect::ProjSelect
 - gselect::ElementSelect
 - gselect::OgrTypeSelect
- gui_core::mapdisp
 - mapdisp::MapFrameBase
 - mapdisp::SingleMapFrame
 - mapdisp::DoubleMapFrame
- gui_core::mapwindow
 - mapwindow::MapWindow
- gui_core::menu
 - menu::Menu
 - menu::SearchModuleWindow
- gui_core::preferences
 - preferences::PreferencesBaseDialog
 - preferences::PreferencesDialog
 - preferences::DefaultFontDialog
 - preferences::MapsetAccess
- gui_core::prompt
 - prompt::GPrompt
 - prompt::GPromptSTC
- gui_core::query
 - query::QueryDialog
- gui_core::toolbars
 - toolbars::BaseToolbar
- gui_core::treeview
 - treeview::TreeView
- gui_core::widgets
 - widgets::ScrolledPanel
 - widgets::NTCValidator
 - widgets::SimpleValidator
 - widgets::NumTextCtrl
 - widgets::FloatSlider
 - widgets::SymbolButton
 - widgets::StaticWrapText
 - widgets::BaseValidator
 - widgets::IntegerValidator
 - widgets::FloatValidator
 - widgets::NTCValidator
 - widgets::SearchModuleWidget

\subsection lmgr Layer Manager

- wxgui
 - wxgui::GMApp
 - wxgui::Usage
- lmgr::layertree
 - lmgr::LayerTree
- lmgr::menudata
 - menudata::LayerManagerMenuData
- lmgr::pyshell
 - pyshell::PyShellWindow
- lmgr::toolbars
 - toolbars::LMWorkspaceToolbar
 - toolbars::LMDataToolbar
 - toolbars::LMToolsToolbar
 - toolbars::LMMiscToolbar
 - toolbars::LMVectorToolbar
 - toolbars::LMNvizToolbar
- lmgr::frame
 - frame::GMFrame

\subsection mapdisp Map Display Window

- mapdisp::frame
 - mapdisp::MapFrame
 - mapdisp::MapApp
- mapdisp::gprint
 - gprint::MapPrint
 - gprint::PrintOptions
- mapdisp::mapwindow
 - mapwindow::BufferedWindow
- mapdisp::statusbar
 - statusbar::SbException
 - statusbar::SbManager
 - statusbar::SbItem
 - statusbar::SbRender
 - statusbar::SbShowRegion
 - statusbar::SbAlignExtent
 - statusbar::SbResolution
 - statusbar::SbMapScale
 - statusbar::SbGoTo
 - statusbar::SbProjection
 - statusbar::SbMask
 - statusbar::SbTextItem
 - statusbar::SbDisplayGeometry
 - statusbar::SbCoordinates
 - statusbar::SbRegionExtent
 - statusbar::SbCompRegionExtent
 - statusbar::SbProgress
- mapdisp::toolbars
 - toolbars::MapToolbar

\subsection wscreen Welcome screen

- gis_set_error
- gis_set
 - gis_set::GRASSStartup
 - gis_set::StartUp
 - gis_set::GListBox

\subsection dbmgr Database Manager

- dbmgr::dialogs
 - dialogs::DisplayAttributesDialog
 - dialogs::ModifyTableRecord
- dbmgr::manager
 - manager::Log
 - manager::VirtualAttributeList
 - manager::AttributeManager
 - manager::TableListCtrl
 - manager::LayerListCtrl
 - manager::LayerBook
- dbmgr::sqlbuilder
 - sqlbuilder::SQLFrame
- dbmgr::vinfo
 - vinfo::VectorDBInfo

\subsection gpc Georectifier

- gcp::manager
 - manager::GCPWizard
 - manager::LocationPage
 - manager::GroupPage
 - manager::DispMapPage
 - manager::GCP
 - manager::GCPList
 - manager::VectGroup
 - manager::EditGCP
 - manager::GrSettingsDialog
- gcp::mapdisplay
- mapdisplay::MapFrame
- gcp::toolbars
 - toolbars::GCPMapToolbar
 - toolbars::GCPDisplayToolbar

\subsection gmodeler Graphical Modeler

- gmodeler::dialogs
 - dialogs::ModelDataDialog
 - dialogs::ModelSearchDialog
 - dialogs::ModelRelationDialog
 - dialogs::ModelItemDialog
 - dialogs::ModelLoopDialog
 - dialogs::ModelConditionDialog
 - dialogs::ModelListCtrl
 - dialogs::ValiableListCtrl
 - dialogs::ItemListCtrl
 - dialogs::ItemCheckListCtrl
- gmodeler::frame
 - frame::ModelToolbar
 - frame::ModelFrame
 - frame::ModelCanvas
 - frame::ModelEvtHandler
 - frame::VariablePanel
 - frame::ItemPanel
 - frame::PythonPanel
- gmodeler::menudata
 - menudata::ModelerMenuData
- gmodeler::model
 - model::Model
 - model::ModelObject
 - model::ModelAction
 - model::ModelData
 - model::ModelRelation
 - model::ModelItem
 - model::ModelLoop
 - model::ModelCondition
 - model::ProcessModelFile
 - model::WriteModelFile
 - model::WritePythonFile
 - model::ModelParamDialog
- gmodeler::preferences
 - preferences::PreferencesDialog
 - preferences::PropertiesDialog
- gmodeler::pystc
 - pystc::PyStc

\subsection vdigit Vector digitizer

- vdigit::dialogs
 - dialogs::VDigitCategoryDialog
 - dialogs::CategoryListCtrl
 - dialogs::VDigitZBulkDialog
 - dialogs::VDigitDuplicatesDialog
 - dialogs::CheckListFeature
- vdigit::main
 - main::VDigit
- vdigit::mapwindow
 - mapwindow::VDigitWindow
- vdigit::preferences
 - preferences::VDigitSettingsDialog
- vdigit::toolbars
 - toolbars::VDigitToolbar
- vdigit::wxvdigit
 - wxdigit::VDigitError
 - wxdigit::IVDigit
- vdigit::wxdisplay
 - wxdisplay::DisplayDriver

\subsection wxnviz 3D view mode (wxNviz)

- nviz::animation
 - animation::Animation
- nviz::main
- nviz::mapwindow
 - mapwindow::NvizThread
 - mapwindow::GLWindow
- nviz::preferences
 - preferences::NvizPreferencesDialog
- nviz::tools
 - tools::NvizToolWindow
 - tools::PositionWindow
 - tools::ViewPositionWindow
 - tools::LightPositionWindow
- nviz::workspace
 - workspace::NvizSettings
- nviz::wxnviz
 - wxnviz::Nviz
 - wxnviz::Texture
 - wxnviz::ImageTexture
 - wxnviz::TextTexture

\subsection psmap Cartograpic Composer

- psmap::dialogs
 - dialogs::TCValidator
 - dialogs::PenStyleComboBox
 - dialogs::CheckListCtrl
 - dialogs::PsmapDialog
 - dialogs::PageSetupDialog
 - dialogs::MapDialog
 - dialogs::MapFramePanel
 - dialogs::RasterPanel
 - dialogs::VectorPanel
 - dialogs::RasterDialog
 - dialogs::MainVectorDialog
 - dialogs::VPropertiesDialog
 - dialogs::LegendDialog
 - dialogs::MapinfoDialog
 - dialogs::ScalebarDialog
 - dialogs::TextDialog
 - dialogs::ImageDialog
 - dialogs::NorthArrowDialog
- psmap::instructions
 - dialogs::Instruction
 - dialogs::InstructionObject
 - dialogs::InitMap
 - dialogs::MapFrame
 - dialogs::PageSetup
 - dialogs::Mapinfo
 - dialogs::Text
 - dialogs::Image
 - dialogs::NorthArrow
 - dialogs::Point
 - dialogs::Line
 - dialogs::Rectangle
 - dialogs::Scalebar
 - dialogs::RasterLegend
 - dialogs::VectorLegend
 - dialogs::Raster
 - dialogs::Vector
 - dialogs::VProperties
- psmap::utils
 - utils::Rect2D
 - utils::Rect2DPP
 - utils::Rect2DPS
 - utils::UnitConversion
- psmap::frame
 - frame::PsMapFrame
 - frame::PsMapBufferedWindow
- psmap::menudata
 - menudata::PsMapMenuData
- psmap::toolbars
 - toolbars::PsMapToolbar

\subsection locWizard Location Wizard

- location_wizard::base
 - location_wizard::BaseClass
- location_wizard::dialogs
 - dialogs::RegionDef
 - dialogs::TransList
 - dialogs::SelectTransformDialog
- location_wizard::wizard
 - wizard::TitledPage
 - wizard::DatabasePage
 - wizard::CoordinateSystemPage
 - wizard::ProjectionsPage
 - wizard::ItemList
 - wizard::ProjParamsPage
 - wizard::DatumPage
 - wizard::EllipsePage
 - wizard::GeoreferencedFilePage
 - wizard::EPSGPage
 - wizard::CustomPage
 - wizard::SummaryPage
 - wizard::LocationWizard

\subsection plot Plotting modules

- wxplot::base
 - base::BasePlotFrame
- wxplot::dialogs
 - dialogs::ProfileRasterDialog
 - dialogs::ScatterRasterDialog
 - dialogs::PlotStatsFrame
 - dialogs::HistRasterDialog
 - dialogs::TextDialog
 - dialogs::OptDialog
- wxplot::histogram
 - histogram::Histogram2Frame
 - histogram::Histogram2Toolbar
- wxplot::profile
 - profile::ProfileFrame
 - profile::ProfileToolbar
- wxplot::scatter
 - scatter::ScatterFrame
 - scatter::ScatterToolbar

\subsection wxIClass wxIClass
- iclass::dialogs
 - dialogs::IClassGroupDialog
 - dialogs::IClassMapDialog
 - dialogs::IClassCategoryManagerDialog
 - dialogs::CategoryListCtrl
 - dialogs::IClassSignatureFileDialog
- iclass::digit
 - digit::IClassVDigit
 - digit::IClassVDigitWindow
- iclass::frame
 - frame::IClassMapFrame
 - frame::MapManager
- iclass::plots
 - plots::PlotPanel
- iclass::statistics
 - statistics::Statistics
 - statistics::BandStatistics
- iclass::toolbars
 - toolbars::IClassMapToolbar
 - toolbars::IClassToolbar
 - toolbars::IClassMapManagerToolbar
 - toolbars::IClassMiscToolbar

\subsection mapswipe Map Swipe

- mapswipe::frame
 - frame::SwipeMapFrame
 - frame::MapSplitter
- mapswipe::mapwindow
 - mapwindow::SwipeBufferedWindow
 - mapwindow::_MouseEvent
- mapswipe::dialogs
 - dialogs::SwipeMapDialog
- mapswipe::toolbars
 - toolbars::SwipeMapToolbar
 - toolbars::SwipeMainToolbar
 - toolbars::SwipeMiscToolbar

\subsection other Other GUI modules

- modules::colorrules
 - colorrules::RulesPanel
 - colorrules::ColorTable
 - colorrules::RasterColorTable
 - colorrules::VectorColorTable
 - colorrules::ThematicVectorTable
 - colorrules::BufferedWindow
- modules::extensions
 - extensions::InstallExtensionWindow
 - extensions::ExtensionTree
 - extensions::UninstallExtensionWindow
 - extensions::CheckListExtension
- modules::histogram
 - histogram::BufferedWindow
 - histogram::HistogramFrame
 - histogram::HistogramToolbar
- modules::mcalc_builder
 - mcalc_builder::MapCalcFrame
- modules::ogc_services
 - ogc_services::WMSDialog
 - ogc_services::LayersList
- modules::vclean
 - vclean::VectorCleaningFrame

\section devel Further Development

Ongoing development focuses on stability, portability and on the
integration of OpenGL (see \ref wxnviz).

A Map Composer, a tool for hardcopy map outputs is also planned to be
developed. Currently, the tools for creating hardcopy maps (map
layout) are limited in GRASS because its focus on modeling and spatial
analysis. GRASS gives the user ability to add only a very simple and
standardized legend, north arrow and scale to display to the graphics
monitor and then export the display to an external image file such as
a png. These map features are very basic and cannot be customized. The
goal is to allow users to prepare simple cartographic outputs
comparable e.g. with other, proprietary GIS map layout functionality.

For more info see http://trac.osgeo.org/grass/wiki/wxGUIDevelopment

\section seeAlso See also

- GRASS User Wiki - http://grass.osgeo.org/wiki/WxGUI
- GRASS Devs Wiki - http://trac.osgeo.org/grass/wiki/wxGUIDevelopment

\section refs References

- M. Landa, C. Moretto, M. Neteler, M. Zanolli, L. Manganelli, 2008: wxPython GUI per GRASS GIS. Proc. IX Meeting degli Utenti Italiani di GRASS - GFOSS - 21-22 Feb 2008, Perugia, Italy (<a href="http://geo.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf">PDF</a>)

*/
