def on_mouse_move(self, event: wx.MouseEvent): """ Scene Panel move event. Calls hover if the mouse has no pressed buttons. Calls move if the mouse is currently dragging. """ if event.Moving(): self.scene.event(event.GetPosition(), "hover", None) else: self.scene.event(event.GetPosition(), "move", None)
def on_mouse_motion(self, evt: wx.MouseEvent): # Dragging if evt.Dragging() and evt.LeftIsDown(): if self.selected < 0: return drag_end_x, drag_end_y = evt.GetPosition() control_points = self.tfunc.control_points w, h = self.GetSize() h = h - 30 if self.selected == 0 or self.selected == len(control_points) - 1: cp = self.get_control_point_area(control_points[self.selected]) drag_end_x = cp.get_center_x() if drag_end_y < 0: drag_end_y = 0 if drag_end_y > h: drag_end_y = h else: left_point = self.get_control_point_area( control_points[self.selected - 1]) right_point = self.get_control_point_area( control_points[self.selected + 1]) if drag_end_x <= left_point.get_center_x() + 1: drag_end_x = left_point.get_center_x() + 2 if drag_end_x >= right_point.get_center_x() - 1: drag_end_x = right_point.get_center_x() - 2 if drag_end_y < 0: drag_end_y = 0 if drag_end_y > h: drag_end_y = h value_range = self.tfunc.sMax - self.tfunc.sMin minimum = self.tfunc.sMin t = drag_end_x / w s = int((t * value_range) + minimum) a = (h - drag_end_y) / h self.tfunc.update_control_point_scalar(self.selected, s) self.tfunc.update_control_point_alpha(self.selected, a) self.editor.set_selected_info(self.selected, s, a, control_points[self.selected].color) self.Refresh() # Moving around else: x, y = evt.GetPosition() control_points = self.tfunc.control_points if any( self.get_control_point_area(cp).contains(x, y) for cp in control_points): self.SetCursor(wx.Cursor(wx.CURSOR_HAND)) else: self.SetCursor(wx.Cursor(wx.CURSOR_DEFAULT))
def OnMouse(self, event: wx.MouseEvent) -> None: pos = event.GetPosition() x, y, r = self.ROI if event.LeftDClick(): # Set circle centre self.MoveCircle(pos, r) elif event.Dragging(): # Drag circle centre or radius drag_r = np.sqrt((x - pos[0])**2 + (y - pos[1])**2) if self._dragging is None: # determine what to drag if drag_r < 0.5 * r: # closer to center self._dragging = "xy" else: # closer to edge self._dragging = "r" elif self._dragging == "r": # Drag circle radius self.MoveCircle((x, y), drag_r) elif self._dragging == "xy": # Drag circle centre self.MoveCircle(pos, r) if not event.Dragging(): # Stop dragging self._dragging = None self.circle.SetColor("cyan") self.canvas.Draw(Force=True)
def OnMouseMove(self: wx.Window, e: wx.MouseEvent): if self.dragging: shape = self.shapes[-1] if self.FindWindow("Action").Value == "Move": if not self.lastMousePosition: self.lastMousePosition = e.GetPosition() shape.MoveBy(e.x - self.lastMousePosition.x, e.y - self.lastMousePosition.y) elif self.FindWindow("Action").Value == "Draw": shape.GrowTo(e.x, e.y) elif self.FindWindow("Action").Value == "Select": self.selectionBox.GrowTo(e.x, e.y) self.SelectShapes() self.lastMousePosition = e.GetPosition() self.Refresh()
def OnMouseDown(self: wx.Window, e: wx.MouseEvent): self.dragging = True self.startOfDrag = self.lastMousePosition = e.GetPosition() if self.FindWindow("Action").Value == "Draw": self.AddShape(e) elif self.FindWindow("Action").Value == "Select": p = wx.Pen(wx.BLACK, 1) self.selectionBox = Rectangle(p, self.startOfDrag.x, self.startOfDrag.y) e.Skip()
def OnLeftUp(self, evt: wx.MouseEvent): """ Handler for mouse left button up event. """ if self.dragging: assert self.dragged_point is not None drop = self.projected_landing(self.dragged_point) assert self.hover_idx != -1 self.dragging = False self.arrow_tip.points[self.hover_idx] = Vec2( drop.x // self.csize, drop.y // self.csize) self.update_hover_idx(Vec2(evt.GetPosition())) self.Refresh()
def on_mouse_down(self, evt: wx.MouseEvent): self.drag_start = None control_points = self.tfunc.control_points inside = False idx = 0 x, y = evt.GetPosition() while not inside and idx < len(control_points): inside = inside | self.get_control_point_area( control_points[idx]).contains(x, y) if inside: break else: idx = idx + 1 if inside: if evt.GetButton() == wx.MOUSE_BTN_LEFT: self.selected = idx control_point = control_points[self.selected] self.editor.set_selected_info(self.selected, control_point.value, control_point.color.a, control_point.color) self.drag_start = (x, y) elif evt.GetButton() == wx.MOUSE_BTN_RIGHT: if 0 < idx < len(control_points) - 1: self.tfunc.remove_control_point(idx) self.selected = idx - 1 control_point = control_points[self.selected] self.editor.set_selected_info(self.selected, control_point.value, control_point.color.a, control_point.color) self.drag_start = (x, y) else: w, h = self.GetSize() if 0 <= x < w and 0 <= y < h - 30: h = h - 30 value_range = self.tfunc.sMax - self.tfunc.sMin minimum = self.tfunc.sMin t = x / w s = int((t * value_range) + minimum) a = (h - y) / h self.selected = self.tfunc.add_control_point(s, .0, .0, .0, a) control_point = control_points[self.selected] self.editor.set_selected_info(self.selected, control_point.value, control_point.color.a, control_point.color) self.drag_start = (x, y) self.Refresh()
def OnMotion(self, evt: wx.MouseEvent): """ Handler for mouse motion events. Args: self: the Designer Window to initialize. evt: the event being executed. """ pos = Vec2(evt.GetPosition()) if self.dragging: self.dragged_point = pos else: self.update_hover_idx(pos) evt.Skip() self.Refresh()
def OnMouse(self, event: wx.MouseEvent): if self.HasCapture() and self.captured_item is not None: hit_item = self.captured_item else: hit_item = self.HitTest(event.GetPosition()) if hit_item is not None: event.SetX(event.GetX() - hit_item.position.x) event.SetY(event.GetY() - hit_item.position.y) event.SetEventObject(hit_item) wx.PostEvent(hit_item, event) event.Skip(False) else: self.SetCursor(wx.Cursor(wx.CURSOR_ARROW)) event.Skip(True)
def OnMouseMove(self, event: wx.MouseEvent): if self.timeline.start == self.timeline.end: return if self._dragging and event.LeftIsDown(): x = event.GetPosition().x if self._uniform_time_intervals: t = self.timeline.time_at_index(round(x / self.px_per_step)) else: t = self.time_at_position(x) if t != self._scrub_time: self._scrub_time = t if self.live_update: self.timeline.current = self._scrub_time self.Refresh()
def OnLeftDown(self, event: MouseEvent): """ Handle event on left click. Args: event: """ self.logger.debug(f'OnLeftDown - event - {event}') from org.pyut.general.Mediator import getMediator # avoid circular import med = getMediator() if med.actionWaiting(): position: Point = event.GetPosition() med.shapeSelected(self, position) return event.Skip()
def OnMotion(self, event: wx.MouseEvent): canvas_pos = self.canvas.GetScreenPosition() canvas_size = self.canvas.GetSize() if self.dragging and event.LeftIsDown(): if self.mouse_pos.x != -1 and self.mouse_pos.y != -1: pos = self.GetPosition() new_pos = wx.Point(pos.x + event.GetX() - self.mouse_pos.x, pos.y + event.GetY() - self.mouse_pos.y) size = self.GetSize() if new_pos.x < canvas_pos.x: new_pos.x = canvas_pos.x if new_pos.y < canvas_pos.y: new_pos.y = canvas_pos.y if new_pos.x + size.x > canvas_pos.x + canvas_size.x: new_pos.x = canvas_pos.x + canvas_size.x - size.x if new_pos.y + size.y > canvas_pos.y + canvas_size.y: new_pos.y = canvas_pos.y + canvas_size.y - size.y self.SetPosition(new_pos) self.translucent_background.SetPosition(new_pos) else: self.mouse_pos = event.GetPosition() else: self.mouse_pos = wx.DefaultPosition
def _on_left_up(self, evt: wx.MouseEvent): for bubble in self.bubbles: bubble.move(*evt.GetPosition())