コード例 #1
0
ファイル: controls.py プロジェクト: mexicarne/exaile
class ProgressButtonControl(PlaylistButtonControl):
    name = 'progress_button'
    title = _('Progress button')
    description = _('Playback progress and access ' 'to the current playlist')
    # Required to make overrides work
    __gsignals__ = {}

    def __init__(self):
        PlaylistButtonControl.__init__(self)

        self.set_name('progressbutton')
        self.add_events(Gdk.EventMask.POINTER_MOTION_MASK)

        self.progressbar = SeekProgressBar(player.PLAYER)
        self.progressbar.set_size_request(-1, 1)
        self.progressbar.formatter = ProgressButtonFormatter()
        self.progressbar.set_text = lambda *a: None  # Needed by PlaylistButtonControl
        gtk_widget_replace(self.label, self.progressbar)
        self.label = self.progressbar

        if player.PLAYER.current is not None:
            self.progressbar.on_playback_track_start('playback_track_start',
                                                     player.PLAYER,
                                                     player.PLAYER.current)

        self.tooltip = TrackToolTip(self, player.PLAYER)
        self.tooltip.set_auto_update(True)

    def destroy(self):
        """
            Cleanups
        """
        self.tooltip.destroy()
        PlaylistButtonControl.destroy(self)

    def do_button_press_event(self, event):
        """
            Trigger normal toggle action or seek
        """
        if event.button == 1:
            PlaylistButtonControl.do_button_press_event(self, event)
        elif event.button == 2:
            event = event.copy()
            event.button = 1
            x, y = self.translate_coordinates(self.progressbar, int(event.x),
                                              int(event.y))
            event.x, event.y = float(x), float(y)
            self.progressbar.emit('button-press-event', event)

    def do_button_release_event(self, event):
        if event.button == 1:
            PlaylistButtonControl.do_button_release_event(self, event)
        elif event.button == 2:
            event = event.copy()
            event.button = 1
            x, y = self.translate_coordinates(self.progressbar, int(event.x),
                                              int(event.y))
            event.x, event.y = float(x), float(y)
            self.progressbar.emit('button-release-event', event)

    def do_motion_notify_event(self, event):
        event = event.copy()
        x, y = self.translate_coordinates(self.progressbar, int(event.x),
                                          int(event.y))
        event.x, event.y = float(x), float(y)
        self.progressbar.emit('motion-notify-event', event)

    def do_leave_notify_event(self, event):
        event = event.copy()
        x, y = self.translate_coordinates(self.progressbar, int(event.x),
                                          int(event.y))
        event.x, event.y = float(x), float(y)
        self.progressbar.emit('leave-notify-event', event)
コード例 #2
0
ファイル: controls.py プロジェクト: exaile/exaile
class ProgressButtonControl(PlaylistButtonControl):
    name = 'progress_button'
    title = _('Progress button')
    description = _('Playback progress and access ' 'to the current playlist')
    # Required to make overrides work
    __gsignals__ = {}

    def __init__(self):
        PlaylistButtonControl.__init__(self)

        self.set_name('progressbutton')
        self.add_events(Gdk.EventMask.POINTER_MOTION_MASK)

        self.progressbar = SeekProgressBar(player.PLAYER)
        self.progressbar.set_size_request(-1, 1)
        self.progressbar.formatter = ProgressButtonFormatter()
        self.progressbar.set_text = lambda *a: None  # Needed by PlaylistButtonControl
        gtk_widget_replace(self.label, self.progressbar)
        self.label = self.progressbar

        if player.PLAYER.current is not None:
            self.progressbar.on_playback_track_start(
                'playback_track_start', player.PLAYER, player.PLAYER.current
            )

        self.tooltip = TrackToolTip(self, player.PLAYER)
        self.tooltip.set_auto_update(True)

    def destroy(self):
        """
            Cleanups
        """
        self.tooltip.destroy()
        PlaylistButtonControl.destroy(self)

    def do_button_press_event(self, event):
        """
            Trigger normal toggle action or seek
        """
        if event.button == Gdk.BUTTON_PRIMARY:
            PlaylistButtonControl.do_button_press_event(self, event)
        elif event.button == Gdk.BUTTON_MIDDLE:
            event = event.copy()
            event.button = Gdk.BUTTON_PRIMARY
            x, y = self.translate_coordinates(
                self.progressbar, int(event.x), int(event.y)
            )
            event.x, event.y = float(x), float(y)
            self.progressbar.emit('button-press-event', event)

    def do_button_release_event(self, event):
        if event.button == Gdk.BUTTON_PRIMARY:
            PlaylistButtonControl.do_button_release_event(self, event)
        elif event.button == Gdk.BUTTON_MIDDLE:
            event = event.copy()
            event.button = Gdk.BUTTON_PRIMARY
            x, y = self.translate_coordinates(
                self.progressbar, int(event.x), int(event.y)
            )
            event.x, event.y = float(x), float(y)
            self.progressbar.emit('button-release-event', event)

    def do_motion_notify_event(self, event):
        event = event.copy()
        x, y = self.translate_coordinates(self.progressbar, int(event.x), int(event.y))
        event.x, event.y = float(x), float(y)
        self.progressbar.emit('motion-notify-event', event)

    def do_leave_notify_event(self, event):
        event = event.copy()
        x, y = self.translate_coordinates(self.progressbar, int(event.x), int(event.y))
        event.x, event.y = float(x), float(y)
        self.progressbar.emit('leave-notify-event', event)