def __init__(self): """ Init popover """ Gtk.Popover.__init__(self) self.set_position(Gtk.PositionType.BOTTOM) self.connect('unmap', self._on_self_unmap) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/ExternalsPopover.ui') builder.connect_signals(self) self._signal_id = None self._view = builder.get_object('view') self._model = builder.get_object('model') self._tagreader = ScannerTagReader() renderer0 = Gtk.CellRendererPixbuf() renderer1 = Gtk.CellRendererText() renderer1.set_property('weight', 800) renderer1.set_property('weight-set', True) renderer1.set_property('ellipsize-set', True) renderer1.set_property('ellipsize', Pango.EllipsizeMode.END) renderer2 = Gtk.CellRendererText() renderer2.set_property('ellipsize-set', True) renderer2.set_property('ellipsize', Pango.EllipsizeMode.END) renderer3 = Gtk.CellRendererText() column = Gtk.TreeViewColumn('') column.pack_start(renderer0, True) column.pack_start(renderer1, True) column.pack_start(renderer2, True) column.pack_end(renderer3, False) column.add_attribute(renderer0, 'icon-name', 1) column.add_attribute(renderer1, 'text', 2) column.add_attribute(renderer2, 'text', 3) column.add_attribute(renderer3, 'text', 4) column.set_expand(True) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) self._view.append_column(column) self.add(self._view) self._signal_id = Lp().player.connect('current-changed', self._on_current_changed) size_setting = Lp().settings.get_value('window-size') if isinstance(size_setting[1], int): self.set_size_request(400, size_setting[1] * 0.7) else: self.set_size_request(400, 600)
def _on_bus_message_tag(self, bus, message): """ Read tags from stream @param bus as Gst.Bus @param message as Gst.Message """ if self.current_track.id >= 0 or\ self.current_track.duration > 0.0: return debug("Player::_on_bus_message_tag(): %s" % self.current_track.uri) reader = ScannerTagReader() tags = message.parse_tag() title = reader.get_title(tags, '') if title != '': self.current_track.name = title if self.current_track.name == '': self.current_track.name = self.current_track.uri artist = reader.get_artists(tags) if artist != '': self.current_track.artist_names = artist # If title set, force artist if self.current_track.title != '' and self.current_track.artist == '': self.current_track.artist_names = self.current_track.album_artist if self.current_track.id == Type.EXTERNALS: (b, duration) = self._playbin.query_duration(Gst.Format.TIME) if b: self.current_track.duration = duration / 1000000000 # We do not use tagreader as we need to check if value is None self.current_track.album_name = tags.get_string_index('album', 0)[1] if self.current_track.album_name is None: self.current_track.album_name = '' self.current_track.artist_names = reader.get_artists(tags) self.current_track.set_album_artist(reader.get_album_artist(tags)) if self.current_track.album_artist == '': self.current_track.set_album_artist(self.current_track.artist) self.current_track.genre_name = reader.get_genres(tags) self.emit('current-changed')
def __init__(self): """ Init popover """ Gtk.Popover.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/ExternalsPopover.ui') builder.connect_signals(self) self._signal_id = None self._view = builder.get_object('view') self._model = builder.get_object('model') self._tagreader = ScannerTagReader() renderer0 = Gtk.CellRendererPixbuf() renderer1 = Gtk.CellRendererText() renderer1.set_property('weight', 800) renderer1.set_property('weight-set', True) renderer1.set_property('ellipsize-set', True) renderer1.set_property('ellipsize', Pango.EllipsizeMode.END) renderer2 = Gtk.CellRendererText() renderer2.set_property('ellipsize-set', True) renderer2.set_property('ellipsize', Pango.EllipsizeMode.END) renderer3 = Gtk.CellRendererText() column = Gtk.TreeViewColumn('') column.pack_start(renderer0, True) column.pack_start(renderer1, True) column.pack_start(renderer2, True) column.pack_end(renderer3, False) column.add_attribute(renderer0, 'icon-name', 1) column.add_attribute(renderer1, 'text', 2) column.add_attribute(renderer2, 'text', 3) column.add_attribute(renderer3, 'text', 4) column.set_expand(True) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) self._view.append_column(column) self.add(self._view)