rind: Replace window title and subtitle with a custom widget

This lets me control size and justification of the text. Additionally, I
put everything into a scrolled window just in case a track has a really
long title name.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-03-20 09:58:23 -04:00
parent c636b3fd5e
commit 72a947621c
3 changed files with 64 additions and 4 deletions

View File

@ -63,6 +63,64 @@
<property name="position">2</property>
</packing>
</child>
<child type="title">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vscrollbar_policy">never</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;big&gt;Emmental&lt;/big&gt;</property>
<property name="use_markup">True</property>
<property name="single_line_mode">True</property>
<property name="xalign">0</property>
<style>
<class name="title"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="subtitle">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;big&gt;The Cheesy Music Player&lt;/big&gt;</property>
<property name="use_markup">True</property>
<property name="single_line_mode">True</property>
<property name="xalign">0</property>
<style>
<class name="subtitle"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>

View File

@ -10,6 +10,8 @@ Gst.init(sys.argv)
NextButton = gtk.Builder.get_object("next_button")
PauseButton = gtk.Builder.get_object("pause_button")
PlayButton = gtk.Builder.get_object("play_button")
Subtitle = gtk.Builder.get_object("subtitle")
Title = gtk.Builder.get_object("title")
class EmmentalAudio:
def __init__(self):
@ -32,8 +34,8 @@ class EmmentalAudio:
self.playbin.set_state(Gst.State.NULL)
self.playbin.set_property("uri", f"file://{track.path}")
self.playbin.set_state(Gst.State.PLAYING if play else Gst.State.PAUSED)
gtk.Builder.get_object("header").set_title(track["title"])
gtk.Builder.get_object("header").set_subtitle(track["artist"])
Title.set_markup(f"<big>{track['title']}</big>")
Subtitle.set_markup(f"<big>by {track['artist']}</big>")
def next(self, *args):
track = curds.PlaylistManager.next()

View File

@ -76,8 +76,8 @@ class TestGst(unittest.TestCase):
self.assertEqual(audio.position(), 0)
self.assertEqual(audio.duration(), 10.0)
self.assertEqual(audio.progress(), 0)
self.assertEqual(gtk.Builder.get_object("header").get_title(), track["title"])
self.assertEqual(gtk.Builder.get_object("header").get_subtitle(), track["artist"])
self.assertEqual(gtk.Builder.get_object("title").get_text(), track['title'])
self.assertEqual(gtk.Builder.get_object("subtitle").get_text(), "by " + track["artist"])
while self.state != Gst.State.PLAYING:
self.main_loop()