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

Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
improving the example
  • Loading branch information
fariza committed Jan 17, 2014
commit 72ce737b1c0c402bf8b28edb9734de2437e7e8f7
26 changes: 24 additions & 2 deletions examples/user_interfaces/navigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,29 @@

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3])
ax.plot([1, 2, 3], label='My First line')
ax.plot([2, 3, 4], label='Second line')

fig.canvas.manager.navigation.list_tools()


from matplotlib.backend_bases import ToolBase
class ListTools(ToolBase):
#keyboard shortcut
keymap = 'm'
#Name used as id, must be unique between tools of the same navigation
name = 'List'
description = 'List Tools'
#Where to put it in the toolbar, -1 = at the end, None = Not in toolbar
position = -1

def activate(self, event):
#The most important attributes are navigation and figure
self.navigation.list_tools()

#Add the simple tool to the toolbar
fig.canvas.manager.navigation.add_tool(ListTools)

#Just for fun, lets remove the back button
fig.canvas.manager.navigation.remove_tool('Back')

plt.show()
33 changes: 27 additions & 6 deletions lib/matplotlib/backend_bases.py
Original file line number Diff line number Diff line change
Expand Up @@ -2973,9 +2973,21 @@ def _get_toolbar(self, toolbar, canvas):

#remove persistent instances
def unregister(self, name):
if self._toggled == name:
self._handle_toggle(name, from_toolbar=False)
if name in self._instances:
del self._instances[name]

def remove_tool(self, name):
self.unregister(name)
del self._tools[name]
keys = [k for k, v in self._keys.items() if v == name]
for k in keys:
del self._keys[k]

if self.toolbar:
self.toolbar.remove_toolitem(name)

def add_tool(self, callback_class):
tool = self._get_cls_to_instantiate(callback_class)
name = tool.name
Expand All @@ -2995,7 +3007,10 @@ def add_tool(self, callback_class):

if self.toolbar and tool.position is not None:
basedir = os.path.join(rcParams['datapath'], 'images')
fname = os.path.join(basedir, tool.image + '.png')
if tool.image is not None:
fname = os.path.join(basedir, tool.image + '.png')
else:
fname = 'Unknown'
self.toolbar.add_toolitem(name, tool.description,
fname,
tool.position,
Expand Down Expand Up @@ -3089,13 +3104,16 @@ def _handle_toggle(self, name, event=None, from_toolbar=False):
a.set_navigate_mode(self._toggled)

def list_tools(self):
print ("{0:20} {1:40} {2}".format('Name (id)', 'Tool description',
print ('_' * 80)
print ("{0:20} {1:50} {2}".format('Name (id)', 'Tool description',
'Keymap'))
print ('_' * 50, '\n')
for id_, tool in self._tools.items():
keys = [k for k, i in self._keys.items() if i == id_]
print ("{0:20} {1:40} {2}".format(tool.name, tool.description,
print ('_' * 80)
for name in sorted(self._tools.keys()):
tool = self._tools[name]
keys = [k for k, i in self._keys.items() if i == name]
print ("{0:20} {1:50} {2}".format(tool.name, tool.description,
', '.join(keys)))
print ('_' * 80, '\n')

def update(self):
"""Reset the axes stack"""
Expand Down Expand Up @@ -3317,3 +3335,6 @@ def set_message(self, s):
def toggle(self, name, callback=False):
#carefull, callback means to perform or not the callback while toggling
raise NotImplementedError

def remove_toolitem(self, name):
pass
8 changes: 8 additions & 0 deletions lib/matplotlib/backends/backend_gtk3.py
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,14 @@ def toggle(self, name, callback=False):
if not callback:
self._toolitems[name].handler_unblock(self._signals[name])

def remove_toolitem(self, name):
if name not in self._toolitems:
#TODO: raise warning
print('Not in toolbar', name)
return
self._toolbar.remove(self._toolitems[name])
del self._toolitems[name]


class FileChooserDialog(Gtk.FileChooserDialog):
"""GTK+ file selector which remembers the last file/directory
Expand Down