Browse Source

wxGUI/toolbars: fix toolbar tools labels when toolbar width is shrinked and toolbar menu is created (#1147)

* wxGUI/animation
* wxGUI/datacatalog
* wxGUI/example/toolbar
* wxGUI/gcp
* wxGUI/gmodeler
* wxGUI/gui_core/pyedit
* wxGUI/gui_core/simplelmgr
* wxGUI/gui_core/toolbars
* wxGUI/iclass
* wxGUI/image2target
* wxGUI/iscatt
* wxGUI/lmgr
* wxGUI/lmgr/toolbars
* wxGUI/mapdisp
* wxGUI/mapdisplay
* wxGUI/mapswipe
* wxGUI/modules/histogram
* wxGUI/photo2image
* wxGUI/psmap
* wxGUI/rdigit
* wxGUI/rlisetup
* wxGUI/vdigit
* wxGUI/vnet
* wxGUI/wxplot/histogram
* wxGUI/wxplot/profile
* wxGUI/wxplot/scatter
* wxGUIgui/gui_core/simplelmgr
Tomas Zigo 2 years ago
parent
commit
7d79d826dd

+ 58 - 13
doc/gui/wxpython/example/toolbars.py

@@ -1,4 +1,4 @@
-"""!
+"""
 @package example.toolbars
 
 @brief Example toolbars and icons.
@@ -47,16 +47,51 @@ class ExampleMapToolbar(BaseToolbar):
         icons = BaseIcons
         return self._getToolbarData(
             (
-                ("displaymap", icons["display"], self.parent.OnDraw),
-                ("rendermap", icons["render"], self.parent.OnRender),
-                ("erase", icons["erase"], self.parent.OnErase),
+                (
+                    ("displaymap", icons["display"].label),
+                    icons["display"],
+                    self.parent.OnDraw,
+                ),
+                (
+                    ("rendermap", icons["render"].label),
+                    icons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", icons["erase"].label),
+                    icons["erase"],
+                    self.parent.OnErase,
+                ),
                 (None,),  # creates separator
-                ("pan", icons["pan"], self.parent.OnPan, wx.ITEM_CHECK),  # toggle tool
-                ("zoomIn", icons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomOut", icons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
+                (
+                    ("pan", icons["pan"].label),
+                    icons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),  # toggle tool
+                (
+                    ("zoomIn", icons["zoomIn"].label),
+                    icons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomOut", icons["zoomOut"].label),
+                    icons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
                 (None,),
-                ("zoomBack", icons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomToMap", icons["zoomExtent"], self.parent.OnZoomToMap),
+                (
+                    ("zoomBack", icons["zoomBack"].label),
+                    icons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomToMap", icons["zoomExtent"].label),
+                    icons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
             )
         )
 
@@ -76,7 +111,11 @@ class ExampleMainToolbar(BaseToolbar):
     def _toolbarData(self):
         """!Toolbar data"""
         return self._getToolbarData(
-            (("addRaster", BaseIcons["addRast"], self.parent.OnSelectRaster),)
+            (
+                ("addRaster", BaseIcons["addRast"].label),
+                BaseIcons["addRast"],
+                self.parent.OnSelectRaster,
+            ),
         )
 
 
@@ -96,7 +135,13 @@ class ExampleMiscToolbar(BaseToolbar):
         icons = BaseIcons
         return self._getToolbarData(
             (
-                ("help", icons["help"], self.parent.OnHelp),
-                ("quit", icons["quit"], self.parent.OnCloseWindow),
-            )
+                ("help", icons["help"].label),
+                icons["help"],
+                self.parent.OnHelp,
+            ),
+            (
+                ("quit", icons["quit"].label),
+                icons["quit"],
+                self.parent.OnCloseWindow,
+            ),
         )

+ 71 - 15
gui/wxpython/animation/toolbars.py

@@ -77,11 +77,23 @@ class MainToolbar(BaseToolbar):
         icons = ganimIcons
         return self._getToolbarData(
             (
-                ("addAnimation", icons["addAnimation"], self.parent.OnAddAnimation),
-                ("editAnimation", icons["editAnimation"], self.parent.OnEditAnimation),
-                ("reload", BaseIcons["render"], self.parent.Reload),
                 (
-                    "exportAnimation",
+                    ("addAnimation", icons["addAnimation"].label),
+                    icons["addAnimation"],
+                    self.parent.OnAddAnimation,
+                ),
+                (
+                    ("editAnimation", icons["editAnimation"].label),
+                    icons["editAnimation"],
+                    self.parent.OnEditAnimation,
+                ),
+                (
+                    ("reload", BaseIcons["render"].label),
+                    BaseIcons["render"],
+                    self.parent.Reload,
+                ),
+                (
+                    ("exportAnimation", icons["exportAnimation"].label),
                     icons["exportAnimation"],
                     self.parent.OnExportAnimation,
                 ),
@@ -111,25 +123,52 @@ class AnimationToolbar(BaseToolbar):
         icons = ganimIcons
         return self._getToolbarData(
             (
-                ("playBack", icons["playBack"], self.OnPlayBack),
-                ("playForward", icons["playForward"], self.OnPlayForward),
-                ("pause", icons["pause"], self.OnPause, wx.ITEM_CHECK),
-                ("stop", icons["stop"], self.OnStop),
+                (
+                    ("playBack", icons["playBack"].label),
+                    icons["playBack"],
+                    self.OnPlayBack,
+                ),
+                (
+                    ("playForward", icons["playForward"].label),
+                    icons["playForward"],
+                    self.OnPlayForward,
+                ),
+                (
+                    ("pause", icons["pause"].label),
+                    icons["pause"],
+                    self.OnPause,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("stop", icons["stop"].label),
+                    icons["stop"],
+                    self.OnStop,
+                ),
                 (None,),
                 (
-                    "oneDirectionReplay",
+                    (
+                        "oneDirectionReplay",
+                        icons["oneDirectionReplay"].label,
+                    ),
                     icons["oneDirectionReplay"],
                     self.OnOneDirectionReplay,
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "bothDirectionReplay",
+                    (
+                        "bothDirectionReplay",
+                        icons["bothDirectionReplay"].label,
+                    ),
                     icons["bothDirectionReplay"],
                     self.OnBothDirectionReplay,
                     wx.ITEM_CHECK,
                 ),
                 (None,),
-                ("adjustSpeed", icons["speed"], self.parent.OnAdjustSpeed),
+                (
+                    ("adjustSpeed", icons["speed"].label),
+                    icons["speed"],
+                    self.parent.OnAdjustSpeed,
+                ),
             )
         )
 
@@ -228,9 +267,21 @@ class MiscToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("settings", BaseIcons["settings"], self.parent.OnPreferences),
-                ("help", BaseIcons["help"], self.parent.OnHelp),
-                ("quit", BaseIcons["quit"], self.parent.OnCloseWindow),
+                (
+                    ("settings", BaseIcons["settings"].label),
+                    BaseIcons["settings"],
+                    self.parent.OnPreferences,
+                ),
+                (
+                    ("help", BaseIcons["help"].label),
+                    BaseIcons["help"],
+                    self.parent.OnHelp,
+                ),
+                (
+                    ("quit", BaseIcons["quit"].label),
+                    BaseIcons["quit"],
+                    self.parent.OnCloseWindow,
+                ),
             )
         )
 
@@ -247,7 +298,12 @@ class AnimSimpleLmgrToolbar(SimpleLmgrToolbar):
         data = SimpleLmgrToolbar._toolbarData(self)
         if self._style & SIMPLE_LMGR_STDS:
             data.insert(
-                0, ("addSeries", simpleLmgrIcons["addSeries"], self.parent.OnAddStds)
+                0,
+                (
+                    ("addSeries", simpleLmgrIcons["addSeries"].label),
+                    simpleLmgrIcons["addSeries"],
+                    self.parent.OnAddStds,
+                ),
             )
         return data
 

+ 43 - 10
gui/wxpython/datacatalog/toolbars.py

@@ -114,24 +114,57 @@ class DataCatalogToolbar(BaseToolbar):
         # to reuse icons in ./trunk/gui/icons/grass or add new ones there.
         return self._getToolbarData(
             (
-                ("reloadTree", icons["reloadTree"], self.parent.OnReloadTree),
                 (
-                    "reloadMapset",
+                    ("reloadTree", icons["reloadTree"].label),
+                    icons["reloadTree"],
+                    self.parent.OnReloadTree,
+                ),
+                (
+                    ("reloadMapset", icons["reloadMapset"].label),
                     icons["reloadMapset"],
                     self.parent.OnReloadCurrentMapset,
                 ),
-                ("lock", icons["locked"], self.OnSetRestriction, wx.ITEM_CHECK),
-                ("addGrassDB", icons["addGrassDB"], self.parent.OnAddGrassDB),
-                ("addLocation", icons["addLocation"], self.parent.OnCreateLocation),
                 (
-                    "downloadLocation",
+                    ("lock", icons["locked"].label),
+                    icons["locked"],
+                    self.OnSetRestriction,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("addGrassDB", icons["addGrassDB"].label),
+                    icons["addGrassDB"],
+                    self.parent.OnAddGrassDB,
+                ),
+                (
+                    ("addLocation", icons["addLocation"].label),
+                    icons["addLocation"],
+                    self.parent.OnCreateLocation,
+                ),
+                (
+                    ("downloadLocation", icons["downloadLocation"].label),
                     icons["downloadLocation"],
                     self.parent.OnDownloadLocation,
                 ),
-                ("addMapset", icons["addMapset"], self.parent.OnCreateMapset),
-                ("importRaster", icons["importRaster"], self.parent.OnImportGdalLayers),
-                ("importVector", icons["importVector"], self.parent.OnImportOgrLayers),
-                ("importLayer", icons["importLayer"], self.parent.OnImportMenu),
+                (
+                    ("addMapset", icons["addMapset"].label),
+                    icons["addMapset"],
+                    self.parent.OnCreateMapset,
+                ),
+                (
+                    ("importRaster", icons["importRaster"].label),
+                    icons["importRaster"],
+                    self.parent.OnImportGdalLayers,
+                ),
+                (
+                    ("importVector", icons["importVector"].label),
+                    icons["importVector"],
+                    self.parent.OnImportOgrLayers,
+                ),
+                (
+                    ("importLayer", icons["importLayer"].label),
+                    icons["importLayer"],
+                    self.parent.OnImportMenu,
+                ),
             )
         )
 

+ 108 - 24
gui/wxpython/gcp/toolbars.py

@@ -50,15 +50,43 @@ class GCPManToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("gcpAdd", icons["gcpAdd"], self.parent.AddGCP),
-                ("gcpDelete", icons["gcpDelete"], self.parent.DeleteGCP),
-                ("gcpClear", icons["gcpClear"], self.parent.ClearGCP),
+                (
+                    ("gcpAdd", icons["gcpAdd"].label),
+                    icons["gcpAdd"],
+                    self.parent.AddGCP,
+                ),
+                (
+                    ("gcpDelete", icons["gcpDelete"].label),
+                    icons["gcpDelete"],
+                    self.parent.DeleteGCP,
+                ),
+                (
+                    ("gcpClear", icons["gcpClear"].label),
+                    icons["gcpClear"],
+                    self.parent.ClearGCP,
+                ),
                 (None,),
-                ("rms", icons["gcpRms"], self.parent.OnRMS),
-                ("georect", icons["georectify"], self.parent.OnGeorect),
+                (
+                    ("rms", icons["gcpRms"].label),
+                    icons["gcpRms"],
+                    self.parent.OnRMS,
+                ),
+                (
+                    ("georect", icons["georectify"].label),
+                    icons["georectify"],
+                    self.parent.OnGeorect,
+                ),
                 (None,),
-                ("gcpSave", icons["gcpSave"], self.parent.SaveGCPs),
-                ("gcpReload", icons["gcpReload"], self.parent.ReloadGCPs),
+                (
+                    ("gcpSave", icons["gcpSave"].label),
+                    icons["gcpSave"],
+                    self.parent.SaveGCPs,
+                ),
+                (
+                    ("gcpReload", icons["gcpReload"].label),
+                    icons["gcpReload"],
+                    self.parent.ReloadGCPs,
+                ),
             )
         )
 
@@ -106,35 +134,91 @@ class GCPDisplayToolbar(BaseToolbar):
                 label=_("Update GCP coordinates"),
                 desc=_("Update GCP coordinates)"),
             ),
-            "quit": BaseIcons["quit"].SetLabel(_("Quit georectification tool")),
-            "settings": BaseIcons["settings"].SetLabel(_("Georectifier settings")),
-            "help": BaseIcons["help"].SetLabel(_("Georectifier manual")),
+            "quit": BaseIcons["quit"],
+            "settings": BaseIcons["settings"],
+            "help": BaseIcons["help"],
         }
 
         return self._getToolbarData(
             (
-                ("displaymap", BaseIcons["display"], self.parent.OnDraw),
-                ("rendermap", BaseIcons["render"], self.parent.OnRender),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
+                (
+                    ("displaymap", BaseIcons["display"].label),
+                    BaseIcons["display"],
+                    self.parent.OnDraw,
+                ),
+                (
+                    ("rendermap", BaseIcons["render"].label),
+                    BaseIcons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
                 (None,),
-                ("gcpset", icons["gcpSet"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomin", BaseIcons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomout", BaseIcons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoommenu", BaseIcons["zoomMenu"], self.parent.OnZoomMenuGCP),
+                (
+                    ("gcpset", icons["gcpSet"].label),
+                    icons["gcpSet"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomin", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomout", BaseIcons["zoomOut"].label),
+                    BaseIcons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoommenu", BaseIcons["zoomMenu"].label),
+                    BaseIcons["zoomMenu"],
+                    self.parent.OnZoomMenuGCP,
+                ),
                 (None,),
-                ("zoomback", BaseIcons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomtomap", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
+                (
+                    ("zoomback", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomtomap", BaseIcons["zoomExtent"].label),
+                    BaseIcons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
                 (None,),
                 (
-                    "mapDispSettings",
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
                     BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
                 (None,),
-                ("settings", icons["settings"], self.parent.OnSettings),
-                ("help", icons["help"], self.parent.OnHelp),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnSettings,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
                 (None,),
-                ("quit", icons["quit"], self.parent.OnQuit),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 88 - 19
gui/wxpython/gmodeler/toolbars.py

@@ -60,37 +60,106 @@ class ModelerToolbar(BaseToolbar):
             "comment": MetaIcon(img="label-add", label=_("Add comment to model")),
             "run": MetaIcon(img="execute", label=_("Run model")),
             "validate": MetaIcon(img="check", label=_("Validate model")),
-            "settings": BaseIcons["settings"].SetLabel(_("Modeler settings")),
+            "settings": BaseIcons["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")),
+            "help": BaseIcons["help"],
+            "quit": BaseIcons["quit"],
         }
 
         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),
+                (
+                    ("new", icons["new"].label.rsplit(" ", 1)[0]),
+                    icons["new"],
+                    self.parent.OnModelNew,
+                ),
+                (
+                    ("open", icons["open"].label.rsplit(" ", 1)[0]),
+                    icons["open"],
+                    self.parent.OnModelOpen,
+                ),
+                (
+                    ("save", icons["save"].label.rsplit(" ", 1)[0]),
+                    icons["save"],
+                    self.parent.OnModelSave,
+                ),
+                (
+                    ("image", icons["toImage"].label.rsplit(" ", 1)[0]),
+                    icons["toImage"],
+                    self.parent.OnExportImage,
+                ),
+                (
+                    ("python", icons["toPython"].label),
+                    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),
-                ("comment", icons["comment"], self.parent.OnAddComment),
+                (
+                    ("action", icons["actionAdd"].label),
+                    icons["actionAdd"],
+                    self.parent.OnAddAction,
+                ),
+                (
+                    ("data", icons["dataAdd"].label),
+                    icons["dataAdd"],
+                    self.parent.OnAddData,
+                ),
+                (
+                    ("relation", icons["relation"].label),
+                    icons["relation"],
+                    self.parent.OnDefineRelation,
+                ),
+                (
+                    ("loop", icons["loop"].label),
+                    icons["loop"],
+                    self.parent.OnDefineLoop,
+                ),
+                (
+                    ("comment", icons["comment"].label),
+                    icons["comment"],
+                    self.parent.OnAddComment,
+                ),
                 (None,),
-                ("redraw", icons["redraw"], self.parent.OnCanvasRefresh),
-                ("validate", icons["validate"], self.parent.OnValidateModel),
-                ("run", icons["run"], self.parent.OnRunModel),
+                (
+                    ("redraw", icons["redraw"].label),
+                    icons["redraw"],
+                    self.parent.OnCanvasRefresh,
+                ),
+                (
+                    ("validate", icons["validate"].label),
+                    icons["validate"],
+                    self.parent.OnValidateModel,
+                ),
+                (
+                    ("run", icons["run"].label),
+                    icons["run"],
+                    self.parent.OnRunModel,
+                ),
                 (None,),
-                ("variables", icons["variables"], self.parent.OnVariables),
-                ("settings", icons["settings"], self.parent.OnPreferences),
-                ("help", BaseIcons["help"], self.parent.OnHelp),
+                (
+                    ("variables", icons["variables"].label),
+                    icons["variables"],
+                    self.parent.OnVariables,
+                ),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnPreferences,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
                 (None,),
-                ("quit", icons["quit"], self.parent.OnCloseWindow),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnCloseWindow,
+                ),
             )
         )

+ 28 - 7
gui/wxpython/gui_core/pyedit.py

@@ -663,7 +663,8 @@ class PyEditToolbar(BaseToolbar):
             # TODO: better icons for overwrite modes
             "overwriteTrue": MetaIcon(img="locked", label=_("Activate overwrite")),
             "overwriteFalse": MetaIcon(img="unlocked", label=_("Deactive overwrite")),
-            "quit": MetaIcon(img="quit", label=_("Quit Simple Python Editor")),
+            "help": BaseIcons["help"],
+            "quit": BaseIcons["quit"],
         }
 
         # workaround for http://trac.wxwidgets.org/ticket/13888
@@ -679,19 +680,39 @@ class PyEditToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("open", self.icons["open"], self.parent.OnOpen),
-                ("save", self.icons["save"], self.parent.OnSave),
+                (
+                    ("open", self.icons["open"].label.rsplit(" ", 1)[0]),
+                    self.icons["open"],
+                    self.parent.OnOpen,
+                ),
+                (
+                    ("save", self.icons["save"].label.rsplit(" ", 1)[0]),
+                    self.icons["save"],
+                    self.parent.OnSave,
+                ),
                 (None,),
-                ("run", self.icons["run"], self.parent.OnRun),
                 (
-                    "overwrite",
+                    ("run", self.icons["run"].label.rsplit(" ", 1)[0]),
+                    self.icons["run"],
+                    self.parent.OnRun,
+                ),
+                (
+                    ("overwrite", self.icons["overwriteTrue"].label),
                     self.icons["overwriteTrue"],
                     self.OnSetOverwrite,
                     wx.ITEM_CHECK,
                 ),
                 (None,),
-                ("help", BaseIcons["help"], self.parent.OnHelp),
-                ("quit", self.icons["quit"], self.parent.OnClose),
+                (
+                    ("help", self.icons["help"].label),
+                    self.icons["help"],
+                    self.parent.OnHelp,
+                ),
+                (
+                    ("quit", self.icons["quit"].label),
+                    self.icons["quit"],
+                    self.parent.OnClose,
+                ),
             )
         )
 

+ 57 - 9
gui/wxpython/gui_core/simplelmgr.py

@@ -441,22 +441,70 @@ class SimpleLmgrToolbar(BaseToolbar):
     def _toolbarData(self):
         """Toolbar data"""
         data = [
-            ("edit", icons["edit"], self.parent.OnLayerChangeProperties),
-            ("remove", icons["remove"], self.parent.OnRemove),
+            (
+                ("edit", icons["edit"].label),
+                icons["edit"],
+                self.parent.OnLayerChangeProperties,
+            ),
+            (
+                ("remove", icons["remove"].label),
+                icons["remove"],
+                self.parent.OnRemove,
+            ),
             (None,),
-            ("up", icons["up"], self.parent.OnLayerUp),
-            ("down", icons["down"], self.parent.OnLayerDown),
+            (
+                ("up", icons["up"].label),
+                icons["up"],
+                self.parent.OnLayerUp,
+            ),
+            (
+                ("down", icons["down"].label),
+                icons["down"],
+                self.parent.OnLayerDown,
+            ),
             (None,),
-            ("opacity", icons["opacity"], self.parent.OnLayerChangeOpacity),
+            (
+                ("opacity", icons["opacity"].label),
+                icons["opacity"],
+                self.parent.OnLayerChangeOpacity,
+            ),
         ]
         if self._style & SIMPLE_LMGR_RASTER3D:
-            data.insert(0, ("addRaster3d", icons["addRast3d"], self.parent.OnAddRast3d))
+            data.insert(
+                0,
+                (
+                    ("addRaster3d", icons["addRast3d"].label),
+                    icons["addRast3d"],
+                    self.parent.OnAddRast3d,
+                ),
+            )
         if self._style & SIMPLE_LMGR_RGB:
-            data.insert(0, ("addRGB", icons["addRGB"], self.parent.OnAddRGB))
+            data.insert(
+                0,
+                (
+                    ("addRGB", icons["addRGB"].label),
+                    icons["addRGB"],
+                    self.parent.OnAddRGB,
+                ),
+            )
         if self._style & SIMPLE_LMGR_VECTOR:
-            data.insert(0, ("addVector", BaseIcons["addVect"], self.parent.OnAddVector))
+            data.insert(
+                0,
+                (
+                    ("addVector", BaseIcons["addVect"].label),
+                    BaseIcons["addVect"],
+                    self.parent.OnAddVector,
+                ),
+            )
         if self._style & SIMPLE_LMGR_RASTER:
-            data.insert(0, ("addRaster", BaseIcons["addRast"], self.parent.OnAddRaster))
+            data.insert(
+                0,
+                (
+                    ("addRaster", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.parent.OnAddRaster,
+                ),
+            )
 
         return data
 

+ 34 - 13
gui/wxpython/gui_core/toolbars.py

@@ -75,7 +75,7 @@ BaseIcons = {
         label=_("Add map elements"),
         desc=_("Overlay elements like scale and legend onto map"),
     ),
-    "histogramD": MetaIcon(
+    "histogram": MetaIcon(
         img="layer-raster-histogram", label=_("Create histogram with d.histogram")
     ),
     "settings": MetaIcon(img="settings", label=_("Settings")),
@@ -98,10 +98,15 @@ class BaseToolbar(ToolBar):
                 self.Realize()
 
             def _toolbarData(self):
-                return self._getToolbarData((("help", Icons["help"],
-                                              self.parent.OnHelp),
-                                              ))
-
+                # e.g. ("help", _("Help")) tool short label (triangle/arrow
+                # at the right side of the toolbar)
+                return self._getToolbarData(
+                    (
+                        ("help", Icons["help"].label),
+                        Icons["help"],
+                        self.parent.OnHelp
+                    ),
+                )
     """
 
     def __init__(
@@ -135,8 +140,14 @@ class BaseToolbar(ToolBar):
         """
         bmpDisabled = wx.NullBitmap
         tool = -1
+
+        if isinstance(label, tuple):
+            internal_label, label = label[0], label[1]
+        else:
+            internal_label = label
+
         if label:
-            tool = vars(self)[label] = NewId()
+            tool = vars(self)[internal_label] = NewId()
             Debug.msg(
                 3, "CreateTool(): tool=%d, label=%s bitmap=%s" % (tool, label, bitmap)
             )
@@ -162,13 +173,20 @@ class BaseToolbar(ToolBar):
         :param enable: True for enable otherwise disable
         """
         for tool in self._data:
-            if tool[0] == "":  # separator
-                continue
-
+            if isinstance(tool[0], tuple):
+                if tool[0][0] == "":  # separator
+                    continue
+                else:
+                    internal_label = tool[0][0]
+            else:
+                if tool[0] == "":  # separator
+                    continue
+                else:
+                    internal_label = tool[0]
             if enable:
-                self.SetToolLongHelp(vars(self)[tool[0]], tool[4])
+                self.SetToolLongHelp(vars(self)[internal_label], tool[4])
             else:
-                self.SetToolLongHelp(vars(self)[tool[0]], "")
+                self.SetToolLongHelp(vars(self)[internal_label], "")
 
     def OnTool(self, event):
         """Tool selected"""
@@ -200,11 +218,14 @@ class BaseToolbar(ToolBar):
     def Enable(self, tool, enable=True):
         """Enable/Disable defined tool
 
-        :param tool: name
+        :param str/tuple tool: name
         :param enable: True to enable otherwise disable tool
         """
         try:
-            id = getattr(self, tool)
+            if isinstance(tool, tuple):
+                id = getattr(self, tool[0])
+            else:
+                id = getattr(self, tool)
         except AttributeError:
             # TODO: test everything that this is not raised
             # this error was ignored for a long time

+ 111 - 24
gui/wxpython/iclass/toolbars.py

@@ -100,21 +100,64 @@ class IClassMapToolbar(BaseToolbar):
         icons = BaseIcons
         return self._getToolbarData(
             (
-                ("displaymap", icons["display"], self.parent.OnDraw),
-                ("rendermap", icons["render"], self.parent.OnRender),
-                ("erase", icons["erase"], self.parent.OnErase),
+                (
+                    ("displaymap", icons["display"].label),
+                    icons["display"],
+                    self.parent.OnDraw,
+                ),
+                (
+                    ("rendermap", icons["render"].label),
+                    icons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", icons["erase"].label),
+                    icons["erase"],
+                    self.parent.OnErase,
+                ),
                 (None,),
-                ("pan", icons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomIn", icons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomOut", icons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoomRegion", icons["zoomRegion"], self.parent.OnZoomToWind),
-                ("zoomMenu", icons["zoomMenu"], self.parent.OnZoomMenu),
+                (
+                    ("pan", icons["pan"].label),
+                    icons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomIn", icons["zoomIn"].label),
+                    icons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomOut", icons["zoomOut"].label),
+                    icons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomRegion", icons["zoomRegion"].label),
+                    icons["zoomRegion"],
+                    self.parent.OnZoomToWind,
+                ),
+                (
+                    ("zoomMenu", icons["zoomMenu"].label),
+                    icons["zoomMenu"],
+                    self.parent.OnZoomMenu,
+                ),
                 (None,),
-                ("zoomBack", icons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomToMap", icons["zoomExtent"], self.parent.OnZoomToMap),
                 (
-                    "mapDispSettings",
-                    icons["mapDispSettings"],
+                    ("zoomBack", icons["zoomBack"].label),
+                    icons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomToMap", icons["zoomExtent"].label),
+                    icons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
+                (
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
+                    BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
             )
@@ -164,18 +207,38 @@ class IClassToolbar(BaseToolbar):
         return self._getToolbarData(
             (
                 (
-                    "selectGroup",
+                    ("selectGroup", icons["selectGroup"].label),
                     icons["selectGroup"],
                     lambda event: self.parent.AddBands(),
                 ),
                 (None,),
-                ("classManager", icons["classManager"], self.parent.OnCategoryManager),
+                (
+                    ("classManager", icons["classManager"].label),
+                    icons["classManager"],
+                    self.parent.OnCategoryManager,
+                ),
                 (None,),
-                ("runAnalysis", icons["run"], self.parent.OnRunAnalysis),
+                (
+                    ("runAnalysis", icons["run"].label),
+                    icons["run"],
+                    self.parent.OnRunAnalysis,
+                ),
                 (None,),
-                ("importAreas", icons["importAreas"], self.parent.OnImportAreas),
-                ("exportAreas", icons["exportAreas"], self.parent.OnExportAreas),
-                ("sigFile", icons["sigFile"], self.parent.OnSaveSigFile),
+                (
+                    ("importAreas", icons["importAreas"].label),
+                    icons["importAreas"],
+                    self.parent.OnImportAreas,
+                ),
+                (
+                    ("exportAreas", icons["exportAreas"].label),
+                    icons["exportAreas"],
+                    self.parent.OnExportAreas,
+                ),
+                (
+                    ("sigFile", icons["sigFile"].label),
+                    icons["sigFile"],
+                    self.parent.OnSaveSigFile,
+                ),
             )
         )
 
@@ -308,10 +371,26 @@ class IClassMapManagerToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("addRast", BaseIcons["addRast"], self.OnAddRast),
-                ("addRgb", iClassIcons["addRgb"], self.OnAddRGB),
-                ("delRast", iClassIcons["delCmd"], self.OnDelRast),
-                ("setOpacity", iClassIcons["opacity"], self.OnSetOpacity),
+                (
+                    ("addRast", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.OnAddRast,
+                ),
+                (
+                    ("addRgb", iClassIcons["addRgb"].label),
+                    iClassIcons["addRgb"],
+                    self.OnAddRGB,
+                ),
+                (
+                    ("delRast", iClassIcons["delCmd"].label),
+                    iClassIcons["delCmd"],
+                    self.OnDelRast,
+                ),
+                (
+                    ("setOpacity", iClassIcons["opacity"].label),
+                    iClassIcons["opacity"],
+                    self.OnSetOpacity,
+                ),
             )
         )
 
@@ -367,7 +446,15 @@ class IClassMiscToolbar(BaseToolbar):
         icons = BaseIcons
         return self._getToolbarData(
             (
-                ("help", icons["help"], self.parent.OnHelp),
-                ("quit", icons["quit"], self.parent.OnCloseWindow),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnCloseWindow,
+                ),
             )
         )

+ 108 - 24
gui/wxpython/image2target/ii2t_toolbars.py

@@ -50,15 +50,43 @@ class GCPManToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("gcpAdd", icons["gcpAdd"], self.parent.AddGCP),
-                ("gcpDelete", icons["gcpDelete"], self.parent.DeleteGCP),
-                ("gcpClear", icons["gcpClear"], self.parent.ClearGCP),
+                (
+                    ("gcpAdd", icons["gcpAdd"].label),
+                    icons["gcpAdd"],
+                    self.parent.AddGCPm,
+                ),
+                (
+                    ("gcpDelete", icons["gcpDelete"].label),
+                    icons["gcpDelete"],
+                    self.parent.DeleteGCP,
+                ),
+                (
+                    ("gcpClear", icons["gcpClear"].label),
+                    icons["gcpClear"],
+                    self.parent.ClearGCP,
+                ),
                 (None,),
-                ("rms", icons["gcpRms"], self.parent.OnRMS),
-                ("georect", icons["georectify"], self.parent.OnGeorect),
+                (
+                    ("rms", icons["gcpRms"].label),
+                    icons["gcpRms"],
+                    self.parent.OnRMS,
+                ),
+                (
+                    ("georect", icons["georectify"].label),
+                    icons["georectify"],
+                    self.parent.OnGeorect,
+                ),
                 (None,),
-                ("gcpSave", icons["gcpSave"], self.parent.SaveGCPs),
-                ("gcpReload", icons["gcpReload"], self.parent.ReloadGCPs),
+                (
+                    ("gcpSave", icons["gcpSave"].label),
+                    icons["gcpSave"],
+                    self.parent.SaveGCPs,
+                ),
+                (
+                    ("gcpReload", icons["gcpReload"].label),
+                    icons["gcpReload"],
+                    self.parent.ReloadGCPs,
+                ),
             )
         )
 
@@ -106,35 +134,91 @@ class GCPDisplayToolbar(BaseToolbar):
                 label=_("Update GCP coordinates"),
                 desc=_("Update GCP coordinates)"),
             ),
-            "quit": BaseIcons["quit"].SetLabel(_("Quit georectification tool")),
-            "settings": BaseIcons["settings"].SetLabel(_("Georectifier settings")),
-            "help": BaseIcons["help"].SetLabel(_("Georectifier manual")),
+            "quit": BaseIcons["quit"],
+            "settings": BaseIcons["settings"],
+            "help": BaseIcons["help"],
         }
 
         return self._getToolbarData(
             (
-                ("displaymap", BaseIcons["display"], self.parent.OnDraw),
-                ("rendermap", BaseIcons["render"], self.parent.OnRender),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
+                (
+                    ("displaymap", BaseIcons["display"].label),
+                    BaseIcons["display"],
+                    self.parent.OnDraw,
+                ),
+                (
+                    ("rendermap", BaseIcons["render"].label),
+                    BaseIcons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
                 (None,),
-                ("gcpset", icons["gcpSet"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomin", BaseIcons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomout", BaseIcons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoommenu", BaseIcons["zoomMenu"], self.parent.OnZoomMenuGCP),
+                (
+                    ("gcpset", icons["gcpSet"].label),
+                    icons["gcpSet"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomin", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomout", BaseIcons["zoomOut"].label),
+                    BaseIcons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoommenu", BaseIcons["zoomMenu"].label),
+                    BaseIcons["zoomMenu"],
+                    self.parent.OnZoomMenuGCP,
+                ),
                 (None,),
-                ("zoomback", BaseIcons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomtomap", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
+                (
+                    ("zoomback", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomtomap", BaseIcons["zoomExtent"].label),
+                    BaseIcons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
                 (None,),
                 (
-                    "mapDispSettings",
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
                     BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
                 (None,),
-                ("settings", icons["settings"], self.parent.OnSettings),
-                ("help", icons["help"], self.parent.OnHelp),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnSettings,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
                 (None,),
-                ("quit", icons["quit"], self.parent.OnQuit),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 28 - 20
gui/wxpython/iscatt/toolbars.py

@@ -41,8 +41,8 @@ class MainToolbar(BaseToolbar):
             "selectGroup": MetaIcon(
                 img="layer-group-add", label=_("Select imagery group")
             ),
-            "settings": BaseIcons["settings"].SetLabel(_("Settings")),
-            "help": MetaIcon(img="help", label=_("Show manual")),
+            "settings": BaseIcons["settings"],
+            "help": BaseIcons["help"],
             "add_scatt_pl": MetaIcon(
                 img="layer-raster-analyze", label=_("Add scatter plot")
             ),
@@ -65,53 +65,61 @@ class MainToolbar(BaseToolbar):
 
         tools = [
             (
-                "add_scatt",
+                ("add_scatt", icons["add_scatt_pl"].label),
                 icons["add_scatt_pl"],
                 lambda event: self.scatt_mgr.AddScattPlot(),
             ),
             (None,),
             (
-                "cats_mgr",
+                ("cats_mgr", icons["cats_mgr"].label),
                 icons["cats_mgr"],
                 lambda event: self.parent.ShowCategoryPanel(event.IsChecked()),
                 wx.ITEM_CHECK,
             ),
             (None,),
             (
-                "pan",
+                ("pan", icons["pan"].label),
                 icons["pan"],
                 lambda event: self.SetPloltsMode(event, "pan"),
                 wx.ITEM_CHECK,
             ),
             (
-                "zoom",
+                ("zoom", icons["zoomIn"].label),
                 icons["zoomIn"],
                 lambda event: self.SetPloltsMode(event, "zoom"),
                 wx.ITEM_CHECK,
             ),
             (
-                "zoom_extend",
+                ("zoom_extend", icons["zoomExtent"].label),
                 icons["zoomExtent"],
                 lambda event: self.SetPloltsMode(event, "zoom_extend"),
                 wx.ITEM_CHECK,
             ),
             (None,),
             (
-                "sel_pol_mode",
+                ("sel_pol_mode", icons["selCatPol"].label),
                 icons["selCatPol"],
                 self.ActivateSelectionPolygonMode,
                 wx.ITEM_CHECK,
             ),
             (None,),
-            ("settings", icons["settings"], self.OnSettings),
-            ("help", icons["help"], self.OnHelp),
+            (
+                ("settings", icons["settings"].label),
+                icons["settings"],
+                self.OnSettings,
+            ),
+            (
+                ("help", icons["help"].label),
+                icons["help"],
+                self.OnHelp,
+            ),
         ]
 
         if self.opt_tools and "add_group" in self.opt_tools:
             tools.insert(
                 0,
                 (
-                    "selectGroup",
+                    ("selectGroup", icons["selectGroup"].label),
                     icons["selectGroup"],
                     lambda event: self.scatt_mgr.SetData(),
                 ),
@@ -227,42 +235,42 @@ class EditingToolbar(BaseToolbar):
         return self._getToolbarData(
             (
                 (
-                    "sel_add",
+                    ("sel_add", self.icons["sel_add"].label),
                     self.icons["sel_add"],
                     lambda event: self.scatt_mgr.ProcessSelectionPolygons("add"),
                 ),
                 (
-                    "sel_remove",
+                    ("sel_remove", self.icons["sel_remove"].label),
                     self.icons["sel_remove"],
                     lambda event: self.scatt_mgr.ProcessSelectionPolygons("remove"),
                 ),
                 (None,),
                 (
-                    "add_vertex",
+                    ("add_vertex", self.icons["editLine"].label),
                     self.icons["editLine"],
                     lambda event: self.SetMode(event, "add_vertex"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "add_boundary_vertex",
+                    ("add_boundary_vertex", self.icons["addVertex"].label),
                     self.icons["addVertex"],
                     lambda event: self.SetMode(event, "add_boundary_vertex"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "move_vertex",
+                    ("move_vertex", self.icons["moveVertex"].label),
                     self.icons["moveVertex"],
                     lambda event: self.SetMode(event, "move_vertex"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "delete_vertex",
+                    ("delete_vertex", self.icons["removeVertex"].label),
                     self.icons["removeVertex"],
                     lambda event: self.SetMode(event, "delete_vertex"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "remove_polygon",
+                    ("remove_polygon", self.icons["delete"].label),
                     self.icons["delete"],
                     lambda event: self.SetMode(event, "remove_polygon"),
                     wx.ITEM_CHECK,
@@ -329,12 +337,12 @@ class CategoryToolbar(BaseToolbar):
         return self._getToolbarData(
             (
                 (
-                    "add_class",
+                    ("add_class", self.icons["add_class"].label),
                     self.icons["add_class"],
                     lambda event: self.cats_mgr.AddCategory(),
                 ),
                 (
-                    "remove_class",
+                    ("remove_class", self.icons["remove_class"].label),
                     self.icons["remove_class"],
                     lambda event: self.cats_list.DeleteCategory(),
                 ),

+ 130 - 26
gui/wxpython/lmgr/toolbars.py

@@ -54,9 +54,21 @@ class LMWorkspaceToolbar(BaseToolbar):
         }
         return self._getToolbarData(
             (
-                ("workspaceNew", icons["workspaceNew"], self.parent.OnWorkspaceNew),
-                ("workspaceOpen", icons["workspaceOpen"], self.parent.OnWorkspaceOpen),
-                ("workspaceSave", icons["workspaceSave"], self.parent.OnWorkspaceSave),
+                (
+                    ("workspaceNew", _("New workspace")),
+                    icons["workspaceNew"],
+                    self.parent.OnWorkspaceNew,
+                ),
+                (
+                    ("workspaceOpen", _("Open workspace")),
+                    icons["workspaceOpen"],
+                    self.parent.OnWorkspaceOpen,
+                ),
+                (
+                    ("workspaceSave", _("Save workspace")),
+                    icons["workspaceSave"],
+                    self.parent.OnWorkspaceSave,
+                ),
             )
         )
 
@@ -112,19 +124,63 @@ class DisplayPanelToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("addMulti", icons["addMulti"], self.parent.OnAddMaps),
-                ("addrast", icons["addRast"], self.parent.OnAddRaster),
-                ("rastmisc", icons["rastMisc"], self.parent.OnAddRasterMisc),
-                ("addvect", icons["addVect"], self.parent.OnAddVector),
-                ("vectmisc", icons["vectMisc"], self.parent.OnAddVectorMisc),
-                ("addovl", icons["addOverlay"], self.parent.OnAddOverlay),
-                ("addWS", icons["addWS"], self.parent.OnAddWS),
+                (
+                    ("addMulti", _("Add multiple map layers")),
+                    icons["addMulti"],
+                    self.parent.OnAddMaps,
+                ),
+                (
+                    ("addrast", _("Add raster map")),
+                    icons["addRast"],
+                    self.parent.OnAddRaster,
+                ),
+                (
+                    ("rastmisc", _("Add various raster maps")),
+                    icons["rastMisc"],
+                    self.parent.OnAddRasterMisc,
+                ),
+                (
+                    ("addvect", _("Add vector map")),
+                    icons["addVect"],
+                    self.parent.OnAddVector,
+                ),
+                (
+                    ("vectmisc", _("Add various vector maps")),
+                    icons["vectMisc"],
+                    self.parent.OnAddVectorMisc,
+                ),
+                (
+                    ("addovl", _("Add various overlays")),
+                    icons["addOverlay"],
+                    self.parent.OnAddOverlay,
+                ),
+                (
+                    ("addWS", _("Add web service map")),
+                    icons["addWS"],
+                    self.parent.OnAddWS,
+                ),
                 (None,),
-                ("addgrp", icons["addGroup"], self.parent.OnAddGroup),
-                ("delcmd", icons["delCmd"], self.parent.OnDeleteLayer),
+                (
+                    ("addgrp", icons["addGroup"].label),
+                    icons["addGroup"],
+                    self.parent.OnAddGroup,
+                ),
+                (
+                    ("delcmd", _("Delete map layer")),
+                    icons["delCmd"],
+                    self.parent.OnDeleteLayer,
+                ),
                 (None,),
-                ("vdigit", icons["vdigit"], self.parent.OnVDigit),
-                ("attribute", icons["attrTable"], self.parent.OnShowAttributeTable),
+                (
+                    ("vdigit", icons["vdigit"].label),
+                    icons["vdigit"],
+                    self.parent.OnVDigit,
+                ),
+                (
+                    ("attribute", icons["attrTable"].label),
+                    icons["attrTable"],
+                    self.parent.OnShowAttributeTable,
+                ),
             )
         )
 
@@ -162,15 +218,43 @@ class LMToolsToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("newdisplay", icons["newdisplay"], self.parent.OnNewDisplay),
+                (
+                    ("newdisplay", _("New display")),
+                    icons["newdisplay"],
+                    self.parent.OnNewDisplay,
+                ),
                 (None,),
-                ("mapCalc", icons["mapcalc"], self.parent.OnMapCalculator),
-                ("georect", icons["georectify"], self.parent.OnGCPManager),
-                ("modeler", icons["modeler"], self.parent.OnGModeler),
-                ("mapOutput", icons["composer"], self.parent.OnPsMap),
+                (
+                    ("mapCalc", icons["mapcalc"].label),
+                    icons["mapcalc"],
+                    self.parent.OnMapCalculator,
+                ),
+                (
+                    ("georect", icons["georectify"].label),
+                    icons["georectify"],
+                    self.parent.OnGCPManager,
+                ),
+                (
+                    ("modeler", icons["modeler"].label),
+                    icons["modeler"],
+                    self.parent.OnGModeler,
+                ),
+                (
+                    ("mapOutput", icons["composer"].label),
+                    icons["composer"],
+                    self.parent.OnPsMap,
+                ),
                 (None,),
-                ("script-load", icons["script-load"], self.parent.OnRunScript),
-                ("python", icons["python"], self.parent.OnSimpleEditor),
+                (
+                    ("script-load", icons["script-load"].label),
+                    icons["script-load"],
+                    self.parent.OnRunScript,
+                ),
+                (
+                    ("python", _("Python code editor")),
+                    icons["python"],
+                    self.parent.OnSimpleEditor,
+                ),
             )
         )
 
@@ -195,8 +279,16 @@ class LMMiscToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("settings", icons["settings"], self.parent.OnPreferences),
-                ("help", icons["help"], self.parent.OnHelp),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnPreferences,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
             )
         )
 
@@ -235,10 +327,22 @@ class LMNvizToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("nvizCmd", icons["cmd"], self.OnNvizCmd),
+                (
+                    ("nvizCmd", icons["cmd"].label),
+                    icons["cmd"],
+                    self.OnNvizCmd,
+                ),
                 (None,),
-                ("settings", icons["settings"], self.parent.OnNvizPreferences),
-                ("help", icons["help"], self.OnHelp),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnNvizPreferences,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.OnHelp,
+                ),
             )
         )
 

+ 78 - 16
gui/wxpython/mapdisp/toolbars.py

@@ -169,22 +169,84 @@ class MapToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("renderMap", BaseIcons["render"], self.parent.OnRender),
-                ("pointer", BaseIcons["pointer"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("select", MapIcons["select"], self.parent.OnSelect, wx.ITEM_CHECK),
-                ("query", MapIcons["query"], self.parent.OnQuery, wx.ITEM_CHECK),
-                ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomIn", BaseIcons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomOut", BaseIcons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoomExtent", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
-                ("zoomRegion", BaseIcons["zoomRegion"], self.parent.OnZoomToWind),
-                ("zoomBack", BaseIcons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomMenu", BaseIcons["zoomMenu"], self.parent.OnZoomMenu),
-                ("analyze", MapIcons["analyze"], self.OnAnalyze),
-                ("overlay", BaseIcons["overlay"], self.OnDecoration),
-                ("saveFile", BaseIcons["saveFile"], self.parent.SaveToFile),
                 (
-                    "mapDispSettings",
+                    ("renderMap", BaseIcons["render"].label),
+                    BaseIcons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("pointer", BaseIcons["pointer"].label),
+                    BaseIcons["pointer"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("select", MapIcons["select"].label),
+                    MapIcons["select"],
+                    self.parent.OnSelect,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("query", MapIcons["query"].label),
+                    MapIcons["query"],
+                    self.parent.OnQuery,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomIn", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomOut", BaseIcons["zoomOut"].label),
+                    BaseIcons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomExtent", BaseIcons["zoomExtent"].label),
+                    BaseIcons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
+                (
+                    ("zoomRegion", BaseIcons["zoomRegion"].label),
+                    BaseIcons["zoomRegion"],
+                    self.parent.OnZoomToWind,
+                ),
+                (
+                    ("zoomBack", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomMenu", BaseIcons["zoomMenu"].label),
+                    BaseIcons["zoomMenu"],
+                    self.parent.OnZoomMenu,
+                ),
+                (
+                    ("analyze", MapIcons["analyze"].label),
+                    MapIcons["analyze"],
+                    self.OnAnalyze,
+                ),
+                (
+                    ("overlay", BaseIcons["overlay"].label),
+                    BaseIcons["overlay"],
+                    self.OnDecoration,
+                ),
+                (
+                    ("saveFile", BaseIcons["saveFile"].label),
+                    BaseIcons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
                     BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
@@ -257,7 +319,7 @@ class MapToolbar(BaseToolbar):
                 (MapIcons["profile"], self.parent.OnProfile),
                 (MapIcons["scatter"], self.parent.OnScatterplot),
                 (MapIcons["histogram"], self.parent.OnHistogramPyPlot),
-                (BaseIcons["histogramD"], self.parent.OnHistogram),
+                (BaseIcons["histogram"], self.parent.OnHistogram),
                 (MapIcons["vnet"], self.parent.OnVNet),
             )
         )

+ 76 - 16
gui/wxpython/mapswipe/toolbars.py

@@ -25,7 +25,6 @@ from icons.icon import MetaIcon
 
 swipeIcons = {
     "tools": MetaIcon(img="tools", label=_("Tools")),
-    "quit": BaseIcons["quit"].SetLabel(_("Quit Map Swipe")),
     "addRast": BaseIcons["addRast"].SetLabel(_("Select raster maps")),
     "query": MetaIcon(
         img="info",
@@ -60,19 +59,60 @@ class SwipeMapToolbar(BaseToolbar):
         icons = BaseIcons
         return self._getToolbarData(
             (
-                ("rendermap", icons["render"], self.parent.OnRender),
-                ("pointer", icons["pointer"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("query", swipeIcons["query"], self.parent.OnQuery, wx.ITEM_CHECK),
-                ("pan", icons["pan"], self.parent.OnPan, wx.ITEM_CHECK),  # toggle tool
-                ("zoomIn", icons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomOut", icons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
+                (
+                    ("rendermap", icons["render"].label),
+                    icons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("pointer", icons["pointer"].label),
+                    icons["pointer"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("query", swipeIcons["query"].label),
+                    swipeIcons["query"],
+                    self.parent.OnQuery,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", icons["pan"].label),
+                    icons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),  # toggle tool
+                (
+                    ("zoomIn", icons["zoomIn"].label),
+                    icons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomOut", icons["zoomOut"].label),
+                    icons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
                 (None,),
-                ("zoomBack", icons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomToMap", icons["zoomExtent"], self.parent.OnZoomToMap),
+                (
+                    ("zoomBack", icons["zoomBack"].label),
+                    icons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomToMap", icons["zoomExtent"].label),
+                    icons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
                 (None,),
-                ("saveFile", icons["saveFile"], self.parent.SaveToFile),
                 (
-                    "mapDispSettings",
+                    ("saveFile", icons["saveFile"].label),
+                    icons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
                     BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
@@ -120,9 +160,17 @@ class SwipeMainToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("addRaster", swipeIcons["addRast"], self.parent.OnSelectLayers),
+                (
+                    ("addRaster", swipeIcons["addRast"].label),
+                    swipeIcons["addRast"],
+                    self.parent.OnSelectLayers,
+                ),
                 (None,),
-                ("tools", swipeIcons["tools"], self.OnToolMenu),
+                (
+                    ("tools", swipeIcons["tools"].label),
+                    swipeIcons["tools"],
+                    self.OnToolMenu,
+                ),
             )
         )
 
@@ -177,8 +225,20 @@ class SwipeMiscToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("settings", BaseIcons["settings"], self.parent.OnPreferences),
-                ("help", BaseIcons["help"], self.parent.OnHelp),
-                ("quit", swipeIcons["quit"], self.parent.OnCloseWindow),
+                (
+                    ("settings", BaseIcons["settings"].label),
+                    BaseIcons["settings"],
+                    self.parent.OnPreferences,
+                ),
+                (
+                    ("help", BaseIcons["help"].label),
+                    BaseIcons["help"],
+                    self.parent.OnHelp,
+                ),
+                (
+                    ("quit", BaseIcons["quit"].label),
+                    BaseIcons["quit"],
+                    self.parent.OnCloseWindow,
+                ),
             )
         )

+ 35 - 7
gui/wxpython/modules/histogram.py

@@ -551,14 +551,42 @@ class HistogramToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("histogram", BaseIcons["histogramD"], self.parent.OnOptions),
-                ("render", BaseIcons["display"], self.parent.OnRender),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
-                ("font", BaseIcons["font"], self.parent.SetHistFont),
+                (
+                    ("histogram", BaseIcons["histogram"].label),
+                    BaseIcons["histogram"],
+                    self.parent.OnOptions,
+                ),
+                (
+                    ("render", BaseIcons["display"].label),
+                    BaseIcons["display"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
+                (
+                    ("font", BaseIcons["font"].label),
+                    BaseIcons["font"],
+                    self.parent.SetHistFont,
+                ),
                 (None,),
-                ("save", BaseIcons["saveFile"], self.parent.SaveToFile),
-                ("hprint", BaseIcons["print"], self.parent.PrintMenu),
+                (
+                    ("save", BaseIcons["saveFile"].label),
+                    BaseIcons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("hprint", BaseIcons["print"].label),
+                    BaseIcons["print"],
+                    self.parent.PrintMenu,
+                ),
                 (None,),
-                ("quit", BaseIcons["quit"], self.parent.OnQuit),
+                (
+                    ("quit", BaseIcons["quit"].label),
+                    BaseIcons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 108 - 24
gui/wxpython/photo2image/ip2i_toolbars.py

@@ -50,15 +50,43 @@ class GCPManToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("gcpAdd", icons["gcpAdd"], self.parent.AddGCP),
-                ("gcpDelete", icons["gcpDelete"], self.parent.DeleteGCP),
-                ("gcpClear", icons["gcpClear"], self.parent.ClearGCP),
+                (
+                    ("gcpAdd", icons["gcpAdd"].label),
+                    icons["gcpAdd"],
+                    self.parent.AddGCPm,
+                ),
+                (
+                    ("gcpDelete", icons["gcpDelete"].label),
+                    icons["gcpDelete"],
+                    self.parent.DeleteGCP,
+                ),
+                (
+                    ("gcpClear", icons["gcpDelete"].label),
+                    icons["gcpClear"],
+                    self.parent.ClearGCP,
+                ),
                 (None,),
-                ("rms", icons["gcpRms"], self.parent.OnRMS),
-                ("georect", icons["georectify"], self.parent.OnGeorect),
+                (
+                    ("rms", icons["gcpRms"].label),
+                    icons["gcpRms"],
+                    self.parent.OnRMS,
+                ),
+                (
+                    ("georect", icons["georectify"].label),
+                    icons["georectify"],
+                    self.parent.OnGeorect,
+                ),
                 (None,),
-                ("gcpSave", icons["gcpSave"], self.parent.SaveGCPs),
-                ("gcpReload", icons["gcpReload"], self.parent.ReloadGCPs),
+                (
+                    ("gcpSave", icons["gcpSave"].label),
+                    icons["gcpSave"],
+                    self.parent.SaveGCPs,
+                ),
+                (
+                    ("gcpReload", icons["gcpReload"].label),
+                    icons["gcpReload"],
+                    self.parent.ReloadGCPs,
+                ),
             )
         )
 
@@ -106,35 +134,91 @@ class GCPDisplayToolbar(BaseToolbar):
                 label=_("Update GCP coordinates"),
                 desc=_("Update GCP coordinates)"),
             ),
-            "quit": BaseIcons["quit"].SetLabel(_("Quit georectification tool")),
-            "settings": BaseIcons["settings"].SetLabel(_("Georectifier settings")),
-            "help": BaseIcons["help"].SetLabel(_("Georectifier manual")),
+            "quit": BaseIcons["quit"],
+            "settings": BaseIcons["settings"],
+            "help": BaseIcons["help"],
         }
 
         return self._getToolbarData(
             (
-                ("displaymap", BaseIcons["display"], self.parent.OnDraw),
-                ("rendermap", BaseIcons["render"], self.parent.OnRender),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
+                (
+                    ("displaymap", BaseIcons["display"].label),
+                    BaseIcons["display"],
+                    self.parent.OnDraw,
+                ),
+                (
+                    ("rendermap", BaseIcons["render"].label),
+                    BaseIcons["render"],
+                    self.parent.OnRender,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
                 (None,),
-                ("gcpset", icons["gcpSet"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomin", BaseIcons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomout", BaseIcons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoommenu", BaseIcons["zoomMenu"], self.parent.OnZoomMenuGCP),
+                (
+                    ("gcpset", icons["gcpSet"].label),
+                    icons["gcpSet"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomin", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomout", BaseIcons["zoomOut"].label),
+                    BaseIcons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoommenu", BaseIcons["zoomMenu"].label),
+                    BaseIcons["zoomMenu"],
+                    self.parent.OnZoomMenuGCP,
+                ),
                 (None,),
-                ("zoomback", BaseIcons["zoomBack"], self.parent.OnZoomBack),
-                ("zoomtomap", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
+                (
+                    ("zoomback", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnZoomBack,
+                ),
+                (
+                    ("zoomtomap", BaseIcons["zoomExtent"].label),
+                    BaseIcons["zoomExtent"],
+                    self.parent.OnZoomToMap,
+                ),
                 (None,),
                 (
-                    "mapDispSettings",
+                    ("mapDispSettings", BaseIcons["mapDispSettings"].label),
                     BaseIcons["mapDispSettings"],
                     self.parent.OnMapDisplayProperties,
                 ),
                 (None,),
-                ("settings", icons["settings"], self.parent.OnSettings),
-                ("help", icons["help"], self.parent.OnHelp),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnSettings,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.parent.OnHelp,
+                ),
                 (None,),
-                ("quit", icons["quit"], self.parent.OnQuit),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 106 - 21
gui/wxpython/psmap/toolbars.py

@@ -94,7 +94,6 @@ class PsMapToolbar(BaseToolbar):
                 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")),
@@ -111,31 +110,117 @@ class PsMapToolbar(BaseToolbar):
 
         return self._getToolbarData(
             (
-                ("loadFile", icons["scriptLoad"], self.parent.OnLoadFile),
-                ("instructionFile", icons["scriptSave"], self.parent.OnInstructionFile),
+                (
+                    ("loadFile", icons["scriptLoad"].label),
+                    icons["scriptLoad"],
+                    self.parent.OnLoadFile,
+                ),
+                (
+                    ("instructionFile", icons["scriptSave"].label),
+                    icons["scriptSave"],
+                    self.parent.OnInstructionFile,
+                ),
                 (None,),
-                ("pagesetup", icons["pageSetup"], self.parent.OnPageSetup),
+                (
+                    ("pagesetup", icons["pageSetup"].label),
+                    icons["pageSetup"],
+                    self.parent.OnPageSetup,
+                ),
                 (None,),
-                ("pointer", BaseIcons["pointer"], self.parent.OnPointer, wx.ITEM_CHECK),
-                ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
-                ("zoomin", BaseIcons["zoomIn"], self.parent.OnZoomIn, wx.ITEM_CHECK),
-                ("zoomout", BaseIcons["zoomOut"], self.parent.OnZoomOut, wx.ITEM_CHECK),
-                ("zoomAll", icons["fullExtent"], self.parent.OnZoomAll),
+                (
+                    ("pointer", BaseIcons["pointer"].label),
+                    BaseIcons["pointer"],
+                    self.parent.OnPointer,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("pan", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnPan,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomin", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoomIn,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomout", BaseIcons["zoomOut"].label),
+                    BaseIcons["zoomOut"],
+                    self.parent.OnZoomOut,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("zoomAll", icons["fullExtent"].label),
+                    icons["fullExtent"],
+                    self.parent.OnZoomAll,
+                ),
                 (None,),
-                ("addMap", icons["addMap"], self.parent.OnAddMap, wx.ITEM_CHECK),
-                ("addRaster", BaseIcons["addRast"], self.parent.OnAddRaster),
-                ("addVector", BaseIcons["addVect"], self.parent.OnAddVect),
-                ("overlaysAdd", icons["overlaysAdd"], self.OnAddOverlays),
-                ("delete", icons["deleteObj"], self.parent.OnDelete),
-                ("dec", BaseIcons["overlay"], self.OnDecoration),
-                ("drawGraphics", icons["pointAdd"], self.OnDrawGraphics, wx.ITEM_CHECK),
+                (
+                    ("addMap", icons["addMap"].label),
+                    icons["addMap"],
+                    self.parent.OnAddMap,
+                    wx.ITEM_CHECK,
+                ),
+                (
+                    ("addRaster", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.parent.OnAddRaster,
+                ),
+                (
+                    ("addVector", BaseIcons["addVect"].label),
+                    BaseIcons["addVect"],
+                    self.parent.OnAddVect,
+                ),
+                (
+                    ("overlaysAdd", icons["overlaysAdd"].label),
+                    icons["overlaysAdd"],
+                    self.OnAddOverlays,
+                ),
+                (
+                    ("delete", icons["deleteObj"].label),
+                    icons["deleteObj"],
+                    self.parent.OnDelete,
+                ),
+                (
+                    ("dec", BaseIcons["overlay"].label),
+                    BaseIcons["overlay"],
+                    self.OnDecoration,
+                ),
+                (
+                    ("drawGraphics", icons["pointAdd"].label),
+                    icons["pointAdd"],
+                    self.OnDrawGraphics,
+                    wx.ITEM_CHECK,
+                ),
                 (None,),
-                ("preview", icons["preview"], self.parent.OnPreview),
-                ("generatePS", icons["psExport"], self.parent.OnPSFile),
-                ("generatePDF", icons["pdfExport"], self.parent.OnPDFFile),
+                (
+                    ("preview", icons["preview"].label),
+                    icons["preview"],
+                    self.parent.OnPreview,
+                ),
+                (
+                    ("generatePS", icons["psExport"].label),
+                    icons["psExport"],
+                    self.parent.OnPSFile,
+                ),
+                (
+                    ("generatePDF", icons["pdfExport"].label),
+                    icons["pdfExport"],
+                    self.parent.OnPDFFile,
+                ),
                 (None,),
-                ("help", BaseIcons["help"], self.parent.OnHelp),
-                ("quit", icons["quit"], self.parent.OnCloseWindow),
+                (
+                    ("help", BaseIcons["help"].label),
+                    BaseIcons["help"],
+                    self.parent.OnHelp,
+                ),
+                (
+                    ("quit", BaseIcons["quit"].label),
+                    BaseIcons["quit"],
+                    self.parent.OnCloseWindow,
+                ),
             )
         )
 

+ 21 - 10
gui/wxpython/rdigit/toolbars.py

@@ -21,6 +21,7 @@ from icons.icon import MetaIcon
 from gui_core.widgets import FloatValidator
 import wx.lib.colourselect as csel
 from gui_core.wrap import TextCtrl, StaticText, ColourSelect
+from gui_core.toolbars import BaseIcons
 
 
 rdigitIcons = {
@@ -29,8 +30,6 @@ rdigitIcons = {
     "point": MetaIcon(img="point-create", label=_("Digitize point")),
     "save": MetaIcon(img="save", label=_("Save raster map")),
     "undo": MetaIcon(img="undo", label=_("Undo")),
-    "help": MetaIcon(img="help", label=_("Raster Digitizer manual")),
-    "quit": MetaIcon(img="quit", label=_("Quit raster digitizer")),
 }
 
 
@@ -114,33 +113,45 @@ class RDigitToolbar(BaseToolbar):
         return self._getToolbarData(
             (
                 (
-                    "area",
+                    ("area", rdigitIcons["area"].label),
                     rdigitIcons["area"],
                     lambda event: self._controller.SelectType("area"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "line",
+                    ("line", rdigitIcons["line"].label),
                     rdigitIcons["line"],
                     lambda event: self._controller.SelectType("line"),
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "point",
+                    ("point", rdigitIcons["point"].label),
                     rdigitIcons["point"],
                     lambda event: self._controller.SelectType("point"),
                     wx.ITEM_CHECK,
                 ),
                 (None,),
                 (None,),
-                ("undo", rdigitIcons["undo"], lambda event: self._controller.Undo()),
-                ("save", rdigitIcons["save"], lambda event: self._controller.Save()),
                 (
-                    "help",
-                    rdigitIcons["help"],
+                    ("undo", rdigitIcons["undo"].label),
+                    rdigitIcons["undo"],
+                    lambda event: self._controller.Undo(),
+                ),
+                (
+                    ("save", rdigitIcons["save"].label),
+                    rdigitIcons["save"],
+                    lambda event: self._controller.Save(),
+                ),
+                (
+                    ("help", BaseIcons["help"].label),
+                    BaseIcons["help"],
                     lambda event: self._giface.Help("wxGUI.rdigit"),
                 ),
-                ("quit", rdigitIcons["quit"], lambda event: self._controller.Stop()),
+                (
+                    ("quit", BaseIcons["quit"].label),
+                    BaseIcons["quit"],
+                    lambda event: self._controller.Stop(),
+                ),
             )
         )
 

+ 35 - 12
gui/wxpython/rlisetup/sampling_frame.py

@@ -495,44 +495,58 @@ class RLiSetupToolbar(BaseToolbar):
         """Toolbar data"""
         if self.parent.samplingtype == SamplingType.REGIONS:
             drawTool = (
-                "digitizeregion",
+                ("digitizeregion", icons["digitizeregion"].label),
                 icons["digitizeregion"],
                 self.parent.OnDigitizeRegion,
                 wx.ITEM_CHECK,
             )
         elif self.parent.samplingtype in [SamplingType.MUNITSR, SamplingType.MMVWINR]:
             drawTool = (
-                "digitizeunit",
+                ("digitizeunit", icons["digitizeunit"].label),
                 icons["digitizeunit"],
                 self.parent.OnDraw,
                 wx.ITEM_CHECK,
             )
         elif self.parent.samplingtype in [SamplingType.MUNITSC, SamplingType.MMVWINC]:
             drawTool = (
-                "digitizeunitc",
+                ("digitizeunitc", icons["digitizeunitc"].label),
                 icons["digitizeunitc"],
                 self.parent.OnDrawRadius,
                 wx.ITEM_CHECK,
             )
         else:
-            drawTool = ("draw", icons["draw"], self.parent.OnDraw, wx.ITEM_CHECK)
+            drawTool = (
+                ("draw", icons["draw"].label),
+                icons["draw"],
+                self.parent.OnDraw,
+                wx.ITEM_CHECK,
+            )
         if self.parent.samplingtype == SamplingType.VECT:
             return self._getToolbarData(
                 (
-                    ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
                     (
-                        "zoomIn",
+                        ("pan", BaseIcons["pan"].label),
+                        BaseIcons["pan"],
+                        self.parent.OnPan,
+                        wx.ITEM_CHECK,
+                    ),
+                    (
+                        ("zoomIn", BaseIcons["zoomIn"].label),
                         BaseIcons["zoomIn"],
                         self.parent.OnZoomIn,
                         wx.ITEM_CHECK,
                     ),
                     (
-                        "zoomOut",
+                        ("zoomOut", BaseIcons["zoomOut"].label),
                         BaseIcons["zoomOut"],
                         self.parent.OnZoomOut,
                         wx.ITEM_CHECK,
                     ),
-                    ("zoomExtent", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
+                    (
+                        ("zoomExtent", BaseIcons["zoomExtent"].label),
+                        BaseIcons["zoomExtent"],
+                        self.parent.OnZoomToMap,
+                    ),
                 )
             )
         else:
@@ -540,19 +554,28 @@ class RLiSetupToolbar(BaseToolbar):
                 (
                     drawTool,
                     (None,),
-                    ("pan", BaseIcons["pan"], self.parent.OnPan, wx.ITEM_CHECK),
                     (
-                        "zoomIn",
+                        ("pan", BaseIcons["pan"].label),
+                        BaseIcons["pan"],
+                        self.parent.OnPan,
+                        wx.ITEM_CHECK,
+                    ),
+                    (
+                        ("zoomIn", BaseIcons["zoomIn"].label),
                         BaseIcons["zoomIn"],
                         self.parent.OnZoomIn,
                         wx.ITEM_CHECK,
                     ),
                     (
-                        "zoomOut",
+                        ("zoomOut", BaseIcons["zoomOut"].label),
                         BaseIcons["zoomOut"],
                         self.parent.OnZoomOut,
                         wx.ITEM_CHECK,
                     ),
-                    ("zoomExtent", BaseIcons["zoomExtent"], self.parent.OnZoomToMap),
+                    (
+                        ("zoomExtent", BaseIcons["zoomExtent"].label),
+                        BaseIcons["zoomExtent"],
+                        self.parent.OnZoomToMap,
+                    ),
                 )
             )

+ 92 - 30
gui/wxpython/vdigit/toolbars.py

@@ -222,12 +222,11 @@ class VDigitToolbar(BaseToolbar):
                 label=_("Remove selected vertex"),
                 desc=_("Left: Select; Ctrl+Left: Unselect; Right: Confirm"),
             ),
-            "settings": BaseIcons["settings"].SetLabel(_("Digitization settings")),
+            "settings": BaseIcons["settings"],
             "quit": BaseIcons["quit"].SetLabel(
-                label=_("Quit digitizer"), desc=_("Quit digitizer and save changes")
+                label=_("Quit"), desc=_("Quit digitizer and save changes")
             ),
             "help": BaseIcons["help"].SetLabel(
-                label=_("Vector Digitizer manual"),
                 desc=_("Show Vector Digitizer manual"),
             ),
             "additionalTools": MetaIcon(
@@ -236,10 +235,10 @@ class VDigitToolbar(BaseToolbar):
                 desc=_("Left: Select; Ctrl+Left: Unselect; Right: Confirm"),
             ),
             "undo": MetaIcon(
-                img="undo", label=_("Undo"), desc=_("Undo previous changes")
+                img="undo", label=_("Undo"), desc=_("Undo previous change")
             ),
             "redo": MetaIcon(
-                img="redo", label=_("Redo"), desc=_("Redo previous changes")
+                img="redo", label=_("Redo"), desc=_("Redo previous change")
             ),
         }
 
@@ -247,97 +246,142 @@ class VDigitToolbar(BaseToolbar):
             data.append((None,))
         if not self.tools or "addPoint" in self.tools:
             data.append(
-                ("addPoint", self.icons["addPoint"], self.OnAddPoint, wx.ITEM_CHECK)
+                (
+                    ("addPoint", self.icons["addPoint"].label),
+                    self.icons["addPoint"],
+                    self.OnAddPoint,
+                    wx.ITEM_CHECK,
+                )
             )
         if not self.tools or "addLine" in self.tools:
             data.append(
-                ("addLine", self.icons["addLine"], self.OnAddLine, wx.ITEM_CHECK)
+                (
+                    ("addLine", self.icons["addLine"].label),
+                    self.icons["addLine"],
+                    self.OnAddLine,
+                    wx.ITEM_CHECK,
+                ),
             )
         if not self.tools or "addArea" in self.tools:
             data.append(
-                ("addArea", self.icons["addArea"], self.OnAddAreaTool, wx.ITEM_CHECK)
+                (
+                    ("addArea", self.icons["addArea"].label),
+                    self.icons["addArea"],
+                    self.OnAddAreaTool,
+                    wx.ITEM_CHECK,
+                ),
             )
         if not self.tools or "deleteLine" in self.tools:
             data.append(
                 (
-                    "deleteLine",
+                    ("deleteLine", self.icons["deleteLine"].label),
                     self.icons["deleteLine"],
                     self.OnDeleteLine,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "deleteArea" in self.tools:
             data.append(
                 (
-                    "deleteArea",
+                    ("deleteArea", self.icons["deleteArea"].label),
                     self.icons["deleteArea"],
                     self.OnDeleteArea,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "moveVertex" in self.tools:
             data.append(
                 (
-                    "moveVertex",
+                    ("moveVertex", self.icons["moveVertex"].label),
                     self.icons["moveVertex"],
                     self.OnMoveVertex,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "addVertex" in self.tools:
             data.append(
-                ("addVertex", self.icons["addVertex"], self.OnAddVertex, wx.ITEM_CHECK)
+                (
+                    ("addVertex", self.icons["addVertex"].label),
+                    self.icons["addVertex"],
+                    self.OnAddVertex,
+                    wx.ITEM_CHECK,
+                ),
             )
         if not self.tools or "removeVertex" in self.tools:
             data.append(
                 (
-                    "removeVertex",
+                    ("removeVertex", self.icons["removeVertex"].label),
                     self.icons["removeVertex"],
                     self.OnRemoveVertex,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "editLine" in self.tools:
             data.append(
-                ("editLine", self.icons["editLine"], self.OnEditLine, wx.ITEM_CHECK)
+                (
+                    ("editLine", self.icons["editLine"].label),
+                    self.icons["editLine"],
+                    self.OnEditLine,
+                    wx.ITEM_CHECK,
+                ),
             )
         if not self.tools or "moveLine" in self.tools:
             data.append(
-                ("moveLine", self.icons["moveLine"], self.OnMoveLine, wx.ITEM_CHECK)
+                (
+                    ("moveLine", self.icons["moveLine"].label),
+                    self.icons["moveLine"],
+                    self.OnMoveLine,
+                    wx.ITEM_CHECK,
+                ),
             )
         if not self.tools or "displayCats" in self.tools:
             data.append(
                 (
-                    "displayCats",
+                    ("displayCats", self.icons["displayCats"].label),
                     self.icons["displayCats"],
                     self.OnDisplayCats,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "displayAttr" in self.tools:
             data.append(
                 (
-                    "displayAttr",
+                    ("displayAttr", self.icons["displayAttr"].label),
                     self.icons["displayAttr"],
                     self.OnDisplayAttr,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "additionalSelf.Tools" in self.tools:
             data.append(
                 (
-                    "additionalTools",
+                    (
+                        "additionalTools",
+                        self.icons["additionalTools"].label,
+                    ),
                     self.icons["additionalTools"],
                     self.OnAdditionalToolMenu,
                     wx.ITEM_CHECK,
-                )
+                ),
             )
         if not self.tools or "undo" in self.tools or "redo" in self.tools:
             data.append((None,))
         if not self.tools or "undo" in self.tools:
-            data.append(("undo", self.icons["undo"], self.OnUndo))
+            data.append(
+                (
+                    ("undo", self.icons["undo"].label),
+                    self.icons["undo"],
+                    self.OnUndo,
+                ),
+            )
         if not self.tools or "redo" in self.tools:
-            data.append(("redo", self.icons["redo"], self.OnRedo))
+            data.append(
+                (
+                    ("redo", self.icons["redo"].label),
+                    self.icons["redo"],
+                    self.OnRedo,
+                ),
+            )
         if (
             not self.tools
             or "settings" in self.tools
@@ -346,11 +390,29 @@ class VDigitToolbar(BaseToolbar):
         ):
             data.append((None,))
         if not self.tools or "settings" in self.tools:
-            data.append(("settings", self.icons["settings"], self.OnSettings))
+            data.append(
+                (
+                    ("settings", self.icons["settings"].label),
+                    self.icons["settings"],
+                    self.OnSettings,
+                ),
+            )
         if not self.tools or "help" in self.tools:
-            data.append(("help", self.icons["help"], self.OnHelp))
+            data.append(
+                (
+                    ("help", self.icons["help"].label),
+                    self.icons["help"],
+                    self.OnHelp,
+                ),
+            )
         if not self.tools or "quit" in self.tools:
-            data.append(("quit", self.icons["quit"], self.OnExit))
+            data.append(
+                (
+                    ("quit", self.icons["quit"].label),
+                    self.icons["quit"],
+                    self.OnExit,
+                ),
+            )
 
         return self._getToolbarData(data)
 

+ 47 - 16
gui/wxpython/vnet/toolbars.py

@@ -64,24 +64,28 @@ class PointListToolbar(BaseToolbar):
         return self._getToolbarData(
             (
                 (
-                    "insertPoint",
+                    ("insertPoint", icons["insertPoint"].label),
                     icons["insertPoint"],
                     self.OnEditPointMode,  # TODO self.list.dialog
                     wx.ITEM_CHECK,
                 ),
                 (
-                    "snapping",
+                    ("snapping", icons["snapping"].label),
                     icons["snapping"],
                     lambda event: self.vnet_mgr.Snapping(event.IsChecked()),
                     wx.ITEM_CHECK,
                 ),
                 (None,),
                 (
-                    "pointAdd",
+                    ("pointAdd", icons["pointAdd"].label),
                     icons["pointAdd"],
                     lambda event: self.vnet_pts_mgr.AddPoint(),
                 ),
-                ("pointDelete", icons["pointDelete"], self.OnDeletePoint),
+                (
+                    ("pointDelete", icons["pointDelete"].label),
+                    icons["pointDelete"],
+                    self.OnDeletePoint,
+                ),
                 (None,)  # ,
                 # ('isec_turn_edit', icons['isec_turn_edit'],
                 # self.dialog.OnDefIsecTurnCosts,
@@ -125,30 +129,57 @@ class MainToolbar(BaseToolbar):
             "saveTempLayer": MetaIcon(
                 img="map-export", label=_("Save temporary result")
             ),
-            "settings": BaseIcons["settings"].SetLabel(
-                _("Vector network analysis settings")
-            ),
-            "help": MetaIcon(img="help", label=_("Show manual")),
+            "settings": BaseIcons["settings"],
+            "help": BaseIcons["help"],
+            "quit": BaseIcons["quit"],
         }
 
         return self._getToolbarData(
             (
-                ("run", icons["run"], self.parent.OnAnalyze),
+                (
+                    ("run", icons["run"].label),
+                    icons["run"],
+                    self.parent.OnAnalyze,
+                ),
                 (None,),
-                ("undo", icons["undo"], self.parent.OnUndo),
-                ("redo", icons["redo"], self.parent.OnRedo),
+                (
+                    ("undo", _("Previous analysis result")),
+                    icons["undo"],
+                    self.parent.OnUndo,
+                ),
+                (
+                    ("redo", _("Next analysis result")),
+                    icons["redo"],
+                    self.parent.OnRedo,
+                ),
                 (None,),
                 (
-                    "showResult",
+                    ("showResult", icons["showResult"].label),
                     icons["showResult"],
                     self.parent.OnShowResult,
                     wx.ITEM_CHECK,
                 ),
-                ("saveTempLayer", icons["saveTempLayer"], self.parent.OnSaveTmpLayer),
+                (
+                    ("saveTempLayer", icons["saveTempLayer"].label),
+                    icons["saveTempLayer"],
+                    self.parent.OnSaveTmpLayer,
+                ),
                 (None,),
-                ("settings", icons["settings"], self.parent.OnSettings),
-                ("help", icons["help"], self.OnHelp),
-                ("quit", BaseIcons["quit"], self.parent.OnCloseDialog),
+                (
+                    ("settings", icons["settings"].label),
+                    icons["settings"],
+                    self.parent.OnSettings,
+                ),
+                (
+                    ("help", icons["help"].label),
+                    icons["help"],
+                    self.OnHelp,
+                ),
+                (
+                    ("quit", icons["quit"].label),
+                    icons["quit"],
+                    self.parent.OnCloseDialog,
+                ),
             )
         )
 

+ 2 - 2
gui/wxpython/wxplot/base.py

@@ -38,10 +38,10 @@ PlotIcons = {
         img="layer-raster-profile",
         label=_("Draw transect in map display window to profile"),
     ),
-    "options": MetaIcon(img="settings", label=_("Plot options")),
+    "options": BaseIcons["settings"],
     "statistics": MetaIcon(img="stats", label=_("Plot statistics")),
     "save": MetaIcon(img="save", label=_("Save profile data to CSV file")),
-    "quit": BaseIcons["quit"].SetLabel(_("Quit plot tool")),
+    "quit": BaseIcons["quit"],
 }
 
 

+ 55 - 11
gui/wxpython/wxplot/histogram.py

@@ -288,19 +288,63 @@ class HistogramPlotToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("addraster", BaseIcons["addRast"], self.parent.OnSelectRaster),
+                (
+                    ("addraster", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.parent.OnSelectRaster,
+                ),
                 (None,),
-                ("draw", PlotIcons["draw"], self.parent.OnCreateHist),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
-                ("drag", BaseIcons["pan"], self.parent.OnDrag),
-                ("zoom", BaseIcons["zoomIn"], self.parent.OnZoom),
-                ("unzoom", BaseIcons["zoomExtent"], self.parent.OnRedraw),
+                (
+                    ("draw", PlotIcons["draw"].label),
+                    PlotIcons["draw"],
+                    self.parent.OnCreateHist,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
+                (
+                    ("drag", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnDrag,
+                ),
+                (
+                    ("zoom", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoom,
+                ),
+                (
+                    ("unzoom", BaseIcons["zoomExtent"].label),
+                    BaseIcons["zoomExtent"],
+                    self.parent.OnRedraw,
+                ),
                 (None,),
-                ("statistics", PlotIcons["statistics"], self.parent.OnStats),
-                ("image", BaseIcons["saveFile"], self.parent.SaveToFile),
-                ("print", BaseIcons["print"], self.parent.PrintMenu),
+                (
+                    ("statistics", PlotIcons["statistics"].label),
+                    PlotIcons["statistics"],
+                    self.parent.OnStats,
+                ),
+                (
+                    ("image", BaseIcons["saveFile"].label),
+                    BaseIcons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("print", BaseIcons["print"].label),
+                    BaseIcons["print"],
+                    self.parent.PrintMenu,
+                ),
                 (None,),
-                ("settings", PlotIcons["options"], self.parent.PlotOptionsMenu),
-                ("quit", PlotIcons["quit"], self.parent.OnQuit),
+                (
+                    ("settings", PlotIcons["options"].label),
+                    PlotIcons["options"],
+                    self.parent.PlotOptionsMenu,
+                ),
+                (
+                    ("quit", PlotIcons["quit"].label),
+                    PlotIcons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 65 - 13
gui/wxpython/wxplot/profile.py

@@ -494,21 +494,73 @@ class ProfileToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("addraster", BaseIcons["addRast"], self.parent.OnSelectRaster),
-                ("transect", PlotIcons["transect"], self.parent.OnDrawTransect),
+                (
+                    ("addraster", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.parent.OnSelectRaster,
+                ),
+                (
+                    ("transect", PlotIcons["transect"].label),
+                    PlotIcons["transect"],
+                    self.parent.OnDrawTransect,
+                ),
                 (None,),
-                ("draw", PlotIcons["draw"], self.parent.OnCreateProfile),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
-                ("drag", BaseIcons["pan"], self.parent.OnDrag),
-                ("zoom", BaseIcons["zoomIn"], self.parent.OnZoom),
-                ("unzoom", BaseIcons["zoomBack"], self.parent.OnRedraw),
+                (
+                    ("draw", PlotIcons["draw"].label),
+                    PlotIcons["draw"],
+                    self.parent.OnCreateProfile,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
+                (
+                    ("drag", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnDrag,
+                ),
+                (
+                    ("zoom", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoom,
+                ),
+                (
+                    ("unzoom", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnRedraw,
+                ),
                 (None,),
-                ("statistics", PlotIcons["statistics"], self.parent.OnStats),
-                ("datasave", PlotIcons["save"], self.parent.SaveProfileToFile),
-                ("image", BaseIcons["saveFile"], self.parent.SaveToFile),
-                ("print", BaseIcons["print"], self.parent.PrintMenu),
+                (
+                    ("statistics", PlotIcons["statistics"].label),
+                    PlotIcons["statistics"],
+                    self.parent.OnStats,
+                ),
+                (
+                    ("datasave", PlotIcons["save"].label),
+                    PlotIcons["save"],
+                    self.parent.SaveProfileToFile,
+                ),
+                (
+                    ("image", BaseIcons["saveFile"].label),
+                    BaseIcons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("print", BaseIcons["print"].label),
+                    BaseIcons["print"],
+                    self.parent.PrintMenu,
+                ),
                 (None,),
-                ("settings", PlotIcons["options"], self.parent.PlotOptionsMenu),
-                ("quit", PlotIcons["quit"], self.parent.OnQuit),
+                (
+                    ("settings", PlotIcons["options"].label),
+                    PlotIcons["options"],
+                    self.parent.PlotOptionsMenu,
+                ),
+                (
+                    ("quit", PlotIcons["quit"].label),
+                    PlotIcons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )

+ 55 - 11
gui/wxpython/wxplot/scatter.py

@@ -318,19 +318,63 @@ class ScatterToolbar(BaseToolbar):
         """Toolbar data"""
         return self._getToolbarData(
             (
-                ("addraster", BaseIcons["addRast"], self.parent.OnSelectRaster),
+                (
+                    ("addraster", BaseIcons["addRast"].label),
+                    BaseIcons["addRast"],
+                    self.parent.OnSelectRaster,
+                ),
                 (None,),
-                ("draw", PlotIcons["draw"], self.parent.OnCreateScatter),
-                ("erase", BaseIcons["erase"], self.parent.OnErase),
-                ("drag", BaseIcons["pan"], self.parent.OnDrag),
-                ("zoom", BaseIcons["zoomIn"], self.parent.OnZoom),
-                ("unzoom", BaseIcons["zoomBack"], self.parent.OnRedraw),
+                (
+                    ("draw", PlotIcons["draw"].label),
+                    PlotIcons["draw"],
+                    self.parent.OnCreateScatter,
+                ),
+                (
+                    ("erase", BaseIcons["erase"].label),
+                    BaseIcons["erase"],
+                    self.parent.OnErase,
+                ),
+                (
+                    ("drag", BaseIcons["pan"].label),
+                    BaseIcons["pan"],
+                    self.parent.OnDrag,
+                ),
+                (
+                    ("zoom", BaseIcons["zoomIn"].label),
+                    BaseIcons["zoomIn"],
+                    self.parent.OnZoom,
+                ),
+                (
+                    ("unzoom", BaseIcons["zoomBack"].label),
+                    BaseIcons["zoomBack"],
+                    self.parent.OnRedraw,
+                ),
                 (None,),
-                ("statistics", PlotIcons["statistics"], self.parent.OnRegression),
-                ("image", BaseIcons["saveFile"], self.parent.SaveToFile),
-                ("print", BaseIcons["print"], self.parent.PrintMenu),
+                (
+                    ("statistics", PlotIcons["statistics"].label),
+                    PlotIcons["statistics"],
+                    self.parent.OnRegression,
+                ),
+                (
+                    ("image", BaseIcons["saveFile"].label),
+                    BaseIcons["saveFile"],
+                    self.parent.SaveToFile,
+                ),
+                (
+                    ("print", BaseIcons["print"].label),
+                    BaseIcons["print"],
+                    self.parent.PrintMenu,
+                ),
                 (None,),
-                ("settings", PlotIcons["options"], self.parent.PlotOptionsMenu),
-                ("quit", PlotIcons["quit"], self.parent.OnQuit),
+                (
+                    ("settings", PlotIcons["options"].label),
+                    PlotIcons["options"],
+                    self.parent.PlotOptionsMenu,
+                ),
+                (
+                    ("quit", PlotIcons["quit"].label),
+                    PlotIcons["quit"],
+                    self.parent.OnQuit,
+                ),
             )
         )