Skip to content

Standardize creation of FigureManager from a given FigureCanvas class. #22925

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 1, 2022

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Apr 28, 2022

The new_manager classmethod may appear to belong more naturally to the
FigureManager class rather than the FigureCanvas class, but putting it
on FigureCanvas has multiple advantages:

  • One may want to create managers at times where all one has is a
    FigureCanvas instance, which may not even have a corresponding manager
    (e.g. subplot_tool).
  • A given FigureManager class can be associated with many different
    FigureCanvas classes (indeed, FigureManagerQT can manage both
    FigureCanvasQTAgg and FigureCanvasQTCairo and also the mplcairo Qt
    canvas classes), whereas we don't have multiple FigureManager classes
    for a given FigureCanvas class.

Still, put the actual logic in FigureManager.create_with_canvas and
access it via some indirection, as suggested by timhoffm (#22895).

See discussion at #18854 and #22895.

PR Summary

PR Checklist

Tests and Styling

  • Has pytest style unit tests (and pytest passes).
  • Is Flake 8 compliant (install flake8-docstrings and run flake8 --docstring-convention=all).

Documentation

  • New features are documented, with examples if plot related.
  • New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there).
  • API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there).
  • Documentation is sphinx and numpydoc compliant (the docs should build without error).

@anntzer anntzer added this to the v3.6.0 milestone Apr 28, 2022
@anntzer anntzer force-pushed the uniform-manager-creation-2 branch from 12988c3 to ad1ded4 Compare April 28, 2022 22:28
The `new_manager` classmethod may appear to belong more naturally to the
FigureManager class rather than the FigureCanvas class, but putting it
on FigureCanvas has multiple advantages:

- One may want to create managers at times where all one has is a
  FigureCanvas instance, which may not even have a corresponding manager
  (e.g. `subplot_tool`).
- A given FigureManager class can be associated with many different
  FigureCanvas classes (indeed, FigureManagerQT can manage both
  FigureCanvasQTAgg and FigureCanvasQTCairo and also the mplcairo Qt
  canvas classes), whereas we don't have multiple FigureManager classes
  for a given FigureCanvas class.

Still, put the *actual* logic in FigureManager.create_with_canvas and
access it via some indirection, as suggested by timhoffm.
@anntzer anntzer force-pushed the uniform-manager-creation-2 branch from ad1ded4 to f29c3e0 Compare May 1, 2022 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants