Add some wx specific tools for ToolManager #10208
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Summary
This is a first implementation of the main ToolManager Tools for the wx backends:
SaveFigure, SetCursor and Rubberband
There's no ToolbarWx implementation. The tools are for embedding a FigureCanvasWxAgg and to be triggered by the program.
This is a replacement for PR #10145.
It was tested under Windows/Python 3.6/Phoenix and Mac OS/Python 2.7/wxPython 3.0.2.
The implementation of Rubberband under Mac OS is not optimal, but overlays and DC.SetLogicalFunction do not work on Mac OS on any wxPython version.
Re-using the Mac OS rubberband code from the NavigationToolbar2Wx would have created quite unreadable code as RubberbandBase is using screen coordinates. The code could probably be optimized with a changed implementation of FigureCanvasWxAgg.
The other tools are mainly copy & paste from NavigationToolbar2Wx and the Qt/GTK3/Tk implementations of the tools.
My motivation for the current pull requests is to ship a fully working example with wxGlade that demonstrates how to build a GUI with a matplotlib canvas and use most of the control features that people would need. I could strip down this example if required. The full example is probably too large for distribution with matplotlib and also it's not finished yet.
PR Checklist