示例#1
0
    def __init__(self, player, library):
        super(WaveformSeekBar, self).__init__()

        self._player = player
        self._rms_vals = []

        self._elapsed_label = TimeLabel()
        self._remaining_label = TimeLabel()
        self._waveform_scale = WaveformScale()

        self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
        self.pack_start(self._waveform_scale, True, True, 0)
        self.pack_start(Align(self._remaining_label, border=6), False, True, 0)

        for child in self.get_children():
            child.show_all()

        self._tracker = TimeTracker(player)
        self._tracker.connect('tick', self._on_tick, player)

        connect_destroy(player, 'seek', self._on_player_seek)
        connect_destroy(player, 'song-started', self._on_song_started)
        connect_destroy(player, 'song-ended', self._on_song_ended)
        connect_destroy(player, 'notify::seekable', self._on_seekable_changed)
        connect_destroy(library, 'changed', self._on_song_changed, player)

        self.connect('destroy', self._on_destroy)
        self._update(player)
        self._tracker.tick()

        if player.info:
            self._create_waveform(player.info, CONFIG.data_size)
示例#2
0
    def __init__(self, player, library):
        super(SeekBar, self).__init__()

        self._elapsed_label = TimeLabel()
        self._remaining_label = TimeLabel()
        scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL)
        scale.set_adjustment(Gtk.Adjustment.new(0, 0, 0, 3, -15, 0))
        scale.set_draw_value(False)
        self._scale = scale

        self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
        self.pack_start(scale, True, True, 0)
        self.pack_start(Align(self._remaining_label, border=6), False, True, 0)
        for child in self.get_children():
            child.show_all()

        self._id = self._scale.connect('value-changed', self._on_user_changed,
                                       player)
        self._scale.connect('value-changed', self._on_scale_value_changed,
                            player)

        self._tracker = TimeTracker(player)
        self._tracker.connect('tick', self._on_tick, player)

        connect_destroy(player, 'seek', self._on_player_seek)
        connect_destroy(player, 'song-started', self._on_song_started)
        connect_destroy(player, "notify::seekable", self._on_seekable_changed)

        connect_destroy(library, "changed", self._on_song_changed, player)

        self.connect("destroy", self._on_destroy)

        with self._inhibit():
            self._update(player)
        self._tracker.tick()
示例#3
0
 def test_time_label(self):
     l = TimeLabel()
     l.set_time(42)
     time_text = l.get_text()
     l.set_disabled(True)
     disabled_text = l.get_text()
     self.assertNotEqual(time_text, disabled_text)
     l.set_disabled(False)
     self.assertEqual(l.get_text(), time_text)
示例#4
0
    def __init__(self, player, library):
        super(WaveformSeekBar, self).__init__()

        self._player = player
        self._rms_vals = []
        self._hovering = False

        self._elapsed_label = TimeLabel()
        self._remaining_label = TimeLabel()
        self._waveform_scale = WaveformScale(player)

        self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
        self.pack_start(self._waveform_scale, True, True, 0)
        self.pack_start(Align(self._remaining_label, border=6), False, True, 0)

        for child in self.get_children():
            child.show_all()
        self.set_time_label_visibility(CONFIG.show_time_labels)

        self._waveform_scale.connect('size-allocate',
                                     self._update_redraw_interval)
        self._waveform_scale.connect('motion-notify-event',
                                     self._on_mouse_hover)
        self._waveform_scale.connect('leave-notify-event',
                                     self._on_mouse_leave)

        self._label_tracker = TimeTracker(player)
        self._label_tracker.connect('tick', self._on_tick_label, player)

        self._redraw_tracker = TimeTracker(player)
        self._redraw_tracker.connect('tick', self._on_tick_waveform, player)

        connect_destroy(player, 'seek', self._on_player_seek)
        connect_destroy(player, 'song-started', self._on_song_started)
        connect_destroy(player, 'song-ended', self._on_song_ended)
        connect_destroy(player, 'notify::seekable', self._on_seekable_changed)
        connect_destroy(library, 'changed', self._on_song_changed, player)

        self.connect('destroy', self._on_destroy)
        self._update(player)

        if player.info:
            self._create_waveform(player.info, CONFIG.max_data_points)
示例#5
0
    def __init__(self, player, library):
        Gtk.Box.__init__(self)
        self.elapsed_label = TimeLabel()
        self.elapsed_label.set_name('elapsed-label')
        self.remaining_label = TimeLabel()
        self.remaining_label.set_name('remaining-label')
        self.remaining_label.set_width_chars(6)
        self.scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL)
        self.scale.set_name('seek-bar')
        self.scale.set_adjustment(Gtk.Adjustment.new(0, 0, 0, 30, 5, 0))
        self.scale.set_digits(3)
        self.scale.set_show_fill_level(False)
        self.scale.set_draw_value(False)
        self._timer_modes = ['both', 'elapsed', 'remaining']
        self.c_timer_mode = __name__ + '_timer_mode'

        self.__timer_mode = 'both'
        self.__pressed_lmb = False
        self.__source_id = None

        self.elapsed_button = Gtk.Button()

        self.box = Gtk.Box(spacing=3)
        self.elapsed_button.add(self.box)
        self.elapsed_button.set_relief(Gtk.ReliefStyle.NONE)

        self.pack_start(self.scale, True, True, 0)

        try:
            self.__timer_mode = config.get('plugins', self.c_timer_mode)
        except NoOptionError:
            config.set('plugins', self.c_timer_mode, 'both')
        else:
            if self.__timer_mode not in self._timer_modes:
                self.__timer_mode = 'both'

        self._set_timer_mode(self.__timer_mode)

        self.elapsed_label.show()
        self.remaining_label.show()
        self.box.show()
        self.elapsed_button.show()
        self.scale.show()

        self.elapsed_button.connect('clicked', self._on_timer_clicked)
        self.scale.connect('button-release-event',
                           self._on_button_release, player)
        self.__id_button_press_event = self.scale.connect(
            'button-press-event', self._on_button_press, player)
        self.__id_change_value = self.scale.connect(
            'change-value', self._on_scale_value_change_request, player)

        self.__id_value_changed = self.scale.connect(
            'value-changed', self._on_scale_value_changed, player)
        GObject.signal_handler_block(self.scale, self.__id_value_changed)

        self._tracker = SynchronizedTimeTracker(player)
        self._tracker.connect('tick', self._on_tick, player)

        connect_destroy(player, 'seek', self._on_seek)
        connect_destroy(player, 'song-started', self._on_song_start)
        connect_destroy(player, "notify::seekable", self._update)

        self.connect("destroy", self._on_destroy)

        self._update(player)