Changeset 56

Show
Ignore:
Timestamp:
03/10/02 23:44:41 (7 years ago)
Author:
sholloway
Message:

We now have a buddy list!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/SmartSelect.py

    r45 r56  
    1212class ClientBase(object): 
    1313    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" 
    1515    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" 
    1717    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" 
    1919 
    2020#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    2222class SmartSelectBase: 
    2323    def __call__(self, *args, **kw): 
    24         apply(self.Process, args, kw) 
     24        return apply(self.Process, args, kw) 
    2525         
    2626    def Process(self, timeout=None): 
     
    3030        for each in lstSelected[1]: each._ProcessWrite() 
    3131        for each in lstSelected[2]: each._ProcessError() 
     32 
     33        return (lstSelected[0] or lstSelected[1] or lstSelected[2]) and 1 or 0 
    3234 
    3335#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • trunk/RBJabber/RBJabber/PresenceMap.py

    r53 r56  
    1111#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1212 
    13 class PresenceMap
     13class PresenceMap(Subject)
    1414    def __init__(self, JC): 
     15        Subject.__init__(self) 
    1516        JC.stream.AddObserver('presence', self) 
    16         self.Map = {} 
     17        self.ByJID = {} 
     18        self.ByResource = {} 
    1719 
    1820    def Update(self, subject, UpdateDict): 
    1921        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) 
    2226 
    2327    def __getitem__(self, *args, **kw): 
  • trunk/RBJabber/RBJabber/Test.py

    r55 r56  
    121121        jc.SendXML('''<presence type="unavailable" />''') 
    122122 
    123     pprint(pm.Map
     123    pprint(pm.ByJID
    124124 
    125125_test(server='www.runeblade.com', username='shane.test1', password='testing', resource='Python-Test') 
  • trunk/RBJabber/RBJabber/iqRosterQuery.py

    r55 r56  
    66from xml.sax.saxutils import escape, quoteattr 
    77from iqQuery import iqQueryBase, Subject 
    8   
     8from JID import JIDnormalize  
     9 
    910#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1011#~ Definitions  
     
    1718        self.JC().stream.AddObserver('iq', self) 
    1819        self.JC().SendXML('''<iq type='get'><query xmlns='jabber:iq:roster'/></iq>''') 
    19         self.Roster = {} 
     20        self.ByJID = {} 
    2021 
    2122    def Bid(self, subject, UpdateDict): 
     
    3031        iq = UpdateDict['iq'] 
    3132        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) 
    3335 
  • trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py

    r55 r56  
    2323    def Process(self, maxTime): 
    2424        if self.JabberClients: 
    25             self.JabberClients.Process(maxTime) 
     25            return self.JabberClients.Process(maxTime) 
     26        else: return 0 
    2627         
    2728    def ClearClients(self): 
  • trunk/RBPrivate/Prototypes/ChatClient/MainFrame.skin

    r48 r56  
    3838            <layout sizerOption='1' sizerFlag='wxEXPAND'> 
    3939                <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> 
    4244                    </column_list> 
    4345                    <!-- 
  • trunk/RBPrivate/Prototypes/ChatClient/MainframeMediator.py

    r55 r56  
    1515 
    1616    def Initialize(self): 
    17         print "Mainframe Mediator Initialize" 
    1817        wx.EVT_IDLE(self.context.application, self.OnIdle) 
    1918        wx.EVT_CLOSE(self.context.frame, self.OnCloseFrame) 
    2019 
    2120    def OnIdle(self, evt): 
    22         self.context.Model.Process(0.1) 
     21        result = self.context.Model.Process(0.1) 
     22        evt.RequestMore(result) 
    2323        evt.Skip() 
    2424 
  • trunk/RBPrivate/Prototypes/ChatClient/client.skin

    r54 r56  
    33    <py:inline> 
    44        from wxPython import wx 
    5         self.AddNamespace(vars(wx)
     5        self.AddNamespace(wx
    66    </py:inline> 
    77    <application> 
     
    99        <skin:reference>MainFrame.skin</skin:reference> 
    1010        <skin:reference>AccountManagement.skin</skin:reference> 
     11 
    1112        <!-- 
    1213        <skin:reference>Login.skin</skin:reference> 
  • trunk/RBSkinning/RBSkinning/xmlPython/PySkinObject.py

    r47 r56  
    33#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    44 
     5from types import ModuleType 
    56from Foundation.Skinning.SkinObject import SkinObject  
    67 
     
    1314 
    1415    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)