class MenueItem(): def __init__(self, resourceName, fontProperties): assert isinstance(fontProperties, FontProperties) self.id = None self.image = None self.TargetView = None self.action = None self.animation = None self._resourceName = resourceName self._actionObject = None self.text = None self._textSurface = None self._fontProperties = fontProperties def configure(self): if self.image: self.animation = MenuAnimationInfo(self._resourceName, self.image) if self.text: self._textSurface = TextLabelSurface(self.text, self._fontProperties) def executeAction(self): if self.TargetView: changeviewEvent = pygame.event.Event(EVENT_CHANGEVIEW, ViewName=self.TargetView) pygame.event.post(changeviewEvent) if self.action: actionObject = self.actionFactory(self.action) actionObject.doAction() def actionFactory(self, actionName): module_name = "Actions.{0}".format(actionName) actionClass = getattr(importlib.import_module(module_name), actionName) return actionClass() def getImage(self, imageMinWidth=None): result = None if self.animation and self._textSurface: #merge text and image result = self.animation.ImageSurface rect = result.get_rect() result.blit(self._textSurface.render(rect.width), (0,0)) elif self.animation: return self.animation.ImageSurface elif self._textSurface: return self._textSurface.render(imageMinWidth) return result def getItemRect(self): img = self.getImage() return img.get_rect()
def configure(self): if self.image: self.animation = MenuAnimationInfo(self._resourceName, self.image) if self.text: self._textSurface = TextLabelSurface(self.text, self._fontProperties)