コード例 #1
0
class ContentPanel(HorizontalPanel):
    def __init__(self, onItemPublish, onItemLike, onItemDislike, onSort=None, onFilter=None):
        super(ContentPanel, self).__init__()
        self.newItemArgs = {'onPublish':onItemPublish, 'onLike':onItemLike, 'onDislike':onItemDislike}

        self.sidebar = SideVerticalToolbar(onSort=onSort, onFilter=onFilter)
        text = '<br>'.join(list('More Tools'))
        self.sidebarEdge = Button(text, listener=self.onSidebarEdgeClick, StyleName=Styles.TOOLBAR_VERTICALEDGE)
        self.add(self.sidebarEdge)

        self.contentpanel = VerticalPanel()
        self.add(self.contentpanel)
        self.allContentCells = []
        return
    def _getAllContentItemCells(self):
        for widg in self.contentpanel.getChildren():
            if isinstance(widg, ContentItemCell):
                yield widg
    def addItems(self, items):
        for item in items:
            widg = ContentItemCell(item, **self.newItemArgs)
            self.contentpanel.add(widg)
            self.allContentCells.append(widg)
    def itemCount(self):
        return len(self.allContentCells)
    def onSidebarEdgeClick(self):
        #If parent is set, hide it- otherwise, remove it
        if self.sidebar.parent:
            self.sidebar.removeFromParent()
        else:
            self.insert(self.sidebar, 0)
    def setItemsOpenState(self, state):
        for cell in self._getAllContentItemCells():
            cell.setOpen(state)
    def sortItems(self, keyselector, ascending):
        allchildren = list(self.contentpanel.getChildren())
        self.contentpanel.clear()
        sall = sorted(allchildren, key=keyselector)
        if not ascending:
            sall = reversed(sall)
        for child in sall:
            self.contentpanel.add(child)
    def filterItems(self, predicate):
        self.contentpanel.clear()
        cellsToShow = [cell for cell in self.allContentCells if predicate(cell)]
        for cell in cellsToShow:
            self.contentpanel.add(cell)