def on_mouse_motion(self, event): if (not self.drag_bmap or not event.Dragging() or not event.LeftIsDown()): return raw_pt = event.GetPosition() screen_pt = self.ClientToScreen(raw_pt) check_pt = self.CalcUnscrolledPosition(raw_pt) if (self.drag_bmap and not self.drag_image): tolerance = 4 dx = abs(check_pt.x - self.drag_start_pos.x) dy = abs(check_pt.y - self.drag_start_pos.y) if (dx <= tolerance and dy <= tolerance): return # BED scale the image if it is program_pallete zoom = win_data.get_zoom(self.name) if (zoom != 1.0): image = self.drag_bmap.ConvertToImage() w = image.GetWidth() * zoom h = image.GetHeight() * zoom image.Rescale(w, h) self.drag_bmap = image.ConvertToBitmap() self.drag_image = wx.DragImage(self.drag_bmap, wx.StockCursor(wx.CURSOR_HAND)) dev_x, dev_y = self.drag_bmap.GetSize() hotspot = (dev_x / 2, dev_y / 2) #print "on_mouse_motion: hotspot", hotspot self.drag_image.BeginDrag(hotspot, self, True, self.frame_rect) loc, update, extra = win_data.inform_work_of_centre_pt( screen_pt, self.drag_name, self.drag_image) self.drag_image.Show() self.drag_image.Move(raw_pt) else: loc, update, extra = win_data.inform_work_of_centre_pt( screen_pt, self.drag_name, self.drag_image) if (update): self.drag_image.Show() self.drag_image.Move(raw_pt)
def on_mouse_motion(self, event): if (not self.drag_bmap or not event.Dragging() or not event.LeftIsDown()): return raw_pt = event.GetPosition() screen_pt = self.ClientToScreen(raw_pt) check_pt = self.CalcUnscrolledPosition(raw_pt) if (self.drag_bmap and not self.drag_image): tolerance = 4 dx = abs(check_pt.x - self.drag_start_pos.x) dy = abs(check_pt.y - self.drag_start_pos.y) if (dx <= tolerance and dy <= tolerance): return # BED scale the image if it is program_pallete zoom = win_data.get_zoom(self.name) if (zoom != 1.0): image = self.drag_bmap.ConvertToImage() w = image.GetWidth() * zoom h = image.GetHeight() * zoom image.Rescale(w, h) self.drag_bmap = image.ConvertToBitmap() self.drag_image = wx.DragImage(self.drag_bmap, wx.StockCursor(wx.CURSOR_HAND)) dev_x, dev_y = self.drag_bmap.GetSize() hotspot = (dev_x/2, dev_y/2) #print "on_mouse_motion: hotspot", hotspot self.drag_image.BeginDrag(hotspot, self, True, self.frame_rect) loc, update,extra = win_data.inform_work_of_centre_pt(screen_pt, self.drag_name, self.drag_image) self.drag_image.Show() self.drag_image.Move(raw_pt) else: loc, update,extra = win_data.inform_work_of_centre_pt(screen_pt, self.drag_name, self.drag_image) if (update): self.drag_image.Show() self.drag_image.Move(raw_pt)
def parent_on_left_up(self, event): loc = -1 extra = None if (self.drag_image): screen_pt = self.ClientToScreen(event.GetPosition()) loc, update, extra = win_data.inform_work_of_centre_pt( screen_pt, self.drag_name, self.drag_image) self.drag_image.Hide() self.drag_image.EndDrag() self.drag_image = None self.drag_bmap = None self.SetCursor(wx.NullCursor) #print "Dropped at", screen_pt, "loc:", loc, "name:", self.drag_name # used by the child to do special processing return (loc, self.drag_name, extra)
def parent_on_left_up(self, event): loc = -1 extra = None if (self.drag_image): screen_pt = self.ClientToScreen(event.GetPosition()) loc,update,extra = win_data.inform_work_of_centre_pt(screen_pt, self.drag_name, self.drag_image) self.drag_image.Hide() self.drag_image.EndDrag() self.drag_image = None self.drag_bmap = None self.SetCursor(wx.NullCursor) #print "Dropped at", screen_pt, "loc:", loc, "name:", self.drag_name # used by the child to do special processing return (loc, self.drag_name, extra)