Changeset 45
- Timestamp:
- 02/27/02 00:09:13 (7 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/SmartSelect.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/iqTimeResponse.py (modified) (1 diff)
- trunk/RBJabber/RBJabber/iqVersionResponse.py (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/Login.skin (modified) (1 diff)
- trunk/RBPrivate/Prototypes/ChatClient/LoginMediator.py (added)
- trunk/RBPrivate/Prototypes/ChatClient/client.skin (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/application.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/bitmap_button.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/button.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/frame.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/inline.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/script.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/SmartSelect.py
r8 r45 20 20 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 21 21 22 class SmartSelect (list):22 class SmartSelectBase: 23 23 def __call__(self, *args, **kw): 24 24 apply(self.Process, args, kw) … … 31 31 for each in lstSelected[2]: each._ProcessError() 32 32 33 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34 35 class SmartSelectList(SmartSelectBase, list): 33 36 def _getReadList(self): return [x for x in self if x._NeedsRead()] 34 37 ReadList = property(_getReadList) … … 41 44 42 45 46 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 48 class 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 60 SmartSelect = SmartSelectList trunk/RBJabber/RBJabber/iqTimeResponse.py
r39 r45 17 17 def Update(self, subject, UpdateDict): 18 18 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])25 19 iq.to = iq.from_ 26 20 del iq.from_ 27 21 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>''' 29 29 30 self.JC().SendXML(strResult) 31 trunk/RBJabber/RBJabber/iqVersionResponse.py
r39 r45 20 20 def Update(self, subject, UpdateDict): 21 21 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 31 22 iq.to = iq.from_ 32 23 del iq.from_ 33 24 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 5 import sys 6 from Foundation.Jabber.Client import Client 7 from Foundation.SmartSelect import SmartSelectDict 8 from Foundation.Jabber.iqTimeResponse import iqTimeResponse 9 from Foundation.Jabber.iqVersionResponse import iqVersionResponse 10 from Foundation.Jabber.iqBrowseResponse import iqBrowseResponse 11 12 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13 #~ Definitions 14 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15 16 class 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 2 2 <skin:skin xmlns:skin='http://namespaces.runeblade.com/skin' xmlns:py='http://namespaces.runeblade.com/xmlPython' xmlns='http://namespaces.runeblade.com/wxPythonSkin'> 3 3 <frame title='RuneBlade Chat Client Login' show='1'> 4 <py:script contextvar='Mediator' module='LoginMediator' call='LoginMediator' /> 4 5 <layout sizerFit='1'> 5 6 <panel sizerOption='1' sizerFlag='wxEXPAND'> 6 7 <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> 10 20 <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> 18 22 </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> 20 26 </layout> 21 27 </panel> 22 28 </layout> 29 <py:inline>self.context.Mediator.Initialize()</py:inline> 23 30 </frame> 24 31 </skin:skin> trunk/RBPrivate/Prototypes/ChatClient/client.skin
r44 r45 5 5 <skin:reference>MainFrame.skin</skin:reference> 6 6 <skin:reference>Login.skin</skin:reference> 7 <!-- 7 8 8 <skin:reference>ChatFrame.skin</skin:reference> 9 9 <skin:reference>GroupChatFrame.skin</skin:reference> 10 10 <skin:reference>DebugFrame.skin</skin:reference> 11 -->12 11 </application> 13 12 </skin:skin> trunk/RBSkinning/RBSkinning/wxPythonSkin/application.py
r14 r45 16 16 default_settings = wxSkinObject.default_settings.copy() 17 17 default_settings.update({ 18 'contextvar':'application', 18 19 }) 19 20 … … 24 25 def SkinInitialize(self): 25 26 self.object = wx.wxPySimpleApp() 26 self.context.application = self.objecttrunk/RBSkinning/RBSkinning/wxPythonSkin/bitmap_button.py
r42 r45 18 18 'name': __name__, 19 19 'id': 'wx.wxNewId()', 20 'default': '0', 20 21 }) 21 22 … … 29 30 kwSettings['bitmap'] = apply(wx.wxEmptyBitmap, kwSettings['size']) 30 31 self.object = apply(wx.wxBitmapButton, (winParent, ), kwSettings) 32 if self.wxEval('default'): 33 self.object.SetDefault() 31 34 self.wxSetStandardOptions() 32 35 trunk/RBSkinning/RBSkinning/wxPythonSkin/button.py
r42 r45 19 19 'id': 'wx.wxNewId()', 20 20 'label': '', 21 'default': '0', 21 22 }) 22 23 … … 29 30 kwSettings = self.wxSettingDict(['id', 'style', 'pos', 'size'], ['name', 'label']) 30 31 self.object = apply(wx.wxButton, (winParent,), kwSettings) 32 if self.wxEval('default'): 33 self.object.SetDefault() 31 34 self.wxSetStandardOptions() 32 35 trunk/RBSkinning/RBSkinning/wxPythonSkin/frame.py
r42 r45 22 22 'topframe': '0', 23 23 'show': '0', 24 'contextvar':'frame', 24 25 }) 25 26 … … 35 36 self.wxSetStandardOptions() 36 37 37 self.context.frame = self.object38 38 if self.wxEval('topframe'): 39 39 self.context.application.SetTopWindow(self.object) trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py
r44 r45 4 4 5 5 from Foundation.Skinning.SkinObject import SkinObject 6 import weakref 6 7 7 8 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 23 24 def _call(self): 24 25 code = ''.join(self.Content()) or self.settings['code'] 25 self.object = eval(code, {'self': self}, {})26 self.object = eval(code, {'self': weakref.proxy(self)}, {}) 26 27 trunk/RBSkinning/RBSkinning/xmlPython/inline.py
r25 r45 5 5 from Foundation.Skinning.SkinObject import SkinObject 6 6 import re 7 import weakref 7 8 8 9 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 27 28 execCode = '%s\n' % ''.join(content).replace('\n' + trimWhitespace, '\n') 28 29 self.object = compile(execCode, 'xmlPython.inline', 'exec') 29 exec self.object in {'self': self}30 exec self.object in {'self': weakref.proxy(self)} 30 31 trunk/RBSkinning/RBSkinning/xmlPython/script.py
r44 r45 5 5 from Foundation.Skinning.SkinObject import SkinObject 6 6 import sys 7 import weakref 7 8 8 9 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 29 30 module = __import__(self.settings['module'], {}, {}, self.settings['call']) 30 31 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)}, {}) 33 34 self.object = apply(call, args, kw) 34 35
