|
2 | 2 | Abstract base classes define the primitives for Tools.
|
3 | 3 | These tools are used by `matplotlib.backend_managers.ToolManager`
|
4 | 4 |
|
5 |
| -:class:`ToolBase` |
6 |
| - Simple stateless tool |
| 5 | +`ToolBase` |
| 6 | + Simple stateless tool. |
7 | 7 |
|
8 |
| -:class:`ToolToggleBase` |
9 |
| - Tool that has two states, only one Toggle tool can be |
10 |
| - active at any given time for the same |
11 |
| - `matplotlib.backend_managers.ToolManager` |
| 8 | +`ToolToggleBase` |
| 9 | + Tool that has two states, only one Toggle tool can be active at any given time for |
| 10 | + the same `matplotlib.backend_managers.ToolManager`. |
12 | 11 | """
|
13 | 12 |
|
14 | 13 | importenum
|
|
22 | 21 | importnumpyasnp
|
23 | 22 |
|
24 | 23 | importmatplotlibasmpl
|
25 |
| -frommatplotlib._pylab_helpersimportGcf |
26 | 24 | frommatplotlibimport_api,cbook
|
27 | 25 |
|
28 | 26 |
|
@@ -358,101 +356,66 @@ def remove_rubberband(self):
|
358 | 356 | pass
|
359 | 357 |
|
360 | 358 |
|
361 |
| -classToolQuit(ToolBase): |
| 359 | +class_ToolForwardingToClassicToolbar(ToolBase): |
| 360 | +_rc_entry=''# Must be set by subclass. |
| 361 | +default_keymap=property(lambdaself:mpl.rcParams[self._rc_entry]) |
| 362 | + |
| 363 | +deftrigger(self,sender,event,data=None): |
| 364 | +sentinel=str(uuid.uuid4()) |
| 365 | +# Trigger class toolbar implementation by temporarily setting the keymap to a |
| 366 | +# unique key and sending an appropriate event. |
| 367 | +withcbook._setattr_cm(event,key=sentinel), \ |
| 368 | +mpl.rc_context({self._rc_entry:sentinel}): |
| 369 | +mpl.backend_bases.key_press_handler(event,self.figure.canvas) |
| 370 | + |
| 371 | + |
| 372 | +classToolQuit(_ToolForwardingToClassicToolbar): |
362 | 373 | """Tool to call the figure manager destroy method."""
|
363 | 374 |
|
364 | 375 | description='Quit the figure'
|
365 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.quit']) |
366 |
| - |
367 |
| -deftrigger(self,sender,event,data=None): |
368 |
| -Gcf.destroy_fig(self.figure) |
| 376 | +_rc_entry='keymap.quit' |
369 | 377 |
|
370 | 378 |
|
371 |
| -classToolQuitAll(ToolBase): |
| 379 | +classToolQuitAll(_ToolForwardingToClassicToolbar): |
372 | 380 | """Tool to call the figure manager destroy method."""
|
373 | 381 |
|
374 | 382 | description='Quit all figures'
|
375 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.quit_all']) |
376 |
| - |
377 |
| -deftrigger(self,sender,event,data=None): |
378 |
| -Gcf.destroy_all() |
| 383 | +_rc_entry='keymap.quit_all' |
379 | 384 |
|
380 | 385 |
|
381 |
| -classToolGrid(ToolBase): |
| 386 | +classToolGrid(_ToolForwardingToClassicToolbar): |
382 | 387 | """Tool to toggle the major grids of the figure."""
|
383 | 388 |
|
384 | 389 | description='Toggle major grids'
|
385 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.grid']) |
386 |
| - |
387 |
| -deftrigger(self,sender,event,data=None): |
388 |
| -sentinel=str(uuid.uuid4()) |
389 |
| -# Trigger grid switching by temporarily setting :rc:`keymap.grid` |
390 |
| -# to a unique key and sending an appropriate event. |
391 |
| -withcbook._setattr_cm(event,key=sentinel), \ |
392 |
| -mpl.rc_context({'keymap.grid':sentinel}): |
393 |
| -mpl.backend_bases.key_press_handler(event,self.figure.canvas) |
| 390 | +_rc_entry='keymap.grid' |
394 | 391 |
|
395 | 392 |
|
396 |
| -classToolMinorGrid(ToolBase): |
| 393 | +classToolMinorGrid(_ToolForwardingToClassicToolbar): |
397 | 394 | """Tool to toggle the major and minor grids of the figure."""
|
398 | 395 |
|
399 | 396 | description='Toggle major and minor grids'
|
400 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.grid_minor']) |
401 |
| - |
402 |
| -deftrigger(self,sender,event,data=None): |
403 |
| -sentinel=str(uuid.uuid4()) |
404 |
| -# Trigger grid switching by temporarily setting :rc:`keymap.grid_minor` |
405 |
| -# to a unique key and sending an appropriate event. |
406 |
| -withcbook._setattr_cm(event,key=sentinel), \ |
407 |
| -mpl.rc_context({'keymap.grid_minor':sentinel}): |
408 |
| -mpl.backend_bases.key_press_handler(event,self.figure.canvas) |
| 397 | +_rc_entry='keymap.grid_minor' |
409 | 398 |
|
410 | 399 |
|
411 |
| -classToolFullScreen(ToolBase): |
| 400 | +classToolFullScreen(_ToolForwardingToClassicToolbar): |
412 | 401 | """Tool to toggle full screen."""
|
413 | 402 |
|
414 | 403 | description='Toggle fullscreen mode'
|
415 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.fullscreen']) |
| 404 | +_rc_entry='keymap.fullscreen' |
416 | 405 |
|
417 |
| -deftrigger(self,sender,event,data=None): |
418 |
| -self.figure.canvas.manager.full_screen_toggle() |
419 |
| - |
420 |
| - |
421 |
| -classAxisScaleBase(ToolToggleBase): |
422 |
| -"""Base Tool to toggle between linear and logarithmic.""" |
423 | 406 |
|
424 |
| -deftrigger(self,sender,event,data=None): |
425 |
| -ifevent.inaxesisNone: |
426 |
| -return |
427 |
| -super().trigger(sender,event,data) |
428 |
| - |
429 |
| -defenable(self,event=None): |
430 |
| -self.set_scale(event.inaxes,'log') |
431 |
| -self.figure.canvas.draw_idle() |
| 407 | +classToolXScale(_ToolForwardingToClassicToolbar): |
| 408 | +"""Tool to toggle between linear and logarithmic scales on the X axis.""" |
432 | 409 |
|
433 |
| -defdisable(self,event=None): |
434 |
| -self.set_scale(event.inaxes,'linear') |
435 |
| -self.figure.canvas.draw_idle() |
| 410 | +description='Toggle scale X axis' |
| 411 | +_rc_entry='keymap.xscale' |
436 | 412 |
|
437 | 413 |
|
438 |
| -classToolYScale(AxisScaleBase): |
| 414 | +classToolYScale(_ToolForwardingToClassicToolbar): |
439 | 415 | """Tool to toggle between linear and logarithmic scales on the Y axis."""
|
440 | 416 |
|
441 | 417 | description='Toggle scale Y axis'
|
442 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.yscale']) |
443 |
| - |
444 |
| -defset_scale(self,ax,scale): |
445 |
| -ax.set_yscale(scale) |
446 |
| - |
447 |
| - |
448 |
| -classToolXScale(AxisScaleBase): |
449 |
| -"""Tool to toggle between linear and logarithmic scales on the X axis.""" |
450 |
| - |
451 |
| -description='Toggle scale X axis' |
452 |
| -default_keymap=property(lambdaself:mpl.rcParams['keymap.xscale']) |
453 |
| - |
454 |
| -defset_scale(self,ax,scale): |
455 |
| -ax.set_xscale(scale) |
| 418 | +_rc_entry='keymap.yscale' |
456 | 419 |
|
457 | 420 |
|
458 | 421 | classToolViewsPositions(ToolBase):
|
|