Changeset 45

Show
Ignore:
Timestamp:
02/27/02 00:09:13 (7 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

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

    r8 r45  
    2020#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2121 
    22 class SmartSelect(list)
     22class SmartSelectBase
    2323    def __call__(self, *args, **kw): 
    2424        apply(self.Process, args, kw) 
     
    3131        for each in lstSelected[2]: each._ProcessError() 
    3232 
     33#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     34 
     35class SmartSelectList(SmartSelectBase, list): 
    3336    def _getReadList(self): return [x for x in self if x._NeedsRead()] 
    3437    ReadList = property(_getReadList) 
     
    4144 
    4245 
     46#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     47 
     48class SmartSelectDict(SmartSelectBase, dict): 
     49    def _getReadList(self): return [x for x in self.itervalues() if x._NeedsRead()] 
     50    ReadList = property(_getReadList) 
     51 
     52    def _getWriteList(self): return [x for x in self.itervalues() if x._NeedsWrite()] 
     53    WriteList = property(_getWriteList) 
     54 
     55    def _getErrorList(self): return [x for x in self.itervalues() if x._NeedsError()] 
     56    ErrorList = property(_getErrorList) 
     57 
     58#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     59 
     60SmartSelect = SmartSelectList 
  • trunk/RBJabber/RBJabber/iqTimeResponse.py

    r39 r45  
    1717    def Update(self, subject, UpdateDict): 
    1818        iq = UpdateDict['iq'] 
    19         utc = iq.query[0]._addNewElement('', 'utc')[-1] 
    20         utc._addData('%04d%02d%02dT%02d:%02d:%02d' % time.gmtime()[:6]) 
    21         display = iq.query[0]._addNewElement('', 'display')[-1] 
    22         display._addData(time.asctime()) 
    23         tz = iq.query[0]._addNewElement('', 'tz')[-1] 
    24         tz._addData(time.tzname[-1]) 
    2519        iq.to = iq.from_ 
    2620        del iq.from_ 
    2721        iq.type = 'result' 
    28         self.JC().SendXML(iq._toPrettyXML()) 
     22         
     23        strResult = ''.join(iq._toXML(bHeaderOnly=1)) 
     24        strResult += '''<query xmlns='jabber:iq:time' >''' 
     25        strResult += '''<utc>%04d%02d%02dT%02d:%02d:%02d</utc>''' % time.gmtime()[:6] 
     26        strResult += '''<display>%s</display>''' % time.asctime() 
     27        strResult += '''<tz>%s</tz>''' % time.tzname[-1] 
     28        strResult += '''</query></iq>''' 
    2929 
     30        self.JC().SendXML(strResult) 
     31 
  • trunk/RBJabber/RBJabber/iqVersionResponse.py

    r39 r45  
    2020    def Update(self, subject, UpdateDict): 
    2121        iq = UpdateDict['iq'] 
    22  
    23         replyName = iq.query[0]._addNewElement('', 'name')[-1] 
    24         replyVersion= iq.query[0]._addNewElement('', 'version')[-1] 
    25         replyOS = iq.query[0]._addNewElement('', 'os')[-1] 
    26          
    27         replyName._addData(self.Name) 
    28         replyVersion._addData(self.Version) 
    29         replyOS._addData('%s (%s) running Python %s' % (os.name, sys.platform, sys.version)) 
    30  
    3122        iq.to = iq.from_ 
    3223        del iq.from_ 
    3324        iq.type = 'result' 
    34         self.JC().SendXML(iq._toPrettyXML()) 
     25         
     26        strResult = ''.join(iq._toXML(bHeaderOnly=1)) 
     27        strResult += '''<query xmlns='jabber:iq:version' >''' 
     28        strOS = '%s (%s) running Python %s' % (os.name, sys.platform, sys.version) 
     29        strResult += '''<name>%s</name><version>%s</version><os>%s</os>''' % (self.Name, self.Version, strOS) 
     30        strResult += '''</query></iq>''' 
     31 
     32        self.JC().SendXML(strResult) 
  • trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py

    r44 r45  
    1 def ClientModel(*args, **kw): 
    2     print args, kw 
    3     return args, kw 
     1#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     2#~ Imports  
     3#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     4 
     5import sys 
     6from Foundation.Jabber.Client import Client 
     7from Foundation.SmartSelect import SmartSelectDict 
     8from Foundation.Jabber.iqTimeResponse import iqTimeResponse 
     9from Foundation.Jabber.iqVersionResponse import iqVersionResponse 
     10from Foundation.Jabber.iqBrowseResponse import iqBrowseResponse 
     11 
     12#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     13#~ Definitions  
     14#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     15 
     16class ClientModel: 
     17    def __init__(self, node): 
     18        self.context = node.context 
     19        self.JabberClients = SmartSelectDict() 
     20        #self.LoginToClient('www.runeblade.com', 'shane.test1', 'testing', resource='RuneBlade2') 
     21         
     22    def LoginToClient(self, server, username, password, resource='RuneBlade'): 
     23        jc = Client(server) 
     24        jc._SetDebug(sys.stdout, sys.stdout) 
     25        self.JabberClients[server, username] = jc 
     26 
     27        # Install default handlers 
     28        iqTimeResponse(jc) 
     29        iqVersionResponse(jc, 'RuneBlade Chat Client Prototype', '0.01 beta') 
     30        iqBrowseResponse(jc) 
     31 
     32        for i in xrange(5): self.JabberClients.Process(0.1) 
     33 
     34        # Login 
     35        jc.Authenticate(username, password, resource) 
     36        for i in xrange(5): self.JabberClients.Process(0.1) 
     37 
  • trunk/RBPrivate/Prototypes/ChatClient/Login.skin

    r44 r45  
    22<skin:skin xmlns:skin='http://namespaces.runeblade.com/skin' xmlns:py='http://namespaces.runeblade.com/xmlPython' xmlns='http://namespaces.runeblade.com/wxPythonSkin'> 
    33    <frame title='RuneBlade Chat Client Login' show='1'> 
     4        <py:script contextvar='Mediator' module='LoginMediator' call='LoginMediator' /> 
    45        <layout sizerFit='1'> 
    56            <panel sizerOption='1' sizerFlag='wxEXPAND'> 
    67                <layout orientation='grid' args='-1, 2' sizerFit='1' sizerFlagDefault='wxALIGN_CENTER | wxALL' sizerBorderDefault='5'> 
    7                     <label>Username</label><input sizerOption='1' /> 
    8                     <label>Password</label><input sizerOption='1' /> 
    9                     <label>Server</label><input value='www.runeblade.com' sizerOption='1' /> 
     8                    <label>Username</label><input sizerOption='1' > 
     9                        <py:inline>self.context.Mediator.UsernameInput = self.parent().object</py:inline> 
     10                    </input> 
     11                    <label>Password</label><input sizerOption='1' style='wxTE_PASSWORD'> 
     12                        <py:inline>self.context.Mediator.PasswordInput = self.parent().object</py:inline> 
     13                    </input> 
     14                    <label>Resource</label><input value='RuneBlade' sizerOption='1' > 
     15                        <py:inline>self.context.Mediator.ResourceInput = self.parent().object</py:inline> 
     16                    </input> 
     17                    <label>Server</label><input value='www.runeblade.com' sizerOption='1'> 
     18                        <py:inline>self.context.Mediator.ServerInput = self.parent().object</py:inline> 
     19                    </input> 
    1020                    <button default='1' label='OK'> 
    11                         <py:inline> 
    12                             from wxPython import wx 
    13                             def PrintThatTickles(evt): 
    14                                 print "That Tickles!!!" 
    15                             btn = self.parent().object 
    16                             wx.EVT_BUTTON(btn, btn.GetId(), PrintThatTickles) 
    17                         </py:inline> 
     21                        <py:inline>self.context.Mediator.OKButton = self.parent().object</py:inline> 
    1822                    </button> 
    19                     <button default='1' label='Cancel' /> 
     23                    <button label='Cancel' > 
     24                        <py:inline>self.context.Mediator.CancelButton = self.parent().object</py:inline> 
     25                    </button> 
    2026                </layout> 
    2127            </panel> 
    2228        </layout> 
     29        <py:inline>self.context.Mediator.Initialize()</py:inline> 
    2330    </frame> 
    2431</skin:skin> 
  • trunk/RBPrivate/Prototypes/ChatClient/client.skin

    r44 r45  
    55        <skin:reference>MainFrame.skin</skin:reference> 
    66        <skin:reference>Login.skin</skin:reference> 
    7         <!-- 
     7 
    88        <skin:reference>ChatFrame.skin</skin:reference> 
    99        <skin:reference>GroupChatFrame.skin</skin:reference> 
    1010        <skin:reference>DebugFrame.skin</skin:reference> 
    11         --> 
    1211    </application> 
    1312</skin:skin> 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/application.py

    r14 r45  
    1616    default_settings = wxSkinObject.default_settings.copy() 
    1717    default_settings.update({ 
     18        'contextvar':'application', 
    1819        }) 
    1920 
     
    2425    def SkinInitialize(self): 
    2526        self.object = wx.wxPySimpleApp() 
    26         self.context.application = self.object 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/bitmap_button.py

    r42 r45  
    1818        'name':     __name__, 
    1919        'id':       'wx.wxNewId()', 
     20        'default':  '0', 
    2021        }) 
    2122 
     
    2930        kwSettings['bitmap'] = apply(wx.wxEmptyBitmap, kwSettings['size']) 
    3031        self.object = apply(wx.wxBitmapButton, (winParent, ), kwSettings) 
     32        if self.wxEval('default'): 
     33            self.object.SetDefault() 
    3134        self.wxSetStandardOptions() 
    3235 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/button.py

    r42 r45  
    1919        'id':       'wx.wxNewId()', 
    2020        'label':    '', 
     21        'default':  '0', 
    2122        }) 
    2223 
     
    2930        kwSettings = self.wxSettingDict(['id', 'style', 'pos', 'size'], ['name', 'label']) 
    3031        self.object = apply(wx.wxButton, (winParent,), kwSettings) 
     32        if self.wxEval('default'): 
     33            self.object.SetDefault() 
    3134        self.wxSetStandardOptions() 
    3235 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/frame.py

    r42 r45  
    2222        'topframe': '0', 
    2323        'show':     '0', 
     24        'contextvar':'frame', 
    2425        }) 
    2526 
     
    3536        self.wxSetStandardOptions() 
    3637 
    37         self.context.frame = self.object 
    3838        if self.wxEval('topframe'): 
    3939            self.context.application.SetTopWindow(self.object) 
  • trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py

    r44 r45  
    44 
    55from Foundation.Skinning.SkinObject import SkinObject  
     6import weakref 
    67 
    78#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    2324    def _call(self): 
    2425        code = ''.join(self.Content()) or self.settings['code'] 
    25         self.object = eval(code, {'self':self}, {}) 
     26        self.object = eval(code, {'self': weakref.proxy(self)}, {}) 
    2627 
  • trunk/RBSkinning/RBSkinning/xmlPython/inline.py

    r25 r45  
    55from Foundation.Skinning.SkinObject import SkinObject  
    66import re 
     7import weakref 
    78 
    89#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    2728        execCode = '%s\n' % ''.join(content).replace('\n' + trimWhitespace, '\n') 
    2829        self.object = compile(execCode, 'xmlPython.inline', 'exec') 
    29         exec self.object in {'self': self
     30        exec self.object in {'self': weakref.proxy(self)
    3031 
  • trunk/RBSkinning/RBSkinning/xmlPython/script.py

    r44 r45  
    55from Foundation.Skinning.SkinObject import SkinObject  
    66import sys 
     7import weakref 
    78 
    89#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    2930        module = __import__(self.settings['module'], {}, {}, self.settings['call']) 
    3031        call = getattr(module, self.settings['call']) 
    31         args = eval(self.settings['args'], {'self':self}, {}) 
    32         kw = eval(self.settings['kw'], {'self':self}, {}) 
     32        args = eval(self.settings['args'], {'self':weakref.proxy(self)}, {}) 
     33        kw = eval(self.settings['kw'], {'self':weakref.proxy(self)}, {}) 
    3334        self.object = apply(call, args, kw) 
    3435