Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c68a3eb

Browse files
committed
update to new event handling, but still need key events...:-(
to do tomorrow... svn path=/trunk/matplotlib/; revision=830
1 parent eaf2c33 commit c68a3eb

1 file changed

Lines changed: 40 additions & 107 deletions

File tree

lib/matplotlib/backends/backend_fltkagg.py

Lines changed: 40 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from matplotlib.cbook import is_string_like, enumerate
2424
from matplotlib.backend_bases import \
2525
RendererBase, GraphicsContextBase, FigureManagerBase, FigureCanvasBase,\
26-
NavigationToolbar2, cursors, MplEvent
26+
NavigationToolbar2, cursors
2727
from matplotlib.figure import Figure
2828
from matplotlib._pylab_helpers import Gcf
2929
from matplotlib.numerix import asarray
@@ -92,73 +92,17 @@ def new_figure_manager(num, *args, **kwargs):
9292
window.end()
9393
figManager = FigureManagerFltkAgg(canvas, num, window)
9494
return figManager
95-
96-
def fltk_event2mpl_event(s,source, need_pos=False, need_button=False, need_key=False):
97-
special={Fltk.FL_Shift_R:'shift',
98-
Fltk.FL_Shift_L:'shift',
99-
Fltk.FL_Control_R:'control',
100-
Fltk.FL_Control_L:'control',
101-
Fltk.FL_Control_R:'control',
102-
Fltk.FL_Control_L:'control',
103-
65515:'win',
104-
65516:'win',
105-
}
106-
107-
thisEvent = MplEvent(s,source)
108-
thisEvent.x = Fltk.Fl.event_x()
109-
# flipy so y=0 is bottom of canvas
110-
thisEvent.y = source.figure.bbox.height() - Fltk.Fl.event_y()
111-
if need_pos:
112-
thisEvent.inaxes = None
113-
for a in source.figure.get_axes():
114-
if a.in_axes(thisEvent.x, thisEvent.y):
115-
thisEvent.inaxes = a
116-
xdata, ydata = a.transData.inverse_xy_tup((thisEvent.x, thisEvent.y))
117-
thisEvent.xdata = xdata
118-
thisEvent.ydata = ydata
119-
break
120-
121-
if need_button:
122-
b1=Fltk.Fl.event_button1()
123-
b2=Fltk.Fl.event_button2()
124-
b3=Fltk.Fl.event_button3()
125-
thisEvent.button = None
126-
if b1:
127-
thisEvent.button = 1
128-
if b2:
129-
thisEvent.button = 2
130-
if b3:
131-
thisEvent.button = 3
132-
else:
133-
thisEvent.button = None
134-
135-
ikey= Fltk.Fl.event_key()
136-
if need_key and Fltk.Fl.event_key(ikey):
137-
if(ikey<=255):
138-
thisEvent.key=chr(ikey)
139-
else:
140-
try:
141-
thisEvent.key=special[ikey]
142-
except:
143-
thisEvent.key=None
144-
else:
145-
thisEvent.key=None
146-
return thisEvent
95+
14796

14897
class FltkCanvas(Fltk.Fl_Widget):
14998

15099
def __init__(self,x,y,w,h,l,source):
151100
Fltk.Fl_Widget.__init__(self, 0, 0, w, h, "canvas")
152101
self._source=source
153102
self._oldsize=(None,None)
154-
self.button_press_event=None
155-
self.button_double_press_event=None
156-
self.button_release_event=None
157-
self.button_drag_event=None
158-
self.motion_notify_event=None
159-
self.key_press_event=None
160-
self.key_release_event=None
161103
self._draw_overlay = False
104+
self._button = None
105+
self._key = None
162106

163107

164108
def draw(self):
@@ -172,38 +116,59 @@ def draw(self):
172116

173117
def handle(self, event):
174118
self.window().make_current()
119+
x=Fltk.Fl.event_x()
120+
y=Fltk.Fl.event_y()
121+
yf=self._source.figure.bbox.height() - y
122+
ikey= Fltk.Fl.event_key()
123+
#~ if Fltk.Fl.event_key(ikey):
124+
#~ if(ikey<=255):
125+
#~ self._key=chr(ikey)
126+
#~ else:
127+
#~ try:
128+
#~ self._key=special[ikey]
129+
#~ except:
130+
#~ self._key=None
131+
#~ else:
132+
#~ self._key=None
175133
if event == Fltk.FL_PUSH:
134+
if Fltk.Fl.event_button1():
135+
self._button = 1
136+
elif Fltk.Fl.event_button2():
137+
self._button = 2
138+
elif Fltk.Fl.event_button3():
139+
self._button = 3
140+
else:
141+
self._button = None
142+
176143
if self._draw_overlay:
177-
self._oldx=Fltk.Fl.event_x()
178-
self._oldy=Fltk.Fl.event_y()
179-
if Fltk.Fl.event_clicks() and self.button_double_press_event:
180-
self.double_press_event(fltk_event2mpl_event('button_double_press_event',self._source,True,True,True))
144+
self._oldx=x
145+
self._oldy=y
146+
if Fltk.Fl.event_clicks():
147+
FigureCanvasBase.button_press_event(self._source, x, yf, self._button, self._key)
181148
return 1
182-
elif self.button_press_event:
183-
self.button_press_event(fltk_event2mpl_event('button_press_event',self._source,True,True,True))
149+
else:
150+
FigureCanvasBase.button_press_event(self._source, x, yf, self._button, self._key)
184151
return 1
185152
elif event == Fltk.FL_ENTER:
186153
return 1
187154
elif event == Fltk.FL_LEAVE:
188155
return 1
189156
elif event == Fltk.FL_MOVE:
190-
if self.motion_notify_event:
191-
self.motion_notify_event(fltk_event2mpl_event('motion_notify_event',self._source,True,False,True))
192-
return 1
157+
FigureCanvasBase.motion_notify_event(self._source, x, yf, self._button, self._key)
158+
return 1
193159
elif event == Fltk.FL_DRAG:
194160
if self._draw_overlay:
195161
self._dx=Fltk.Fl.event_x()-self._oldx
196162
self._dy=Fltk.Fl.event_y()-self._oldy
197163
Fltk.fl_overlay_rect(self._oldx,self._oldy,self._dx,self._dy)
198-
if self.motion_notify_event:
199-
self.motion_notify_event(fltk_event2mpl_event('motion_notify_event',self._source,True,True,True))
200-
return 1
164+
FigureCanvasBase.motion_notify_event(self._source, x, yf, self._button, self._key)
165+
return 1
201166
elif event == Fltk.FL_RELEASE:
202167
if self._draw_overlay:
203168
Fltk.fl_overlay_clear()
204-
if self.button_release_event:
205-
self.button_release_event(fltk_event2mpl_event('button_release_event',self._source,True,True,True))
206-
return 1
169+
FigureCanvasBase.button_release_event(self._source, x, yf, self._button, self._key)
170+
self._button = None
171+
return 1
207172
else:
208173
return 0
209174

@@ -237,38 +202,6 @@ def print_figure(self, filename, dpi=150,
237202

238203
agg = self.switch_backends(FigureCanvasAgg)
239204
agg.print_figure(filename, dpi, facecolor, edgecolor, orientation)
240-
241-
def mpl_connect(self,s,func):
242-
if(s=='button_press_event'):
243-
self.canvas.button_press_event=func
244-
elif(s=='button_double_press_event'):
245-
self.canvas.button_double_press_event=func
246-
elif(s=='button_release_event'):
247-
self.canvas.button_release_event=func
248-
elif(s=='motion_notify_event'):
249-
self.canvas.motion_notify_event=func
250-
self.canvas.button_drag_event=func
251-
elif(s=='key_press_event'):
252-
self.canvas.key_press_event=func
253-
elif(s=='key_release_event'):
254-
self.canvas.key_release_event=func
255-
return s
256-
257-
def mpl_disconnect(self,s):
258-
if(s=='button_press_event'):
259-
self.canvas.button_press_event=None
260-
elif(s=='button_double_press_event'):
261-
self.canvas.button_double_press_event=None
262-
elif(s=='button_release_event'):
263-
self.canvas.button_release_event=None
264-
elif(s=='motion_notify_event'):
265-
self.canvas.motion_notify_event=None
266-
self.canvas.button_drag_event=None
267-
elif(s=='key_press_event'):
268-
self.canvas.key_press_event=None
269-
elif(s=='key_release_event'):
270-
self.canvas.key_release_event=None
271-
return None
272205

273206
def widget(self):
274207
return self.canvas

0 commit comments

Comments
 (0)