class ScrollableTextScreen: """ A scrollable text screen """ def __init__(self, layout, text): """ Used to display and control the position of text in a scrollable area. @param layout: Skin layout to use. @param text: This is the text to scroll. """ self.layout = layout self.scrollable_text = ScrollableText(text) def show(self, menuw): """ Display the screen and make it the active 'menu'. @param menuw: The menu widget to push this screen onto. """ self.menuw = menuw self.transition = skin.TRANSITION_IN menuw.pushmenu(self) self.transition = False if hasattr(self, 'event_context'): logger.log(9, 'scrollabletext_screen: setting context to %s', self.event_context) rc.set_context(self.event_context) def refresh(self): """ Redraw the screen. """ if self.menuw.children: return skin_object.draw(self.layout, self, transition=self.transition) def eventhandler(self, event, menuw=None): """ eventhandler to handle events that relate to scrolling the text in the scrollable_text area/object. Any events not directly handled here are passed to the registered client_eventhandler. @param event: The event to handle. @param menuw: The Menu Widget that called this handler. """ event_consumed = False if event == MENU_UP: self.scrollable_text.scroll(True) self.refresh() event_consumed = True elif event == MENU_DOWN: self.scrollable_text.scroll(False) self.refresh() event_consumed = True elif event == MENU_SUBMENU: # open the submenu for this item if hasattr(self.menuw.menustack[-2], 'is_submenu'): # there is already a submenu, we can return to self.menuw.eventhandler('MENU_BACK_ONE_MENU') event_consumed = True else: # we have to create a new submenu self.menuw.delete_menu() self.menuw.eventhandler('MENU_SUBMENU') event_consumed = True elif event == MENU_SELECT: # just close this again self.menuw.eventhandler('MENU_BACK_ONE_MENU') event_consumed = True return event_consumed def getattr(self, attr): """ Used by the skin to retrieve named details about this object. """ return getattr(self, attr, u'')
class ScrollableTextScreen: """ A scrollable text screen """ def __init__(self, layout, text): """ Used to display and control the position of text in a scrollable area. @param layout: Skin layout to use. @param text: This is the text to scroll. """ self.layout = layout self.scrollable_text = ScrollableText(text) def show(self, menuw): """ Display the screen and make it the active 'menu'. @param menuw: The menu widget to push this screen onto. """ self.menuw = menuw self.transition = skin.TRANSITION_IN menuw.pushmenu(self) self.transition = False if hasattr(self, 'event_context'): logger.log( 9, 'scrollabletext_screen: setting context to %s', self.event_context) rc.set_context(self.event_context) def refresh(self): """ Redraw the screen. """ if self.menuw.children: return skin_object.draw(self.layout, self, transition=self.transition) def eventhandler(self, event, menuw=None): """ eventhandler to handle events that relate to scrolling the text in the scrollable_text area/object. Any events not directly handled here are passed to the registered client_eventhandler. @param event: The event to handle. @param menuw: The Menu Widget that called this handler. """ event_consumed = False if event == MENU_UP: self.scrollable_text.scroll(True) self.refresh() event_consumed = True elif event == MENU_DOWN: self.scrollable_text.scroll(False) self.refresh() event_consumed = True elif event == MENU_SUBMENU: # open the submenu for this item if hasattr(self.menuw.menustack[-2],'is_submenu'): # there is already a submenu, we can return to self.menuw.eventhandler('MENU_BACK_ONE_MENU') event_consumed = True else: # we have to create a new submenu self.menuw.delete_menu() self.menuw.eventhandler('MENU_SUBMENU') event_consumed = True elif event == MENU_SELECT: # just close this again self.menuw.eventhandler('MENU_BACK_ONE_MENU') event_consumed = True return event_consumed def getattr(self, attr): """ Used by the skin to retrieve named details about this object. """ return getattr(self, attr, u'')