class DashboardPanel(VerticalPanel): def __init__(self, listener): VerticalPanel.__init__(self, #HorizontalAlignment=HasAlignment.ALIGN_CENTER, #VerticalAlignment=HasAlignment.ALIGN_MIDDLE, Width="100%", Height="100%", Spacing=5) self.listener = listener self.remote = DataService(['logout']) self.cursink=None self.introsink = IntroSink() self.accountlistsink = AccountListSink() menu_account = MenuBar(vertical=True) menu_account.addItem(JS('gettext("My Accounts")'), MenuCmd(self.onMyAccounts)) menubar = MenuBar(vertical=False) menubar.addItem(MenuItem(JS('gettext("Account")'), menu_account)) menubar.addItem(JS('gettext("Logout")'), MenuCmd(self.onLogoutButtonClick)) self.sinkcontainer = SimplePanel() self.sinkcontainer.setHeight("100%") self.add(menubar) self.add(self.sinkcontainer) self.setCellHeight(self.sinkcontainer, "100%") def onMyAccounts(self, sender): self.showSink('accountlistsink') def onLogoutButtonClick(self, sender): self.remote.logout(self) def showSink(self, sink): if self.cursink <> None: self.sinkcontainer.remove(getattr(self, self.cursink)) self.cursink = sink s = getattr(self, self.cursink) self.sinkcontainer.add(s) if hasattr(s, 'onShow'): s.onShow() def onShow(self): self.showSink('introsink') def onRemoteResponse(self, response, request_info): ''' Called when a response is received from a RPC. ''' if request_info.method == 'logout': if response == True: self.listener.onBackToLogin(self) else: Window.alert(JS('gettext("Unrecognized JSONRPC method.")')) def onRemoteError(self, code, message, request_info): Window.alert(message)