audio: Add the current autopause count to the menu button widget

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-21 16:31:54 -04:00
parent 73533c1283
commit 2b358e3733
2 changed files with 28 additions and 1 deletions

View File

@ -7,6 +7,10 @@ class Button(Gtk.MenuButton):
def __init__(self):
Gtk.MenuButton.__init__(self)
self.count = Gtk.Label()
self.count.set_yalign(0)
self.count.set_markup("<small> </small>")
self.pause = Gtk.Image.new_from_icon_name("media-playback-start")
self.counter = Gtk.Scale()
self.counter.set_adjustment(trackdb.Stack.Counter)
@ -14,7 +18,6 @@ class Button(Gtk.MenuButton):
self.counter.set_format_value_func(self.format_counter)
self.counter.set_digits(0)
self.counter.set_draw_value(True)
self.counter.set_valign(Gtk.Align.START)
settings.initialize("audio.volume", 1.0)
self.vol_img = Gtk.Image()
@ -37,6 +40,14 @@ class Button(Gtk.MenuButton):
self.popover = Gtk.Popover()
self.popover.set_child(self.grid)
self.overlay = Gtk.Overlay()
self.toggle = self.get_first_child()
self.icon = self.toggle.get_child()
self.icon.set_margin_top(5)
self.toggle.set_child(self.overlay)
self.overlay.add_overlay(self.count)
self.overlay.add_overlay(self.icon)
self.set_popover(self.popover)
self.add_css_class("normal-icons")
@ -59,7 +70,9 @@ class Button(Gtk.MenuButton):
def on_counter_changed(self, scale):
value = int(scale.get_value())
icon = "pause" if value > -1 else "start"
text = " " if value == -1 else value
self.pause.set_from_icon_name(f"media-playback-{icon}")
self.count.set_markup(f"<small>{text}</small>")
def on_volume_changed(self, scale):
value = scale.get_value()

View File

@ -14,7 +14,10 @@ class TestAudioMenu(unittest.TestCase):
self.assertIsInstance(button, Gtk.MenuButton)
self.assertIsInstance(button.popover, Gtk.Popover)
self.assertIsInstance(button.overlay, Gtk.Overlay)
self.assertIsInstance(button.toggle, Gtk.ToggleButton)
self.assertIsInstance(button.grid, Gtk.Grid)
self.assertIsNotNone(button.icon)
self.assertTrue(button.has_css_class("normal-icons"))
self.assertTrue(button.grid.has_css_class("large-icons"))
@ -22,20 +25,29 @@ class TestAudioMenu(unittest.TestCase):
self.assertEqual(button.grid.get_column_spacing(), 5)
self.assertEqual(button.get_popover(), button.popover)
self.assertEqual(button.popover.get_child(), button.grid)
self.assertEqual(button.toggle, button.get_first_child())
self.assertEqual(button.toggle.get_child(), button.overlay)
self.assertEqual(button.icon.get_margin_top(), 5)
self.assertIn(button.icon, button.overlay)
def test_audio_menu_counter_init(self):
button = menu.Button()
self.assertIsInstance(button.pause, Gtk.Image)
self.assertIsInstance(button.count, Gtk.Label)
self.assertIsInstance(button.counter, Gtk.Range)
self.assertEqual(button.pause.get_icon_name(), "media-playback-start")
self.assertEqual(button.count.get_text(), " ")
self.assertEqual(button.count.get_yalign(), 0)
self.assertEqual(button.counter.get_adjustment(), trackdb.Stack.Counter)
self.assertEqual(button.counter.get_digits(), 0)
self.assertTrue(button.counter.get_draw_value())
self.assertIn(button.pause, button.grid)
self.assertIn(button.counter, button.grid)
self.assertIn(button.count, button.overlay)
def test_audio_menu_counter(self):
button = menu.Button()
@ -47,9 +59,11 @@ class TestAudioMenu(unittest.TestCase):
trackdb.Stack.Counter.increment()
self.assertEqual(button.pause.get_icon_name(), "media-playback-pause")
self.assertEqual(button.count.get_text(), "0")
trackdb.Stack.Counter.decrement()
self.assertEqual(button.pause.get_icon_name(), "media-playback-start")
self.assertEqual(button.count.get_text(), " ")
def test_audio_menu_volume_init(self):
button = menu.Button()