diff --git a/direct/src/gui/PickList.py b/direct/src/gui/PickList.py index f1eb7791e5..a40506210e 100644 --- a/direct/src/gui/PickList.py +++ b/direct/src/gui/PickList.py @@ -37,18 +37,7 @@ class PickList(PandaObject.PandaObject): """ if self.isClean == 0: self.isClean = 1 - # remove keyboard events - self.ignore("up-up") - self.ignore("down-up") - self.ignore("enter-up") - - # ignore all the buttons - for item in self.frame.getItems(): - self.ignore(item.getGuiItem().getUpEvent()) - self.ignore(item.getGuiItem().getUpRolloverEvent()) - self.ignore(item.getGuiItem().getDownRolloverEvent()) - - # reset the display + self.disable() self.frame.unmanage() self.frame = None self.choiceList = [] @@ -107,13 +96,23 @@ class PickList(PandaObject.PandaObject): return None def manage(self): + self.enable() + self.frame.manage() + return None + + def unmanage(self): + self.disable() + self.frame.unmanage() + return None + + def enable(self): + # turn the buttons on + self.activate() + # listen for keyboard events self.accept("up-up", self.__decrementChoice) self.accept("down-up", self.__incrementChoice) self.accept("enter-up", self.__makeChoice, [1]) - #for button in self.choiceList: - # self.accept("gui-button-" + button.name + "-enter", - # self.__makeChoice, [1]) for choice in self.choiceList: choiceIndex = self.choiceList.index(choice) @@ -127,17 +126,16 @@ class PickList(PandaObject.PandaObject): eventName = self.name + "-exit-" + str(choiceIndex) self.accept(eventName, self.__exitChoice) - self.frame.manage() + - return None + def disable(self, button=None): + # turn the buttons off + self.deactivate(button) - def unmanage(self): - # remove keyboard events + # ignore all hooks self.ignore("up-up") self.ignore("down-up") self.ignore("enter-up") - #for button in self.choiceList: - # self.ignore("gui-button-" + button.name + "-enter") # ignore all the buttons for item in self.frame.getItems(): @@ -145,10 +143,22 @@ class PickList(PandaObject.PandaObject): self.ignore(item.getGuiItem().getUpRolloverEvent()) self.ignore(item.getGuiItem().getDownRolloverEvent()) - self.frame.unmanage() - - return None + def activate(self): + # make sure items are active + for choice in self.choiceList: + choice.getGuiItem().up() + def deactivate(self, button=None): + # make sure all items are inactive, if a button + # is passed in do NOT deactivate it. + for choice in self.choiceList: + if (choice.getGuiItem().isActive()): + if not (button == None): + if not (self.choiceList.index(choice) == button): + choice.getGuiItem().inactive() + else: + choice.getGuiItem().inactive() + def recompute(self): self.frame.recompute() @@ -212,7 +222,9 @@ class PickList(PandaObject.PandaObject): else: # let everyone know a choice was made messenger.send(self.eventName, [self.choice]) - + self.disable(self.choice) + +