emmental/audio/nowplaying.py

40 lines
1.4 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from gi.repository import GLib
from gi.repository import Gtk
class TrackTitle(Gtk.Label):
def __init__(self, player):
Gtk.Label.__init__(self)
player.connect("track-changed", self.on_track_changed)
self.on_track_changed(player, None, player.track)
self.add_css_class("title")
def on_track_changed(self, player, old, new):
text = new.title if new else "Emmental"
self.set_markup(f"<big>{GLib.markup_escape_text(text)}</big>")
class TrackArtist(Gtk.Label):
def __init__(self, player):
Gtk.Label.__init__(self)
player.connect("track-changed", self.on_track_changed)
self.on_track_changed(player, None, player.track)
self.add_css_class("subtitle")
def on_track_changed(self, player, old, new):
text = f"by {new.artist.name}" if new else "The Cheesy Music Player"
self.set_markup(f"<big>{GLib.markup_escape_text(text)}</big>")
class NowPlaying(Gtk.ScrolledWindow):
def __init__(self, player):
Gtk.ScrolledWindow.__init__(self)
self.box = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
self.box.append(TrackTitle(player))
self.box.append(TrackArtist(player))
self.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
self.set_valign(Gtk.Align.CENTER)
self.set_hexpand(True)
self.set_child(self.box)