def populate_store(self, event_omit): for day_name, event_iter in groupby(self.events, lambda e: e.day_name): header = '<span size="x-large" foreground="#aaa">%s</span>' % ( esc(day_name)) self.store.append((header, None, False, False, None)) for event in event_iter: self.store.append((event.summary(omit=event_omit), event, event in self.schedule.favourites, True, get_color(event.track)))
def populate_store(self, event_omit): for day_name, event_iter in groupby(self.events, lambda e: e.day_name): header = '<span size="x-large" foreground="#aaa">%s</span>' % ( esc(day_name)) self.store.append((header, None, False, False, None)) for event in event_iter: self.store.append( (event.summary(omit=event_omit), event, event in self.schedule.favourites, True, get_color(event.track)))
def __init__(self, schedule, title, categories, event_fmt, show_swatches=False): MaybeStackableWindow.__init__(self, title) self.schedule = schedule self.categories = categories self.event_fmt = event_fmt # This should really be (str, list) but that doesn't seem to work: # TypeError: could not get typecode from object # I guess list is not a subclass of object. self.store = gtk.ListStore(str, object, str, gtk.gdk.Color) for category, events in sorted(categories.items()): summary = """<b>%(category)s</b> <small>%(event_summary)s</small>""" % { 'category': esc(category), 'event_summary': summarize_events(events), } colour = get_color(category) if show_swatches else None self.store.append((category, events, summary, colour)) treeview = gtk.TreeView(self.store) treeview.set_headers_visible(False) treeview.connect("row-activated", self.category_activated) tvcolumn = gtk.TreeViewColumn('Stuff') treeview.append_column(tvcolumn) # FIXME: it'd be nice to show the colours on the room list, too, to # show which track(s) are in that room. But then we'd need to support # showing more than one. if show_swatches: add_swatch_cells(tvcolumn, colour_col=CategoryList.COL_CATEGORY_COLOUR) cell = gtk.CellRendererText() cell.set_property("ellipsize", pango.ELLIPSIZE_END) tvcolumn.pack_start(cell, True) tvcolumn.add_attribute(cell, 'markup', CategoryList.COL_CATEGORY_SUMMARY) pannable = MaybePannableArea() pannable.add(treeview) self.add_with_margins(pannable) self.show_all()