Grammalecte  Hex Artifact Content

Artifact f322664f2e5e2a2a8b8e0f538d55ebe2bc0de9955deb91e8e31a013a11782963:


0000: 69 6d 70 6f 72 74 20 75 6e 6f 0a 69 6d 70 6f 72  import uno.impor
0010: 74 20 75 6e 6f 68 65 6c 70 65 72 0a 69 6d 70 6f  t unohelper.impo
0020: 72 74 20 6c 69 67 68 74 70 72 6f 6f 66 5f 6f 70  rt lightproof_op
0030: 74 73 5f 24 7b 69 6d 70 6c 6e 61 6d 65 7d 20 61  ts_${implname} a
0040: 73 20 6c 70 5f 6f 70 74 0a 66 72 6f 6d 20 67 63  s lp_opt.from gc
0050: 5f 65 6e 67 69 6e 65 5f 24 7b 69 6d 70 6c 6e 61  _engine_${implna
0060: 6d 65 7d 20 69 6d 70 6f 72 74 20 70 6b 67 0a 0a  me} import pkg..
0070: 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61  from com.sun.sta
0080: 72 2e 6c 61 6e 67 20 69 6d 70 6f 72 74 20 58 53  r.lang import XS
0090: 65 72 76 69 63 65 49 6e 66 6f 0a 66 72 6f 6d 20  erviceInfo.from 
00a0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74  com.sun.star.awt
00b0: 20 69 6d 70 6f 72 74 20 58 43 6f 6e 74 61 69 6e   import XContain
00c0: 65 72 57 69 6e 64 6f 77 45 76 65 6e 74 48 61 6e  erWindowEventHan
00d0: 64 6c 65 72 0a 0a 0a 6f 70 74 69 6f 6e 73 20 3d  dler...options =
00e0: 20 7b 7d 0a 0a 64 65 66 20 6c 6f 61 64 20 28 63   {}..def load (c
00f0: 6f 6e 74 65 78 74 29 3a 0a 20 20 20 20 74 72 79  ontext):.    try
0100: 3a 0a 20 20 20 20 20 20 20 20 6c 20 3d 20 4c 69  :.        l = Li
0110: 67 68 74 70 72 6f 6f 66 4f 70 74 69 6f 6e 73 45  ghtproofOptionsE
0120: 76 65 6e 74 48 61 6e 64 6c 65 72 28 63 6f 6e 74  ventHandler(cont
0130: 65 78 74 29 0a 20 20 20 20 20 20 20 20 66 6f 72  ext).        for
0140: 20 73 4c 61 6e 67 20 69 6e 20 6c 70 5f 6f 70 74   sLang in lp_opt
0150: 2e 6c 6f 70 74 73 3a 0a 20 20 20 20 20 20 20 20  .lopts:.        
0160: 20 20 20 20 6c 2e 6c 6f 61 64 28 73 4c 61 6e 67      l.load(sLang
0170: 29 0a 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20  ).    except:.  
0180: 20 20 20 20 20 20 70 61 73 73 0a 0a 0a 63 6c 61        pass...cla
0190: 73 73 20 4c 69 67 68 74 70 72 6f 6f 66 4f 70 74  ss LightproofOpt
01a0: 69 6f 6e 73 45 76 65 6e 74 48 61 6e 64 6c 65 72  ionsEventHandler
01b0: 20 28 75 6e 6f 68 65 6c 70 65 72 2e 42 61 73 65   (unohelper.Base
01c0: 2c 20 58 53 65 72 76 69 63 65 49 6e 66 6f 2c 20  , XServiceInfo, 
01d0: 58 43 6f 6e 74 61 69 6e 65 72 57 69 6e 64 6f 77  XContainerWindow
01e0: 45 76 65 6e 74 48 61 6e 64 6c 65 72 29 3a 0a 20  EventHandler):. 
01f0: 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 20     def __init__ 
0200: 28 73 65 6c 66 2c 20 63 74 78 29 3a 0a 20 20 20  (self, ctx):.   
0210: 20 20 20 20 20 70 20 3d 20 75 6e 6f 2e 63 72 65       p = uno.cre
0220: 61 74 65 55 6e 6f 53 74 72 75 63 74 28 22 63 6f  ateUnoStruct("co
0230: 6d 2e 73 75 6e 2e 73 74 61 72 2e 62 65 61 6e 73  m.sun.star.beans
0240: 2e 50 72 6f 70 65 72 74 79 56 61 6c 75 65 22 29  .PropertyValue")
0250: 0a 20 20 20 20 20 20 20 20 70 2e 4e 61 6d 65 20  .        p.Name 
0260: 3d 20 22 6e 6f 64 65 70 61 74 68 22 0a 20 20 20  = "nodepath".   
0270: 20 20 20 20 20 70 2e 56 61 6c 75 65 20 3d 20 22       p.Value = "
0280: 2f 6f 72 67 2e 6f 70 65 6e 6f 66 66 69 63 65 2e  /org.openoffice.
0290: 4c 69 67 68 74 70 72 6f 6f 66 5f 25 73 2f 4c 65  Lightproof_%s/Le
02a0: 61 76 65 73 22 25 70 6b 67 0a 20 20 20 20 20 20  aves"%pkg.      
02b0: 20 20 73 65 6c 66 2e 78 43 6f 6e 66 69 67 20 3d    self.xConfig =
02c0: 20 63 74 78 2e 53 65 72 76 69 63 65 4d 61 6e 61   ctx.ServiceMana
02d0: 67 65 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e  ger.createInstan
02e0: 63 65 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  ce('com.sun.star
02f0: 2e 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 43  .configuration.C
0300: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 50 72 6f 76  onfigurationProv
0310: 69 64 65 72 27 29 0a 20 20 20 20 20 20 20 20 73  ider').        s
0320: 65 6c 66 2e 6e 6f 64 65 20 3d 20 73 65 6c 66 2e  elf.node = self.
0330: 78 43 6f 6e 66 69 67 2e 63 72 65 61 74 65 49 6e  xConfig.createIn
0340: 73 74 61 6e 63 65 57 69 74 68 41 72 67 75 6d 65  stanceWithArgume
0350: 6e 74 73 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61  nts('com.sun.sta
0360: 72 2e 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  r.configuration.
0370: 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 55 70 64  ConfigurationUpd
0380: 61 74 65 41 63 63 65 73 73 27 2c 20 28 70 2c 20  ateAccess', (p, 
0390: 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  )).        self.
03a0: 73 65 72 76 69 63 65 20 3d 20 22 6f 72 67 2e 6f  service = "org.o
03b0: 70 65 6e 6f 66 66 69 63 65 2e 63 6f 6d 70 2e 70  penoffice.comp.p
03c0: 79 75 6e 6f 2e 4c 69 67 68 74 70 72 6f 6f 66 4f  yuno.LightproofO
03d0: 70 74 69 6f 6e 73 45 76 65 6e 74 48 61 6e 64 6c  ptionsEventHandl
03e0: 65 72 2e 22 20 2b 20 70 6b 67 0a 20 20 20 20 20  er." + pkg.     
03f0: 20 20 20 73 65 6c 66 2e 49 6d 70 6c 65 6d 65 6e     self.Implemen
0400: 74 61 74 69 6f 6e 4e 61 6d 65 20 3d 20 73 65 6c  tationName = sel
0410: 66 2e 73 65 72 76 69 63 65 0a 20 20 20 20 20 20  f.service.      
0420: 20 20 73 65 6c 66 2e 73 65 72 76 69 63 65 73 20    self.services 
0430: 3d 20 28 73 65 6c 66 2e 73 65 72 76 69 63 65 2c  = (self.service,
0440: 20 29 0a 0a 20 20 20 20 23 20 58 43 6f 6e 74 61   )..    # XConta
0450: 69 6e 65 72 57 69 6e 64 6f 77 45 76 65 6e 74 48  inerWindowEventH
0460: 61 6e 64 6c 65 72 0a 20 20 20 20 64 65 66 20 63  andler.    def c
0470: 61 6c 6c 48 61 6e 64 6c 65 72 4d 65 74 68 6f 64  allHandlerMethod
0480: 20 28 73 65 6c 66 2c 20 61 57 69 6e 64 6f 77 2c   (self, aWindow,
0490: 20 61 45 76 65 6e 74 4f 62 6a 65 63 74 2c 20 73   aEventObject, s
04a0: 4d 65 74 68 6f 64 29 3a 0a 20 20 20 20 20 20 20  Method):.       
04b0: 20 69 66 20 73 4d 65 74 68 6f 64 20 3d 3d 20 22   if sMethod == "
04c0: 65 78 74 65 72 6e 61 6c 5f 65 76 65 6e 74 22 3a  external_event":
04d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
04e0: 75 72 6e 20 73 65 6c 66 2e 5f 68 61 6e 64 6c 65  urn self._handle
04f0: 45 78 74 65 72 6e 61 6c 45 76 65 6e 74 28 61 57  ExternalEvent(aW
0500: 69 6e 64 6f 77 2c 20 61 45 76 65 6e 74 4f 62 6a  indow, aEventObj
0510: 65 63 74 29 0a 0a 20 20 20 20 64 65 66 20 67 65  ect)..    def ge
0520: 74 53 75 70 70 6f 72 74 65 64 4d 65 74 68 6f 64  tSupportedMethod
0530: 4e 61 6d 65 73 20 28 73 65 6c 66 29 3a 0a 20 20  Names (self):.  
0540: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 22 65        return ("e
0550: 78 74 65 72 6e 61 6c 5f 65 76 65 6e 74 22 2c 20  xternal_event", 
0560: 29 0a 0a 20 20 20 20 64 65 66 20 5f 68 61 6e 64  )..    def _hand
0570: 6c 65 45 78 74 65 72 6e 61 6c 45 76 65 6e 74 20  leExternalEvent 
0580: 28 73 65 6c 66 2c 20 61 57 69 6e 64 6f 77 2c 20  (self, aWindow, 
0590: 61 45 76 65 6e 74 4f 62 6a 65 63 74 29 3a 0a 20  aEventObject):. 
05a0: 20 20 20 20 20 20 20 23 61 45 76 65 6e 74 4f 62         #aEventOb
05b0: 6a 65 63 74 20 3d 20 73 74 72 28 61 45 76 65 6e  ject = str(aEven
05c0: 74 4f 62 6a 65 63 74 29 20 20 23 20 75 6e 6e 65  tObject)  # unne
05d0: 63 65 73 73 61 72 79 20 69 6e 20 50 79 74 68 6f  cessary in Pytho
05e0: 6e 0a 20 20 20 20 20 20 20 20 69 66 20 61 45 76  n.        if aEv
05f0: 65 6e 74 4f 62 6a 65 63 74 20 3d 3d 20 22 6f 6b  entObject == "ok
0600: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ":.            s
0610: 65 6c 66 2e 5f 73 61 76 65 44 61 74 61 28 61 57  elf._saveData(aW
0620: 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 65  indow).        e
0630: 6c 69 66 20 61 45 76 65 6e 74 4f 62 6a 65 63 74  lif aEventObject
0640: 20 3d 3d 20 22 62 61 63 6b 22 20 6f 72 20 61 45   == "back" or aE
0650: 76 65 6e 74 4f 62 6a 65 63 74 20 3d 3d 20 22 69  ventObject == "i
0660: 6e 69 74 69 61 6c 69 7a 65 22 3a 0a 20 20 20 20  nitialize":.    
0670: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6c 6f          self._lo
0680: 61 64 44 61 74 61 28 61 57 69 6e 64 6f 77 29 0a  adData(aWindow).
0690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
06a0: 72 75 65 0a 0a 20 20 20 20 64 65 66 20 6c 6f 61  rue..    def loa
06b0: 64 20 28 73 65 6c 66 2c 20 73 57 69 6e 64 6f 77  d (self, sWindow
06c0: 4e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 63  Name):.        c
06d0: 68 69 6c 64 20 3d 20 73 65 6c 66 2e 67 65 74 43  hild = self.getC
06e0: 68 69 6c 64 28 73 57 69 6e 64 6f 77 4e 61 6d 65  hild(sWindowName
06f0: 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20  ).        for i 
0700: 69 6e 20 6c 70 5f 6f 70 74 2e 6c 6f 70 74 73 5b  in lp_opt.lopts[
0710: 73 57 69 6e 64 6f 77 4e 61 6d 65 5d 3a 0a 20 20  sWindowName]:.  
0720: 20 20 20 20 20 20 20 20 20 20 73 56 61 6c 75 65            sValue
0730: 20 3d 20 63 68 69 6c 64 2e 67 65 74 50 72 6f 70   = child.getProp
0740: 65 72 74 79 56 61 6c 75 65 28 69 29 0a 20 20 20  ertyValue(i).   
0750: 20 20 20 20 20 20 20 20 20 69 66 20 73 56 61 6c           if sVal
0760: 75 65 20 3d 3d 20 27 27 3a 0a 20 20 20 20 20 20  ue == '':.      
0770: 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 69            if i i
0780: 6e 20 6c 70 5f 6f 70 74 2e 6c 6f 70 74 73 5f 64  n lp_opt.lopts_d
0790: 65 66 61 75 6c 74 5b 73 57 69 6e 64 6f 77 4e 61  efault[sWindowNa
07a0: 6d 65 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20  me]:.           
07b0: 20 20 20 20 20 20 20 20 20 73 56 61 6c 75 65 20           sValue 
07c0: 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 20  = 1.            
07d0: 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20      else:.      
07e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 56                sV
07f0: 61 6c 75 65 20 3d 20 30 0a 20 20 20 20 20 20 20  alue = 0.       
0800: 20 20 20 20 20 6f 70 74 69 6f 6e 73 5b 69 5d 20       options[i] 
0810: 3d 20 62 6f 6f 6c 28 69 6e 74 28 73 56 61 6c 75  = bool(int(sValu
0820: 65 29 29 0a 0a 20 20 20 20 64 65 66 20 5f 6c 6f  e))..    def _lo
0830: 61 64 44 61 74 61 20 28 73 65 6c 66 2c 20 61 57  adData (self, aW
0840: 69 6e 64 6f 77 29 3a 0a 20 20 20 20 20 20 20 20  indow):.        
0850: 73 57 69 6e 64 6f 77 4e 61 6d 65 20 3d 20 73 65  sWindowName = se
0860: 6c 66 2e 67 65 74 57 69 6e 64 6f 77 4e 61 6d 65  lf.getWindowName
0870: 28 61 57 69 6e 64 6f 77 29 0a 20 20 20 20 20 20  (aWindow).      
0880: 20 20 69 66 20 28 73 57 69 6e 64 6f 77 4e 61 6d    if (sWindowNam
0890: 65 20 3d 3d 20 4e 6f 6e 65 29 3a 0a 20 20 20 20  e == None):.    
08a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20          return. 
08b0: 20 20 20 20 20 20 20 63 68 69 6c 64 20 3d 20 73         child = s
08c0: 65 6c 66 2e 67 65 74 43 68 69 6c 64 28 73 57 69  elf.getChild(sWi
08d0: 6e 64 6f 77 4e 61 6d 65 29 0a 20 20 20 20 20 20  ndowName).      
08e0: 20 20 66 6f 72 20 69 20 69 6e 20 6c 70 5f 6f 70    for i in lp_op
08f0: 74 2e 6c 6f 70 74 73 5b 73 57 69 6e 64 6f 77 4e  t.lopts[sWindowN
0900: 61 6d 65 5d 3a 0a 20 20 20 20 20 20 20 20 20 20  ame]:.          
0910: 20 20 73 56 61 6c 75 65 20 3d 20 63 68 69 6c 64    sValue = child
0920: 2e 67 65 74 50 72 6f 70 65 72 74 79 56 61 6c 75  .getPropertyValu
0930: 65 28 69 29 0a 20 20 20 20 20 20 20 20 20 20 20  e(i).           
0940: 20 69 66 20 73 56 61 6c 75 65 20 3d 3d 20 27 27   if sValue == ''
0950: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
0960: 20 20 69 66 20 69 20 69 6e 20 6c 70 5f 6f 70 74    if i in lp_opt
0970: 2e 6c 6f 70 74 73 5f 64 65 66 61 75 6c 74 5b 73  .lopts_default[s
0980: 57 69 6e 64 6f 77 4e 61 6d 65 5d 3a 0a 20 20 20  WindowName]:.   
0990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09a0: 20 73 56 61 6c 75 65 20 3d 20 31 0a 20 20 20 20   sValue = 1.    
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
09c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
09d0: 20 20 20 20 20 20 73 56 61 6c 75 65 20 3d 20 30        sValue = 0
09e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f  .            xCo
09f0: 6e 74 72 6f 6c 20 3d 20 61 57 69 6e 64 6f 77 2e  ntrol = aWindow.
0a00: 67 65 74 43 6f 6e 74 72 6f 6c 28 69 29 0a 20 20  getControl(i).  
0a10: 20 20 20 20 20 20 20 20 20 20 78 43 6f 6e 74 72            xContr
0a20: 6f 6c 2e 53 74 61 74 65 20 3d 20 73 56 61 6c 75  ol.State = sValu
0a30: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 70  e.            op
0a40: 74 69 6f 6e 73 5b 69 5d 20 3d 20 62 6f 6f 6c 28  tions[i] = bool(
0a50: 69 6e 74 28 73 56 61 6c 75 65 29 29 0a 0a 20 20  int(sValue))..  
0a60: 20 20 64 65 66 20 5f 73 61 76 65 44 61 74 61 20    def _saveData 
0a70: 28 73 65 6c 66 2c 20 61 57 69 6e 64 6f 77 29 3a  (self, aWindow):
0a80: 0a 20 20 20 20 20 20 20 20 73 57 69 6e 64 6f 77  .        sWindow
0a90: 4e 61 6d 65 20 3d 20 73 65 6c 66 2e 67 65 74 57  Name = self.getW
0aa0: 69 6e 64 6f 77 4e 61 6d 65 28 61 57 69 6e 64 6f  indowName(aWindo
0ab0: 77 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 73  w).        if (s
0ac0: 57 69 6e 64 6f 77 4e 61 6d 65 20 3d 3d 20 4e 6f  WindowName == No
0ad0: 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ne):.           
0ae0: 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20   return.        
0af0: 63 68 69 6c 64 20 3d 20 73 65 6c 66 2e 67 65 74  child = self.get
0b00: 43 68 69 6c 64 28 73 57 69 6e 64 6f 77 4e 61 6d  Child(sWindowNam
0b10: 65 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69  e).        for i
0b20: 20 69 6e 20 6c 70 5f 6f 70 74 2e 6c 6f 70 74 73   in lp_opt.lopts
0b30: 5b 73 57 69 6e 64 6f 77 4e 61 6d 65 5d 3a 0a 20  [sWindowName]:. 
0b40: 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6e 74             xCont
0b50: 72 6f 6c 20 3d 20 61 57 69 6e 64 6f 77 2e 67 65  rol = aWindow.ge
0b60: 74 43 6f 6e 74 72 6f 6c 28 69 29 0a 20 20 20 20  tControl(i).    
0b70: 20 20 20 20 20 20 20 20 73 56 61 6c 75 65 20 3d          sValue =
0b80: 20 78 43 6f 6e 74 72 6f 6c 2e 53 74 61 74 65 0a   xControl.State.
0b90: 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c              chil
0ba0: 64 2e 73 65 74 50 72 6f 70 65 72 74 79 56 61 6c  d.setPropertyVal
0bb0: 75 65 28 69 2c 20 73 74 72 28 73 56 61 6c 75 65  ue(i, str(sValue
0bc0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  )).            o
0bd0: 70 74 69 6f 6e 73 5b 69 5d 20 3d 20 62 6f 6f 6c  ptions[i] = bool
0be0: 28 69 6e 74 28 73 56 61 6c 75 65 29 29 0a 20 20  (int(sValue)).  
0bf0: 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 6d 69        self.commi
0c00: 74 43 68 61 6e 67 65 73 28 29 0a 0a 20 20 20 20  tChanges()..    
0c10: 64 65 66 20 67 65 74 57 69 6e 64 6f 77 4e 61 6d  def getWindowNam
0c20: 65 20 28 73 65 6c 66 2c 20 61 57 69 6e 64 6f 77  e (self, aWindow
0c30: 29 3a 0a 20 20 20 20 20 20 20 20 73 4e 61 6d 65  ):.        sName
0c40: 20 3d 20 61 57 69 6e 64 6f 77 2e 67 65 74 4d 6f   = aWindow.getMo
0c50: 64 65 6c 28 29 2e 4e 61 6d 65 0a 20 20 20 20 20  del().Name.     
0c60: 20 20 20 69 66 20 73 4e 61 6d 65 20 69 6e 20 6c     if sName in l
0c70: 70 5f 6f 70 74 2e 6c 6f 70 74 73 3a 0a 20 20 20  p_opt.lopts:.   
0c80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
0c90: 73 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 72 65  sName.        re
0ca0: 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20 23  turn None..    #
0cb0: 20 58 53 65 72 76 69 63 65 49 6e 66 6f 0a 20 20   XServiceInfo.  
0cc0: 20 20 64 65 66 20 67 65 74 49 6d 70 6c 65 6d 65    def getImpleme
0cd0: 6e 74 61 74 69 6f 6e 4e 61 6d 65 20 28 73 65 6c  ntationName (sel
0ce0: 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75  f):.        retu
0cf0: 72 6e 20 73 65 6c 66 2e 49 6d 70 6c 65 6d 65 6e  rn self.Implemen
0d00: 74 61 74 69 6f 6e 4e 61 6d 65 0a 0a 20 20 20 20  tationName..    
0d10: 64 65 66 20 73 75 70 70 6f 72 74 73 53 65 72 76  def supportsServ
0d20: 69 63 65 20 28 73 65 6c 66 2c 20 53 65 72 76 69  ice (self, Servi
0d30: 63 65 4e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20  ceName):.       
0d40: 20 72 65 74 75 72 6e 20 28 53 65 72 76 69 63 65   return (Service
0d50: 4e 61 6d 65 20 69 6e 20 73 65 6c 66 2e 73 65 72  Name in self.ser
0d60: 76 69 63 65 73 29 0a 0a 20 20 20 20 64 65 66 20  vices)..    def 
0d70: 67 65 74 53 75 70 70 6f 72 74 65 64 53 65 72 76  getSupportedServ
0d80: 69 63 65 4e 61 6d 65 73 20 28 73 65 6c 66 29 3a  iceNames (self):
0d90: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
0da0: 73 65 6c 66 2e 73 65 72 76 69 63 65 73 0a 0a 20  self.services.. 
0db0: 20 20 20 64 65 66 20 67 65 74 43 68 69 6c 64 20     def getChild 
0dc0: 28 73 65 6c 66 2c 20 6e 61 6d 65 29 3a 0a 20 20  (self, name):.  
0dd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c        return sel
0de0: 66 2e 6e 6f 64 65 2e 67 65 74 42 79 4e 61 6d 65  f.node.getByName
0df0: 28 6e 61 6d 65 29 0a 0a 20 20 20 20 64 65 66 20  (name)..    def 
0e00: 63 6f 6d 6d 69 74 43 68 61 6e 67 65 73 20 28 73  commitChanges (s
0e10: 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65  elf):.        se
0e20: 6c 66 2e 6e 6f 64 65 2e 63 6f 6d 6d 69 74 43 68  lf.node.commitCh
0e30: 61 6e 67 65 73 28 29 0a 20 20 20 20 20 20 20 20  anges().        
0e40: 72 65 74 75 72 6e 20 54 72 75 65 0a              return True.