Changeset 56
- Timestamp:
- 03/10/02 23:44:41 (7 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/SmartSelect.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/PresenceMap.py (modified) (1 diff)
- trunk/RBJabber/RBJabber/Test.py (modified) (1 diff)
- trunk/RBJabber/RBJabber/iqRosterQuery.py (modified) (3 diffs)
- trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/MainFrame.skin (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/MainframeBuddyList.py (added)
- trunk/RBPrivate/Prototypes/ChatClient/MainframeMediator.py (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/client.skin (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/PySkinObject.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/SmartSelect.py
r45 r56 12 12 class ClientBase(object): 13 13 def _NeedsRead(self): return 0 14 #def _ProcessRead(self): pass 14 #def _ProcessRead(self): pass ## If there is no definition, then these will raise if not "overridden" 15 15 def _NeedsWrite(self): return 0 16 #def _ProcessWrite(self): pass 16 #def _ProcessWrite(self): pass ## If there is no definition, then these will raise if not "overridden" 17 17 def _NeedsError(self): return 0 18 #def _ProcessError(self): pass 18 #def _ProcessError(self): pass ## If there is no definition, then these will raise if not "overridden" 19 19 20 20 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 22 22 class SmartSelectBase: 23 23 def __call__(self, *args, **kw): 24 apply(self.Process, args, kw)24 return apply(self.Process, args, kw) 25 25 26 26 def Process(self, timeout=None): … … 30 30 for each in lstSelected[1]: each._ProcessWrite() 31 31 for each in lstSelected[2]: each._ProcessError() 32 33 return (lstSelected[0] or lstSelected[1] or lstSelected[2]) and 1 or 0 32 34 33 35 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBJabber/RBJabber/PresenceMap.py
r53 r56 11 11 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12 12 13 class PresenceMap :13 class PresenceMap(Subject): 14 14 def __init__(self, JC): 15 Subject.__init__(self) 15 16 JC.stream.AddObserver('presence', self) 16 self.Map = {} 17 self.ByJID = {} 18 self.ByResource = {} 17 19 18 20 def Update(self, subject, UpdateDict): 19 21 presence = UpdateDict.get('presence', None) 20 FromJID = JIDnormalize(presence.from_) 21 self.Map[FromJID] = presence 22 FromJID = JIDsplit(presence.from_) 23 self.ByJID[JIDjoin(FromJID)] = presence 24 self.ByResource.setdefault(JIDjoin(FromJID[:2]),{})[FromJID[-1]] = presence 25 self.UpdateObservers(PresenceFrom=FromJID) 22 26 23 27 def __getitem__(self, *args, **kw): trunk/RBJabber/RBJabber/Test.py
r55 r56 121 121 jc.SendXML('''<presence type="unavailable" />''') 122 122 123 pprint(pm. Map)123 pprint(pm.ByJID) 124 124 125 125 _test(server='www.runeblade.com', username='shane.test1', password='testing', resource='Python-Test') trunk/RBJabber/RBJabber/iqRosterQuery.py
r55 r56 6 6 from xml.sax.saxutils import escape, quoteattr 7 7 from iqQuery import iqQueryBase, Subject 8 8 from JID import JIDnormalize 9 9 10 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10 11 #~ Definitions … … 17 18 self.JC().stream.AddObserver('iq', self) 18 19 self.JC().SendXML('''<iq type='get'><query xmlns='jabber:iq:roster'/></iq>''') 19 self. Roster= {}20 self.ByJID = {} 20 21 21 22 def Bid(self, subject, UpdateDict): … … 30 31 iq = UpdateDict['iq'] 31 32 for each in iq.query[0].item: 32 self.Roster[each.jid] = each 33 self.ByJID[JIDnormalize(each.jid)] = each 34 self.UpdateObservers(Roster=self.ByJID) 33 35 trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py
r55 r56 23 23 def Process(self, maxTime): 24 24 if self.JabberClients: 25 self.JabberClients.Process(maxTime) 25 return self.JabberClients.Process(maxTime) 26 else: return 0 26 27 27 28 def ClearClients(self): trunk/RBPrivate/Prototypes/ChatClient/MainFrame.skin
r48 r56 38 38 <layout sizerOption='1' sizerFlag='wxEXPAND'> 39 39 <notebook size='(200, 400)' sizerOption='1' sizerFlag='wxEXPAND'> 40 <column_list pagename='Buddy List' bgcolor='(250, 250, 255)' columns='"Contact", "Status", "JID"' style='wxLC_NO_HEADER'> 41 <py:obj_variable owner='Mediator' name='BuddyList' /> 40 <column_list pagename='Buddy List' bgcolor='(250, 250, 255)' columns='"Contact", "Status", "JID"' > 41 <py:script module='MainframeBuddyList' call='MainframeBuddyList'> 42 <!--<py:obj_variable owner='Mediator' name='BuddyList' />--> 43 </py:script> 42 44 </column_list> 43 45 <!-- trunk/RBPrivate/Prototypes/ChatClient/MainframeMediator.py
r55 r56 15 15 16 16 def Initialize(self): 17 print "Mainframe Mediator Initialize"18 17 wx.EVT_IDLE(self.context.application, self.OnIdle) 19 18 wx.EVT_CLOSE(self.context.frame, self.OnCloseFrame) 20 19 21 20 def OnIdle(self, evt): 22 self.context.Model.Process(0.1) 21 result = self.context.Model.Process(0.1) 22 evt.RequestMore(result) 23 23 evt.Skip() 24 24 trunk/RBPrivate/Prototypes/ChatClient/client.skin
r54 r56 3 3 <py:inline> 4 4 from wxPython import wx 5 self.AddNamespace( vars(wx))5 self.AddNamespace(wx) 6 6 </py:inline> 7 7 <application> … … 9 9 <skin:reference>MainFrame.skin</skin:reference> 10 10 <skin:reference>AccountManagement.skin</skin:reference> 11 11 12 <!-- 12 13 <skin:reference>Login.skin</skin:reference> trunk/RBSkinning/RBSkinning/xmlPython/PySkinObject.py
r47 r56 3 3 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 4 5 from types import ModuleType 5 6 from Foundation.Skinning.SkinObject import SkinObject 6 7 … … 13 14 14 15 def AddNamespace(self, namespace): 15 self.namespace.update(namespace) 16 if isinstance(namespace, ModuleType): 17 self.namespace.update(vars(namespace)) 18 else: 19 self.namespace.update(namespace)
