def multicolumn(self, list, cols=4): """Format a list of items into a multi-column list.""" result = Grid() result.setWidth("100%") rows = (len(list)+cols-1)/cols result.resize(rows, cols) for col in range(cols): for i in range(rows*col, rows*col+rows): if i < len(list): result.setHTML(0, i, list[i] + "<br />\n") return result
def multicolumn(self, items, cols=4): """Format a list of items into a multi-column list.""" result = Grid() result.setWidth("100%") rows = (len(items)+cols-1)/cols result.resize(rows, cols) i = 0 for col in range(cols): for row in range(rows): if items and i < len(items): result.setHTML(row, col, items[i] + "<br />\n") i += 1 return result
class GridTest: def onModuleLoad(self): self.page=0 self.min_page=1 self.max_page=10 self.add=Button("Next >", self) self.sub=Button("< Prev", self) self.g=Grid() self.g.resize(5, 5) self.g.setHTML(0, 0, "<b>Grid Test</b>") self.g.setBorderWidth(2) self.g.setCellPadding(4) self.g.setCellSpacing(1) self.updatePageDisplay() RootPanel().add(self.sub) RootPanel().add(self.add) RootPanel().add(self.g) def onClick(self, sender, event): if sender==self.add: self.page+=1 elif sender==self.sub: self.page-=1 print "onClick", sender, self.page self.updatePageDisplay() def updatePageDisplay(self): if self.page<self.min_page: self.page=self.min_page elif self.page>self.max_page: self.page=self.max_page total_pages=(self.max_page-self.min_page) + 1 self.g.setHTML(0, 4, "<b>page " + str(self.page) + ' of ' + str(total_pages) + "</b>") if self.page>=self.max_page: self.add.setEnabled(False) else: self.add.setEnabled(True) if self.page<=self.min_page: self.sub.setEnabled(False) else: self.sub.setEnabled(True) for y in range(1, 5): for x in range(5): self.g.setText(y, x, str(self.page) + ' (' + str(y) + ',' + str(x) + ')')