class ListCreator(object): mItems = None mListItem = None def __init__(self, listheight, x, y, itemsize, items, reso): self.usedResolution = reso self.viewRect = RectF(x, y, itemsize.x, listheight) self.itemSize = itemsize self.mListItem = [] self.mItems = items self.pos = b2Vec2(x,y) self.mListItem.append(Button("+", x + itemsize.x, y, b2Vec2(0.5,0.5), lambda:self.scrollUp())) self.mListItem.append(Button("-", x + itemsize.x, y + listheight - itemsize.y, b2Vec2(0.5,0.5), lambda:self.scrollDown())) counter = 0 for resolution in self.mItems: active = True if resolution == self.usedResolution else False self.mListItem.append(ListItem(counter, x, y + (counter * itemsize.y), itemsize, resolution, active, lambda x: self.onItemClick(x))) counter += 1 def isInViewRect(self, item): return self.viewRect.collidepoint(b2Vec2((item.x + item.size.x / 2.0, item.y + item.size.y / 2.0))) def scrollUp(self): for fi in self.mListItem: if isinstance(fi, ListItem): if fi.rect.y == self.viewRect.y: return break for li in self.mListItem: if isinstance(li, ListItem): li.y += li.size.y li.rect.y = li.y def scrollDown(self): if self.mListItem[len(self.mListItem)-1].rect.y == self.viewRect.y + self.viewRect.h - self.itemSize.y: return for li in self.mListItem: if isinstance(li, ListItem): li.y -= li.size.y li.rect.y = li.y def onItemClick(self, clicked): if not self.isInViewRect(clicked): return for item in self.mListItem: if isinstance(item, ListItem): item.mActive = False clicked.mActive = True Pgl.options.resolution = clicked.mText
def __init__(self, listheight, x, y, itemsize, items, reso): self.usedResolution = reso self.viewRect = RectF(x, y, itemsize.x, listheight) self.itemSize = itemsize self.mListItem = [] self.mItems = items self.pos = b2Vec2(x,y) self.mListItem.append(Button("+", x + itemsize.x, y, b2Vec2(0.5,0.5), lambda:self.scrollUp())) self.mListItem.append(Button("-", x + itemsize.x, y + listheight - itemsize.y, b2Vec2(0.5,0.5), lambda:self.scrollDown())) counter = 0 for resolution in self.mItems: active = True if resolution == self.usedResolution else False self.mListItem.append(ListItem(counter, x, y + (counter * itemsize.y), itemsize, resolution, active, lambda x: self.onItemClick(x))) counter += 1