| 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 |
|
|---|