# 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)