Changeset 44

Show
Ignore:
Timestamp:
02/26/02 22:38:28 (7 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

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

    r27 r44  
    7474ContextApply = ContextApply_p_s 
    7575 
     76#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     77 
    7678class WeakInstanceApply: 
    7779    def __init__(self, instance, method): 
     
    8082    def __call__(self, *args, **kw): 
    8183        return apply(self.method, (self.instance(), ) + args, kw) 
     84 
     85#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     86 
     87class 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 
    82106     
    83107#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • trunk/RBJabber/RBJabber/Client.py

    r39 r44  
    33#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    44 
     5import weakref 
     6from xml.sax.saxutils import escape, quoteattr 
     7from Foundation import XMLObjectify, SubjectObserver 
    58import Base 
    6 import weakref 
    7 from Foundation import XMLObjectify, SubjectObserver 
    89import iqQuery 
    910 
     
    8788 
    8889    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 
    9096        self.CurrentUsername = username 
    9197        self.CurrentResource = resource 
     
    119125        return query 
    120126 
     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 
    121150#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    122151#~ Testing  
  • trunk/RBJabber/RBJabber/Test.py

    r39 r44  
    6868        dictLogin = eval(strEval, {}, {}) 
    6969        dictLogin.setdefault('resource', resource) 
     70 
    7071        jc = Client(dictLogin['server']) 
    7172        jc._SetDebug(sys.stdout, sys.stdout) 
     
    7374        process.append(jc) 
    7475        del dictLogin['server'] 
     76 
     77        for x in xrange(2): process(1) 
    7578 
    7679        dictLogin['callback'] = _printAuth 
  • trunk/RBPrivate/Prototypes/ChatClient/client.skin

    r43 r44  
    11<?xml version='1.0'?>  
    22<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()'/> 
    43    <application> 
     4        <py:script contextvar='Model' module='ClientModel' call='ClientModel' /> 
    55        <skin:reference>MainFrame.skin</skin:reference> 
     6        <skin:reference>Login.skin</skin:reference> 
     7        <!-- 
    68        <skin:reference>ChatFrame.skin</skin:reference> 
    79        <skin:reference>GroupChatFrame.skin</skin:reference> 
    810        <skin:reference>DebugFrame.skin</skin:reference> 
     11        --> 
    912    </application> 
    10     <py:script contextvar='timeStop' module='time' call='clock' args='tuple()'/> 
    11     <py:inline> 
    12         print "Load time:", self.context.timeStop - self.context.timeStart 
    13     </py:inline> 
    1413</skin:skin> 
  • trunk/RBSkinning/RBSkinning/SkinObject.py

    r28 r44  
    1919    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2020 
    21     default_settings = {
     21    default_settings = {'contextvar':''
    2222 
    2323    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    8484    def _xmlInitStarted(self): 
    8585        self.SkinInitialize() 
     86        if self.settings.get('contextvar', None) and self.object: 
     87            setattr(self.context, self.settings['contextvar'], self.object) 
    8688 
    8789    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) 
    89100 
  • trunk/RBSkinning/RBSkinning/XMLSkinner.py

    r10 r44  
    33#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    44 
    5 from xml.parsers.expat import ParserCreate 
     5from xml.parsers.expat import ParserCreate, ExpatError 
    66from Foundation.XMLBuilder import XMLBuilder 
    77import SkinContext 
     
    6060        self.context.__dict__.update(kwAddedContext) 
    6161 
    62         parser.ParseFile(file) 
     62        try: 
     63            parser.ParseFile(file) 
     64        except ExpatError, info: 
     65            print "ExpatError:", info 
     66            print file 
     67            raise 
    6368 
    6469        self.context = None 
     
    8792        element.context.__dict__.update(kwAddedContext) 
    8893 
    89         parser.ParseFile(file) 
     94        try: 
     95            parser.ParseFile(file) 
     96        except ExpatError, info: 
     97            print "ExpatError:", info 
     98            print file 
     99            raise 
    90100 
    91101        return self._LastCompleteElement 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/label.py

    r42 r44  
    3131 
    3232    def SkinFinalize(self): 
     33        content = ''.join(self.Content()) 
     34        if content: 
     35            self.object.SetLabel(content) 
    3336        self.AddToLayout() 
    3437 
  • trunk/RBSkinning/RBSkinning/xmlPython/evaluate.py

    r39 r44  
    1212    default_settings = SkinObject.default_settings.copy() 
    1313    default_settings['phase'] = 'initialize' 
    14     default_settings['contextvar'] = '' 
    1514     
    1615    def SkinInitialize(self): 
     
    1918 
    2019    def SkinFinalize(self): 
    21         if self.settings['phase'] == 'Finalize': 
     20        if self.settings['phase'] == 'finalize': 
    2221            self._call() 
    2322 
     
    2524        code = ''.join(self.Content()) or self.settings['code'] 
    2625        self.object = eval(code, {'self':self}, {}) 
    27         if self.settings['contextvar']: 
    28             setattr(self.context, self.settings['contextvar'], self.object) 
    2926 
  • trunk/RBSkinning/RBSkinning/xmlPython/script.py

    r39 r44  
    44 
    55from Foundation.Skinning.SkinObject import SkinObject  
     6import sys 
    67 
    78#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    1415    default_settings['args'] = '(self,)' 
    1516    default_settings['kw'] = '{}' 
    16     default_settings['contextvar'] = '' 
    1717     
    1818    def SkinInitialize(self): 
     
    2121 
    2222    def SkinFinalize(self): 
    23         if self.settings['phase'] == 'Finalize': 
     23        if self.settings['phase'] == 'finalize': 
    2424            self._call() 
    2525 
    2626    def _call(self): 
     27        if self.context.__root__ not in sys.path: 
     28            sys.path.append(self.context.__root__) 
    2729        module = __import__(self.settings['module'], {}, {}, self.settings['call']) 
    2830        call = getattr(module, self.settings['call']) 
     
    3032        kw = eval(self.settings['kw'], {'self':self}, {}) 
    3133        self.object = apply(call, args, kw) 
    32         if self.settings['contextvar']: 
    33             setattr(self.context, self.settings['contextvar'], self.object) 
    3434