class ListSelectView(SlaveView): """ ListSelectView for selecting an item from a list. """ gsignal('selection-changed', object) def __init__(self, items, column_name='name'): self.column_name = column_name self.items = items super(SlaveView, self).__init__() def create_ui(self): self.widget = gtk.VBox() columns = [Column(attr=self.column_name, sortable=True, editable=False, resizeable=True)] self.list_box = ObjectList(columns) for item in self.items: self.add_item(item) s = self.list_box.get_selection() s.set_mode(gtk.SELECTION_MULTIPLE) self.list_box.show_all() self.widget.pack_start(self.list_box) def add_item(self, item): item_object = DictAsAttrProxy({self.column_name: str(item)}) self.list_box.append(item_object) def selected_items(self): return [i.as_dict.values()[0] for i in self.list_box.selected_items] def on_list_box__selection_changed(self, *args, **kwargs): self.emit('selection-changed', self.selected_items())