コード例 #1
0
ファイル: DashboardPanel.py プロジェクト: fedenko/clientbank
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)