Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b4d5fcf

Browse files
committed
helper methods in toolbar and navigation
1 parent 3118a5a commit b4d5fcf

3 files changed

Lines changed: 61 additions & 7 deletions

File tree

lib/matplotlib/backend_bases.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3228,8 +3228,10 @@ class NavigationBase(object):
32283228
tools.ToolToggleYScale,
32293229
tools.ToolHome, tools.ToolBack,
32303230
tools.ToolForward,
3231+
None,
32313232
tools.ToolZoom,
32323233
tools.ToolPan,
3234+
None,
32333235
'ConfigureSubplots',
32343236
'SaveFigure']
32353237

@@ -3266,7 +3268,11 @@ def __init__(self, canvas, toolbar=None):
32663268
self.canvaslock = self.canvas.widgetlock
32673269

32683270
for tool in self._default_tools:
3269-
self.add_tool(tool)
3271+
if tool is None:
3272+
if self.toolbar is not None:
3273+
self.toolbar.add_separator(-1)
3274+
else:
3275+
self.add_tool(tool)
32703276

32713277
self._last_cursor = self._default_cursor
32723278

@@ -3279,7 +3285,28 @@ def _get_toolbar(self, toolbar, canvas):
32793285
toolbar = None
32803286
return toolbar
32813287

3282-
#remove persistent instances
3288+
def get_active(self):
3289+
return {'toggled': self._toggled, 'instances': self._instances.keys()}
3290+
3291+
def get_tool_keymap(self, name):
3292+
keys = [k for k, i in self._keys.items() if i == name]
3293+
return keys
3294+
3295+
def set_tool_keymap(self, name, *keys):
3296+
if name not in self._tools:
3297+
raise AttributeError('%s not in Tools' % name)
3298+
3299+
active_keys = [k for k, i in self._keys.items() if i == name]
3300+
for k in active_keys:
3301+
del self._keys[k]
3302+
3303+
for key in keys:
3304+
for k in validate_stringlist(key):
3305+
if k in self._keys:
3306+
warnings.warn('Key %s changed from %s to %s' %
3307+
(k, self._keys[k], name))
3308+
self._keys[k] = name
3309+
32833310
def unregister(self, name):
32843311
if self._toggled == name:
32853312
self._handle_toggle(name, from_toolbar=False)
@@ -3310,6 +3337,9 @@ def add_tool(self, callback_class):
33103337
self._tools[name] = tool
33113338
if tool.keymap is not None:
33123339
for k in validate_stringlist(tool.keymap):
3340+
if k in self._keys:
3341+
warnings.warn('Key %s changed from %s to %s' %
3342+
(k, self._keys[k], name))
33133343
self._keys[k] = name
33143344

33153345
if self.toolbar and tool.position is not None:
@@ -3573,3 +3603,9 @@ def toggle(self, name, callback=False):
35733603

35743604
def remove_toolitem(self, name):
35753605
pass
3606+
3607+
def move_toolitem(self, pos_ini, pos_fin):
3608+
pass
3609+
3610+
def set_toolitem_visibility(self, name, visible):
3611+
pass

lib/matplotlib/backend_tools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def activate(self, event):
8888
class ToolEnableNavigation(ToolBase):
8989
name = 'EnableOne'
9090
description = 'Enables one axes navigation'
91-
keymap = range(1, 5)
91+
keymap = range(1, 10)
9292

9393
def activate(self, event):
9494
if event.inaxes is None:

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -807,8 +807,7 @@ def set_message(self, s):
807807

808808
def toggle(self, name, callback=False):
809809
if name not in self._toolitems:
810-
# TODO: raise a warning
811-
print('Not in toolbar', name)
810+
self.set_message('%s Not in toolbar' % name)
812811
return
813812

814813
status = self._toolitems[name].get_active()
@@ -822,12 +821,31 @@ def toggle(self, name, callback=False):
822821

823822
def remove_toolitem(self, name):
824823
if name not in self._toolitems:
825-
#TODO: raise warning
826-
print('Not in toolbar', name)
824+
self.set_message('%s Not in toolbar' % name)
827825
return
828826
self._toolbar.remove(self._toolitems[name])
829827
del self._toolitems[name]
830828

829+
def add_separator(self, pos=-1):
830+
toolitem = Gtk.SeparatorToolItem()
831+
self._toolbar.insert(toolitem, pos)
832+
toolitem.show()
833+
return toolitem
834+
835+
def move_toolitem(self, pos_ini, pos_fin):
836+
widget = self._toolbar.get_nth_item(pos_ini)
837+
if not widget:
838+
self.set_message('Impossible to remove tool %d' % pos_ini)
839+
return
840+
self._toolbar.remove(widget)
841+
self._toolbar.insert(widget, pos_fin)
842+
843+
def set_toolitem_visibility(self, name, visible):
844+
if name not in self._toolitems:
845+
self.set_message('%s Not in toolbar' % name)
846+
return
847+
self._toolitems[name].set_visible(visible)
848+
831849

832850
class SaveFigureGTK3(SaveFigureBase):
833851

0 commit comments

Comments
 (0)