def on_key_press(self, symbol, modifiers): try: char = chr(symbol) except OverflowError: print(" Warning: The value of the pressed key is too large.") return event_data = {"symbol": symbol, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.KeyPressEvent, **event_data) if propagate_event is not None and propagate_event is False: return frame = self.camera.frame if char == "r": frame.to_default_state() elif char == "q": self.quit_interaction = True elif char == "p": theta, phi, gamma = frame.get_euler_angles() * 180 / PI if hasattr(self, "info"): self.remove(self.info) self.info = Text( f"(theta,phi,gamma)=({round(theta, 2)},{round(phi, 2)},{round(gamma, 2)})" f"\n\nCenter:{frame.get_center()}" f"\n\nScale:{frame.scale_factor}").scale(0.5) self.info.fix_in_frame() self.info.to_edge(UL) self.add(self.info)
def on_mouse_release(self, point: np.ndarray, button: int, mods: int) -> None: event_data = {"point": point, "button": button, "mods": mods} propagate_event = EVENT_DISPATCHER.dispatch( EventType.MouseReleaseEvent, **event_data) if propagate_event is not None and propagate_event is False: return
def on_mouse_drag(self, point, d_point, buttons, modifiers): self.mouse_drag_point.move_to(point) event_data = {"point": point, "d_point": d_point, "buttons": buttons, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MouseDragEvent, **event_data) if propagate_event is not None and propagate_event is False: return
def on_key_press(self, symbol: int, modifiers: int) -> None: try: char = chr(symbol) except OverflowError: log.warning("The value of the pressed key is too large.") return event_data = {"symbol": symbol, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.KeyPressEvent, **event_data) if propagate_event is not None and propagate_event is False: return if char == RESET_FRAME_KEY: self.camera.frame.to_default_state() elif char == "z" and modifiers == COMMAND_MODIFIER: self.undo() elif char == "z" and modifiers == COMMAND_MODIFIER | SHIFT_MODIFIER: self.redo() # command + q elif char == QUIT_KEY and modifiers == COMMAND_MODIFIER: self.quit_interaction = True # Space or right arrow elif char == " " or symbol == ARROW_SYMBOLS[2]: self.hold_on_wait = False
def on_mouse_motion( self, point: np.ndarray, d_point: np.ndarray ) -> None: self.mouse_point.move_to(point) event_data = {"point": point, "d_point": d_point} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MouseMotionEvent, **event_data) if propagate_event is not None and propagate_event is False: return frame = self.camera.frame # Handle perspective changes if self.window.is_key_pressed(ord(PAN_3D_KEY)): frame.increment_theta(-self.pan_sensitivity * d_point[0]) frame.increment_phi(self.pan_sensitivity * d_point[1]) # Handle frame movements elif self.window.is_key_pressed(ord(FRAME_SHIFT_KEY)): shift = -d_point shift[0] *= frame.get_width() / 2 shift[1] *= frame.get_height() / 2 transform = frame.get_inverse_camera_rotation_matrix() shift = np.dot(np.transpose(transform), shift) frame.shift(shift)
def on_mouse_press(self, point: np.ndarray, button: int, mods: int) -> None: self.mouse_drag_point.move_to(point) event_data = {"point": point, "button": button, "mods": mods} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MousePressEvent, **event_data) if propagate_event is not None and propagate_event is False: return
def on_key_release( self, symbol: int, modifiers: int ) -> None: event_data = {"symbol": symbol, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.KeyReleaseEvent, **event_data) if propagate_event is not None and propagate_event is False: return
def on_mouse_scroll(self, point, offset): event_data = {"point": point, "offset": offset} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MouseScrollEvent, **event_data) if propagate_event is not None and propagate_event is False: return frame = self.camera.frame if self.window.is_key_pressed(ord("z")): factor = 1 + np.arctan(10 * offset[1]) frame.scale(factor, about_point=point) else: transform = frame.get_inverse_camera_rotation_matrix() shift = np.dot(np.transpose(transform), offset) frame.shift(-20.0 * shift)
def on_key_press(self, symbol, modifiers): try: char = chr(symbol) except OverflowError: print(" Warning: The value of the pressed key is too large.") return event_data = {"symbol": symbol, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.KeyPressEvent, **event_data) if propagate_event is not None and propagate_event is False: return if char == "r": self.camera.frame.to_default_state() elif char == "q": self.quit_interaction = True
def on_mouse_motion(self, point, d_point): self.mouse_point.move_to(point) event_data = {"point": point, "d_point": d_point} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MouseMotionEvent, **event_data) if propagate_event is not None and propagate_event is False: return frame = self.camera.frame if self.window.is_key_pressed(ord("d")): frame.increment_theta(-d_point[0]) frame.increment_phi(d_point[1]) elif self.window.is_key_pressed(ord("s")): shift = -d_point shift[0] *= frame.get_width() / 2 shift[1] *= frame.get_height() / 2 transform = frame.get_inverse_camera_rotation_matrix() shift = np.dot(np.transpose(transform), shift) frame.shift(shift)
def on_key_press(self, symbol: int, modifiers: int) -> None: try: char = chr(symbol) except OverflowError: log.warning("The value of the pressed key is too large.") return event_data = {"symbol": symbol, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.KeyPressEvent, **event_data) if propagate_event is not None and propagate_event is False: return if char == "r": self.camera.frame.to_default_state() elif char == "q": self.quit_interaction = True elif char == " " or symbol == 65363: # Space or right arrow self.hold_on_wait = False elif char == "e" and modifiers == 3: # ctrl + shift + e self.embed(close_scene_on_exit=False)
def on_mouse_press(self, point, button, mods): event_data = {"point": point, "button": button, "mods": mods} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MousePressEvent, **event_data) if propagate_event is not None and propagate_event is False: return