40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
from . import menu
|
|
from gi.repository import Gtk, Gst
|
|
|
|
class Controls(Gtk.Box):
|
|
def __init__(self):
|
|
Gtk.Box.__init__(self)
|
|
self.add_css_class("large-icons")
|
|
self.add_css_class("linked")
|
|
|
|
self.previous = Gtk.Button.new_from_icon_name("media-skip-backward")
|
|
self.append(self.previous)
|
|
|
|
self.play = Gtk.Button.new_from_icon_name("media-playback-start")
|
|
self.append(self.play)
|
|
|
|
self.pause = Gtk.Button.new_from_icon_name("media-playback-pause")
|
|
self.pause.hide()
|
|
self.append(self.pause)
|
|
|
|
self.next = Gtk.Button.new_from_icon_name("media-skip-forward")
|
|
self.append(self.next)
|
|
|
|
self.menu = menu.Button()
|
|
self.append(self.menu)
|
|
|
|
self.sizegroup = Gtk.SizeGroup()
|
|
self.sizegroup.add_widget(self)
|
|
|
|
def connect(self, name, func):
|
|
if name == "volume-changed":
|
|
self.menu.volume.connect("value-changed", func)
|
|
else:
|
|
button = self.__dict__.get(name)
|
|
button.connect("clicked", func)
|
|
|
|
def set_state(self, state):
|
|
self.play.set_visible(state != Gst.State.PLAYING)
|
|
self.pause.set_visible(state == Gst.State.PLAYING)
|