def Render(self, ctx, size): i = stack.index(self) while i>0 and isinstance(stack[i-1], MenuFrame): i -= 1 if i > 0 : stack[i-1].Render(ctx, size) RenderMenu(ctx, self.title, self.options.keys()[self.displayRange[0]:self.displayRange[1]], self.selected-self.displayRange[0], self.position, self.fontSizeTitle, self.fontSize)
def _ResolveSelection(self, keySelected, valueSelected): if isinstance(valueSelected, dict): stack.append(MenuFrame(valueSelected, keySelected, self.position, self.fontSizeTitle, self.fontSize, self.displayItems)) elif isinstance(valueSelected, StateFrame): stack.append(valueSelected) elif valueSelected == 'back': self.KillSelf() else: try: output = valueSelected() self._ResolveSelection(keySelected, output) except TypeError: if not valueSelected: # what if the option function added a StackFrame? we need to be careful here removeIdx = stack.index(self) while len(stack) > 1 and removeIdx >= 0 and isinstance(stack[removeIdx], MenuFrame): stack[removeIdx].KillSelf() removeIdx -= 1