|
23 | 23 |
|
24 | 24 | from matplotlib import _api, backend_bases
|
25 | 25 | from matplotlib.backends import backend_agg
|
26 |
| -from matplotlib.backend_bases import _Backend |
| 26 | +from matplotlib.backend_bases import ( |
| 27 | + _Backend, KeyEvent, LocationEvent, MouseEvent, ResizeEvent) |
27 | 28 |
|
28 | 29 | _log = logging.getLogger(__name__)
|
29 | 30 |
|
@@ -255,40 +256,33 @@ def _handle_mouse(self, event):
|
255 | 256 | x = event['x']
|
256 | 257 | y = event['y']
|
257 | 258 | y = self.get_renderer().height - y
|
258 |
| - |
259 |
| - # Javascript button numbers and matplotlib button numbers are |
260 |
| - # off by 1 |
| 259 | + # Javascript button numbers and Matplotlib button numbers are off by 1 |
261 | 260 | button = event['button'] + 1
|
262 | 261 |
|
263 | 262 | e_type = event['type']
|
264 |
| - guiEvent = event.get('guiEvent', None) |
265 |
| - if e_type == 'button_press': |
266 |
| - self.button_press_event(x, y, button, guiEvent=guiEvent) |
| 263 | + guiEvent = event.get('guiEvent') |
| 264 | + if e_type in ['button_press', 'button_release']: |
| 265 | + MouseEvent(e_type + '_event', self, x, y, button, |
| 266 | + guiEvent=guiEvent).process() |
267 | 267 | elif e_type == 'dblclick':
|
268 |
| - self.button_press_event(x, y, button, dblclick=True, |
269 |
| - guiEvent=guiEvent) |
270 |
| - elif e_type == 'button_release': |
271 |
| - self.button_release_event(x, y, button, guiEvent=guiEvent) |
272 |
| - elif e_type == 'motion_notify': |
273 |
| - self.motion_notify_event(x, y, guiEvent=guiEvent) |
274 |
| - elif e_type == 'figure_enter': |
275 |
| - self.enter_notify_event(xy=(x, y), guiEvent=guiEvent) |
276 |
| - elif e_type == 'figure_leave': |
277 |
| - self.leave_notify_event() |
| 268 | + MouseEvent('button_press_event', self, x, y, button, dblclick=True, |
| 269 | + guiEvent=guiEvent).process() |
278 | 270 | elif e_type == 'scroll':
|
279 |
| - self.scroll_event(x, y, event['step'], guiEvent=guiEvent) |
| 271 | + MouseEvent('scroll_event', self, x, y, step=event['step'], |
| 272 | + guiEvent=guiEvent).process() |
| 273 | + elif e_type == 'motion_notify': |
| 274 | + MouseEvent(e_type + '_event', self, x, y, |
| 275 | + guiEvent=guiEvent).process() |
| 276 | + elif e_type in ['figure_enter', 'figure_leave']: |
| 277 | + LocationEvent(e_type + '_event', self, x, y, |
| 278 | + guiEvent=guiEvent).process() |
280 | 279 | handle_button_press = handle_button_release = handle_dblclick = \
|
281 | 280 | handle_figure_enter = handle_figure_leave = handle_motion_notify = \
|
282 | 281 | handle_scroll = _handle_mouse
|
283 | 282 |
|
284 | 283 | def _handle_key(self, event):
|
285 |
| - key = _handle_key(event['key']) |
286 |
| - e_type = event['type'] |
287 |
| - guiEvent = event.get('guiEvent', None) |
288 |
| - if e_type == 'key_press': |
289 |
| - self.key_press_event(key, guiEvent=guiEvent) |
290 |
| - elif e_type == 'key_release': |
291 |
| - self.key_release_event(key, guiEvent=guiEvent) |
| 284 | + KeyEvent(event['type'] + '_event', self, _handle_key(event['key']), |
| 285 | + guiEvent=event.get('guiEvent')).process() |
292 | 286 | handle_key_press = handle_key_release = _handle_key
|
293 | 287 |
|
294 | 288 | def handle_toolbar_button(self, event):
|
@@ -318,7 +312,7 @@ def handle_resize(self, event):
|
318 | 312 | # identical or within a pixel or so).
|
319 | 313 | self._png_is_old = True
|
320 | 314 | self.manager.resize(*fig.bbox.size, forward=False)
|
321 |
| - self.resize_event() |
| 315 | + ResizeEvent('resize_event', self).process() |
322 | 316 |
|
323 | 317 | def handle_send_image_mode(self, event):
|
324 | 318 | # The client requests notification of what the current image mode is.
|
|
0 commit comments