示例#1
0
    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)
示例#2
0
 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()
示例#3
0
    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))
示例#4
0
 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
示例#5
0
    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))
示例#6
0
    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()