root/trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py

Revision 65, 1.6 kB (checked in by sholloway, 7 years ago)

Subject Observer Updates

Line 
1 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 #~ Imports
3 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5 import sys
6 from Foundation.SubjectObserver.CategorySubject import CategorySubject
7 from Foundation.SmartSelect import SmartSelectDict
8 from RuneBladeClient import RuneBladeClient
9
10 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 #~ Definitions
12 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13
14 class ClientModel(CategorySubject):
15     class _container: pass
16
17     def __init__(self, node):
18         CategorySubject.__init__(self)
19         self.context = node.context
20         self.JabberClients = SmartSelectDict()
21         self.Frames = ClientModel._container()
22
23     def Process(self, maxTime):
24         if self.JabberClients:
25             return self.JabberClients.Process(maxTime)
26         else: return 0
27        
28     def ClearClients(self):
29         self.JabberClients.clear()
30         self.UpdateObservers(JabberClients=self.JabberClients)
31        
32     def LoginToClient(self, name, server, username, password, resource='RuneBlade'):
33         if __debug__:
34             fileIn = open('IN %s@%s (%s).jabber' % (username, server, resource), 'w')
35             fileOut = open('OUT %s@%s (%s).jabber' % (username, server, resource), 'w')
36             jc = RuneBladeClient(server, fileIn=fileIn, fileOut=fileOut)
37         else:
38             jc = RuneBladeClient(server)
39         self.JabberClients[name] = jc
40         self.UpdateObservers(JabberClients=self.JabberClients)
41         jc.Authenticate(username, password, resource, self.OnAuthenticated)
42
43     def OnAuthenticated(self, subject, iq):
44         #iq = UpdateDict['iq']
45         iq._client.Presence()
Note: See TracBrowser for help on using the browser.