def __init__(self, parent, dpi=None, **kwargs):
wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, wx.Size(512,512), **kwargs)
self.ztv_frame = self.GetTopLevelParent()
self.accelerator_table = []
self.center = wx.RealPoint()
self.zoom_rect = None
self.eventID_to_cmap = {wx.NewId(): x for x in self.ztv_frame.available_cmaps}
self.cmap_to_eventID = {self.eventID_to_cmap[x]: x for x in self.eventID_to_cmap}
self.eventID_to_scaling = {wx.NewId(): x for x in self.ztv_frame.available_scalings}
self.scaling_to_eventID = {self.eventID_to_scaling[x]: x for x in self.eventID_to_scaling}
cmap_bitmap_height = 15
cmap_bitmap_width = 100
self.cmap_bitmaps = {}
for cmap in self.ztv_frame.available_cmaps:
temp = cm.ScalarMappable(cmap=cmap)
rgba = temp.to_rgba(np.outer(np.ones(cmap_bitmap_height, dtype=np.uint8),
np.arange(cmap_bitmap_width, dtype=np.uint8)))
self.cmap_bitmaps[cmap] = wx.BitmapFromBufferRGBA(cmap_bitmap_width, cmap_bitmap_height,
np.uint8(np.round(rgba*255)))
self.popup_menu_cursor_modes = ['Zoom', 'Pan']
self.available_cursor_modes = {'Zoom':{'set-to-mode':self.set_cursor_to_zoom_mode},
'Pan':{'set-to-mode':self.set_cursor_to_pan_mode}}
self.available_key_presses = {}
self.cursor_mode = 'Zoom'
self.max_doubleclick_sec = 0.5 # needed to trap 'real' single clicks from the first click of a double click
self.popup_menu_needs_rebuild = True
self.popup_menu = None
self.xlim = [-9e9, 9e9]
self.ylim = [-9e9, 9e9]
self.figure = Figure(None, dpi)
self.axes = self.figure.add_axes([0., 0., 1., 1.])
self.canvas = FigureCanvasWxAgg(self, -1, self.figure)
self.Bind(wx.EVT_SIZE, self._onSize)
self.axes_widget = AxesWidget(self.figure.gca())
self.axes_widget.connect_event('motion_notify_event', self.on_motion)
self.axes_widget.connect_event('figure_leave_event', self.on_cursor_leave)
self.axes_widget.connect_event('figure_enter_event', self.on_cursor_enter)
self.axes_widget.connect_event('button_press_event', self.on_button_press)
self.axes_widget.connect_event('button_release_event', self.on_button_release)
self.axes_widget.connect_event('key_press_event', self.on_key_press)
wx.EVT_RIGHT_DOWN(self.figure.canvas, self.on_right_down) # supercedes the above button_press_event
pub.subscribe(self.redraw_primary_image, 'redraw-image')
pub.subscribe(self.reset_zoom_and_center, 'reset-zoom-and-center')
pub.subscribe(self.set_zoom_factor, 'set-zoom-factor')
pub.subscribe(self.set_xy_center, 'set-xy-center')
评论列表
文章目录