playlist: Add a class for playlist controls

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-11 11:32:59 -04:00
parent c5a4db041c
commit e61adceafb
2 changed files with 47 additions and 0 deletions

21
playlist/controls.py Normal file
View File

@ -0,0 +1,21 @@
# Copyright 2021 (c) Anna Schumaker.
from gi.repository import Gtk
class Controls(Gtk.Box):
def __init__(self):
Gtk.Box.__init__(self)
self.search = Gtk.SearchEntry()
self.search.set_property("placeholder-text", "Type to filter tracks")
self.search.set_hexpand(True)
self.append(self.search)
self.random = Gtk.ToggleButton()
self.random.set_icon_name("media-playlist-shuffle")
self.append(self.random)
self.loop = Gtk.ToggleButton()
self.loop.set_icon_name("media-playlist-repeat")
self.append(self.loop)
self.add_css_class("linked")

26
playlist/test_controls.py Normal file
View File

@ -0,0 +1,26 @@
# Copyright 2021 (c) Anna Schumaker.
from . import controls
from gi.repository import Gtk
import trackdb
import unittest
class TestPlaylistControls(unittest.TestCase):
def test_playlist_controls_init(self):
ctrl = controls.Controls()
self.assertIsInstance(ctrl, Gtk.Box)
self.assertIsInstance(ctrl.search, Gtk.SearchEntry)
self.assertIsInstance(ctrl.random, Gtk.ToggleButton)
self.assertIsInstance(ctrl.loop, Gtk.ToggleButton)
self.assertEqual(ctrl.random.get_icon_name(), "media-playlist-shuffle")
self.assertEqual(ctrl.loop.get_icon_name(), "media-playlist-repeat")
self.assertEqual(ctrl.search.get_property("placeholder-text"),
"Type to filter tracks")
self.assertTrue(ctrl.has_css_class("linked"))
self.assertTrue(ctrl.search.get_hexpand())
self.assertIn(ctrl.search, ctrl)
self.assertIn(ctrl.random, ctrl)
self.assertIn(ctrl.loop, ctrl)