emmental/sidebar/view.py

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)