58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
import audio
|
|
import db
|
|
from gi.repository import Gtk
|
|
from . import model
|
|
from . import row
|
|
|
|
class TableView(Gtk.ListView):
|
|
def __init__(self, table):
|
|
Gtk.ListView.__init__(self)
|
|
self.add_css_class("normal-icons")
|
|
self.set_vexpand(True)
|
|
self.set_model(model.TableSelection(table))
|
|
self.connect("activate", self.activated)
|
|
|
|
if table == db.user.Table:
|
|
self.set_factory(row.UserFactory)
|
|
elif table == db.library.Table:
|
|
self.set_factory(row.LibraryFactory)
|
|
else:
|
|
self.set_factory(row.Factory)
|
|
|
|
def activated(self, view, position):
|
|
audio.Player.set_playlist(self.get_model().get_playlist(position))
|
|
|
|
def get_selection(self):
|
|
return self.get_model()
|
|
|
|
def get_selected_playlist(self):
|
|
return self.get_model().get_selected_playlist()
|
|
|
|
def get_table(self):
|
|
return self.get_model().get_table()
|
|
|
|
|
|
class TableWindow(Gtk.ScrolledWindow):
|
|
def __init__(self, table):
|
|
Gtk.ScrolledWindow.__init__(self)
|
|
self.set_child(TableView(table))
|
|
|
|
def get_selection(self):
|
|
return self.get_child().get_selection()
|
|
|
|
def get_selected_playlist(self):
|
|
return self.get_child().get_selected_playlist()
|
|
|
|
def get_table(self):
|
|
return self.get_child().get_table()
|
|
|
|
|
|
class UserView(Gtk.ListView):
|
|
def __init__(self):
|
|
Gtk.ListView.__init__(self)
|
|
self.set_model(model.UserSelection())
|
|
self.set_factory(row.UserRowFactory())
|
|
self.add_css_class("normal-icons")
|
|
self.set_single_click_activate(True)
|