Browse Source

wxGUI: separate icons into several GUI modules

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@49807 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 13 năm trước cách đây
mục cha
commit
936e92b7d9

+ 43 - 20
gui/wxpython/gcp/toolbars.py

@@ -8,6 +8,7 @@ Classes:
  - toolbars::GCPDisplayToolbar
  - toolbars::GCPDisplayToolbar
 
 
 (C) 2007-2011 by the GRASS Development Team
 (C) 2007-2011 by the GRASS Development Team
+
 This program is free software under the GNU General Public License
 This program is free software under the GNU General Public License
 (>=v2). Read the file COPYING that comes with GRASS for details.
 (>=v2). Read the file COPYING that comes with GRASS for details.
 
 
@@ -20,10 +21,8 @@ import sys
 import wx
 import wx
 
 
 from core              import globalvar
 from core              import globalvar
-from gui_core.toolbars import BaseToolbar
-
-sys.path.append(os.path.join(globalvar.ETCWXDIR, "icons"))
-from icon              import Icons
+from gui_core.toolbars import BaseToolbar, BaseIcons
+from icon              import MetaIcon
     
     
 class GCPManToolbar(BaseToolbar):
 class GCPManToolbar(BaseToolbar):
     """!Toolbar for managing ground control points
     """!Toolbar for managing ground control points
@@ -39,7 +38,23 @@ class GCPManToolbar(BaseToolbar):
         self.Realize()
         self.Realize()
 
 
     def _toolbarData(self):
     def _toolbarData(self):
-        icons = Icons['georectify']
+        icons = {
+            'gcpSave'    : MetaIcon(img = 'gcp-save',
+                                    label = _('Save GCPs to POINTS file')),
+            'gcpReload'  : MetaIcon(img = 'reload',
+                                    label = _('Reload GCPs from POINTS file')),
+            'gcpAdd'     : MetaIcon(img = 'gcp-add',
+                                    label = _('Add new GCP')),
+            'gcpDelete'  : MetaIcon(img = 'gcp-delete',
+                                    label = _('Delete selected GCP')),
+            'gcpClear'   : MetaIcon(img = 'gcp-remove',
+                                    label = _('Clear selected GCP')),
+            'gcpRms'     : MetaIcon(img = 'gcp-rms',
+                                    label = _('Recalculate RMS error')),
+            'georectify' : MetaIcon(img = 'georectify',
+                                    label = _('Georectify')),
+            }
+        
         return self._getToolbarData((('gcpSave', icons["gcpSave"],
         return self._getToolbarData((('gcpSave', icons["gcpSave"],
                                       self.parent.SaveGCPs),
                                       self.parent.SaveGCPs),
                                      ('gcpReload', icons["gcpReload"],
                                      ('gcpReload', icons["gcpReload"],
@@ -77,7 +92,7 @@ class GCPDisplayToolbar(BaseToolbar):
         self.InsertControl(10, self.togglemap)
         self.InsertControl(10, self.togglemap)
 
 
         self.SetToolShortHelp(self.togglemapid, '%s %s %s' % (_('Set map canvas for '),
         self.SetToolShortHelp(self.togglemapid, '%s %s %s' % (_('Set map canvas for '),
-                                                              Icons['displayWindow']["zoomBack"].GetLabel(),
+                                                              BaseIcons["zoomBack"].GetLabel(),
                                                               _(' / Zoom to map')))
                                                               _(' / Zoom to map')))
 
 
         # realize the toolbar
         # realize the toolbar
@@ -93,35 +108,43 @@ class GCPDisplayToolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['displayWindow']
-        return self._getToolbarData((("displaymap", icons["display"],
+        icons = {
+            'gcpSet'    : MetaIcon(img = 'gcp-create',
+                                   label = _('Set GCP'),
+                                   desc = _('Define GCP (Ground Control Points)')),
+            'quit'      : BaseIcons['quit'].SetLabel(_('Quit georectification tool')),
+            'settings'  : BaseIcons['settings'].SetLabel( _('Georectifier settings')),
+            'help'      : BaseIcons['help'].SetLabel(_('Georectifier manual')),
+            }
+        
+        return self._getToolbarData((("displaymap", BaseIcons["display"],
                                       self.parent.OnDraw),
                                       self.parent.OnDraw),
-                                     ("rendermap", icons["render"],
+                                     ("rendermap", BaseIcons["render"],
                                       self.parent.OnRender),
                                       self.parent.OnRender),
-                                     ("erase", icons["erase"],
+                                     ("erase", BaseIcons["erase"],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
                                      (None, ),
                                      (None, ),
-                                     ("gcpset", Icons["georectify"]["gcpSet"],
+                                     ("gcpset", icons["gcpSet"],
                                       self.parent.OnPointer),
                                       self.parent.OnPointer),
-                                     ("pan", icons["pan"],
+                                     ("pan", BaseIcons["pan"],
                                       self.parent.OnPan),
                                       self.parent.OnPan),
-                                     ("zoomin", icons["zoomIn"],
+                                     ("zoomin", BaseIcons["zoomIn"],
                                       self.parent.OnZoomIn),
                                       self.parent.OnZoomIn),
-                                     ("zoomout", icons["zoomOut"],
+                                     ("zoomout", BaseIcons["zoomOut"],
                                       self.parent.OnZoomOut),
                                       self.parent.OnZoomOut),
-                                     ("zoommenu", icons["zoomMenu"],
+                                     ("zoommenu", BaseIcons["zoomMenu"],
                                       self.parent.OnZoomMenuGCP),
                                       self.parent.OnZoomMenuGCP),
                                      (None, ),
                                      (None, ),
-                                     ("zoomback", icons["zoomBack"],
+                                     ("zoomback", BaseIcons["zoomBack"],
                                       self.parent.OnZoomBack),
                                       self.parent.OnZoomBack),
-                                     ("zoomtomap", icons["zoomExtent"],
+                                     ("zoomtomap", BaseIcons["zoomExtent"],
                                       self.parent.OnZoomToMap),
                                       self.parent.OnZoomToMap),
                                      (None, ),
                                      (None, ),
-                                     ('settings', Icons["georectify"]["settings"],
+                                     ('settings', icons["settings"],
                                       self.parent.OnSettings),
                                       self.parent.OnSettings),
-                                     ('help', Icons["misc"]["help"],
+                                     ('help', icons["help"],
                                       self.parent.OnHelp),
                                       self.parent.OnHelp),
                                      (None, ),
                                      (None, ),
-                                     ('quit', Icons["georectify"]["quit"],
+                                     ('quit', icons["quit"],
                                       self.parent.OnQuit))
                                       self.parent.OnQuit))
                                     )
                                     )

+ 2 - 57
gui/wxpython/gmodeler/frame.py

@@ -4,7 +4,6 @@
 @brief wxGUI Graphical Modeler for creating, editing, and managing models
 @brief wxGUI Graphical Modeler for creating, editing, and managing models
 
 
 Classes:
 Classes:
- - frame::ModelToolbar
  - frame::ModelFrame
  - frame::ModelFrame
  - frame::ModelCanvas
  - frame::ModelCanvas
  - frame::ModelEvtHandler
  - frame::ModelEvtHandler
@@ -43,71 +42,17 @@ from gui_core.dialogs     import GetImageHandlers
 from gui_core.preferences import PreferencesBaseDialog
 from gui_core.preferences import PreferencesBaseDialog
 from core.settings        import UserSettings
 from core.settings        import UserSettings
 from core.menudata        import MenuData
 from core.menudata        import MenuData
-from gui_core.toolbars    import BaseToolbar
 from gui_core.menu        import Menu
 from gui_core.menu        import Menu
 from gmodeler.menudata    import ModelerData
 from gmodeler.menudata    import ModelerData
-from icons.icon           import Icons
 from gui_core.forms       import GUI
 from gui_core.forms       import GUI
 from gmodeler.preferences import PreferencesDialog, PropertiesDialog
 from gmodeler.preferences import PreferencesDialog, PropertiesDialog
+from gmodeler.toolbars    import ModelerToolbar
 
 
 from gmodeler.model       import *
 from gmodeler.model       import *
 from gmodeler.dialogs     import *
 from gmodeler.dialogs     import *
 
 
 from grass.script import core as grass
 from grass.script import core as grass
 
 
-class ModelToolbar(BaseToolbar):
-    """!Graphical modeler toolbaro (see gmodeler.py)
-    """
-    def __init__(self, parent):
-        BaseToolbar.__init__(self, parent)
-        
-        self.InitToolbar(self._toolbarData())
-        
-        # realize the toolbar
-        self.Realize()
-        
-    def _toolbarData(self):
-        """!Toolbar data"""
-        icons = Icons['modeler']
-        return self._getToolbarData((('new', icons['new'],
-                                      self.parent.OnModelNew),
-                                     ('open', icons['open'],
-                                      self.parent.OnModelOpen),
-                                     ('save', icons['save'],
-                                      self.parent.OnModelSave),
-                                     ('image', icons['toImage'],
-                                      self.parent.OnExportImage),
-                                     ('python', icons['toPython'],
-                                      self.parent.OnExportPython),
-                                     (None, ),
-                                     ('action', icons['actionAdd'],
-                                      self.parent.OnAddAction),
-                                     ('data', icons['dataAdd'],
-                                      self.parent.OnAddData),
-                                     ('relation', icons['relation'],
-                                      self.parent.OnDefineRelation),
-                                     ('loop', icons['loop'],
-                                      self.parent.OnDefineLoop),
-                                     (None, ),
-                                     ('redraw', icons['redraw'],
-                                      self.parent.OnCanvasRefresh),
-                                     ('validate', icons['validate'],
-                                      self.parent.OnValidateModel),
-                                     ('run', icons['run'],
-                                      self.parent.OnRunModel),
-                                     (None, ),
-                                     ("variables", icons['variables'],
-                                      self.parent.OnVariables),
-                                     ("settings", icons['settings'],
-                                      self.parent.OnPreferences),
-                                     ("help", Icons['misc']['help'],
-                                      self.parent.OnHelp),
-                                     (None, ),
-                                     ('quit', icons['quit'],
-                                      self.parent.OnCloseWindow))
-                                    
-)
-
 class ModelFrame(wx.Frame):
 class ModelFrame(wx.Frame):
     def __init__(self, parent, id = wx.ID_ANY,
     def __init__(self, parent, id = wx.ID_ANY,
                  title = _("GRASS GIS Graphical Modeler"), **kwargs):
                  title = _("GRASS GIS Graphical Modeler"), **kwargs):
@@ -138,7 +83,7 @@ class ModelFrame(wx.Frame):
         
         
         self.SetMenuBar(self.menubar)
         self.SetMenuBar(self.menubar)
         
         
-        self.toolbar = ModelToolbar(parent = self)
+        self.toolbar = ModelerToolbar(parent = self)
         self.SetToolBar(self.toolbar)
         self.SetToolBar(self.toolbar)
         
         
         self.statusbar = self.CreateStatusBar(number = 1)
         self.statusbar = self.CreateStatusBar(number = 1)

+ 109 - 0
gui/wxpython/gmodeler/toolbars.py

@@ -0,0 +1,109 @@
+"""!
+@package gmodeler.toolbars
+
+@brief wxGUI Graphical Modeler toolbars classes
+
+Classes:
+ - toolbars::ModelerToolbar
+
+(C) 2010-2011 by the GRASS Development Team
+
+This program is free software under the GNU General Public License
+(>=v2). Read the file COPYING that comes with GRASS for details.
+
+@author Martin Landa <landa.martin gmail.com>
+"""
+
+import os
+import sys
+
+import wx
+
+from core              import globalvar
+from gui_core.toolbars import BaseToolbar, BaseIcons
+
+from icons.icon        import MetaIcon
+
+class ModelerToolbar(BaseToolbar):
+    """!Graphical modeler toolbaro (see gmodeler.py)
+    """
+    def __init__(self, parent):
+        BaseToolbar.__init__(self, parent)
+        
+        self.InitToolbar(self._toolbarData())
+        
+        # realize the toolbar
+        self.Realize()
+        
+    def _toolbarData(self):
+        """!Toolbar data"""
+        icons = {
+            'new'        : MetaIcon(img = 'create',
+                                    label = _('Create new model (Ctrl+N)')),
+            'open'       : MetaIcon(img = 'open',
+                                    label = _('Load model from file (Ctrl+O)')),
+            'save'       : MetaIcon(img = 'save',
+                                    label = _('Save current model to file (Ctrl+S)')),
+            'toImage'    : MetaIcon(img = 'image-export',
+                                    label = _('Export model to image')),
+            'toPython'   : MetaIcon(img = 'python-export',
+                                    label = _('Export model to Python script')),
+            'actionAdd'  : MetaIcon(img = 'module-add',
+                                    label = _('Add command (GRASS module) to model')),
+            'dataAdd'    : MetaIcon(img = 'data-add',
+                                    label = _('Add data to model')),
+            'relation'   : MetaIcon(img = 'relation-create',
+                                    label = _('Manually define relation between data and commands')),
+            'loop'       : MetaIcon(img = 'loop-add',
+                                    label = _('Add loop/series')),
+            'run'        : MetaIcon(img = 'execute',
+                                    label = _('Run model')),
+            'validate'   : MetaIcon(img = 'check',
+                                    label = _('Validate model')),
+            'settings'   : BaseIcons['settings'].SetLabel(_('Modeler settings')),
+            'properties' : MetaIcon(img = 'options',
+                                    label = _('Show model properties')),
+            'variables'  : MetaIcon(img = 'modeler-variables',
+                                    label = _('Manage model variables')),
+            'redraw'     : MetaIcon(img = 'redraw',
+                                    label = _('Redraw model canvas')),
+            'quit'       : BaseIcons['quit'].SetLabel(_('Quit Graphical Modeler')),
+            }
+        
+        return self._getToolbarData((('new', icons['new'],
+                                      self.parent.OnModelNew),
+                                     ('open', icons['open'],
+                                      self.parent.OnModelOpen),
+                                     ('save', icons['save'],
+                                      self.parent.OnModelSave),
+                                     ('image', icons['toImage'],
+                                      self.parent.OnExportImage),
+                                     ('python', icons['toPython'],
+                                      self.parent.OnExportPython),
+                                     (None, ),
+                                     ('action', icons['actionAdd'],
+                                      self.parent.OnAddAction),
+                                     ('data', icons['dataAdd'],
+                                      self.parent.OnAddData),
+                                     ('relation', icons['relation'],
+                                      self.parent.OnDefineRelation),
+                                     ('loop', icons['loop'],
+                                      self.parent.OnDefineLoop),
+                                     (None, ),
+                                     ('redraw', icons['redraw'],
+                                      self.parent.OnCanvasRefresh),
+                                     ('validate', icons['validate'],
+                                      self.parent.OnValidateModel),
+                                     ('run', icons['run'],
+                                      self.parent.OnRunModel),
+                                     (None, ),
+                                     ("variables", icons['variables'],
+                                      self.parent.OnVariables),
+                                     ("settings", icons['settings'],
+                                      self.parent.OnPreferences),
+                                     ("help", BaseIcons['help'],
+                                      self.parent.OnHelp),
+                                     (None, ),
+                                     ('quit', icons['quit'],
+                                      self.parent.OnCloseWindow))
+                                    )

+ 65 - 0
gui/wxpython/gui_core/toolbars.py

@@ -24,7 +24,59 @@ import wx
 
 
 from core               import globalvar
 from core               import globalvar
 from core.debug         import Debug
 from core.debug         import Debug
+from icons.icon         import MetaIcon
 
 
+BaseIcons = {
+    'display'    : MetaIcon(img = 'show',
+                            label = _('Display map'),
+                            desc  =  _('Re-render modified map layers only')),
+    'render'     : MetaIcon(img = 'layer-redraw',
+                            label = _('Render map'),
+                            desc = _('Force re-rendering all map layers')),
+    'erase'      : MetaIcon(img = 'erase',
+                            label = _('Erase display'),
+                            desc = _('Erase display canvas with given background color')),
+    'pointer'    : MetaIcon(img = 'pointer',
+                            label = _('Pointer')),
+    'zoomIn'     : MetaIcon(img = 'zoom-in',
+                            label = _('Zoom in'),
+                            desc = _('Drag or click mouse to zoom')),
+    'zoomOut'    : MetaIcon(img = 'zoom-out',
+                            label = _('Zoom out'),
+                            desc = _('Drag or click mouse to unzoom')),
+    'zoomBack'   : MetaIcon(img = 'zoom-last',
+                            label = _('Return to previous zoom')),
+    'zoomMenu'   : MetaIcon(img = 'zoom-more',
+                            label = _('Various zoom options'),
+                            desc = _('Zoom to computational, default, saved region, ...')),
+    'zoomExtent' : MetaIcon(img = 'zoom-extent',
+                            label = _('Zoom to selected map layer(s)')),
+    'pan'        : MetaIcon(img = 'pan',
+                            label = _('Pan'),
+                            desc = _('Drag with mouse to pan')),
+    'saveFile'   : MetaIcon(img = 'map-export',
+                            label = _('Save display to graphic file')),
+    'print'      : MetaIcon(img = 'print',
+                            label = _('Print display')),
+    'font'       : MetaIcon(img = 'font',
+                            label = _('Select font')),
+    'help'       : MetaIcon(img = 'help',
+                            label = _('Show manual')),
+    'quit'       : MetaIcon(img = 'quit',
+                            label = _('Quit')),
+    'addRast'    : MetaIcon(img = 'layer-raster-add',
+                            label = _('Add raster map layer')),
+    'addVect'    : MetaIcon(img = 'layer-vector-add',
+                            label = _('Add vector map layer')),
+    'overlay'    : MetaIcon(img = 'overlay-add',
+                            label = _('Add map elements'),
+                            desc = _('Overlay elements like scale and legend onto map')),
+    'histogramD' : MetaIcon(img = 'layer-raster-histogram',
+                            label = _('Create histogram with d.histogram')),
+    'settings'   : MetaIcon(img = 'settings',
+                            label = _("Settings")),
+    }
+    
 class BaseToolbar(wx.ToolBar):
 class BaseToolbar(wx.ToolBar):
     """!Abstract toolbar class"""
     """!Abstract toolbar class"""
     def __init__(self, parent):
     def __init__(self, parent):
@@ -176,3 +228,16 @@ class BaseToolbar(wx.ToolBar):
                     item, icon.GetLabel(), icon.GetDesc(),
                     item, icon.GetLabel(), icon.GetDesc(),
                     handler, pos)
                     handler, pos)
         return ("", "", "", "", "", "") # separator
         return ("", "", "", "", "", "") # separator
+
+    def _onMenu(self, data):
+        """!Toolbar pop-up menu"""
+        menu = wx.Menu()
+        
+        for icon, handler in data:
+            item = wx.MenuItem(menu, wx.ID_ANY, icon.GetLabel())
+            item.SetBitmap(icon.GetBitmap(self.parent.iconsize))
+            menu.AppendItem(item)
+            self.Bind(wx.EVT_MENU, handler, item)
+        
+        self.PopupMenu(menu)
+        menu.Destroy()

+ 23 - 366
gui/wxpython/icons/icon.py

@@ -1,19 +1,15 @@
 """!
 """!
-@package icon
+@package icons.icon
 
 
-@brief Icon themes
-
-@code
-from icons import Icons as Icons
-@endcode
+@brief Icon metadata
 
 
 Classes:
 Classes:
  - MetaIcon
  - MetaIcon
 
 
 (C) 2007-2008, 2010-2011 by the GRASS Development Team
 (C) 2007-2008, 2010-2011 by the GRASS Development Team
-This program is free software under the GNU General Public
-License (>=v2). Read the file COPYING that comes with GRASS
-for details.
+
+This program is free software under the GNU General Public License
+(>=v2). Read the file COPYING that comes with GRASS for details.
 
 
 @author Martin Landa <landa.martin gmail.com>
 @author Martin Landa <landa.martin gmail.com>
 @author Anna Kratochvilova <kratochanna gmail.com>
 @author Anna Kratochvilova <kratochanna gmail.com>
@@ -21,8 +17,7 @@ for details.
 
 
 import os
 import os
 import sys
 import sys
-
-sys.path.append(os.path.join(os.getenv("GISBASE"), "etc", "gui", "wxpython"))
+import copy
 
 
 import wx
 import wx
 
 
@@ -57,8 +52,8 @@ except StandardError, e:
 class MetaIcon:
 class MetaIcon:
     """!Handle icon metadata (image path, tooltip, ...)
     """!Handle icon metadata (image path, tooltip, ...)
     """
     """
-    def __init__(self, img, label, desc = None):
-        self.imagepath = img
+    def __init__(self, img, label = None, desc = None):
+        self.imagepath = iconSet.get(img, wx.ART_MISSING_IMAGE)
         if not self.imagepath:
         if not self.imagepath:
             self.type = 'unknown'
             self.type = 'unknown'
         else:
         else:
@@ -75,11 +70,9 @@ class MetaIcon:
             self.description = ''
             self.description = ''
         
         
     def __str__(self):
     def __str__(self):
-        """!Debugging"""
         return "label=%s, img=%s, type=%s" % (self.label, self.imagepath, self.type)
         return "label=%s, img=%s, type=%s" % (self.label, self.imagepath, self.type)
 
 
     def GetBitmap(self, size = None):
     def GetBitmap(self, size = None):
-        """!Get bitmap"""
         bmp = None
         bmp = None
         
         
         if self.type == 'wx':
         if self.type == 'wx':
@@ -97,361 +90,25 @@ class MetaIcon:
     
     
     def GetLabel(self):
     def GetLabel(self):
         return self.label
         return self.label
-    
+
     def GetDesc(self):
     def GetDesc(self):
         return self.description
         return self.description
     
     
     def GetImageName(self):
     def GetImageName(self):
         return os.path.basename(self.imagepath)
         return os.path.basename(self.imagepath)
 
 
-#
-# create list of icon instances
-#
-Icons = {
-    'displayWindow' : {
-        'display'    : MetaIcon(img = iconSet.get('show', wx.ART_ERROR),
-                                label = _('Display map'),
-                                desc  =  _('Re-render modified map layers only')),
-        'render'     : MetaIcon(img = iconSet.get('layer-redraw', wx.ART_ERROR),
-                                label = _('Render map'),
-                                desc = _('Force re-rendering all map layers')),
-        'erase'      : MetaIcon(img = iconSet.get('erase', wx.ART_ERROR),
-                                label = _('Erase display'),
-                                desc = _('Erase display canvas with given background color')),
-        'pointer'    : MetaIcon(img = iconSet.get('pointer', wx.ART_ERROR),
-                                label = _('Pointer')),
-        'zoomIn'     : MetaIcon(img = iconSet.get('zoom-in', wx.ART_ERROR),
-                                label = _('Zoom in'),
-                                desc = _('Drag or click mouse to zoom')),
-        'zoomOut'    : MetaIcon(img = iconSet.get('zoom-out', wx.ART_ERROR),
-                                label = _('Zoom out'),
-                                desc = _('Drag or click mouse to unzoom')),
-        'pan'        : MetaIcon(img = iconSet.get('pan', wx.ART_ERROR),
-                                label = _('Pan'),
-                                desc = _('Drag with mouse to pan')),
-        'query'      : MetaIcon(img = iconSet.get('info', wx.ART_ERROR),
-                                label = _('Query raster/vector map(s)'),
-                                desc = _('Query selected raster/vector map(s)')),
-        'zoomBack'   : MetaIcon(img = iconSet.get('zoom-last', wx.ART_ERROR),
-                                label = _('Return to previous zoom')),
-        'zoomMenu'   : MetaIcon(img = iconSet.get('zoom-more', wx.ART_ERROR),
-                                label = _('Various zoom options'),
-                                desc = _('Zoom to computational, default, saved region, ...')),
-        'zoomExtent' : MetaIcon(img = iconSet.get('zoom-extent', wx.ART_ERROR),
-                                label = _('Zoom to selected map layer(s)')),
-        'overlay'    : MetaIcon(img = iconSet.get('overlay-add', wx.ART_ERROR),
-                                label = _('Add map elements'),
-                                desc = _('Overlay elements like scale and legend onto map')),
-        'addBarscale': MetaIcon(img = iconSet.get('scalebar-add', wx.ART_ERROR),
-                                label = _('Add scalebar and north arrow')),
-        'addLegend'  : MetaIcon(img = iconSet.get('legend-add', wx.ART_ERROR),
-                                label = _('Add legend')),
-        'addNorthArrow': MetaIcon(img = iconSet.get('north-arrow-add', wx.ART_ERROR),
-                                label = _('North Arrow')),
-        'saveFile'   : MetaIcon(img = iconSet.get('map-export', wx.ART_ERROR),
-                                label = _('Save display to graphic file')),
-        'print'      : MetaIcon(img = iconSet.get('print', wx.ART_ERROR),
-                                label = _('Print display')),
-        'analyze'    : MetaIcon(img = iconSet.get('layer-raster-analyze', wx.ART_ERROR),
-                                label = _('Analyze map'),
-                                desc = _('Measuring, profiling, histogramming, ...')),
-        'measure'    : MetaIcon(img = iconSet.get('measure-length', wx.ART_ERROR),
-                                label = _('Measure distance')),
-        'profile'    : MetaIcon(img = iconSet.get('layer-raster-profile', wx.ART_ERROR),
-                                label = _('Profile surface map')),
-        'addText'    : MetaIcon(img = iconSet.get('text-add', wx.ART_ERROR),
-                                label = _('Add text layer')),
-        'histogram'  : MetaIcon(img = iconSet.get('layer-raster-histogram', wx.ART_ERROR),
-                                label = _('Create histogram of raster map')),
-        },
-    'layerManager' : {
-        'newdisplay'   : MetaIcon(img = iconSet.get('monitor-create', wx.ART_ERROR),
-                                  label = _('Start new map display')),
-        'newdisplayWMS' : MetaIcon(img = iconSet.get('layer-wms-add', wx.ART_ERROR),
-                                   label = _('Start new map display (experimental WMS support)')),
-        'workspaceNew'  : MetaIcon(img = iconSet.get('create', wx.ART_ERROR),
-                                   label = _('Create new workspace (Ctrl+N)')),
-        'workspaceOpen' : MetaIcon(img = iconSet.get('open', wx.ART_ERROR),
-                                   label = _('Open existing workspace file (Ctrl+O)')),
-        'workspaceSave' : MetaIcon(img = iconSet.get('save', wx.ART_ERROR),
-                                   label = _('Save current workspace to file (Ctrl+S)')),
-        'addMulti'      : MetaIcon(img = iconSet.get('layer-open', wx.ART_ERROR),
-                                   label = _('Add multiple raster or vector map layers (Ctrl+Shift+L)')),
-        'import'        : MetaIcon(img = iconSet.get('layer-import', wx.ART_ERROR),
-                                   label = _('Import/link raster or vector data')),
-        'rastImport' : MetaIcon(img = iconSet.get('layer-import', wx.ART_ERROR),
-                                label = _('Import raster data')),
-        'rastLink'   : MetaIcon(img = iconSet.get('layer-import', wx.ART_ERROR),
-                                label = _('Link external raster data')),
-        'rastOut'    : MetaIcon(img = iconSet.get('layer-export', wx.ART_ERROR),
-                                label = _('Set raster output format')),
-        'vectImport' : MetaIcon(img = iconSet.get('layer-import', wx.ART_ERROR),
-                                label = _('Import vector data')),
-        'vectLink'   : MetaIcon(img = iconSet.get('layer-import', wx.ART_ERROR),
-                                label = _('Link external vector data')),
-        'vectOut'    : MetaIcon(img = iconSet.get('layer-export', wx.ART_ERROR),
-                                label = _('Set vector output format')),
-        'addRast'    : MetaIcon(img = iconSet.get('layer-raster-add', wx.ART_ERROR),
-                                label = _('Add raster map layer (Ctrl+Shift+R)')),
-        'rastMisc'   : MetaIcon(img = iconSet.get('layer-raster-more', wx.ART_ERROR),
-                                label = _('Add various raster map layers (RGB, HIS, shaded relief...)')),
-        'addVect'    : MetaIcon(img = iconSet.get('layer-vector-add', wx.ART_ERROR),
-                                label = _('Add vector map layer (Ctrl+Shift+V)')),
-        'vectMisc'   : MetaIcon(img = iconSet.get('layer-vector-more', wx.ART_ERROR),
-                                label = _('Add various vector map layers (thematic, chart...)')),
-        'addCmd'     : MetaIcon(img = iconSet.get('layer-command-add', wx.ART_ERROR),
-                                label = _('Add command layer')),
-        'addGroup'   : MetaIcon(img = iconSet.get('layer-group-add', wx.ART_ERROR),
-                                label = _('Add group')),
-        'addOverlay' : MetaIcon(img = iconSet.get('layer-more', wx.ART_ERROR),
-                                label = _('Add grid or vector labels overlay')),
-        'delCmd'     : MetaIcon(img = iconSet.get('layer-remove', wx.ART_ERROR),
-                                label = _('Delete selected map layer')),
-        'quit'       : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                                label = _('Quit')),
-        'attrTable'  : MetaIcon(img = iconSet.get('table', wx.ART_ERROR),
-                                label = _('Show attribute table')),
-        'vdigit'     : MetaIcon(img = iconSet.get('edit', wx.ART_ERROR),
-                                label = _('Edit vector maps')),
-        'addRgb'     : MetaIcon(img = iconSet.get('layer-rgb-add', wx.ART_ERROR),
-                                label = _('Add RGB map layer')),
-        'addHis'     : MetaIcon(img = iconSet.get('layer-his-add', wx.ART_ERROR),
-                                label = _('Add HIS map layer')),
-        'addShaded'  : MetaIcon(img = iconSet.get('layer-shaded-relief-add', wx.ART_ERROR),
-                                label = _('Add shaded relief map layer')),
-        'addRArrow'  : MetaIcon(img = iconSet.get('layer-aspect-arrow-add', wx.ART_ERROR),
-                                label = _('Add raster flow arrows')),
-        'addRNum'    : MetaIcon(img = iconSet.get('layer-cell-cats-add', wx.ART_ERROR),
-                                label = _('Add raster cell numbers')),
-        'addThematic': MetaIcon(img = iconSet.get('layer-vector-thematic-add', wx.ART_ERROR),
-                                label = _('Add thematic area (choropleth) map layer')),
-        'addChart'   : MetaIcon(img = iconSet.get('layer-vector-chart-add', wx.ART_ERROR),
-                                label = _('Add thematic chart layer')),
-        'addGrid'    : MetaIcon(img = iconSet.get('layer-grid-add', wx.ART_ERROR),
-                                label = _('Add grid layer')),
-        'addGeodesic': MetaIcon(img = iconSet.get('shortest-distance', wx.ART_ERROR),
-                                label = _('Add geodesic line layer')),
-        'addRhumb'   : MetaIcon(img = iconSet.get('shortest-distance', wx.ART_ERROR),
-                                label = _('Add rhumbline layer')),
-        'addLabels'  : MetaIcon(img = iconSet.get('layer-label-add', wx.ART_ERROR),
-                                label = _('Add labels')),
-        'addRast3d'  : MetaIcon(img = iconSet.get('layer-raster3d-add', wx.ART_ERROR),
-                                label = _('Add 3D raster map layer'),
-                                desc  =  _('Note that 3D raster data are rendered only in 3D view mode')),
-        'settings'   : MetaIcon(img = iconSet.get('settings', wx.ART_ERROR),
-                                label = _('Show GUI settings')),
-        'modeler'    : MetaIcon(img = iconSet.get('modeler-main', wx.ART_ERROR),
-                                label = _('Graphical Modeler')),
-        'layerOptions'  : MetaIcon(img = iconSet.get('options', wx.ART_ERROR),
-                                   label = _('Set options')),
-        'mapOutput'  : MetaIcon(img = iconSet.get('print-compose', wx.ART_ERROR),
-                                label = _('Cartographic Composer')),
-        'mapcalc'    : MetaIcon(img = iconSet.get('calculator', wx.ART_ERROR),
-                                label = _('Raster Map Calculator')),
-        },
-    'vdigit' : {
-        'addPoint'        : MetaIcon(img = iconSet.get('point-create', wx.ART_ERROR),
-                                     label = _('Digitize new point'),
-                                     desc = _('Left: new point')),
-        'addLine'         : MetaIcon(img = iconSet.get('line-create', wx.ART_ERROR),
-                                     label = _('Digitize new line'),
-                                     desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
-        'addBoundary'     : MetaIcon(img = iconSet.get('boundary-create', wx.ART_ERROR),
-                                     label = _('Digitize new boundary'),
-                                     desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
-        'addCentroid'     : MetaIcon(img = iconSet.get('centroid-create', wx.ART_ERROR),
-                                     label = _('Digitize new centroid'),
-                                     desc = _('Left: new point')),
-        'addArea'         : MetaIcon(img = iconSet.get('polygon-create', wx.ART_ERROR),
-                                     label = _('Digitize new area (composition of boundaries without category and one centroid with category)'),
-                                     desc = _('Left: new point')),
-        'addVertex'       : MetaIcon(img = iconSet.get('vertex-create', wx.ART_ERROR),
-                                     label = _('Add new vertex'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'deleteLine'      : MetaIcon(img = iconSet.get('line-delete', wx.ART_ERROR),
-                                     label = _('Delete feature(s)'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'displayAttr'     : MetaIcon(img = iconSet.get('attributes-display', wx.ART_ERROR),
-                                     label = _('Display/update attributes'),
-                                     desc = _('Left: Select')),
-        'displayCats'     : MetaIcon(img = iconSet.get('cats-display', wx.ART_ERROR),
-                                     label = _('Display/update categories'),
-                                     desc = _('Left: Select')),
-        'editLine'        : MetaIcon(img = iconSet.get('line-edit', wx.ART_ERROR),
-                                     label = _('Edit line/boundary'),
-                                     desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
-        'moveLine'        : MetaIcon(img = iconSet.get('line-move', wx.ART_ERROR),
-                                     label = _('Move feature(s)'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'moveVertex'      : MetaIcon(img = iconSet.get('vertex-move', wx.ART_ERROR),
-                                     label = _('Move vertex'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'removeVertex'    : MetaIcon(img = iconSet.get('vertex-delete', wx.ART_ERROR),
-                                     label = _('Remove vertex'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'settings'        : MetaIcon(img = iconSet.get('settings', wx.ART_ERROR),
-                                     label = _('Digitization settings')),
-        'quit'            : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                                     label = _('Quit digitizer'),
-                                     desc = _('Quit digitizer and save changes')),
-        'additionalTools' : MetaIcon(img = iconSet.get('tools', wx.ART_ERROR),
-                                     label = _('Additional tools ' \
-                                                   '(copy, flip, connect, etc.)'),
-                                     desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
-        'undo'             : MetaIcon(img = iconSet.get('undo', wx.ART_ERROR),
-                                      label = _('Undo'),
-                                      desc = _('Undo previous changes')),
-        },
-    'plot' : {
-        'draw'         : MetaIcon(img = iconSet.get('show', wx.ART_ERROR),
-                                  label = _('Draw/re-draw plot')),
-        'transect'     : MetaIcon(img = iconSet.get('layer-raster-profile', wx.ART_ERROR),
-                                  label = _('Draw transect in map display window to profile')),
-        'options'      : MetaIcon(img = iconSet.get('settings', wx.ART_ERROR),
-                                  label = _('Plot options')),
-        'statistics'   : MetaIcon(img = iconSet.get('check', wx.ART_ERROR),
-                                  label = _('Plot statistics')),
-        'save'         : MetaIcon(img = iconSet.get('save', wx.ART_ERROR),
-                                  label = _('Save profile data to CSV file')),
-        'quit'         : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                                  label = _('Quit plot tool'))
-        },
-    'georectify' : {
-        'gcpSet'    : MetaIcon(img = iconSet.get('gcp-create', wx.ART_ERROR),
-                               label = _('Set GCP'),
-                               desc = _('Define GCP (Ground Control Points)')),
-        'georectify': MetaIcon(img = iconSet.get('georectify', wx.ART_ERROR),
-                               label = _('Georectify')),
-        'gcpRms'    : MetaIcon(img = iconSet.get('gcp-rms', wx.ART_ERROR),
-                               label = _('Recalculate RMS error')),
-        'gcpSave'   : MetaIcon(img = iconSet.get('gcp-save', wx.ART_ERROR),
-                               label = _('Save GCPs to POINTS file')),
-        'gcpAdd'    : MetaIcon(img = iconSet.get('gcp-add', wx.ART_ERROR),
-                               label = _('Add new GCP')),
-        'gcpDelete' : MetaIcon(img = iconSet.get('gcp-delete', wx.ART_ERROR),
-                               label = _('Delete selected GCP')),
-        'gcpClear'  : MetaIcon(img = iconSet.get('gcp-remove', wx.ART_ERROR),
-                                label = _('Clear selected GCP')),
-        'gcpReload' : MetaIcon(img = iconSet.get('reload', wx.ART_ERROR),
-                               label = _('Reload GCPs from POINTS file')),
-        'quit'      : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                               label = _('Quit georectification')),
-        'settings'  : MetaIcon(img = iconSet.get('settings', wx.ART_ERROR),
-                               label = _('Settings'),
-                               desc = _('Settings dialog for georectification tool')),
-        },
-    'nviz' : {
-        'rotate':   MetaIcon(img = iconSet.get('3d-rotate', wx.ART_ERROR),
-                             label = _('Rotate 3D scene'),
-                             desc = _('Drag with mouse to rotate 3D scene')), 
-        'flyThrough':   MetaIcon(img = iconSet.get('flythrough', wx.ART_MISSING_IMAGE),
-                             label = _('Fly-through mode'),
-                             desc = _('Drag with mouse, hold Ctrl down for different mode'
-                                      ' or Shift to accelerate')),
-        'zoomIn':   MetaIcon(img = iconSet.get('zoom-in', wx.ART_ERROR),
-                            label = _('Zoom in'),
-                            desc = _('Click mouse to zoom')),
-        'zoomOut':  MetaIcon(img = iconSet.get('zoom-out', wx.ART_ERROR),
-                            label = _('Zoom out'),
-                            desc = _('Click mouse to unzoom')),
-        'nvizCmd': MetaIcon(img = iconSet.get('script-save', wx.ART_ERROR),
-                            label = _('Generate command for m.nviz.image'),
-                            desc = _('Generate command for m.nviz.image based on current state')),
-        'settings': MetaIcon(img = iconSet.get('3d-settings', wx.ART_ERROR),
-                             label = _('3D view mode settings'),
-                             desc = _('Show 3D view mode settings dialog')),
-        'help'    : MetaIcon(img = iconSet.get('3d-help', wx.ART_ERROR),
-                             label = _('Show 3D view mode manual')),
-        },
-    'modeler' : {
-        'new'        : MetaIcon(img = iconSet.get('create', wx.ART_ERROR),
-                                label = _('Create new model (Ctrl+N)')),
-        'open'       : MetaIcon(img = iconSet.get('open', wx.ART_ERROR),
-                                label = _('Load model from file (Ctrl+O)')),
-        'save'       : MetaIcon(img = iconSet.get('save', wx.ART_ERROR),
-                                label = _('Save current model to file (Ctrl+S)')),
-        'toImage'    : MetaIcon(img = iconSet.get('image-export', wx.ART_ERROR),
-                                label = _('Export model to image')),
-        'toPython'   : MetaIcon(img = iconSet.get('python-export', wx.ART_ERROR),
-                                label = _('Export model to Python script')),
-        'actionAdd'  : MetaIcon(img = iconSet.get('module-add', wx.ART_ERROR),
-                                label = _('Add command (GRASS module) to model')),
-        'dataAdd'    : MetaIcon(img = iconSet.get('data-add', wx.ART_ERROR),
-                                label = _('Add data to model')),
-        'relation'   : MetaIcon(img = iconSet.get('relation-create', wx.ART_ERROR),
-                                label = _('Manually define relation between data and commands')),
-        'loop'       : MetaIcon(img = iconSet.get('loop-add', wx.ART_ERROR),
-                                label = _('Add loop/series')),
-        'run'        : MetaIcon(img = iconSet.get('execute', wx.ART_ERROR),
-                                label = _('Run model')),
-        'validate'   : MetaIcon(img = iconSet.get('check', wx.ART_ERROR),
-                                label = _('Validate model')),
-        'settings'   : MetaIcon(img = iconSet.get('settings', wx.ART_ERROR),
-                                label = _('Show modeler settings')),
-        'properties' : MetaIcon(img = iconSet.get('options', wx.ART_ERROR),
-                                label = _('Show model properties')),
-        'variables'  : MetaIcon(img = iconSet.get('modeler-variables', wx.ART_ERROR),
-                                label = _('Manage model variables')),
-        'redraw'     : MetaIcon(img = iconSet.get('redraw', wx.ART_ERROR),
-                                label = _('Redraw model canvas')),
-        'quit'       : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                                label = _('Quit Graphical Modeler')),
-        },
-    'misc' : {
-        'font' : MetaIcon(img = iconSet.get('font', wx.ART_ERROR),
-                          label = _('Select font')),
-        'help' : MetaIcon(img = iconSet.get('help', wx.ART_ERROR),
-                          label = _('Show manual')),
-        'quit' : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                          label = _('Quit')),
-        },
-    'psMap' : {
-        'scriptSave' : MetaIcon(img = iconSet.get('script-save', wx.ART_ERROR),
-                                label = _('Generate text file with mapping instructions')),
-        'scriptLoad' : MetaIcon(img = iconSet.get('script-load', wx.ART_ERROR),
-                                label = _('Load text file with mapping instructions')),                           
-        'psExport'   : MetaIcon(img = iconSet.get('ps-export', wx.ART_ERROR),
-                                label = _('Generate PostScript output')),
-        'pdfExport'  : MetaIcon(img = iconSet.get('pdf-export', wx.ART_ERROR),
-                                label = _('Generate PDF output')),
-        'pageSetup'  : MetaIcon(img = iconSet.get('page-settings', wx.ART_ERROR),
-                                label = _('Page setup'),
-                                desc = _('Specify paper size, margins and orientation')),
-        'fullExtent' : MetaIcon(img = iconSet.get('zoom-extent', wx.ART_ERROR),
-                                label = _("Full extent"),
-                                desc = _("Zoom to full extent")),
-        'addMap'     : MetaIcon(img = iconSet.get('layer-add', wx.ART_ERROR),
-                                label = _("Map frame"),
-                                desc = _("Click and drag to place map frame")),
-        'addRast'    : MetaIcon(img = iconSet.get('layer-raster-add', wx.ART_ERROR),
-                                label = _("Raster map"),
-                                desc = _("Add raster map")),
-        'addVect'    : MetaIcon(img = iconSet.get('layer-vector-add', wx.ART_ERROR),
-                                label = _("Vector map"),
-                                desc = _("Add vector map")),
-        'deleteObj'  : MetaIcon(img = iconSet.get('layer-remove', wx.ART_ERROR),
-                                label = _("Delete selected object")),
-        'preview'    : MetaIcon(img = iconSet.get('execute', wx.ART_ERROR),
-                                label = _("Show preview")),
-        'quit'       : MetaIcon(img = iconSet.get('quit', wx.ART_ERROR),
-                                label = _('Quit Cartographic Composer')),
-        'addText'    : MetaIcon(img = iconSet.get('text-add', wx.ART_ERROR),
-                                label = _('Text')),
-        'addMapinfo' : MetaIcon(img = iconSet.get('map-info', wx.ART_ERROR),
-                                label = _('Map info')),
-        'addLegend'  : MetaIcon(img = iconSet.get('legend-add', wx.ART_ERROR),
-                                label = _('Legend')),
-        'addScalebar' : MetaIcon(img = iconSet.get('scalebar-add', wx.ART_ERROR),
-                                 label = _('Scale bar')),
-        'addImage'   : MetaIcon(img = iconSet.get('image-add', wx.ART_ERROR),
-                                 label = _('Image')),
-        'addNorthArrow': MetaIcon(img = iconSet.get('north-arrow-add', wx.ART_ERROR),
-                                 label = _('North Arrow')),
-        }
-    }
+    def SetLabel(self, label = None, desc = None):
+        """!Set label/description for icon
 
 
-# testing ...
-if __name__ == '__main__':
-    for k, v in Icons.iteritems():
-        for kk, vv in v.iteritems():
-            print k, kk, vv.GetImageName()
+        @param label icon label (None for no change)
+        @param desc icon description (None for no change)
+        
+        @return copy of original object
+        """
+        cobj = copy.copy(self)
+        if label:
+            cobj.label = label
+        if desc:
+            cobj.description = desc
+        
+        return cobj

+ 4 - 5
gui/wxpython/lmgr/frame.py

@@ -39,9 +39,8 @@ from grass.script          import core as grass
 
 
 from core.gcmd             import RunCommand, GError, GMessage
 from core.gcmd             import RunCommand, GError, GMessage
 from core.settings         import UserSettings
 from core.settings         import UserSettings
-from icons.icon            import Icons
 from gui_core.preferences  import MapsetAccess, PreferencesDialog, EVT_SETTINGS_CHANGED
 from gui_core.preferences  import MapsetAccess, PreferencesDialog, EVT_SETTINGS_CHANGED
-from lmgr.layertree        import LayerTree
+from lmgr.layertree        import LayerTree, LMIcons
 from lmgr.menudata         import ManagerData
 from lmgr.menudata         import ManagerData
 from gui_core.widgets      import GNotebook
 from gui_core.widgets      import GNotebook
 from modules.mcalc_builder import MapCalcFrame
 from modules.mcalc_builder import MapCalcFrame
@@ -675,7 +674,7 @@ class GMFrame(wx.Frame):
         win = AboutWindow(self)
         win = AboutWindow(self)
         win.CentreOnScreen()
         win.CentreOnScreen()
         win.Show(True)  
         win.Show(True)  
-        
+
     def _popupMenu(self, data):
     def _popupMenu(self, data):
         """!Create popup menu
         """!Create popup menu
         """
         """
@@ -686,8 +685,8 @@ class GMFrame(wx.Frame):
             if key is None:
             if key is None:
                 menu.AppendSeparator()
                 menu.AppendSeparator()
                 continue
                 continue
-            item = wx.MenuItem(menu, wx.ID_ANY, Icons['layerManager'][key].GetLabel())
-            item.SetBitmap(Icons['layerManager'][key].GetBitmap(self.iconsize))
+            item = wx.MenuItem(menu, wx.ID_ANY, LMIcons[key].GetLabel())
+            item.SetBitmap(LMIcons[key].GetBitmap(self.iconsize))
             menu.AppendItem(item)
             menu.AppendItem(item)
             self.Bind(wx.EVT_MENU, handler, item)
             self.Bind(wx.EVT_MENU, handler, item)
         
         

+ 66 - 20
gui/wxpython/lmgr/layertree.py

@@ -4,7 +4,7 @@
 @brief Utility classes for map layer management.
 @brief Utility classes for map layer management.
 
 
 Classes:
 Classes:
- - lmgr::LayerTree
+ - layertree::LayerTree
 
 
 (C) 2007-2011 by the GRASS Development Team
 (C) 2007-2011 by the GRASS Development Team
 
 
@@ -38,13 +38,60 @@ from modules.histogram   import HistogramFrame
 from core.utils          import GetLayerNameFromCmd
 from core.utils          import GetLayerNameFromCmd
 from wxplot.profile      import ProfileFrame
 from wxplot.profile      import ProfileFrame
 from core.debug          import Debug
 from core.debug          import Debug
-from icon                import Icons
 from core.settings       import UserSettings
 from core.settings       import UserSettings
 from vdigit.main         import haveVDigit
 from vdigit.main         import haveVDigit
 from core.gcmd           import GWarning
 from core.gcmd           import GWarning
+from gui_core.toolbars   import BaseIcons
+from icons.icon          import MetaIcon
 
 
 TREE_ITEM_HEIGHT = 25
 TREE_ITEM_HEIGHT = 25
 
 
+LMIcons = {
+    'rastImport' : MetaIcon(img = 'layer-import',
+                            label = _('Import raster data')),
+    'rastLink'   : MetaIcon(img = 'layer-import',
+                            label = _('Link external raster data')),
+    'rastOut'    : MetaIcon(img = 'layer-export',
+                            label = _('Set raster output format')),
+    'vectImport' : MetaIcon(img = 'layer-import',
+                            label = _('Import vector data')),
+    'vectLink'   : MetaIcon(img = 'layer-import',
+                                    label = _('Link external vector data')),
+    'vectOut'    : MetaIcon(img = 'layer-export',
+                            label = _('Set vector output format')),
+    'addCmd'     : MetaIcon(img = 'layer-command-add',
+                            label = _('Add command layer')),
+    'quit'       : MetaIcon(img = 'quit',
+                            label = _('Quit')),
+    'addRgb'     : MetaIcon(img = 'layer-rgb-add',
+                            label = _('Add RGB map layer')),
+    'addHis'     : MetaIcon(img = 'layer-his-add',
+                                    label = _('Add HIS map layer')),
+    'addShaded'  : MetaIcon(img = 'layer-shaded-relief-add',
+                            label = _('Add shaded relief map layer')),
+    'addRArrow'  : MetaIcon(img = 'layer-aspect-arrow-add',
+                            label = _('Add raster flow arrows')),
+    'addRNum'    : MetaIcon(img = 'layer-cell-cats-add',
+                            label = _('Add raster cell numbers')),
+    'addThematic': MetaIcon(img = 'layer-vector-thematic-add',
+                            label = _('Add thematic area (choropleth) map layer')),
+    'addChart'   : MetaIcon(img = 'layer-vector-chart-add',
+                            label = _('Add thematic chart layer')),
+    'addGrid'    : MetaIcon(img = 'layer-grid-add',
+                            label = _('Add grid layer')),
+    'addGeodesic': MetaIcon(img = 'shortest-distance',
+                            label = _('Add geodesic line layer')),
+    'addRhumb'   : MetaIcon(img = 'shortest-distance',
+                            label = _('Add rhumbline layer')),
+    'addLabels'  : MetaIcon(img = 'layer-label-add',
+                            label = _('Add labels')),
+    'addRast3d'  : MetaIcon(img = 'layer-raster3d-add',
+                            label = _('Add 3D raster map layer'),
+                            desc  =  _('Note that 3D raster data are rendered only in 3D view mode')),
+    'layerOptions'  : MetaIcon(img = 'options',
+                               label = _('Set options')),
+    }
+
 class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
 class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
     """!Creates layer tree structure
     """!Creates layer tree structure
     """
     """
@@ -127,50 +174,49 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         self.folder = il.Add(trart)
         self.folder = il.Add(trart)
         
         
         bmpsize = (16, 16)
         bmpsize = (16, 16)
-        icons = Icons['layerManager']
-        trgif = icons["addRast"].GetBitmap(bmpsize)
+        trgif = BaseIcons["addRast"].GetBitmap(bmpsize)
         self.rast_icon = il.Add(trgif)
         self.rast_icon = il.Add(trgif)
         
         
-        trgif = icons["addRast3d"].GetBitmap(bmpsize)
+        trgif = LMIcons["addRast3d"].GetBitmap(bmpsize)
         self.rast3d_icon = il.Add(trgif)
         self.rast3d_icon = il.Add(trgif)
         
         
-        trgif = icons["addRgb"].GetBitmap(bmpsize)
+        trgif = LMIcons["addRgb"].GetBitmap(bmpsize)
         self.rgb_icon = il.Add(trgif)
         self.rgb_icon = il.Add(trgif)
         
         
-        trgif = icons["addHis"].GetBitmap(bmpsize)
+        trgif = LMIcons["addHis"].GetBitmap(bmpsize)
         self.his_icon = il.Add(trgif)
         self.his_icon = il.Add(trgif)
         
         
-        trgif = icons["addShaded"].GetBitmap(bmpsize)
+        trgif = LMIcons["addShaded"].GetBitmap(bmpsize)
         self.shaded_icon = il.Add(trgif)
         self.shaded_icon = il.Add(trgif)
         
         
-        trgif = icons["addRArrow"].GetBitmap(bmpsize)
+        trgif = LMIcons["addRArrow"].GetBitmap(bmpsize)
         self.rarrow_icon = il.Add(trgif)
         self.rarrow_icon = il.Add(trgif)
         
         
-        trgif = icons["addRNum"].GetBitmap(bmpsize)
+        trgif = LMIcons["addRNum"].GetBitmap(bmpsize)
         self.rnum_icon = il.Add(trgif)
         self.rnum_icon = il.Add(trgif)
         
         
-        trgif = icons["addVect"].GetBitmap(bmpsize)
+        trgif = BaseIcons["addVect"].GetBitmap(bmpsize)
         self.vect_icon = il.Add(trgif)
         self.vect_icon = il.Add(trgif)
         
         
-        trgif = icons["addThematic"].GetBitmap(bmpsize)
+        trgif = LMIcons["addThematic"].GetBitmap(bmpsize)
         self.theme_icon = il.Add(trgif)
         self.theme_icon = il.Add(trgif)
         
         
-        trgif = icons["addChart"].GetBitmap(bmpsize)
+        trgif = LMIcons["addChart"].GetBitmap(bmpsize)
         self.chart_icon = il.Add(trgif)
         self.chart_icon = il.Add(trgif)
         
         
-        trgif = icons["addGrid"].GetBitmap(bmpsize)
+        trgif = LMIcons["addGrid"].GetBitmap(bmpsize)
         self.grid_icon = il.Add(trgif)
         self.grid_icon = il.Add(trgif)
         
         
-        trgif = icons["addGeodesic"].GetBitmap(bmpsize)
+        trgif = LMIcons["addGeodesic"].GetBitmap(bmpsize)
         self.geodesic_icon = il.Add(trgif)
         self.geodesic_icon = il.Add(trgif)
         
         
-        trgif = icons["addRhumb"].GetBitmap(bmpsize)
+        trgif = LMIcons["addRhumb"].GetBitmap(bmpsize)
         self.rhumb_icon = il.Add(trgif)
         self.rhumb_icon = il.Add(trgif)
         
         
-        trgif = icons["addLabels"].GetBitmap(bmpsize)
+        trgif = LMIcons["addLabels"].GetBitmap(bmpsize)
         self.labels_icon = il.Add(trgif)
         self.labels_icon = il.Add(trgif)
         
         
-        trgif = icons["addCmd"].GetBitmap(bmpsize)
+        trgif = LMIcons["addCmd"].GetBitmap(bmpsize)
         self.cmd_icon = il.Add(trgif)
         self.cmd_icon = il.Add(trgif)
         
         
         self.AssignImageList(il)
         self.AssignImageList(il)
@@ -741,7 +787,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             grouptext = _('Layer group:') + str(self.groupnode)
             grouptext = _('Layer group:') + str(self.groupnode)
             self.groupnode += 1
             self.groupnode += 1
         else:
         else:
-            btnbmp = Icons['layerManager']["layerOptions"].GetBitmap((16,16))
+            btnbmp = LMIcons["layerOptions"].GetBitmap((16,16))
             ctrl = buttons.GenBitmapButton(self, id = wx.ID_ANY, bitmap = btnbmp, size = (24,24))
             ctrl = buttons.GenBitmapButton(self, id = wx.ID_ANY, bitmap = btnbmp, size = (24,24))
             ctrl.SetToolTipString(_("Click to edit layer settings"))
             ctrl.SetToolTipString(_("Click to edit layer settings"))
             self.Bind(wx.EVT_BUTTON, self.OnLayerContextMenu, ctrl)
             self.Bind(wx.EVT_BUTTON, self.OnLayerContextMenu, ctrl)
@@ -1311,7 +1357,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         text    = self.GetItemText(dragItem)
         text    = self.GetItemText(dragItem)
         if self.GetPyData(dragItem)[0]['ctrl']:
         if self.GetPyData(dragItem)[0]['ctrl']:
             # recreate data layer
             # recreate data layer
-            btnbmp = Icons['layerManager']["layerOptions"].GetBitmap((16,16))
+            btnbmp = LMIcons["layerOptions"].GetBitmap((16,16))
             newctrl = buttons.GenBitmapButton(self, id = wx.ID_ANY, bitmap = btnbmp, size = (24, 24))
             newctrl = buttons.GenBitmapButton(self, id = wx.ID_ANY, bitmap = btnbmp, size = (24, 24))
             newctrl.SetToolTipString(_("Click to edit layer settings"))
             newctrl.SetToolTipString(_("Click to edit layer settings"))
             self.Bind(wx.EVT_BUTTON, self.OnLayerContextMenu, newctrl)
             self.Bind(wx.EVT_BUTTON, self.OnLayerContextMenu, newctrl)

+ 69 - 14
gui/wxpython/lmgr/toolbars.py

@@ -28,10 +28,8 @@ import sys
 from core               import globalvar
 from core               import globalvar
 from core.gcmd          import RunCommand
 from core.gcmd          import RunCommand
 from nviz.preferences   import NvizPreferencesDialog
 from nviz.preferences   import NvizPreferencesDialog
-from gui_core.toolbars  import BaseToolbar
-
-sys.path.append(os.path.join(globalvar.ETCWXDIR, "icons"))
-from icons.icon        import Icons
+from gui_core.toolbars  import BaseToolbar, BaseIcons
+from icons.icon         import MetaIcon
 
 
 class LMWorkspaceToolbar(BaseToolbar):
 class LMWorkspaceToolbar(BaseToolbar):
     """!Layer Manager `workspace` toolbar
     """!Layer Manager `workspace` toolbar
@@ -47,7 +45,16 @@ class LMWorkspaceToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['layerManager']
+        icons = {
+            'newdisplay'    : MetaIcon(img = 'monitor-create',
+                                       label = _('Start new map display')),
+            'workspaceNew'  : MetaIcon(img = 'create',
+                                       label = _('Create new workspace (Ctrl+N)')),
+            'workspaceOpen' : MetaIcon(img = 'open',
+                                       label = _('Open existing workspace file (Ctrl+O)')),
+            'workspaceSave' : MetaIcon(img = 'save',
+                                       label = _('Save current workspace to file (Ctrl+S)')),
+            }
         return self._getToolbarData((('newdisplay', icons["newdisplay"],
         return self._getToolbarData((('newdisplay', icons["newdisplay"],
                                       self.parent.OnNewDisplay),
                                       self.parent.OnNewDisplay),
                                      (None, ),
                                      (None, ),
@@ -73,7 +80,23 @@ class LMDataToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['layerManager']
+        icons = {
+            'addMulti'   : MetaIcon(img = 'layer-open',
+                                    label = _('Add multiple raster or vector map layers (Ctrl+Shift+L)')),
+            'addRast'    : BaseIcons['addRast'].SetLabel(_("Add raster map layer (Ctrl+Shift+R)")),
+            'rastMisc'   : MetaIcon(img = 'layer-raster-more',
+                                    label = _('Add various raster map layers (RGB, HIS, shaded relief...)')),
+            'addVect'    : BaseIcons['addRast'].SetLabel(_("Add vector map layer (Ctrl+Shift+V)")),
+            'vectMisc'   : MetaIcon(img = 'layer-vector-more',
+                                    label = _('Add various vector map layers (thematic, chart...)')),
+            'addGroup'   : MetaIcon(img = 'layer-group-add',
+                                    label = _('Add group')),
+            'addOverlay' : MetaIcon(img = 'layer-more',
+                                    label = _('Add grid or vector labels overlay')),
+            'delCmd'     : MetaIcon(img = 'layer-remove',
+                                    label = _('Delete selected map layer')),
+            }
+        
         return self._getToolbarData((('addMulti', icons["addMulti"],
         return self._getToolbarData((('addMulti', icons["addMulti"],
                                       self.parent.OnAddMaps),
                                       self.parent.OnAddMaps),
                                      ('addrast', icons["addRast"],
                                      ('addrast', icons["addRast"],
@@ -106,17 +129,29 @@ class LMToolsToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['layerManager']
+        icons = {
+            'import'  : MetaIcon(img = 'layer-import',
+                                 label = _('Import/link raster or vector data')),
+            'mapcalc' : MetaIcon(img = 'calculator',
+                                 label = _('Raster Map Calculator')),
+            'modeler' : MetaIcon(img = 'modeler-main',
+                                 label = _('Graphical Modeler')),
+            'georectify' : MetaIcon(img = 'georectify',
+                                 label = _('Georectifier')),
+            'composer': MetaIcon(img = 'print-compose',
+                                 label = _('Cartographic Composer')),
+            }
+        
         return self._getToolbarData((('importMap', icons["import"],
         return self._getToolbarData((('importMap', icons["import"],
                                       self.parent.OnImportMenu),
                                       self.parent.OnImportMenu),
                                      (None, ),
                                      (None, ),
                                      ('mapCalc', icons["mapcalc"],
                                      ('mapCalc', icons["mapcalc"],
                                       self.parent.OnMapCalculator),
                                       self.parent.OnMapCalculator),
-                                     ('georect', Icons["georectify"]["georectify"],
+                                     ('georect', icons["georectify"],
                                       self.parent.OnGCPManager),
                                       self.parent.OnGCPManager),
                                      ('modeler', icons["modeler"],
                                      ('modeler', icons["modeler"],
                                       self.parent.OnGModeler),
                                       self.parent.OnGModeler),
-                                     ('mapOutput', icons['mapOutput'],
+                                     ('mapOutput', icons['composer'],
                                       self.parent.OnPsMap)
                                       self.parent.OnPsMap)
                                      ))
                                      ))
 
 
@@ -134,10 +169,14 @@ class LMMiscToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['layerManager']
+        icons = {
+            'settings'   : BaseIcons['settings'].SetLabel(_('GUI settings')),
+            'help'       : BaseIcons['help'].SetLabel(_('GRASS manual')),
+            }
+        
         return self._getToolbarData((('settings', icons["settings"],
         return self._getToolbarData((('settings', icons["settings"],
                                       self.parent.OnPreferences),
                                       self.parent.OnPreferences),
-                                     ('help', Icons["misc"]["help"],
+                                     ('help', icons["help"],
                                       self.parent.OnHelp),
                                       self.parent.OnHelp),
                                      ))
                                      ))
 
 
@@ -155,7 +194,13 @@ class LMVectorToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['layerManager']
+        icons = {
+            'vdigit'     : MetaIcon(img = 'edit',
+                                    label = _('Edit vector maps')),
+            'attrTable'  : MetaIcon(img = 'table',
+                                    label = _('Show attribute table')),
+            }
+        
         return self._getToolbarData((('vdigit', icons["vdigit"],
         return self._getToolbarData((('vdigit', icons["vdigit"],
                                       self.parent.OnVDigit),
                                       self.parent.OnVDigit),
                                      ('attribute', icons["attrTable"],
                                      ('attribute', icons["attrTable"],
@@ -180,8 +225,18 @@ class LMNvizToolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['nviz']
-        return self._getToolbarData((("nvizCmd", icons['nvizCmd'],
+        icons = {
+            'cmd'    : MetaIcon(img = 'script-save',
+                                label = _('Generate command for m.nviz.image'),
+                                desc = _('Generate command for m.nviz.image based on current state')),
+            'settings' : MetaIcon(img = '3d-settings',
+                                  label = _('3D view mode settings'),
+                                  desc = _('Show 3D view mode settings dialog')),
+            'help'   : MetaIcon(img = '3d-help',
+                                label = _('Show 3D view mode manual')),
+            }
+        
+        return self._getToolbarData((("nvizCmd", icons['cmd'],
                                       self.OnNvizCmd),
                                       self.OnNvizCmd),
                                      (None, ),
                                      (None, ),
                                      ("settings", icons["settings"],
                                      ("settings", icons["settings"],

+ 3 - 77
gui/wxpython/mapdisp/frame.py

@@ -36,14 +36,13 @@ sys.path.append(os.path.join(globalvar.ETCDIR,   "python"))
 from core               import globalvar
 from core               import globalvar
 from core.render        import EVT_UPDATE_PRGBAR
 from core.render        import EVT_UPDATE_PRGBAR
 from vdigit.toolbars    import VDigitToolbar
 from vdigit.toolbars    import VDigitToolbar
-from mapdisp.toolbars   import MapToolbar
+from mapdisp.toolbars   import MapToolbar, NvizIcons
 from mapdisp.gprint     import PrintOptions
 from mapdisp.gprint     import PrintOptions
 from core.gcmd          import GError, GMessage, RunCommand
 from core.gcmd          import GError, GMessage, RunCommand
 from dbmgr.dialogs      import DisplayAttributesDialog
 from dbmgr.dialogs      import DisplayAttributesDialog
 from core.utils         import ListOfCatsToRange, GetLayerNameFromCmd
 from core.utils         import ListOfCatsToRange, GetLayerNameFromCmd
 from gui_core.dialogs   import GetImageHandlers, ImageSizeDialog, DecorationDialog, TextLayerDialog
 from gui_core.dialogs   import GetImageHandlers, ImageSizeDialog, DecorationDialog, TextLayerDialog
 from core.debug         import Debug
 from core.debug         import Debug
-from icon               import Icons
 from core.settings      import UserSettings
 from core.settings      import UserSettings
 from gui_core.mapdisp   import MapFrameBase
 from gui_core.mapdisp   import MapFrameBase
 from mapdisp.mapwindow  import BufferedWindow
 from mapdisp.mapwindow  import BufferedWindow
@@ -272,9 +271,9 @@ class MapFrame(MapFrameBase):
                     self._layerManager.gm_cb.GetPage(page).maptree.mapdisplay.toolbars['map'].combo.Delete(1)
                     self._layerManager.gm_cb.GetPage(page).maptree.mapdisplay.toolbars['map'].combo.Delete(1)
         self.toolbars['map'].Enable2D(False)
         self.toolbars['map'].Enable2D(False)
         # add rotate tool to map toolbar
         # add rotate tool to map toolbar
-        self.toolbars['map'].InsertTool((('rotate', Icons['nviz']['rotate'],
+        self.toolbars['map'].InsertTool((('rotate', NvizIcons['rotate'],
                                           self.OnRotate, wx.ITEM_CHECK, 7),)) # 7 is position
                                           self.OnRotate, wx.ITEM_CHECK, 7),)) # 7 is position
-        self.toolbars['map'].InsertTool((('flyThrough', Icons['nviz']['flyThrough'],
+        self.toolbars['map'].InsertTool((('flyThrough', NvizIcons['flyThrough'],
                                           self.OnFlyThrough, wx.ITEM_CHECK, 8),)) 
                                           self.OnFlyThrough, wx.ITEM_CHECK, 8),)) 
         self.toolbars['map'].ChangeToolsDesc(mode2d = False)
         self.toolbars['map'].ChangeToolsDesc(mode2d = False)
         # update status bar
         # update status bar
@@ -896,44 +895,6 @@ class MapFrame(MapFrameBase):
         else:
         else:
             return cmd
             return cmd
 
 
-    def OnAnalyze(self, event):
-        """!Analysis tools menu
-        """
-        point = wx.GetMousePosition()
-        toolsmenu = wx.Menu()
-        icons = Icons['displayWindow']
-        
-        # Add items to the menu
-        measure = wx.MenuItem(toolsmenu, wx.ID_ANY, icons["measure"].GetLabel())
-        measure.SetBitmap(icons["measure"].GetBitmap(self.iconsize))
-        toolsmenu.AppendItem(measure)
-        self.Bind(wx.EVT_MENU, self.OnMeasure, measure)
-        
-        profile = wx.MenuItem(toolsmenu, wx.ID_ANY, icons["profile"].GetLabel())
-        profile.SetBitmap(icons["profile"].GetBitmap(self.iconsize))
-        toolsmenu.AppendItem(profile)
-        self.Bind(wx.EVT_MENU, self.OnProfile, profile)
-
-        scatterplot = wx.MenuItem(toolsmenu, wx.ID_ANY, _("Create bivariate scatterplot of raster maps"))
-        scatterplot.SetBitmap(icons["profile"].GetBitmap(self.iconsize))
-        toolsmenu.AppendItem(scatterplot)
-        self.Bind(wx.EVT_MENU, self.OnScatterplot, scatterplot)
-
-        histogram2 = wx.MenuItem(toolsmenu, wx.ID_ANY, icons["histogram"].GetLabel())
-        histogram2.SetBitmap(icons["histogram"].GetBitmap(self.iconsize))
-        toolsmenu.AppendItem(histogram2)
-        self.Bind(wx.EVT_MENU, self.OnHistogramPyPlot, histogram2)
-
-        histogram = wx.MenuItem(toolsmenu, wx.ID_ANY, _("Create histogram with d.histogram"))
-        histogram.SetBitmap(icons["histogram"].GetBitmap(self.iconsize))
-        toolsmenu.AppendItem(histogram)
-        self.Bind(wx.EVT_MENU, self.OnHistogram, histogram)
-
-        # Popup the menu.  If an item is selected then its handler
-        # will be called before PopupMenu returns.
-        self.PopupMenu(toolsmenu)
-        toolsmenu.Destroy()
-
     def OnMeasure(self, event):
     def OnMeasure(self, event):
         """!Init measurement routine that calculates map distance
         """!Init measurement routine that calculates map distance
         along transect drawn on map display
         along transect drawn on map display
@@ -1131,41 +1092,6 @@ class MapFrame(MapFrameBase):
         self.histogram.Refresh()
         self.histogram.Refresh()
         self.histogram.Update()
         self.histogram.Update()
        
        
-    def OnDecoration(self, event):
-        """!Decorations overlay menu
-        """
-        point = wx.GetMousePosition()
-        decmenu = wx.Menu()
-        icons = Icons['displayWindow']
-        
-        # Add items to the menu
-        AddScale = wx.MenuItem(decmenu, wx.ID_ANY, icons["addBarscale"].GetLabel())
-        AddScale.SetBitmap(icons["addBarscale"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddScale)
-        self.Bind(wx.EVT_MENU, self.OnAddBarscale, AddScale)
-        # temporary
-        if self.IsPaneShown('3d'):
-            AddScale.Enable(False)
-            AddArrow = wx.MenuItem(decmenu, wx.ID_ANY, icons['addNorthArrow'].GetLabel())
-            AddArrow.SetBitmap(icons['addNorthArrow'].GetBitmap(self.iconsize))
-            decmenu.AppendItem(AddArrow)
-            self.Bind(wx.EVT_MENU, self.OnAddArrow, AddArrow)
-        
-        AddLegend = wx.MenuItem(decmenu, wx.ID_ANY, icons["addLegend"].GetLabel())
-        AddLegend.SetBitmap(icons["addLegend"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddLegend)
-        self.Bind(wx.EVT_MENU, self.OnAddLegend, AddLegend)
-        
-        AddText = wx.MenuItem(decmenu, wx.ID_ANY, icons["addText"].GetLabel())
-        AddText.SetBitmap(icons["addText"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddText)
-        self.Bind(wx.EVT_MENU, self.OnAddText, AddText)
-        
-        # Popup the menu.  If an item is selected then its handler
-        # will be called before PopupMenu returns.
-        self.PopupMenu(decmenu)
-        decmenu.Destroy()
-        
     def OnAddBarscale(self, event):
     def OnAddBarscale(self, event):
         """!Handler for scale/arrow map decoration menu selection.
         """!Handler for scale/arrow map decoration menu selection.
         """
         """

+ 85 - 28
gui/wxpython/mapdisp/toolbars.py

@@ -18,10 +18,47 @@ This program is free software under the GNU General Public License
 
 
 import wx
 import wx
 
 
-from gui_core.toolbars import BaseToolbar
-from icons.icon        import Icons
+from gui_core.toolbars import BaseToolbar, BaseIcons
 from nviz.main         import haveNviz
 from nviz.main         import haveNviz
 from vdigit.main       import haveVDigit
 from vdigit.main       import haveVDigit
+from icons.icon        import MetaIcon
+
+MapIcons =  {
+    'query'      : MetaIcon(img = 'info',
+                            label = _('Query raster/vector map(s)'),
+                            desc = _('Query selected raster/vector map(s)')),
+    'addBarscale': MetaIcon(img = 'scalebar-add',
+                            label = _('Add scalebar and north arrow')),
+    'addLegend'  : MetaIcon(img = 'legend-add',
+                            label = _('Add legend')),
+    'addNorthArrow': MetaIcon(img = 'north-arrow-add',
+                              label = _('North Arrow')),
+    'analyze'    : MetaIcon(img = 'layer-raster-analyze',
+                            label = _('Analyze map'),
+                            desc = _('Measuring, profiling, histogramming, ...')),
+    'measure'    : MetaIcon(img = 'measure-length',
+                            label = _('Measure distance')),
+    'profile'    : MetaIcon(img = 'layer-raster-profile',
+                            label = _('Profile surface map')),
+    'scatter'    : MetaIcon(img = 'layer-raster-profile',
+                            label = _("Create bivariate scatterplot of raster maps")),
+    'addText'    : MetaIcon(img = 'text-add',
+                            label = _('Add text layer')),
+    'histogram'  : MetaIcon(img = 'layer-raster-histogram',
+                            label = _('Create histogram of raster map')),
+    }
+
+NvizIcons = {
+    'rotate'    : MetaIcon(img = '3d-rotate',
+                           label = _('Rotate 3D scene'),
+                           desc = _('Drag with mouse to rotate 3D scene')), 
+    'flyThrough': MetaIcon(img = 'flythrough',
+                           label = _('Fly-through mode'),
+                           desc = _('Drag with mouse, hold Ctrl down for different mode'
+                                    ' or Shift to accelerate')),
+    'zoomIn'    : BaseIcons['zoomIn'].SetLabel(desc = _('Click mouse to zoom')),
+    'zoomOut'   : BaseIcons['zoomOut'].SetLabel(desc = _('Click mouse to unzoom'))
+    }
 
 
 class MapToolbar(BaseToolbar):
 class MapToolbar(BaseToolbar):
     """!Map Display toolbar
     """!Map Display toolbar
@@ -95,51 +132,50 @@ class MapToolbar(BaseToolbar):
         
         
         self.OnTool(None)
         self.OnTool(None)
         
         
-        self.EnableTool(self.zoomback, False)
+        self.EnableTool(self.zoomBack, False)
         
         
         self.FixSize(width = 90)
         self.FixSize(width = 90)
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['displayWindow']
-        return self._getToolbarData((('displaymap', icons['display'],
+        return self._getToolbarData((('displayMap', BaseIcons['display'],
                                       self.parent.OnDraw),
                                       self.parent.OnDraw),
-                                     ('rendermap', icons['render'],
+                                     ('renderMap', BaseIcons['render'],
                                       self.parent.OnRender),
                                       self.parent.OnRender),
-                                     ('erase', icons['erase'],
+                                     ('erase', BaseIcons['erase'],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
                                      (None, ),
                                      (None, ),
-                                     ('pointer', icons['pointer'],
+                                     ('pointer', BaseIcons['pointer'],
                                       self.parent.OnPointer,
                                       self.parent.OnPointer,
                                       wx.ITEM_CHECK),
                                       wx.ITEM_CHECK),
-                                     ('query', icons['query'],
+                                     ('query', MapIcons['query'],
                                       self.parent.OnQuery,
                                       self.parent.OnQuery,
                                       wx.ITEM_CHECK),
                                       wx.ITEM_CHECK),
-                                     ('pan', icons['pan'],
+                                     ('pan', BaseIcons['pan'],
                                       self.parent.OnPan,
                                       self.parent.OnPan,
                                       wx.ITEM_CHECK),
                                       wx.ITEM_CHECK),
-                                     ('zoomin', icons['zoomIn'],
+                                     ('zoomIn', BaseIcons['zoomIn'],
                                       self.parent.OnZoomIn,
                                       self.parent.OnZoomIn,
                                       wx.ITEM_CHECK),
                                       wx.ITEM_CHECK),
-                                     ('zoomout', icons['zoomOut'],
+                                     ('zoomOut', BaseIcons['zoomOut'],
                                       self.parent.OnZoomOut,
                                       self.parent.OnZoomOut,
                                       wx.ITEM_CHECK),
                                       wx.ITEM_CHECK),
-                                     ('zoomextent', icons['zoomExtent'],
+                                     ('zoomExtent', BaseIcons['zoomExtent'],
                                       self.parent.OnZoomToMap),
                                       self.parent.OnZoomToMap),
-                                     ('zoomback', icons['zoomBack'],
+                                     ('zoomBack', BaseIcons['zoomBack'],
                                       self.parent.OnZoomBack),
                                       self.parent.OnZoomBack),
-                                     ('zoommenu', icons['zoomMenu'],
+                                     ('zoomMenu', BaseIcons['zoomMenu'],
                                       self.parent.OnZoomMenu),
                                       self.parent.OnZoomMenu),
                                      (None, ),
                                      (None, ),
-                                     ('analyze', icons['analyze'],
-                                      self.parent.OnAnalyze),
+                                     ('analyze', MapIcons['analyze'],
+                                      self.OnAnalyze),
                                      (None, ),
                                      (None, ),
-                                     ('dec', icons['overlay'],
-                                      self.parent.OnDecoration),
+                                     ('overlay', BaseIcons['overlay'],
+                                      self.OnDecoration),
                                      (None, ),
                                      (None, ),
-                                     ('savefile', icons['saveFile'],
+                                     ('saveFile', BaseIcons['saveFile'],
                                       self.parent.SaveToFile),
                                       self.parent.SaveToFile),
-                                     ('printmap', icons['print'],
+                                     ('printMap', BaseIcons['print'],
                                       self.parent.PrintMenu),
                                       self.parent.PrintMenu),
                                      (None, ))
                                      (None, ))
                                     )
                                     )
@@ -167,16 +203,16 @@ class MapToolbar(BaseToolbar):
     def ChangeToolsDesc(self, mode2d):
     def ChangeToolsDesc(self, mode2d):
         """!Change description of zoom tools for 2D/3D view"""
         """!Change description of zoom tools for 2D/3D view"""
         if mode2d:
         if mode2d:
-            set = 'displayWindow'
+            icons = BaseIcons
         else:
         else:
-            set = 'nviz'
+            icons = NvizIcons
         for i, data in enumerate(self._data):
         for i, data in enumerate(self._data):
-            for tool, toolname in (('zoomin', 'zoomIn'),('zoomout', 'zoomOut')):
+            for tool in (('zoomIn', 'zoomOut')):
                 if data[0] == tool:
                 if data[0] == tool:
                     tmp = list(data)
                     tmp = list(data)
-                    tmp[4] = Icons[set][toolname].GetDesc()
+                    tmp[4] = icons[tool].GetDesc()
                     self._data[i] = tuple(tmp)
                     self._data[i] = tuple(tmp)
-                
+        
     def OnSelectTool(self, event):
     def OnSelectTool(self, event):
         """!Select / enable tool available in tools list
         """!Select / enable tool available in tools list
         """
         """
@@ -197,6 +233,27 @@ class MapToolbar(BaseToolbar):
             self.ExitToolbars()
             self.ExitToolbars()
             self.parent.AddToolbar("vdigit")
             self.parent.AddToolbar("vdigit")
             self.parent.MapWindow.SetFocus()
             self.parent.MapWindow.SetFocus()
+
+    def OnAnalyze(self, event):
+        """!Analysis tools menu
+        """
+        self._onMenu(((MapIcons["measure"],    self.parent.OnMeasure),
+                      (MapIcons["profile"],    self.parent.OnProfile),
+                      (MapIcons["scatter"],    self.parent.OnScatterplot),
+                      (MapIcons["histogram"],  self.parent.OnHistogramPyPlot),
+                      (BaseIcons["histogramD"], self.parent.OnHistogram)))
+        
+    def OnDecoration(self, event):
+        """!Decorations overlay menu
+        """
+        if self.parent.IsPaneShown('3d'):
+            self._onMenu(((MapIcons["addNorthArrow"], self.parent.OnAddArrow),
+                          (MapIcons["addLegend"],     self.parent.OnAddLegend),
+                          (MapIcons["addText"],       self.parent.OnAddText)))
+        else:
+            self._onMenu(((MapIcons["addBarscale"], self.parent.OnAddBarscale),
+                          (MapIcons["addLegend"],   self.parent.OnAddLegend),
+                          (MapIcons["addText"],     self.parent.OnAddText)))
         
         
     def ExitToolbars(self):
     def ExitToolbars(self):
         if self.parent.GetToolbar('vdigit'):
         if self.parent.GetToolbar('vdigit'):
@@ -206,7 +263,7 @@ class MapToolbar(BaseToolbar):
         
         
     def Enable2D(self, enabled):
     def Enable2D(self, enabled):
         """!Enable/Disable 2D display mode specific tools"""
         """!Enable/Disable 2D display mode specific tools"""
-        for tool in (self.zoommenu,
+        for tool in (self.zoomMenu,
                      self.analyze,
                      self.analyze,
-                     self.printmap):
+                     self.printMap):
             self.EnableTool(tool, enabled)
             self.EnableTool(tool, enabled)

+ 8 - 10
gui/wxpython/modules/histogram.py

@@ -29,9 +29,8 @@ from core.utils           import GetLayerNameFromCmd
 from gui_core.dialogs     import GetImageHandlers, ImageSizeDialog
 from gui_core.dialogs     import GetImageHandlers, ImageSizeDialog
 from gui_core.preferences import DefaultFontDialog
 from gui_core.preferences import DefaultFontDialog
 from core.debug           import Debug
 from core.debug           import Debug
-from icon                 import Icons
 from core.gcmd            import GError
 from core.gcmd            import GError
-from gui_core.toolbars    import BaseToolbar
+from gui_core.toolbars    import BaseToolbar, BaseIcons
 
 
 class BufferedWindow(wx.Window):
 class BufferedWindow(wx.Window):
     """!A Buffered window class.
     """!A Buffered window class.
@@ -474,21 +473,20 @@ class HistogramToolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['displayWindow']
-        return self._getToolbarData((('histogram', icons["histogram"],
+        return self._getToolbarData((('histogram', BaseIcons["histogramD"],
                                       self.parent.OnOptions),
                                       self.parent.OnOptions),
-                                     ('rendermao', icons["display"],
+                                     ('render', BaseIcons["display"],
                                       self.parent.OnRender),
                                       self.parent.OnRender),
-                                     ('erase', icons["erase"],
+                                     ('erase', BaseIcons["erase"],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
-                                     ('font', Icons['misc']["font"],
+                                     ('font', BaseIcons["font"],
                                       self.parent.SetHistFont),
                                       self.parent.SetHistFont),
                                      (None, ),
                                      (None, ),
-                                     ('save', icons["saveFile"],
+                                     ('save', BaseIcons["saveFile"],
                                       self.parent.SaveToFile),
                                       self.parent.SaveToFile),
-                                     ('hprint', icons["print"],
+                                     ('hprint', BaseIcons["print"],
                                       self.parent.PrintMenu),
                                       self.parent.PrintMenu),
                                      (None, ),
                                      (None, ),
-                                     ('quit', Icons['misc']["quit"],
+                                     ('quit', BaseIcons["quit"],
                                       self.parent.OnQuit))
                                       self.parent.OnQuit))
                                     )
                                     )

+ 1 - 41
gui/wxpython/psmap/frame.py

@@ -41,7 +41,6 @@ import grass.script as grass
 from gui_core.menu    import Menu
 from gui_core.menu    import Menu
 from gui_core.goutput import CmdThread, EVT_CMD_DONE
 from gui_core.goutput import CmdThread, EVT_CMD_DONE
 from psmap.toolbars   import PsMapToolbar
 from psmap.toolbars   import PsMapToolbar
-from icon             import Icons
 from core.gcmd        import RunCommand, GError, GMessage
 from core.gcmd        import RunCommand, GError, GMessage
 from gui_core.forms   import GUI
 from gui_core.forms   import GUI
 from psmap.menudata   import PsMapData
 from psmap.menudata   import PsMapData
@@ -579,46 +578,7 @@ class PsMapFrame(wx.Frame):
                 dlg =  MainVectorDialog(self, id = id, settings = self.instruction)
                 dlg =  MainVectorDialog(self, id = id, settings = self.instruction)
                 self.openDialogs['vector'] = dlg
                 self.openDialogs['vector'] = dlg
             self.openDialogs['vector'].Show()
             self.openDialogs['vector'].Show()
-        
-    def OnDecoration(self, event):
-        """!Decorations overlay menu
-        """
-        decmenu = wx.Menu()
-        # legend
-        AddLegend = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addLegend"].GetLabel())
-        AddLegend.SetBitmap(Icons['psMap']["addLegend"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddLegend)
-        self.Bind(wx.EVT_MENU, self.OnAddLegend, AddLegend)
-        # mapinfo
-        AddMapinfo = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addMapinfo"].GetLabel())
-        AddMapinfo.SetBitmap(Icons['psMap']["addMapinfo"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddMapinfo)
-        self.Bind(wx.EVT_MENU, self.OnAddMapinfo, AddMapinfo) 
-        # scalebar
-        AddScalebar = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addScalebar"].GetLabel())
-        AddScalebar.SetBitmap(Icons['psMap']["addScalebar"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddScalebar)
-        self.Bind(wx.EVT_MENU, self.OnAddScalebar, AddScalebar) 
-        # text
-        AddText = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addText"].GetLabel())
-        AddText.SetBitmap(Icons['psMap']["addText"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddText)
-        self.Bind(wx.EVT_MENU, self.OnAddText, AddText) 
-        # eps image
-        AddImage = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addImage"].GetLabel())
-        AddImage.SetBitmap(Icons['psMap']["addImage"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddImage)
-        self.Bind(wx.EVT_MENU, self.OnAddImage, AddImage) 
-        # north arrow image
-        AddNorthArrow = wx.MenuItem(decmenu, wx.ID_ANY, Icons['psMap']["addNorthArrow"].GetLabel())
-        AddNorthArrow.SetBitmap(Icons['psMap']["addNorthArrow"].GetBitmap(self.iconsize))
-        decmenu.AppendItem(AddNorthArrow)
-        self.Bind(wx.EVT_MENU, self.OnAddNorthArrow, AddNorthArrow) 
-        # Popup the menu.  If an item is selected then its handler
-        # will be called before PopupMenu returns.
-        self.PopupMenu(decmenu)
-        decmenu.Destroy()
-        
+       
     def OnAddScalebar(self, event):
     def OnAddScalebar(self, event):
         """!Add scalebar"""
         """!Add scalebar"""
         if projInfo()['proj'] == 'll':
         if projInfo()['proj'] == 'll':

+ 60 - 14
gui/wxpython/psmap/toolbars.py

@@ -20,10 +20,8 @@ import sys
 import wx
 import wx
 
 
 from core              import globalvar
 from core              import globalvar
-from gui_core.toolbars import BaseToolbar
-
-sys.path.append(os.path.join(globalvar.ETCWXDIR, "icons"))
-from icon              import Icons
+from gui_core.toolbars import BaseToolbar, BaseIcons
+from icon              import MetaIcon
 
 
 class PsMapToolbar(BaseToolbar):
 class PsMapToolbar(BaseToolbar):
     def __init__(self, parent):
     def __init__(self, parent):
@@ -49,7 +47,44 @@ class PsMapToolbar(BaseToolbar):
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data
         """!Toolbar data
         """
         """
-        icons = Icons['psMap']
+        icons = {
+            'scriptSave' : MetaIcon(img = 'script-save',
+                                    label = _('Generate text file with mapping instructions')),
+            'scriptLoad' : MetaIcon(img = 'script-load',
+                                    label = _('Load text file with mapping instructions')),                           
+            'psExport'   : MetaIcon(img = 'ps-export',
+                                    label = _('Generate PostScript output')),
+            'pdfExport'  : MetaIcon(img = 'pdf-export',
+                                    label = _('Generate PDF output')),
+            'pageSetup'  : MetaIcon(img = 'page-settings',
+                                    label = _('Page setup'),
+                                    desc = _('Specify paper size, margins and orientation')),
+            'fullExtent' : MetaIcon(img = 'zoom-extent',
+                                    label = _("Full extent"),
+                                    desc = _("Zoom to full extent")),
+            'addMap'     : MetaIcon(img = 'layer-add',
+                                    label = _("Map frame"),
+                                    desc = _("Click and drag to place map frame")),
+            'deleteObj'  : MetaIcon(img = 'layer-remove',
+                                    label = _("Delete selected object")),
+            'preview'    : MetaIcon(img = 'execute',
+                                    label = _("Show preview")),
+            'quit'       : MetaIcon(img = 'quit',
+                                    label = _('Quit Cartographic Composer')),
+            'addText'    : MetaIcon(img = 'text-add',
+                                    label = _('Text')),
+            'addMapinfo' : MetaIcon(img = 'map-info',
+                                    label = _('Map info')),
+            'addLegend'  : MetaIcon(img = 'legend-add',
+                                    label = _('Legend')),
+            'addScalebar' : MetaIcon(img = 'scalebar-add',
+                                     label = _('Scale bar')),
+            'addImage'   : MetaIcon(img = 'image-add',
+                                    label = _('Image')),
+            'addNorthArrow': MetaIcon(img = 'north-arrow-add',
+                                      label = _('North Arrow')),
+            }
+        
         return self._getToolbarData((('loadFile', icons['scriptLoad'],
         return self._getToolbarData((('loadFile', icons['scriptLoad'],
                                       self.parent.OnLoadFile),                                    
                                       self.parent.OnLoadFile),                                    
                                      ('instructionFile', icons['scriptSave'],
                                      ('instructionFile', icons['scriptSave'],
@@ -58,25 +93,25 @@ class PsMapToolbar(BaseToolbar):
                                      ('pagesetup', icons['pageSetup'],
                                      ('pagesetup', icons['pageSetup'],
                                       self.parent.OnPageSetup),
                                       self.parent.OnPageSetup),
                                      (None, ),
                                      (None, ),
-                                     ("pointer", Icons["displayWindow"]["pointer"],
+                                     ("pointer", BaseIcons["pointer"],
                                       self.parent.OnPointer, wx.ITEM_CHECK),
                                       self.parent.OnPointer, wx.ITEM_CHECK),
-                                     ('pan', Icons["displayWindow"]['pan'],
+                                     ('pan', BaseIcons['pan'],
                                       self.parent.OnPan, wx.ITEM_CHECK),
                                       self.parent.OnPan, wx.ITEM_CHECK),
-                                     ("zoomin", Icons["displayWindow"]["zoomIn"],
+                                     ("zoomin", BaseIcons["zoomIn"],
                                       self.parent.OnZoomIn, wx.ITEM_CHECK),
                                       self.parent.OnZoomIn, wx.ITEM_CHECK),
-                                     ("zoomout", Icons["displayWindow"]["zoomOut"],
+                                     ("zoomout", BaseIcons["zoomOut"],
                                       self.parent.OnZoomOut, wx.ITEM_CHECK),
                                       self.parent.OnZoomOut, wx.ITEM_CHECK),
                                      ('zoomAll', icons['fullExtent'],
                                      ('zoomAll', icons['fullExtent'],
                                       self.parent.OnZoomAll),
                                       self.parent.OnZoomAll),
                                      (None, ),
                                      (None, ),
                                      ('addMap', icons['addMap'],
                                      ('addMap', icons['addMap'],
                                       self.parent.OnAddMap, wx.ITEM_CHECK),
                                       self.parent.OnAddMap, wx.ITEM_CHECK),
-                                     ('addRaster', icons['addRast'],
+                                     ('addRaster', BaseIcons['addRast'],
                                       self.parent.OnAddRaster),
                                       self.parent.OnAddRaster),
-                                     ('addVector', icons['addVect'],
+                                     ('addVector', BaseIcons['addVect'],
                                       self.parent.OnAddVect),
                                       self.parent.OnAddVect),
-                                     ("dec", Icons["displayWindow"]["overlay"],
-                                      self.parent.OnDecoration),
+                                     ("dec", BaseIcons["overlay"],
+                                      self.OnDecoration),
                                      ("delete", icons["deleteObj"],
                                      ("delete", icons["deleteObj"],
                                       self.parent.OnDelete),
                                       self.parent.OnDelete),
                                      (None, ),
                                      (None, ),
@@ -87,8 +122,19 @@ class PsMapToolbar(BaseToolbar):
                                      ('generatePDF', icons['pdfExport'],
                                      ('generatePDF', icons['pdfExport'],
                                       self.parent.OnPDFFile),
                                       self.parent.OnPDFFile),
                                      (None, ),
                                      (None, ),
-                                     ("help", Icons['misc']['help'],
+                                     ("help", BaseIcons['help'],
                                       self.parent.OnHelp),
                                       self.parent.OnHelp),
                                      ('quit', icons['quit'],
                                      ('quit', icons['quit'],
                                       self.parent.OnCloseWindow))
                                       self.parent.OnCloseWindow))
                                     )
                                     )
+
+    def OnDecoration(self, event):
+        """!Decorations overlay menu
+        """
+        self._onMenu(((PsMapIcons["addLegend"],     self.parent.OnAddLegend),
+                      (PsMapIcons["addMapinfo"],    self.parent.OnAddMapinfo),
+                      (PsMapIcons["addScalebar"],   self.parent.OnAddScalebar),
+                      (PsMapIcons["addText"],       self.parent.OnAddText),
+                      (PsMapIcons["addImage"],      self.parent.OnAddImage),
+                      (PsMapIcons["addNorthArrow"], self.parent.OnAddNorthArrow)))
+        

+ 55 - 3
gui/wxpython/vdigit/toolbars.py

@@ -17,14 +17,14 @@ import wx
 
 
 from grass.script import core as grass
 from grass.script import core as grass
 
 
-from gui_core.toolbars  import BaseToolbar
+from gui_core.toolbars  import BaseToolbar, BaseIcons
 from gui_core.dialogs   import CreateNewVector
 from gui_core.dialogs   import CreateNewVector
-from icons.icon         import Icons
 from vdigit.preferences import VDigitSettingsDialog
 from vdigit.preferences import VDigitSettingsDialog
 from vdigit.main        import VDigit
 from vdigit.main        import VDigit
 from core.debug         import Debug
 from core.debug         import Debug
 from core.settings      import UserSettings
 from core.settings      import UserSettings
 from core.gcmd          import GError
 from core.gcmd          import GError
+from icons.icon         import MetaIcon
 
 
 class VDigitToolbar(BaseToolbar):
 class VDigitToolbar(BaseToolbar):
     """!Toolbar for digitization
     """!Toolbar for digitization
@@ -81,7 +81,59 @@ class VDigitToolbar(BaseToolbar):
         """!Toolbar data
         """!Toolbar data
         """
         """
         data = []
         data = []
-        icons = Icons['vdigit']
+        
+        icons = {
+            'addPoint'        : MetaIcon(img = 'point-create',
+                                         label = _('Digitize new point'),
+                                         desc = _('Left: new point')),
+            'addLine'         : MetaIcon(img = 'line-create',
+                                         label = _('Digitize new line'),
+                                         desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
+            'addBoundary'     : MetaIcon(img = 'boundary-create',
+                                         label = _('Digitize new boundary'),
+                                         desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
+            'addCentroid'     : MetaIcon(img = 'centroid-create',
+                                         label = _('Digitize new centroid'),
+                                         desc = _('Left: new point')),
+            'addArea'         : MetaIcon(img = 'polygon-create',
+                                         label = _('Digitize new area (composition of boundaries without category and one centroid with category)'),
+                                         desc = _('Left: new point')),
+            'addVertex'       : MetaIcon(img = 'vertex-create',
+                                         label = _('Add new vertex'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'deleteLine'      : MetaIcon(img = 'line-delete',
+                                         label = _('Delete feature(s)'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'displayAttr'     : MetaIcon(img = 'attributes-display',
+                                         label = _('Display/update attributes'),
+                                         desc = _('Left: Select')),
+            'displayCats'     : MetaIcon(img = 'cats-display',
+                                         label = _('Display/update categories'),
+                                         desc = _('Left: Select')),
+            'editLine'        : MetaIcon(img = 'line-edit',
+                                         label = _('Edit line/boundary'),
+                                         desc = _('Left: new point; Ctrl+Left: undo last point; Right: close line')),
+            'moveLine'        : MetaIcon(img = 'line-move',
+                                         label = _('Move feature(s)'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'moveVertex'      : MetaIcon(img = 'vertex-move',
+                                         label = _('Move vertex'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'removeVertex'    : MetaIcon(img = 'vertex-delete',
+                                         label = _('Remove vertex'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'settings'        : BaseIcons['settings'].SetLabel(_('Digitization settings')),
+            'quit'            : BaseIcons['quit'].SetLabel(label = _('Quit digitizer'),
+                                                           desc = _('Quit digitizer and save changes')),
+            'additionalTools' : MetaIcon(img = 'tools',
+                                         label = _('Additional tools '
+                                                   '(copy, flip, connect, etc.)'),
+                                         desc = _('Left: Select; Ctrl+Left: Unselect; Right: Confirm')),
+            'undo'             : MetaIcon(img = 'undo',
+                                          label = _('Undo'),
+                                          desc = _('Undo previous changes')),
+            }
+        
         if not self.tools or 'selector' in self.tools:
         if not self.tools or 'selector' in self.tools:
             data.append((None, ))
             data.append((None, ))
         if not self.tools or 'addPoint' in self.tools:
         if not self.tools or 'addPoint' in self.tools:

+ 21 - 4
gui/wxpython/wxplot/base.py

@@ -4,6 +4,7 @@
 @brief Base classes for iinteractive plotting using PyPlot
 @brief Base classes for iinteractive plotting using PyPlot
 
 
 Classes:
 Classes:
+ - base::PlotIcons
  - base::BasePlotFrame
  - base::BasePlotFrame
 
 
 (C) 2011 by the GRASS Development Team
 (C) 2011 by the GRASS Development Team
@@ -20,13 +21,29 @@ import sys
 import wx
 import wx
 import wx.lib.plot as plot
 import wx.lib.plot as plot
 
 
-from core.globalvar import ETCICONDIR
-from core.settings  import UserSettings
-from wxplot.dialogs import TextDialog, OptDialog
-from core.render    import Map
+from core.globalvar    import ETCICONDIR
+from core.settings     import UserSettings
+from wxplot.dialogs    import TextDialog, OptDialog
+from core.render       import Map
+from icons.icon        import MetaIcon
+from gui_core.toolbars import BaseIcons
 
 
 import grass.script as grass
 import grass.script as grass
 
 
+PlotIcons = {
+    'draw'         : MetaIcon(img = 'show',
+                              label = _('Draw/re-draw plot')),
+    'transect'     : MetaIcon(img = 'layer-raster-profile',
+                              label = _('Draw transect in map display window to profile')),
+    'options'      : MetaIcon(img = 'settings',
+                              label = _('Plot options')),
+    'statistics'   : MetaIcon(img = 'check',
+                              label = _('Plot statistics')),
+    'save'         : MetaIcon(img = 'save',
+                              label = _('Save profile data to CSV file')),
+    'quit'         : BaseIcons['quit'].SetLabel(_('Quit plot tool')),
+    }
+
 class BasePlotFrame(wx.Frame):
 class BasePlotFrame(wx.Frame):
     """!Abstract PyPlot display frame class"""
     """!Abstract PyPlot display frame class"""
     def __init__(self, parent = None, id = wx.ID_ANY, size = (700, 300),
     def __init__(self, parent = None, id = wx.ID_ANY, size = (700, 300),

+ 13 - 15
gui/wxpython/wxplot/histogram.py

@@ -22,9 +22,8 @@ import wx.lib.plot as plot
 
 
 import grass.script as grass
 import grass.script as grass
 
 
-from gui_core.toolbars import BaseToolbar
-from wxplot.base       import BasePlotFrame
-from icons.icon        import Icons
+from gui_core.toolbars import BaseToolbar, BaseIcons
+from wxplot.base       import BasePlotFrame, PlotIcons
 from wxplot.dialogs    import HistRasterDialog, PlotStatsFrame
 from wxplot.dialogs    import HistRasterDialog, PlotStatsFrame
 from core.gcmd         import RunCommand, GException, GError
 from core.gcmd         import RunCommand, GException, GError
 
 
@@ -238,31 +237,30 @@ class Histogram2Toolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['plot']
-        return self._getToolbarData((('addraster', Icons['layerManager']["addRast"],
+        return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                       self.parent.OnSelectRaster),
                                      (None, ),
                                      (None, ),
-                                     ('draw', icons["draw"],
+                                     ('draw', PlotIcons["draw"],
                                       self.parent.OnCreateHist),
                                       self.parent.OnCreateHist),
-                                     ('erase', Icons['displayWindow']["erase"],
+                                     ('erase', BaseIcons["erase"],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
-                                     ('drag', Icons['displayWindow']['pan'],
+                                     ('drag', BaseIcons['pan'],
                                       self.parent.OnDrag),
                                       self.parent.OnDrag),
-                                     ('zoom', Icons['displayWindow']['zoomIn'],
+                                     ('zoom', BaseIcons['zoomIn'],
                                       self.parent.OnZoom),
                                       self.parent.OnZoom),
-                                     ('unzoom', Icons['displayWindow']['zoomBack'],
+                                     ('unzoom', BaseIcons['zoomBack'],
                                       self.parent.OnRedraw),
                                       self.parent.OnRedraw),
                                      (None, ),
                                      (None, ),
-                                     ('statistics', icons['statistics'],
+                                     ('statistics', PlotIcons['statistics'],
                                       self.parent.OnStats),
                                       self.parent.OnStats),
-                                     ('image', Icons['displayWindow']["saveFile"],
+                                     ('image', BaseIcons["saveFile"],
                                       self.parent.SaveToFile),
                                       self.parent.SaveToFile),
-                                     ('print', Icons['displayWindow']["print"],
+                                     ('print', BaseIcons["print"],
                                       self.parent.PrintMenu),
                                       self.parent.PrintMenu),
                                      (None, ),
                                      (None, ),
-                                     ('settings', icons["options"],
+                                     ('settings', PlotIcons["options"],
                                       self.parent.PlotOptionsMenu),
                                       self.parent.PlotOptionsMenu),
-                                     ('quit', icons["quit"],
+                                     ('quit', PlotIcons["quit"],
                                       self.parent.OnQuit),
                                       self.parent.OnQuit),
                                      )
                                      )
 )
 )

+ 15 - 17
gui/wxpython/wxplot/profile.py

@@ -34,9 +34,8 @@ except ImportError:
             "binaries.")
             "binaries.")
     print >> sys.stderr, "wxplot.py: " + msg
     print >> sys.stderr, "wxplot.py: " + msg
 
 
-from wxplot.base       import BasePlotFrame
-from gui_core.toolbars import BaseToolbar
-from icons.icon        import Icons
+from wxplot.base       import BasePlotFrame, PlotIcons
+from gui_core.toolbars import BaseToolbar, BaseIcons
 from wxplot.dialogs    import ProfileRasterDialog, PlotStatsFrame
 from wxplot.dialogs    import ProfileRasterDialog, PlotStatsFrame
 from core.gcmd         import RunCommand
 from core.gcmd         import RunCommand
 
 
@@ -396,34 +395,33 @@ class ProfileToolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['plot']
-        return self._getToolbarData((('addraster', Icons['layerManager']["addRast"],
+        return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                       self.parent.OnSelectRaster),
-                                     ('transect', icons["transect"],
+                                     ('transect', PlotIcons["transect"],
                                       self.parent.OnDrawTransect),
                                       self.parent.OnDrawTransect),
                                      (None, ),
                                      (None, ),
-                                     ('draw', icons["draw"],
+                                     ('draw', PlotIcons["draw"],
                                       self.parent.OnCreateProfile),
                                       self.parent.OnCreateProfile),
-                                     ('erase', Icons['displayWindow']["erase"],
+                                     ('erase', BaseIcons["erase"],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
-                                     ('drag', Icons['displayWindow']['pan'],
+                                     ('drag', BaseIcons['pan'],
                                       self.parent.OnDrag),
                                       self.parent.OnDrag),
-                                     ('zoom', Icons['displayWindow']['zoomIn'],
+                                     ('zoom', BaseIcons['zoomIn'],
                                       self.parent.OnZoom),
                                       self.parent.OnZoom),
-                                     ('unzoom', Icons['displayWindow']['zoomBack'],
+                                     ('unzoom', BaseIcons['zoomBack'],
                                       self.parent.OnRedraw),
                                       self.parent.OnRedraw),
                                      (None, ),
                                      (None, ),
-                                     ('statistics', icons['statistics'],
+                                     ('statistics', PlotIcons['statistics'],
                                       self.parent.OnStats),
                                       self.parent.OnStats),
-                                     ('datasave', icons["save"],
+                                     ('datasave', PlotIcons["save"],
                                       self.parent.SaveProfileToFile),
                                       self.parent.SaveProfileToFile),
-                                     ('image', Icons['displayWindow']["saveFile"],
+                                     ('image', BaseIcons["saveFile"],
                                       self.parent.SaveToFile),
                                       self.parent.SaveToFile),
-                                     ('print', Icons['displayWindow']["print"],
+                                     ('print', BaseIcons["print"],
                                       self.parent.PrintMenu),
                                       self.parent.PrintMenu),
                                      (None, ),
                                      (None, ),
-                                     ('settings', icons["options"],
+                                     ('settings', PlotIcons["options"],
                                       self.parent.PlotOptionsMenu),
                                       self.parent.PlotOptionsMenu),
-                                     ('quit', icons["quit"],
+                                     ('quit', PlotIcons["quit"],
                                       self.parent.OnQuit),
                                       self.parent.OnQuit),
                                      ))
                                      ))

+ 13 - 15
gui/wxpython/wxplot/scatter.py

@@ -22,9 +22,8 @@ import wx.lib.plot as plot
 
 
 import grass.script as grass
 import grass.script as grass
 
 
-from wxplot.base       import BasePlotFrame
-from gui_core.toolbars import BaseToolbar
-from icons.icon        import Icons
+from wxplot.base       import BasePlotFrame, PlotIcons
+from gui_core.toolbars import BaseToolbar, BaseIcons
 from wxplot.dialogs    import ScatterRasterDialog, PlotStatsFrame
 from wxplot.dialogs    import ScatterRasterDialog, PlotStatsFrame
 from core.gcmd         import RunCommand, GException, GError
 from core.gcmd         import RunCommand, GException, GError
 
 
@@ -281,30 +280,29 @@ class ScatterToolbar(BaseToolbar):
         
         
     def _toolbarData(self):
     def _toolbarData(self):
         """!Toolbar data"""
         """!Toolbar data"""
-        icons = Icons['plot']
-        return self._getToolbarData((('addraster', Icons['layerManager']["addRast"],
+        return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                       self.parent.OnSelectRaster),
                                      (None, ),
                                      (None, ),
-                                     ('draw', icons["draw"],
+                                     ('draw', PlotIcons["draw"],
                                       self.parent.OnCreateScatter),
                                       self.parent.OnCreateScatter),
-                                     ('erase', Icons['displayWindow']["erase"],
+                                     ('erase', BaseIcons["erase"],
                                       self.parent.OnErase),
                                       self.parent.OnErase),
-                                     ('drag', Icons['displayWindow']['pan'],
+                                     ('drag', BaseIcons['pan'],
                                       self.parent.OnDrag),
                                       self.parent.OnDrag),
-                                     ('zoom', Icons['displayWindow']['zoomIn'],
+                                     ('zoom', BaseIcons['zoomIn'],
                                       self.parent.OnZoom),
                                       self.parent.OnZoom),
-                                     ('unzoom', Icons['displayWindow']['zoomBack'],
+                                     ('unzoom', BaseIcons['zoomBack'],
                                       self.parent.OnRedraw),
                                       self.parent.OnRedraw),
                                      (None, ),
                                      (None, ),
-                                     ('statistics', icons['statistics'],
+                                     ('statistics', PlotIcons['statistics'],
                                       self.parent.OnRegression),
                                       self.parent.OnRegression),
-                                     ('image', Icons['displayWindow']["saveFile"],
+                                     ('image', BaseIcons["saveFile"],
                                       self.parent.SaveToFile),
                                       self.parent.SaveToFile),
-                                     ('print', Icons['displayWindow']["print"],
+                                     ('print', BaseIcons["print"],
                                       self.parent.PrintMenu),
                                       self.parent.PrintMenu),
                                      (None, ),
                                      (None, ),
-                                     ('settings', icons["options"],
+                                     ('settings', PlotIcons["options"],
                                       self.parent.PlotOptionsMenu),
                                       self.parent.PlotOptionsMenu),
-                                     ('quit', icons["quit"],
+                                     ('quit', PlotIcons["quit"],
                                       self.parent.OnQuit),
                                       self.parent.OnQuit),
                                      ))
                                      ))