Navigation toolbar redraw button

What is the "Redraw the figure" Navigation toolbar button

    > used for? When I press it nothing (visible) happens. I
    > guess it may be for redrawing the figure (as it says!), but
    > thats not needed since (in GTK+) you setup an expose event
    > which redraws the window automatically when required.

In earlier versions of matplotlib, the screen could get in an
inconsistent state following a pan or zoom (some residual effects of
ticklabels not properly erased, etc...). That has all been cured,
thankfully, and the redraw tool is a vestigial organ. Slated for
destruction.

    > It would be nice to have a button to redraw the figure AND
    > undo any zooming and panning you may have done. Which
    > commands would I need to call to do that?

I've been planning on making some changes to the toolbar. How would
you feel about a 'save excursion / restore excursion'? As you
navigate through, you could click 'save excursion' and continue
navigating. At any point, when you click restore excursion it would
return you to the save point, or the original view if none clicked,
Ideally, you could click save excursion multiple times, and repeated
restores would step you back trough those points, to the beginning.
This is easy to implement.

Alternatively, there could be three buttons: back view, mark view, and
forward view, and as you navigate you could mark as many views as you
want, and then use forward and back to go between them. Eg, for the
stock_demo, where I have 60 days of stock prices for IBM and Apple,
you could mark several days or hours in that whole 60 days, and then
use the forward and back tools to switch between them. If nothing is
marked, back would simply revert you to the original view. I think
this latter scheme sounds more useful, but potentially adds too many
buttons.

Other tools I've been considering

-- add a key modifier to the pan tool so CTRL pans an entire view.
    Again, suppose for the stock demo you had 1 day in the view, with
    ticks every hour. Use pan right to pan hour by hour and
    CTRL-right to pan day by day

-- add a key modifier so a zoom affects both axes, eg, SHIFT-zoom
    zooms both x and y

-- add a rectangle zoom tool, so you can select a rectangular region
   with your mouse and set that to be the x and y view limits.

The primary application I use matplotlib in is an EEG viewer, so I
have a lot of navigation requirements.

If anyone has any special navigation requests, weigh in, because I'll
probably try and get some or all of these features before the next
major (0.4x) release early next month.

JDH