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)
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()
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)
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)
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)