You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(33) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(44) |
Mar
(51) |
Apr
(43) |
May
(43) |
Jun
(36) |
Jul
(61) |
Aug
(44) |
Sep
(25) |
Oct
(82) |
Nov
(97) |
Dec
(47) |
2005 |
Jan
(77) |
Feb
(143) |
Mar
(42) |
Apr
(31) |
May
(93) |
Jun
(93) |
Jul
(35) |
Aug
(78) |
Sep
(56) |
Oct
(44) |
Nov
(72) |
Dec
(75) |
2006 |
Jan
(116) |
Feb
(99) |
Mar
(181) |
Apr
(171) |
May
(112) |
Jun
(86) |
Jul
(91) |
Aug
(111) |
Sep
(77) |
Oct
(72) |
Nov
(57) |
Dec
(51) |
2007 |
Jan
(64) |
Feb
(116) |
Mar
(70) |
Apr
(74) |
May
(53) |
Jun
(40) |
Jul
(519) |
Aug
(151) |
Sep
(132) |
Oct
(74) |
Nov
(282) |
Dec
(190) |
2008 |
Jan
(141) |
Feb
(67) |
Mar
(69) |
Apr
(96) |
May
(227) |
Jun
(404) |
Jul
(399) |
Aug
(96) |
Sep
(120) |
Oct
(205) |
Nov
(126) |
Dec
(261) |
2009 |
Jan
(136) |
Feb
(136) |
Mar
(119) |
Apr
(124) |
May
(155) |
Jun
(98) |
Jul
(136) |
Aug
(292) |
Sep
(174) |
Oct
(126) |
Nov
(126) |
Dec
(79) |
2010 |
Jan
(109) |
Feb
(83) |
Mar
(139) |
Apr
(91) |
May
(79) |
Jun
(164) |
Jul
(184) |
Aug
(146) |
Sep
(163) |
Oct
(128) |
Nov
(70) |
Dec
(73) |
2011 |
Jan
(235) |
Feb
(165) |
Mar
(147) |
Apr
(86) |
May
(74) |
Jun
(118) |
Jul
(65) |
Aug
(75) |
Sep
(162) |
Oct
(94) |
Nov
(48) |
Dec
(44) |
2012 |
Jan
(49) |
Feb
(40) |
Mar
(88) |
Apr
(35) |
May
(52) |
Jun
(69) |
Jul
(90) |
Aug
(123) |
Sep
(112) |
Oct
(120) |
Nov
(105) |
Dec
(116) |
2013 |
Jan
(76) |
Feb
(26) |
Mar
(78) |
Apr
(43) |
May
(61) |
Jun
(53) |
Jul
(147) |
Aug
(85) |
Sep
(83) |
Oct
(122) |
Nov
(18) |
Dec
(27) |
2014 |
Jan
(58) |
Feb
(25) |
Mar
(49) |
Apr
(17) |
May
(29) |
Jun
(39) |
Jul
(53) |
Aug
(52) |
Sep
(35) |
Oct
(47) |
Nov
(110) |
Dec
(27) |
2015 |
Jan
(50) |
Feb
(93) |
Mar
(96) |
Apr
(30) |
May
(55) |
Jun
(83) |
Jul
(44) |
Aug
(8) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
(1) |
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(1) |
Oct
(3) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(2) |
2
|
3
|
4
|
5
(3) |
6
(1) |
7
|
8
|
9
|
10
|
11
|
12
|
13
(1) |
14
|
15
(6) |
16
(3) |
17
(6) |
18
|
19
(6) |
20
|
21
(9) |
22
(5) |
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
(1) |
|
On Fri, 2004年04月16日 at 08:09, John Hunter wrote: > I think now is a good time to start implementing some GUI neutral > event handling and wanted to bounce some ideas off the list. The idea > is for matplotlib to define its own event handler in matplotlib.events > and each of the GUIs trigger these events. Users could register with > the event handler using an observer pattern. In user space, you could > do something like the following and expect it to work across Tk, Wx > and GTK:: > > import matplotlib.events as events > > def key_press(event): > print event.key > > events.connect('key_press', key_press) > > def button_press_press(event): > print event.button > > events.connect('button_press', button_press) > > Each of the GUIs would call matplotlib.events.notify. The backends > would have to map the GUI constants, eg LEFT_BUTTON, to the > appropriate matplotlib.event constant and handle things like flip y > inversion since the matplotlib coordinate system is 0,0 = lower, left. > > This would also lay the groundwork for generalizing things like > examples/object_picker.py, writing generic measure tools, and so on. > You could write a GUI neutral axes resize tool where the user could > click on an axes and drag the size. So it would be useful for the > users who want to define some GUI interaction and or the developers > who want to add features across backends w/o having to know all the > widget sets. > > My questions are > > * Does this look like a good framework? The meaning of the coords_demo_gtk was clear and easy to emulate. The meaning of the events interface above (in the context of multiple figure managers) is not so clear. > * Does someone want to implement the interface matplotlib.events? > > * Do the GUI maintainers for Tk (Todd), Wx (Jeremy) and GTK (Me) > have time to do the mapping? If not can we get another volunteer? I'm not imagining this as a major time sink so I'm pretty sure I'll be able to support this. > * What events do we want to define? The ones I use a lot are:: > > key_press_event > key_release_event > motion_notify_event > button_press_event > button_release_event > > If these basic events are implemented at the backend level, we > could catch them and trigger more complicated events like > 'drag_rectangle' in matplotlib.events. Ie, catch press, mouse > move, and release, and then trigger drag_rectangle with start and > end locations in event.start and event.end. > > * There is the issue of coords. x, y can be given in data, axes > (0-1) or data coords. Probably best to give all three > > event.xdata, event.ydata, > event.xaxis, event.yaxis, > event.xdisplay, event.ydisplay > > See examples/coords_demo_gtk.py for an example of connecting to a > GTK event and mapping the display coords to data space. Jeremy > and Todd, this would be a good example to implement as stage 1 for > the event handling. I implemented the coords demo for TkAgg this morning (just replace GTK with TkAgg in the demo). I did this by implementing connect() for FigureCanvasTkAgg... very simple so far. > > Of course, there is no end to how far you could go with this, defining > a basic cross GUI widget API for dialog boxes, entry boxes and so on. > A meta-wx, if you will. But that is an issue for another day. I can see the utility of GUI neutrality and I'm in favor of it, but I'm also inclined to keep it as simple as possible. I think it would be easy to go overboard and start worrying about creating a meta-GUI instead of a plotter. If we drive the backend development with demos and concrete applications (rather than some abstract idea of universal GUI substitutability) I think the idea will turn out well. Regards, Todd -- Todd Miller <jm...@st...>
I can't really comment on the framework (sounds OK but I have no experience in this area), but you might want to add mouse wheel events and maybe both single and double-click mouse button events. Gary *********** REPLY SEPARATOR *********** On 16/04/2004 at 07:09 John Hunter wrote: <snip> > * What events do we want to define? The ones I use a lot are:: > > key_press_event > key_release_event > motion_notify_event > button_press_event > button_release_event
I think now is a good time to start implementing some GUI neutral event handling and wanted to bounce some ideas off the list. The idea is for matplotlib to define its own event handler in matplotlib.events and each of the GUIs trigger these events. Users could register with the event handler using an observer pattern. In user space, you could do something like the following and expect it to work across Tk, Wx and GTK:: import matplotlib.events as events def key_press(event): print event.key events.connect('key_press', key_press) def button_press_press(event): print event.button events.connect('button_press', button_press) Each of the GUIs would call matplotlib.events.notify. The backends would have to map the GUI constants, eg LEFT_BUTTON, to the appropriate matplotlib.event constant and handle things like flip y inversion since the matplotlib coordinate system is 0,0 = lower, left. This would also lay the groundwork for generalizing things like examples/object_picker.py, writing generic measure tools, and so on. You could write a GUI neutral axes resize tool where the user could click on an axes and drag the size. So it would be useful for the users who want to define some GUI interaction and or the developers who want to add features across backends w/o having to know all the widget sets. My questions are * Does this look like a good framework? * Does someone want to implement the interface matplotlib.events? * Do the GUI maintainers for Tk (Todd), Wx (Jeremy) and GTK (Me) have time to do the mapping? If not can we get another volunteer? * What events do we want to define? The ones I use a lot are:: key_press_event key_release_event motion_notify_event button_press_event button_release_event If these basic events are implemented at the backend level, we could catch them and trigger more complicated events like 'drag_rectangle' in matplotlib.events. Ie, catch press, mouse move, and release, and then trigger drag_rectangle with start and end locations in event.start and event.end. * There is the issue of coords. x, y can be given in data, axes (0-1) or data coords. Probably best to give all three event.xdata, event.ydata, event.xaxis, event.yaxis, event.xdisplay, event.ydisplay See examples/coords_demo_gtk.py for an example of connecting to a GTK event and mapping the display coords to data space. Jeremy and Todd, this would be a good example to implement as stage 1 for the event handling. Of course, there is no end to how far you could go with this, defining a basic cross GUI widget API for dialog boxes, entry boxes and so on. A meta-wx, if you will. But that is an issue for another day. JDH