def on_ui_event(self, event: UIEvent): """ Processes UIEvents, forward events to added elements and manages focused and hovered elements """ for ui_element in list(self._ui_elements): ui_element = cast(UIElement, ui_element) if event.type == MOUSE_PRESS: if ui_element.collides_with_point( (event.get('x'), event.get('y'))): self.focused_element = ui_element elif ui_element is self.focused_element: # TODO does this work like expected? self.focused_element = None if event.type == MOUSE_MOTION: if ui_element.collides_with_point( (event.get('x'), event.get('y'))): self.hovered_element = ui_element elif ui_element is self.hovered_element: self.hovered_element = None ui_element.on_ui_event(event)
def on_ui_event(self, event: UIEvent): if event.type == UIClickable.CLICKED and event.get('ui_element').id == 'submit_button': # Trigger action if 'submit_button' was clicked self.submit() elif event.type == UIInputBox.ENTER and event.get('ui_element').id == 'username': # Trigger action if ENTER pressed in 'username'-UIInputBox self.submit()
def on_ui_event(self, event: UIEvent): if event.type == MOUSE_PRESS and self.collides_with_point( (event.get('x'), event.get('y'))): self.on_press() elif event.type == MOUSE_RELEASE and self.pressed and self.focused: if self.pressed: self.on_release() if self.collides_with_point((event.get('x'), event.get('y'))): self.dispatch_event('on_click') if self.mng: self.mng.dispatch_ui_event( UIEvent(UIClickable.CLICKED, ui_element=self))
def on_ui_event(self, event: gui.UIEvent): # redefine on_ui_event to trigger a handler super().on_ui_event(event) if self.focused: if event.type == gui.TEXT_INPUT and event.get('text') == '\r': self._on_text_update() return
def on_ui_event(self, event: UIEvent): if event.type in (MOUSE_PRESS, MOUSE_RELEASE): left_click = event.get('button') == arcade.MOUSE_BUTTON_LEFT if not left_click: return if event.type == MOUSE_PRESS and self.collides_with_point( (event.get('x'), event.get('y'))): self.on_press() elif event.type == MOUSE_RELEASE and self.pressed and self.focused: if self.pressed: self.on_release() if self.collides_with_point( (event.get('x'), event.get('y'))): self.dispatch_event('on_click') if self.mng: self.mng.dispatch_ui_event( UIEvent(UIClickable.CLICKED, ui_element=self))
def on_ui_event(self, event: UIEvent): super().on_ui_event(event) if self.focused: if event.type == TEXT_INPUT and event.get('text') == '\r': self.dispatch_event('on_enter') if self.mng: self.mng.dispatch_ui_event(UIEvent(UIInputBox.ENTER, ui_element=self)) return self.text_adapter.on_ui_event(event) if self.text_adapter.state_changed: self.text_adapter.reset_state_changed() self.render()