GRASS Programmer's Manual  6.5.svn(2012)-r51648
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
lmgr/toolbars.py
Go to the documentation of this file.
00001 """!
00002 @package lmgr.toolbars
00003 
00004 @brief wxGUI Layer Manager - toolbars
00005 
00006 Classes:
00007  - toolbars::LMWorkspaceToolbar
00008  - toolbars::LMDataToolbar
00009  - toolbars::LMToolsToolbar
00010  - toolbars::LMMiscToolbar
00011  - toolbars::LMVectorToolbar
00012  - toolbars::LMNvizToolbar
00013 
00014 (C) 2007-2011 by the GRASS Development Team
00015 
00016 This program is free software under the GNU General Public License
00017 (>=v2). Read the file COPYING that comes with GRASS for details.
00018 
00019 @author Michael Barton
00020 @author Jachym Cepicky
00021 @author Martin Landa <landa.martin gmail.com>
00022 @author Anna Kratochvilova <kratochanna gmail.com>
00023 """
00024 
00025 import os
00026 import sys
00027 
00028 from core               import globalvar
00029 from core.gcmd          import RunCommand
00030 from nviz.preferences   import NvizPreferencesDialog
00031 from gui_core.toolbars  import BaseToolbar, BaseIcons
00032 from icons.icon         import MetaIcon
00033 
00034 class LMWorkspaceToolbar(BaseToolbar):
00035     """!Layer Manager `workspace` toolbar
00036     """
00037     def __init__(self, parent):
00038         BaseToolbar.__init__(self, parent)
00039         
00040         self.InitToolbar(self._toolbarData())
00041         
00042         # realize the toolbar
00043         self.Realize()
00044 
00045     def _toolbarData(self):
00046         """!Toolbar data
00047         """
00048         icons = {
00049             'newdisplay'    : MetaIcon(img = 'monitor-create',
00050                                        label = _('Start new map display')),
00051             'workspaceNew'  : MetaIcon(img = 'create',
00052                                        label = _('Create new workspace (Ctrl+N)')),
00053             'workspaceOpen' : MetaIcon(img = 'open',
00054                                        label = _('Open existing workspace file (Ctrl+O)')),
00055             'workspaceSave' : MetaIcon(img = 'save',
00056                                        label = _('Save current workspace to file (Ctrl+S)')),
00057             }
00058         return self._getToolbarData((('newdisplay', icons["newdisplay"],
00059                                       self.parent.OnNewDisplay),
00060                                      (None, ),
00061                                      ('workspaceNew', icons["workspaceNew"],
00062                                       self.parent.OnWorkspaceNew),
00063                                      ('workspaceOpen', icons["workspaceOpen"],
00064                                       self.parent.OnWorkspaceOpen),
00065                                      ('workspaceSave', icons["workspaceSave"],
00066                                       self.parent.OnWorkspaceSave),
00067                                      ))
00068 
00069 class LMDataToolbar(BaseToolbar):
00070     """!Layer Manager `data` toolbar
00071     """
00072     def __init__(self, parent):
00073         BaseToolbar.__init__(self, parent)
00074         
00075         self.InitToolbar(self._toolbarData())
00076         
00077         # realize the toolbar
00078         self.Realize()
00079 
00080     def _toolbarData(self):
00081         """!Toolbar data
00082         """
00083         icons = {
00084             'addMulti'   : MetaIcon(img = 'layer-open',
00085                                     label = _('Add multiple raster or vector map layers (Ctrl+Shift+L)')),
00086             'addRast'    : BaseIcons['addRast'].SetLabel(_("Add raster map layer (Ctrl+Shift+R)")),
00087             'rastMisc'   : MetaIcon(img = 'layer-raster-more',
00088                                     label = _('Add various raster map layers (RGB, HIS, shaded relief...)')),
00089             'addVect'    : BaseIcons['addVect'].SetLabel(_("Add vector map layer (Ctrl+Shift+V)")),
00090             'vectMisc'   : MetaIcon(img = 'layer-vector-more',
00091                                     label = _('Add various vector map layers (thematic, chart...)')),
00092             'addGroup'   : MetaIcon(img = 'layer-group-add',
00093                                     label = _('Add group')),
00094             'addOverlay' : MetaIcon(img = 'layer-more',
00095                                     label = _('Add grid or vector labels overlay')),
00096             'delCmd'     : MetaIcon(img = 'layer-remove',
00097                                     label = _('Delete selected map layer')),
00098             }
00099         
00100         return self._getToolbarData((('addMulti', icons["addMulti"],
00101                                       self.parent.OnAddMaps),
00102                                      ('addrast', icons["addRast"],
00103                                       self.parent.OnAddRaster),
00104                                      ('rastmisc', icons["rastMisc"],
00105                                       self.parent.OnAddRasterMisc),
00106                                      ('addvect', icons["addVect"],
00107                                       self.parent.OnAddVector),
00108                                      ('vectmisc', icons["vectMisc"],
00109                                       self.parent.OnAddVectorMisc),
00110                                      ('addgrp',  icons["addGroup"],
00111                                       self.parent.OnAddGroup),
00112                                      ('addovl',  icons["addOverlay"],
00113                                       self.parent.OnAddOverlay),
00114                                      ('delcmd',  icons["delCmd"],
00115                                       self.parent.OnDeleteLayer),
00116                                      ))
00117 
00118 class LMToolsToolbar(BaseToolbar):
00119     """!Layer Manager `tools` toolbar
00120     """
00121     def __init__(self, parent):
00122         BaseToolbar.__init__(self, parent)
00123         
00124         self.InitToolbar(self._toolbarData())
00125         
00126         # realize the toolbar
00127         self.Realize()
00128 
00129     def _toolbarData(self):
00130         """!Toolbar data
00131         """
00132         icons = {
00133             'import'  : MetaIcon(img = 'layer-import',
00134                                  label = _('Import/link raster or vector data')),
00135             'mapcalc' : MetaIcon(img = 'calculator',
00136                                  label = _('Raster Map Calculator')),
00137             'modeler' : MetaIcon(img = 'modeler-main',
00138                                  label = _('Graphical Modeler')),
00139             'georectify' : MetaIcon(img = 'georectify',
00140                                  label = _('Georectifier')),
00141             'composer': MetaIcon(img = 'print-compose',
00142                                  label = _('Cartographic Composer')),
00143             }
00144         
00145         return self._getToolbarData((('importMap', icons["import"],
00146                                       self.parent.OnImportMenu),
00147                                      (None, ),
00148                                      ('mapCalc', icons["mapcalc"],
00149                                       self.parent.OnMapCalculator),
00150                                      ('georect', icons["georectify"],
00151                                       self.parent.OnGCPManager),
00152                                      ('modeler', icons["modeler"],
00153                                       self.parent.OnGModeler),
00154                                      ('mapOutput', icons['composer'],
00155                                       self.parent.OnPsMap)
00156                                      ))
00157 
00158 class LMMiscToolbar(BaseToolbar):
00159     """!Layer Manager `misc` toolbar
00160     """
00161     def __init__(self, parent):
00162         BaseToolbar.__init__(self, parent)
00163         
00164         self.InitToolbar(self._toolbarData())
00165         
00166         # realize the toolbar
00167         self.Realize()
00168 
00169     def _toolbarData(self):
00170         """!Toolbar data
00171         """
00172         icons = {
00173             'settings'   : BaseIcons['settings'].SetLabel(_('GUI settings')),
00174             'help'       : BaseIcons['help'].SetLabel(_('GRASS manual')),
00175             }
00176         
00177         return self._getToolbarData((('settings', icons["settings"],
00178                                       self.parent.OnPreferences),
00179                                      ('help', icons["help"],
00180                                       self.parent.OnHelp),
00181                                      ))
00182 
00183 class LMVectorToolbar(BaseToolbar):
00184     """!Layer Manager `vector` toolbar
00185     """
00186     def __init__(self, parent):
00187         BaseToolbar.__init__(self, parent)
00188         
00189         self.InitToolbar(self._toolbarData())
00190         
00191         # realize the toolbar
00192         self.Realize()
00193 
00194     def _toolbarData(self):
00195         """!Toolbar data
00196         """
00197         icons = {
00198             'vdigit'     : MetaIcon(img = 'edit',
00199                                     label = _('Edit vector maps')),
00200             'attrTable'  : MetaIcon(img = 'table',
00201                                     label = _('Show attribute table')),
00202             }
00203         
00204         return self._getToolbarData((('vdigit', icons["vdigit"],
00205                                       self.parent.OnVDigit),
00206                                      ('attribute', icons["attrTable"],
00207                                       self.parent.OnShowAttributeTable),
00208                                      ))
00209 
00210 class LMNvizToolbar(BaseToolbar):
00211     """!Nviz toolbar
00212     """
00213     def __init__(self, parent):
00214         self.lmgr = parent
00215         
00216         BaseToolbar.__init__(self, parent)
00217         
00218         # only one dialog can be open
00219         self.settingsDialog   = None
00220         
00221         self.InitToolbar(self._toolbarData())
00222         
00223         # realize the toolbar
00224         self.Realize()
00225         
00226     def _toolbarData(self):
00227         """!Toolbar data"""
00228         icons = {
00229             'cmd'    : MetaIcon(img = 'script-save',
00230                                 label = _('Generate command for m.nviz.image'),
00231                                 desc = _('Generate command for m.nviz.image based on current state')),
00232             'settings' : MetaIcon(img = '3d-settings',
00233                                   label = _('3D view mode settings'),
00234                                   desc = _('Show 3D view mode settings dialog')),
00235             'help'   : MetaIcon(img = '3d-help',
00236                                 label = _('Show 3D view mode manual')),
00237             }
00238         
00239         return self._getToolbarData((("nvizCmd", icons['cmd'],
00240                                       self.OnNvizCmd),
00241                                      (None, ),
00242                                      ("settings", icons["settings"],
00243                                       self.OnSettings),
00244                                      ("help", icons["help"],
00245                                       self.OnHelp))
00246                                     )
00247         
00248     def OnNvizCmd(self, event):
00249         """!Show m.nviz.image command"""
00250         self.lmgr.GetLayerTree().GetMapDisplay().GetWindow().OnNvizCmd()
00251         
00252     def OnHelp(self, event):
00253         """!Show 3D view mode help"""
00254         if not self.lmgr:
00255             RunCommand('g.manual',
00256                        entry = 'wxGUI.Nviz')
00257         else:
00258             log = self.lmgr.GetLogWindow()
00259             log.RunCmd(['g.manual',
00260                         'entry=wxGUI.Nviz'])
00261         
00262     def OnSettings(self, event):
00263         """!Show nviz notebook page"""
00264         if not self.settingsDialog:
00265             self.settingsDialog = NvizPreferencesDialog(parent = self.parent)
00266         self.settingsDialog.Show()