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

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

Subject Observer Updates

Line 
1 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 #~ Imports
3 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5 import weakref
6 from Foundation.Skinning import SkinFile
7 from Foundation.SubjectObserver.Observer import Observer
8
9 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 #~ Definitions
11 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
13 class JabberClientMessageFactory:
14     Bid = 1
15
16     def __init__(self, JC, context):
17         self.JC = weakref.ref(JC)
18         self.context = context
19         JC.stream.AddObserver('message', Observer(self.Update, self.Bid))
20
21     def Update(self, subject, **UpdateDict):
22         if 'message' in UpdateDict:
23             skin = SkinFile('ChatFrame.skin', self.context._OwnerContext('application'), JC=self.JC, message=UpdateDict['message'])
24
25 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26
27 class MessageFactory:
28     def __init__(self, node):
29         self.context = node.context
30         self.context.Model.AddObserver('JabberClients', self.Update)
31
32     def Update(self, subject, **UpdateDict):
33         self.Factories = {}
34         for JC in UpdateDict['JabberClients'].itervalues():
35             self.Factories[id(JC)] = JabberClientMessageFactory(JC, self.context)
36            
Note: See TracBrowser for help on using the browser.