46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
from lib import settings
|
|
from gi.repository import Gtk, GLib
|
|
import audio
|
|
|
|
class Column(Gtk.ColumnViewColumn):
|
|
def __init__(self, title, field, width=-1, expand=False, align=0):
|
|
Gtk.ColumnViewColumn.__init__(self)
|
|
self.field = field
|
|
self.align = align
|
|
|
|
self.factory = Gtk.SignalListItemFactory()
|
|
self.factory.connect("bind", self.on_bind)
|
|
self.factory.connect("setup", self.on_setup)
|
|
self.factory.connect("teardown", self.on_teardown)
|
|
self.factory.connect("unbind", self.on_unbind)
|
|
|
|
settings.initialize(f"column.{title}", width)
|
|
|
|
self.set_factory(self.factory)
|
|
self.set_fixed_width(settings.get_int(f"column.{title}"))
|
|
self.set_expand(expand)
|
|
self.set_resizable(True)
|
|
self.set_title(title)
|
|
self.connect("notify::fixed-width", self.on_width_changed)
|
|
|
|
def on_width_changed(self, col, param):
|
|
settings.set(f"column.{self.get_title()}", self.get_fixed_width())
|
|
|
|
def on_bind(self, factory, listitem):
|
|
track = listitem.get_item()
|
|
text = GLib.markup_escape_text(track[self.field])
|
|
if track == audio.Player.track:
|
|
text = f"<b>{text}</b>"
|
|
listitem.get_child().set_markup(text)
|
|
listitem.get_child().set_xalign(self.align)
|
|
|
|
def on_setup(self, factory, listitem):
|
|
listitem.set_child(Gtk.Label())
|
|
|
|
def on_teardown(self, factory, listitem):
|
|
listitem.set_child(None)
|
|
|
|
def on_unbind(self, factory, listitem):
|
|
pass
|