def scrollTo(self, index, centered=0): try: self['numItemsVisible'] except: self.notify.info('crash 27633 fixed!') return numItemsVisible = self['numItemsVisible'] numItemsTotal = len(self['items']) if centered: self.index = index - numItemsVisible / 2 else: self.index = index if len(self['items']) <= numItemsVisible: self.incButton['state'] = DGG.DISABLED self.decButton['state'] = DGG.DISABLED self.index = 0 ret = 0 elif self.index <= 0: self.index = 0 self.decButton['state'] = DGG.DISABLED self.incButton['state'] = DGG.NORMAL ret = 0 elif self.index >= numItemsTotal - numItemsVisible: self.index = numItemsTotal - numItemsVisible self.incButton['state'] = DGG.DISABLED self.decButton['state'] = DGG.NORMAL ret = 0 else: if self.incButton['state'] == DGG.DISABLED or self.decButton[ 'state'] == DGG.DISABLED: self.__buttonUp(0) self.incButton['state'] = DGG.NORMAL self.decButton['state'] = DGG.NORMAL ret = 1 for item in self['items']: if item.__class__.__name__ != 'str': item.hide() upperRange = min(numItemsTotal, numItemsVisible) for i in range(self.index, self.index + upperRange): item = self['items'][i] if item.__class__.__name__ == 'str': if self['itemMakeFunction']: item = apply(self['itemMakeFunction'], (item, i, self['itemMakeExtraArgs'])) else: item = DirectFrame(text=item, text_align=self['itemsAlign'], text_wordwrap=self['itemsWordwrap'], relief=None) self['items'][i] = item item.reparentTo(self.itemFrame) self.recordMaxHeight() item.show() item.setPos(0, 0, -(i - self.index) * self.maxHeight) if self['command']: apply(self['command'], self['extraArgs']) return ret
def scrollTo(self, index, centered=0): numItemsVisible = self['numItemsVisible'] numItemsTotal = len(self['items']) if centered: self.index = index - numItemsVisible / 2 else: self.index = index if len(self['items']) <= numItemsVisible: self.incButton['state'] = DISABLED self.decButton['state'] = DISABLED self.index = 0 ret = 0 else: if self.index <= 0: self.index = 0 self.decButton['state'] = DISABLED self.incButton['state'] = NORMAL ret = 0 else: if self.index >= numItemsTotal - numItemsVisible: self.index = numItemsTotal - numItemsVisible self.incButton['state'] = DISABLED self.decButton['state'] = NORMAL ret = 0 else: self.incButton['state'] = NORMAL self.decButton['state'] = NORMAL ret = 1 for item in self['items']: if item.__class__.__name__ != 'str': item.hide() upperRange = min(numItemsTotal, numItemsVisible) for i in range(self.index, self.index + upperRange): item = self['items'][i] if item.__class__.__name__ == 'str': if self['itemMakeFunction']: item = apply(self['itemMakeFunction'], (item, i, self['itemMakeExtraArgs'])) else: item = DirectFrame(text=item, relief=None) self['items'][i] = item item.reparentTo(self.itemFrame) self.recordMaxHeight() item.show() item.setPos(0, 0, -(i - self.index) * self.maxHeight) if self['command']: apply(self['command'], self['extraArgs']) return ret return
def makeAllItems(self): for i in range(len(self['items'])): item = self['items'][i] if item.__class__.__name__ == 'str': if self['itemMakeFunction']: item = apply(self['itemMakeFunction'], (item, i, self['itemMakeExtraArgs'])) else: item = DirectFrame(text=item, text_align=self['itemsAlign'], text_wordwrap=self['itemsWordwrap'], relief=None) self['items'][i] = item item.reparentTo(self.itemFrame) self.recordMaxHeight()
def makeAllItems(self): assert self.notify.debugStateCall(self) for i in range(len(self['items'])): item = self["items"][i] # If the item is a 'str', then it has not been created # Therefore, use the the function given to make it or # just make it a frame #print "Making " + str(item) if item.__class__.__name__ == 'str': if self['itemMakeFunction']: # If there is a function to create the item item = apply(self['itemMakeFunction'], (item, i, self['itemMakeExtraArgs'])) else: item = DirectFrame(text=item, text_align=self['itemsAlign'], text_wordwrap=self['itemsWordwrap'], relief=None) # Then add the newly formed item back into the normal item list self["items"][i] = item item.reparentTo(self.itemFrame) self.recordMaxHeight()
def scrollTo(self, index, centered=0): """ scrolls list so selected index is at top, or centered in box""" assert self.notify.debugStateCall(self) #print "scrollTo[", index,"] called, len(self[items])=", len(self["items"])," self[numItemsVisible]=", self["numItemsVisible"] try: self["numItemsVisible"] except: # RAU hack to kill 27633 self.notify.info('crash 27633 fixed!') return numItemsVisible = self["numItemsVisible"] numItemsTotal = len(self["items"]) if (centered): self.index = index - (numItemsVisible / 2) else: self.index = index # Not enough items to even worry about scrolling, # just disable the buttons and do nothing if (len(self["items"]) <= numItemsVisible): self.incButton['state'] = DGG.DISABLED self.decButton['state'] = DGG.DISABLED # Hmm.. just reset self.index to 0 and bail out self.index = 0 ret = 0 else: if (self.index <= 0): self.index = 0 #print "at list start, ", len(self["items"])," ", self["numItemsVisible"] self.decButton['state'] = DGG.DISABLED self.incButton['state'] = DGG.NORMAL ret = 0 elif (self.index >= (numItemsTotal - numItemsVisible)): self.index = numItemsTotal - numItemsVisible #print "at list end, ", len(self["items"])," ", self["numItemsVisible"] self.incButton['state'] = DGG.DISABLED self.decButton['state'] = DGG.NORMAL ret = 0 else: # deal with an edge condition - make sure any tasks are removed from the disabled arrows. if (self.incButton['state'] == DGG.DISABLED) or (self.decButton['state'] == DGG.DISABLED): #print "leaving list start/end, ", len(self["items"])," ", self["numItemsVisible"] self.__buttonUp(0) self.incButton['state'] = DGG.NORMAL self.decButton['state'] = DGG.NORMAL ret = 1 #print "self.index set to ", self.index # Hide them all for item in self["items"]: if item.__class__.__name__ != 'str': item.hide() # Then show the ones in range, and stack their positions upperRange = min(numItemsTotal, numItemsVisible) for i in range(self.index, self.index + upperRange): item = self["items"][i] #print "stacking buttontext[", i,"]", self["items"][i]["text"] # If the item is a 'str', then it has not been created (scrolled list is 'as needed') # Therefore, use the the function given to make it or just make it a frame if item.__class__.__name__ == 'str': if self['itemMakeFunction']: # If there is a function to create the item item = apply(self['itemMakeFunction'], (item, i, self['itemMakeExtraArgs'])) else: item = DirectFrame(text=item, text_align=self['itemsAlign'], text_wordwrap=self['itemsWordwrap'], relief=None) #print "str stacking buttontext[", i,"]", self["items"][i]["text"] # Then add the newly formed item back into the normal item list self["items"][i] = item item.reparentTo(self.itemFrame) self.recordMaxHeight() item.show() item.setPos(0, 0, -(i - self.index) * self.maxHeight) #print 'height bug tracker: i-%s idx-%s h-%s' % (i, self.index, self.maxHeight) if self['command']: # Pass any extra args to command apply(self['command'], self['extraArgs']) return ret