Esempio n. 1
0
 def do_leave_event(self, actor, event):
     if self._is_pressed == True:
         self._is_pressed = False
         clutter.ungrab_pointer()
         return True
     else:
         return False
Esempio n. 2
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler."""
        clutter.ungrab_pointer()
        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)

        self._motion_buffer.compute_from_last_motion_event(event)

        if not self.active:
            self.active = True
            return

        if self._event_mode == self.MODE_MOTION:
            speed = self._motion_buffer.speed_y_from_last_motion_event

            # Calculation of the new target according to vertical speed.
            target = self.offset - speed * 200

            if target < 0:
                target = 0
            elif target > self._offset_max:
                target = self._offset_max

            self._update_motion_behaviour(target)
            self._motion_timeline.start()

        return False
Esempio n. 3
0
 def do_leave_event (self, actor, event):
     if self._is_pressed == True:
         self._is_pressed = False
         clutter.ungrab_pointer()
         return True
     else:
         return False
Esempio n. 4
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler."""
        clutter.ungrab_pointer()
        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)

        self._motion_buffer.compute_from_last_motion_event(event)

        if not self.active:
            self.active = True
            return

        if self._event_mode == self.MODE_MOTION:
            speed = self._motion_buffer.speed_y_from_last_motion_event

            # Calculation of the new target according to vertical speed.
            target = self.offset - speed * 200

            if target < 0:
                target = 0
            elif target > self._offset_max:
                target = self._offset_max

            self._update_motion_behaviour(target)
            self._motion_timeline.start()

        return False
Esempio n. 5
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler"""
        items_len = len(self._items)

        clutter.ungrab_pointer()
        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)
        self._motion_buffer.compute_from_last_motion_event(event)

        if not self.active:
            self.active = True
            return

        y = event.y - self.get_y()

        if self._event_mode == self.MODE_SELECTION:
            # if we are in MODE_SELECTION it means that we want to select
            # the menu item bellow the pointer

            for index, item in enumerate(self._items):
                item_y = item.get_y()
                item_h = item.get_height()
                if (y >= item_y) and (y <= (item_y + item_h)):
                    delta1 = index - self._selected_index
                    delta2 = index - self._selected_index + items_len
                    delta3 = index - self._selected_index - items_len

                    delta = 99999
                    for i in [delta1, delta2, delta3]:
                        if math.fabs(i) < math.fabs(delta):
                            delta = i

                    self.scroll_by(delta)

                    # if delta = 0 it means we've clicked on the selected item
                    if delta == 0:
                        self.emit('selected')

        elif self._event_mode == self.MODE_MOTION:
            speed = self._motion_buffer.speed_y_from_last_motion_event
            target = self._selected_index - \
                self._motion_buffer.dy_from_start / \
                self._items[0].behaviour.path_length * items_len

            new_index = int(target - 5 * speed)
            self._selected_index = target
            self._set_selected_index(new_index, 1000)

        else:
            # If we have stopped the pending animation. Now we have to do
            # a small other one to select the closest menu-item
            current_index = self._animation_start_index + \
                (self._animation_end_index - self._animation_start_index) * \
                self._animation_progression
            self._selected_index = current_index
            target_index = int(current_index)
            self._set_selected_index(target_index, 1000)

        return False
Esempio n. 6
0
 def do_button_release_event(self, actor, event):
     if event.button == 1 and self._is_pressed == True:
         self._is_pressed = False
         clutter.ungrab_pointer()
         self.emit('clicked')
         return True
     else:
         return False
Esempio n. 7
0
 def do_button_release_event (self, actor, event):
     if event.button == 1 and self._is_pressed == True:
         self._is_pressed = False
         clutter.ungrab_pointer()
         self.emit('clicked')
         return True
     else:
         return False
Esempio n. 8
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler."""
        clutter.ungrab_pointer()
        if self._event_rect.handler_is_connected(self._motion_handler):
            self._event_rect.disconnect_by_func(self._on_motion_event)

        if self._event_mode == self.MODE_SELECT:
            self.emit('selected')

        self._event_mode = self.MODE_NONE

        return True
Esempio n. 9
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler."""
        clutter.ungrab_pointer()
        if self._event_rect.handler_is_connected(self._motion_handler):
            self._event_rect.disconnect_by_func(self._on_motion_event)

        if self._event_mode == self.MODE_SELECT:
            self.emit('selected')

        self._event_mode = self.MODE_NONE

        return True
Esempio n. 10
0
    def _on_button_release_event(self, actor, event):
        '''button-release-event handler.'''
        clutter.ungrab_pointer()

        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)

        self._progress_bar_moving = False
        self.media_player.set_media_position(self.progress)

        if self.auto_display and self.visible:
            self._hide_timeout_key = gobject.timeout_add(
                3000, self._hide_progress_bar)

        return False
Esempio n. 11
0
    def _on_button_release_event(self, actor, event):
        '''button-release-event handler.'''
        clutter.ungrab_pointer()

        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)

        self._progress_bar_moving = False
        self.media_player.set_media_position(self.progress)

        if self.auto_display and self.visible:
            self._hide_timeout_key = gobject.timeout_add(3000,
                self._hide_progress_bar)

        return False
Esempio n. 12
0
    def _on_button_release_event(self, actor, event):
        """`button-press` event handler."""
        if not self.is_reactive_allowed:
            return

        clutter.ungrab_pointer()
        if self.video_texture.handler_is_connected(self._motion_handler):
            self.video_texture.disconnect_by_func(self._on_motion_event)

        if self._event_mode == self.MODE_PLAYPAUSE:
            if self.is_playing:
                self.pause()
            else:
                self.play()

        self._event_mode = self.MODE_NONE
Esempio n. 13
0
    def _on_button_release_event(self, actor, event):
        """`button-press` event handler."""
        if not self.is_reactive_allowed:
            return

        clutter.ungrab_pointer()
        if self.video_texture.handler_is_connected(self._motion_handler):
            self.video_texture.disconnect_by_func(self._on_motion_event)

        if self._event_mode == self.MODE_PLAYPAUSE:
            if self.is_playing:
                self.pause()
            else:
                self.play()

        self._event_mode = self.MODE_NONE
Esempio n. 14
0
    def event_central(self, obj, event):
        ## This routine runs many times. Once for every kind
        ## of event the actor is getting.

        ## filter out only the mouse events.
        if event.type not in Mouserizer.__clutter_mouse_event_types:
            return Mouserizer.YES_CONTINUE_EMITTING

        ## filter out buttons we are NOT going to deal with
        if hasattr(event, "button"):
            b = 1 << (event.button - 1)
            #print bin(b)," vs ", bin(self.buttons)
            if not(b & self.buttons !=0 ):
                return Mouserizer.NO_STOP_EMITTING # is this wise?

        ## event_central ONLY runs when cursor is
        ## over the actor -- thus ENTER is implied.

        ## Make a note of PRESS/RELEASE
        if event.type==clutter.BUTTON_PRESS:
            self.ui_state = self.ui_state | Mouserizer.__FLAG_PRESSING # set bit
        if event.type==clutter.BUTTON_RELEASE:
            self.ui_state = self.ui_state | Mouserizer.__FLAG_RELEASING # set bit

        ## Make a note of MOTION
        ## First, clear it.
        self.ui_state = self.ui_state & ~Mouserizer.__FLAG_MOVING # clear bit
        if event.type==clutter.MOTION:
            self.ui_state = self.ui_state | Mouserizer.__FLAG_MOVING # set bit

        ## Now, what kinds of stuff is this actor interested in?

        ## DO META EVENTS - "More than" events. e.g. 'Click' is press, then release.
        if (self.ui & Mouserizer.CLICKABLE) != 0: # test bit
            if self.ui_state == Mouserizer.__PATTERN_CLICK:
                if event.click_count > 1:
                    self.emit('double-click', event)
                else:
                    ## A single click is fired just before double-click...!
                    self.emit('single-click', event)

        if (self.ui & Mouserizer.DRAGABLE) !=0: # test bit
            if self.ui_state == Mouserizer.__PATTERN_DRAG_START:
                self.ui_state=self.ui_state | Mouserizer.__FLAG_DRAGGING # set bit
                self.draglet = DragEnvelope( self, event )
                ## Phew! I thought I was fcuked! In order to get dragging to
                ## work when the pointer is NOT ON the Actor, I had to revert
                ## to grab_pointer* -- and that needs connecting. I connected the
                ## two appropriate event to *this* same function! And it works :D
                ##
                ## * grab_pointer causes the entire window (stage?) to focus on the
                ##   Actor passed -- so I get all motion and release events even where
                ##   the Actor aint.
                ##   ! Not sure what kind of recursive issues this may throw at me :(
                clutter.grab_pointer( self )
                self.connect('motion-event', self.event_central)
                self.connect('button-release-event', self.event_central)
                self.emit('drag-start', self.draglet )
            elif self.ui_state == Mouserizer.__PATTERN_DRAG:
                self.draglet.calcPos( event ) # A 'draglet' is a little wrapper containing the event and some tricks.
                ## Who is under me? Only do if PICK_UNDER flag is set.
                if self.__PICK_UNDER:
                    self.hide()
                    a = self.stage.get_actor_at_pos(clutter.PICK_REACTIVE, int(event.x),int(event.y))
                    self.show()
                    ## a is!
                    ## Only emit if a has a drag-over signal:
                    if gobject.signal_lookup('drag-over', a ):
                        print a, " under me"
                        a.emit('drag-over', self.draglet)
                self.emit('dragging', self.draglet)

            elif self.ui_state == Mouserizer.__PATTERN_DROP:
                self.draglet.calcPos( event )
                self.ui_state= self.ui_state & ~Mouserizer.__FLAG_DRAGGING # clear bit
                clutter.ungrab_pointer()
                self.emit("drop", self.draglet)
                del(self.draglet)

        ## META EVENTS are done.

        ## Flip opposites off.
        if event.type==clutter.BUTTON_PRESS:
            self.ui_state = self.ui_state & ~Mouserizer.__FLAG_RELEASING # clear bit
        if event.type==clutter.BUTTON_RELEASE:
            self.ui_state = self.ui_state & ~Mouserizer.__FLAG_PRESSING # clear bit
            self.ui_state = self.ui_state & ~Mouserizer.__FLAG_RELEASING # clear bit
            self.ui_state = self.ui_state & ~Mouserizer.__FLAG_DRAGGING # clear bit

        return Mouserizer.YES_CONTINUE_EMITTING
Esempio n. 15
0
    def _on_button_release_event(self, actor, event):
        """button-release-event handler"""
        items_len = len(self._items)

        clutter.ungrab_pointer()
        if self.handler_is_connected(self._motion_handler):
            self.disconnect_by_func(self._on_motion_event)
        self._motion_buffer.compute_from_last_motion_event(event)

        if not self.active:
            self.active = True
            return

        y = event.y - self.get_y()

        if self._event_mode == self.MODE_SELECTION:
            # if we are in MODE_SELECTION it means that we want to select
            # the menu item bellow the pointer

            for index, item in enumerate(self._items):
                item_y = item.get_y()
                item_h = item.get_height()
                if (y >= item_y) and (y <= (item_y + item_h)):
                    delta1 = index - self._selected_index
                    delta2 = index - self._selected_index + items_len
                    delta3 = index - self._selected_index - items_len

                    delta = 99999
                    for i in [delta1, delta2, delta3]:
                        if math.fabs(i) < math.fabs(delta):
                            delta = i

                    self.scroll_by(delta)

                    # if delta = 0 it means we've clicked on the selected item
                    if delta == 0:
                        self.emit("selected")

        elif self._event_mode == self.MODE_MOTION:
            speed = self._motion_buffer.speed_y_from_last_motion_event
            target = (
                self._selected_index
                - self._motion_buffer.dy_from_start / self._items[0].behaviour.path_length * items_len
            )

            new_index = int(target - 5 * speed)
            self._selected_index = target
            self._set_selected_index(new_index, 1000)

        else:
            # If we have stopped the pending animation. Now we have to do
            # a small other one to select the closest menu-item
            current_index = (
                self._animation_start_index
                + (self._animation_end_index - self._animation_start_index) * self._animation_progression
            )
            self._selected_index = current_index
            target_index = int(current_index)
            self._set_selected_index(target_index, 1000)

        return False