matplotlib/matplotlib — pull request #2557 by fariza (2013-10-28 22:06:46+00:00)
Title: Splitting navigation and toolbar

This is in response to the request to split https://github.com/matplotlib/matplotlib/pull/2465 into several smaller PRs.

Goals
=============
Main Goal
-------------
Separate the navigation state from the GUI (or physical) toolbar. Without touching any base class (as much as possible), to avoid forced refactor of other backends.

Secondary Goal
-------------
Add reconfiguration capabilities to the toolbar

Implementation
=============
The following base classes were added
* **NavigationBase**: a derivate of NavigationToolbar2. This is the class that holds the state of the navigation.
* **ToolbarBase**: This is the physical or GUI toolbar. with the following new public methods
* remove_tool
* add_tool
* move_tool

Includes Gtk3 implementation
* **NavigationGTK3**
* **ToolbarGTK3**
* Simple example of use examples/user_interfaces/reconfigurable_toolbar_gtk3.py

Future
=============
If the functionality is worth the effort, and all the backends are ported to use this classes, it will be possible to merge NavigationBase and NavigationToolbar2.

Note
=============
This is very similar to the idea of https://github.com/matplotlib/matplotlib/pull/1849 different implementation without touching the bases classes.