Changeset 44
- Timestamp:
- 02/26/02 22:38:28 (7 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/ContextApply.py (modified) (2 diffs)
- trunk/RBJabber/RBJabber/Client.py (modified) (3 diffs)
- trunk/RBJabber/RBJabber/Test.py (modified) (2 diffs)
- trunk/RBPrivate/Prototypes/ChatClient/ClientModel.py (added)
- trunk/RBPrivate/Prototypes/ChatClient/Login.skin (added)
- trunk/RBPrivate/Prototypes/ChatClient/client.skin (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/SkinObject.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/XMLSkinner.py (modified) (3 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/label.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py (modified) (3 diffs)
- trunk/RBSkinning/RBSkinning/xmlPython/script.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/ContextApply.py
r27 r44 74 74 ContextApply = ContextApply_p_s 75 75 76 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 76 78 class WeakInstanceApply: 77 79 def __init__(self, instance, method): … … 80 82 def __call__(self, *args, **kw): 81 83 return apply(self.method, (self.instance(), ) + args, kw) 84 85 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 87 class MultipleApply: 88 def __init__(self, MethodList=[], ReturnNth=None): 89 self.MethodList = MethodList 90 self.ReturnNth = ReturnNth 91 92 def __call__(self, *args, **kw): 93 if self.ReturnNth is None: 94 return [apply(method, args, kw) for method in self.MethodList] 95 else: 96 for method in self.MethodList[:self.ReturnNth]: 97 apply(method, args, kw) 98 99 result = apply(self.MethodList[self.ReturnNth], args, kw) 100 101 for method in self.MethodList[self.ReturnNth:][1:]: 102 apply(method, args, kw) 103 104 return result 105 82 106 83 107 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBJabber/RBJabber/Client.py
r39 r44 3 3 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 4 5 import weakref 6 from xml.sax.saxutils import escape, quoteattr 7 from Foundation import XMLObjectify, SubjectObserver 5 8 import Base 6 import weakref7 from Foundation import XMLObjectify, SubjectObserver8 9 import iqQuery 9 10 … … 87 88 88 89 def Authenticate(self, username, password, resource, callback=None): 89 strXML = '<username>%s</username><password>%s</password><resource>%s</resource>' % (username, password, resource) 90 if self._elements: 91 import sha 92 digest = sha.new(self._elements[0].id + password).hexdigest() 93 strXML = '<username>%s</username><digest>%s</digest><resource>%s</resource>' % (username, digest, resource) 94 else: strXML = '<username>%s</username><password>%s</password><resource>%s</resource>' % (username, password, resource) 95 90 96 self.CurrentUsername = username 91 97 self.CurrentResource = resource … … 119 125 return query 120 126 127 def Message(self, toJID, body, subject='', type='message'): 128 idMessage = self._GetNextID() 129 strXML = '<message id=%s to=%s type=%s>' % (quoteattr(idMessage), quoteattr(toJID), quoteattr(type)) 130 if subject: 131 strXML += '<subject>%s</subject>' % escape(subject) 132 if body: 133 strXML += '<body>%s</body>' % escape(body) 134 strXML += '</message>' 135 self.SendXML(strXML) 136 137 def Presence(self, toJID='', status='', show='', type='available'): 138 idPresence = self._GetNextID() 139 strXML = '<presence id=%s type=%s ' % (quoteattr(idPresence), quoteattr(type)) 140 if toJID: strXML += 'to=%s ' % quoteattr(toJID) 141 strXML += '>' 142 143 if show: 144 strXML += '<show>%s</show>' % escape(show) 145 if status: 146 strXML += '<status>%s</status>' % escape(status) 147 strXML += '</presence>' 148 self.SendXML(strXML) 149 121 150 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 151 #~ Testing trunk/RBJabber/RBJabber/Test.py
r39 r44 68 68 dictLogin = eval(strEval, {}, {}) 69 69 dictLogin.setdefault('resource', resource) 70 70 71 jc = Client(dictLogin['server']) 71 72 jc._SetDebug(sys.stdout, sys.stdout) … … 73 74 process.append(jc) 74 75 del dictLogin['server'] 76 77 for x in xrange(2): process(1) 75 78 76 79 dictLogin['callback'] = _printAuth trunk/RBPrivate/Prototypes/ChatClient/client.skin
r43 r44 1 1 <?xml version='1.0'?> 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 <py:script contextvar='timeStart' module='time' call='clock' args='tuple()'/>4 3 <application> 4 <py:script contextvar='Model' module='ClientModel' call='ClientModel' /> 5 5 <skin:reference>MainFrame.skin</skin:reference> 6 <skin:reference>Login.skin</skin:reference> 7 <!-- 6 8 <skin:reference>ChatFrame.skin</skin:reference> 7 9 <skin:reference>GroupChatFrame.skin</skin:reference> 8 10 <skin:reference>DebugFrame.skin</skin:reference> 11 --> 9 12 </application> 10 <py:script contextvar='timeStop' module='time' call='clock' args='tuple()'/>11 <py:inline>12 print "Load time:", self.context.timeStop - self.context.timeStart13 </py:inline>14 13 </skin:skin> trunk/RBSkinning/RBSkinning/SkinObject.py
r28 r44 19 19 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20 20 21 default_settings = { }21 default_settings = {'contextvar':''} 22 22 23 23 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 84 84 def _xmlInitStarted(self): 85 85 self.SkinInitialize() 86 if self.settings.get('contextvar', None) and self.object: 87 setattr(self.context, self.settings['contextvar'], self.object) 86 88 87 89 def _xmlInitComplete(self): 88 self.SkinFinalize() 90 # Test this first 91 if self.object: 92 # Skin finalize might change it 93 self.SkinFinalize() 94 else: 95 # Skin finalize might change it 96 self.SkinFinalize() 97 # Now act on knowing that self.object wasn't set before 98 if self.settings.get('contextvar', None): 99 setattr(self.context, self.settings['contextvar'], self.object) 89 100 trunk/RBSkinning/RBSkinning/XMLSkinner.py
r10 r44 3 3 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 4 5 from xml.parsers.expat import ParserCreate 5 from xml.parsers.expat import ParserCreate, ExpatError 6 6 from Foundation.XMLBuilder import XMLBuilder 7 7 import SkinContext … … 60 60 self.context.__dict__.update(kwAddedContext) 61 61 62 parser.ParseFile(file) 62 try: 63 parser.ParseFile(file) 64 except ExpatError, info: 65 print "ExpatError:", info 66 print file 67 raise 63 68 64 69 self.context = None … … 87 92 element.context.__dict__.update(kwAddedContext) 88 93 89 parser.ParseFile(file) 94 try: 95 parser.ParseFile(file) 96 except ExpatError, info: 97 print "ExpatError:", info 98 print file 99 raise 90 100 91 101 return self._LastCompleteElement trunk/RBSkinning/RBSkinning/wxPythonSkin/label.py
r42 r44 31 31 32 32 def SkinFinalize(self): 33 content = ''.join(self.Content()) 34 if content: 35 self.object.SetLabel(content) 33 36 self.AddToLayout() 34 37 trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py
r39 r44 12 12 default_settings = SkinObject.default_settings.copy() 13 13 default_settings['phase'] = 'initialize' 14 default_settings['contextvar'] = ''15 14 16 15 def SkinInitialize(self): … … 19 18 20 19 def SkinFinalize(self): 21 if self.settings['phase'] == ' Finalize':20 if self.settings['phase'] == 'finalize': 22 21 self._call() 23 22 … … 25 24 code = ''.join(self.Content()) or self.settings['code'] 26 25 self.object = eval(code, {'self':self}, {}) 27 if self.settings['contextvar']:28 setattr(self.context, self.settings['contextvar'], self.object)29 26 trunk/RBSkinning/RBSkinning/xmlPython/script.py
r39 r44 4 4 5 5 from Foundation.Skinning.SkinObject import SkinObject 6 import sys 6 7 7 8 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 14 15 default_settings['args'] = '(self,)' 15 16 default_settings['kw'] = '{}' 16 default_settings['contextvar'] = ''17 17 18 18 def SkinInitialize(self): … … 21 21 22 22 def SkinFinalize(self): 23 if self.settings['phase'] == ' Finalize':23 if self.settings['phase'] == 'finalize': 24 24 self._call() 25 25 26 26 def _call(self): 27 if self.context.__root__ not in sys.path: 28 sys.path.append(self.context.__root__) 27 29 module = __import__(self.settings['module'], {}, {}, self.settings['call']) 28 30 call = getattr(module, self.settings['call']) … … 30 32 kw = eval(self.settings['kw'], {'self':self}, {}) 31 33 self.object = apply(call, args, kw) 32 if self.settings['contextvar']:33 setattr(self.context, self.settings['contextvar'], self.object)34 34
