Grammalecte  Hex Artifact Content

Artifact ed57ba0db8762fa04b496dd3992342ebc7539ae49504716af94420608ef777bd:


0000: 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74  # -*- coding: ut
0010: 66 38 20 2d 2a 2d 0a 23 20 47 72 61 6d 6d 61 6c  f8 -*-.# Grammal
0020: 65 63 74 65 20 41 70 70 4c 61 75 6e 63 68 65 72  ecte AppLauncher
0030: 0a 23 20 62 79 20 4f 6c 69 76 69 65 72 20 52 2e  .# by Olivier R.
0040: 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 50 4c 20  .# License: MPL 
0050: 32 0a 0a 69 6d 70 6f 72 74 20 75 6e 6f 68 65 6c  2..import unohel
0060: 70 65 72 0a 69 6d 70 6f 72 74 20 75 6e 6f 0a 69  per.import uno.i
0070: 6d 70 6f 72 74 20 74 72 61 63 65 62 61 63 6b 0a  mport traceback.
0080: 0a 69 6d 70 6f 72 74 20 68 65 6c 70 65 72 73 0a  .import helpers.
0090: 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74  .from com.sun.st
00a0: 61 72 2e 74 61 73 6b 20 69 6d 70 6f 72 74 20 58  ar.task import X
00b0: 4a 6f 62 45 78 65 63 75 74 6f 72 0a 0a 0a 78 44  JobExecutor...xD
00c0: 65 73 6b 74 6f 70 20 3d 20 4e 6f 6e 65 0a 0a 0a  esktop = None...
00d0: 63 6c 61 73 73 20 41 70 70 4c 61 75 6e 63 68 65  class AppLaunche
00e0: 72 20 28 75 6e 6f 68 65 6c 70 65 72 2e 42 61 73  r (unohelper.Bas
00f0: 65 2c 20 58 4a 6f 62 45 78 65 63 75 74 6f 72 29  e, XJobExecutor)
0100: 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74  :.    def __init
0110: 5f 5f 20 28 73 65 6c 66 2c 20 63 74 78 29 3a 0a  __ (self, ctx):.
0120: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78          self.ctx
0130: 20 3d 20 63 74 78 0a 20 20 20 20 20 20 20 20 23   = ctx.        #
0140: 20 49 6e 20 74 68 69 73 20 65 78 74 65 6e 73 69   In this extensi
0150: 6f 6e 2c 20 46 72 65 6e 63 68 20 69 73 20 64 65  on, French is de
0160: 66 61 75 6c 74 20 6c 61 6e 67 75 61 67 65 2e 0a  fault language..
0170: 20 20 20 20 20 20 20 20 23 20 49 74 20 69 73 20          # It is 
0180: 61 73 73 75 6d 65 64 20 74 68 61 74 20 74 68 6f  assumed that tho
0190: 73 65 20 77 68 6f 20 6e 65 65 64 20 74 6f 20 75  se who need to u
01a0: 73 65 20 74 68 65 20 46 72 65 6e 63 68 20 64 69  se the French di
01b0: 63 74 69 6f 6e 61 72 69 65 73 20 75 6e 64 65 72  ctionaries under
01c0: 73 74 61 6e 64 20 46 72 65 6e 63 68 20 61 6e 64  stand French and
01d0: 20 6d 61 79 20 6e 6f 74 20 75 6e 64 65 72 73 74   may not underst
01e0: 61 6e 64 20 45 6e 67 6c 69 73 68 2e 0a 20 20 20  and English..   
01f0: 20 20 20 20 20 78 53 65 74 74 69 6e 67 73 20 3d       xSettings =
0200: 20 68 65 6c 70 65 72 73 2e 67 65 74 43 6f 6e 66   helpers.getConf
0210: 69 67 53 65 74 74 69 6e 67 28 22 2f 6f 72 67 2e  igSetting("/org.
0220: 6f 70 65 6e 6f 66 66 69 63 65 2e 53 65 74 75 70  openoffice.Setup
0230: 2f 4c 31 30 4e 22 2c 20 46 61 6c 73 65 29 0a 20  /L10N", False). 
0240: 20 20 20 20 20 20 20 73 4c 6f 63 61 6c 65 20 3d         sLocale =
0250: 20 78 53 65 74 74 69 6e 67 73 2e 67 65 74 42 79   xSettings.getBy
0260: 4e 61 6d 65 28 22 6f 6f 4c 6f 63 61 6c 65 22 29  Name("ooLocale")
0270: 20 20 23 20 4e 6f 74 65 3a 20 6c 6f 6f 6b 20 61    # Note: look a
0280: 74 20 6f 6f 53 65 74 75 70 53 79 73 74 65 6d 4c  t ooSetupSystemL
0290: 6f 63 61 6c 65 20 76 61 6c 75 65 3f 0a 20 20 20  ocale value?.   
02a0: 20 20 20 20 20 73 65 6c 66 2e 73 4c 61 6e 67 20       self.sLang 
02b0: 3d 20 73 4c 6f 63 61 6c 65 5b 30 3a 32 5d 0a 0a  = sLocale[0:2]..
02c0: 20 20 20 20 23 20 58 4a 6f 62 45 78 65 63 75 74      # XJobExecut
02d0: 6f 72 0a 20 20 20 20 64 65 66 20 74 72 69 67 67  or.    def trigg
02e0: 65 72 20 28 73 65 6c 66 2c 20 73 43 6d 64 29 3a  er (self, sCmd):
02f0: 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20  .        try:.  
0300: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 43 6d            if sCm
0310: 64 20 3d 3d 20 22 41 62 6f 75 74 22 3a 0a 20 20  d == "About":.  
0320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d                im
0330: 70 6f 72 74 20 41 62 6f 75 74 0a 20 20 20 20 20  port About.     
0340: 20 20 20 20 20 20 20 20 20 20 20 78 44 69 61 6c             xDial
0350: 6f 67 20 3d 20 41 62 6f 75 74 2e 41 62 6f 75 74  og = About.About
0360: 47 72 61 6d 6d 61 6c 65 63 74 65 28 73 65 6c 66  Grammalecte(self
0370: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20 20  .ctx).          
0380: 20 20 20 20 20 20 78 44 69 61 6c 6f 67 2e 72 75        xDialog.ru
0390: 6e 28 73 65 6c 66 2e 73 4c 61 6e 67 29 0a 20 20  n(self.sLang).  
03a0: 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73            elif s
03b0: 43 6d 64 2e 73 74 61 72 74 73 77 69 74 68 28 22  Cmd.startswith("
03c0: 43 4a 22 29 3a 0a 20 20 20 20 20 20 20 20 20 20  CJ"):.          
03d0: 20 20 20 20 20 20 69 6d 70 6f 72 74 20 43 6f 6e        import Con
03e0: 6a 75 67 75 65 75 72 0a 20 20 20 20 20 20 20 20  jugueur.        
03f0: 20 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 20          xDialog 
0400: 3d 20 43 6f 6e 6a 75 67 75 65 75 72 2e 43 6f 6e  = Conjugueur.Con
0410: 6a 75 67 75 65 75 72 28 73 65 6c 66 2e 63 74 78  jugueur(self.ctx
0420: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0430: 20 20 69 66 20 73 43 6d 64 5b 32 3a 33 5d 20 3d    if sCmd[2:3] =
0440: 3d 20 22 2f 22 3a 0a 20 20 20 20 20 20 20 20 20  = "/":.         
0450: 20 20 20 20 20 20 20 20 20 20 20 78 44 69 61 6c             xDial
0460: 6f 67 2e 72 75 6e 28 73 43 6d 64 5b 33 3a 5d 29  og.run(sCmd[3:])
0470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0480: 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20   else:.         
0490: 20 20 20 20 20 20 20 20 20 20 20 78 44 69 61 6c             xDial
04a0: 6f 67 2e 72 75 6e 28 29 0a 20 20 20 20 20 20 20  og.run().       
04b0: 20 20 20 20 20 65 6c 69 66 20 73 43 6d 64 20 3d       elif sCmd =
04c0: 3d 20 22 54 46 22 3a 0a 20 20 20 20 20 20 20 20  = "TF":.        
04d0: 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 54          import T
04e0: 65 78 74 46 6f 72 6d 61 74 74 65 72 0a 20 20 20  extFormatter.   
04f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
0500: 61 6c 6f 67 20 3d 20 54 65 78 74 46 6f 72 6d 61  alog = TextForma
0510: 74 74 65 72 2e 54 65 78 74 46 6f 72 6d 61 74 74  tter.TextFormatt
0520: 65 72 28 73 65 6c 66 2e 63 74 78 29 0a 20 20 20  er(self.ctx).   
0530: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
0540: 61 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e 73 4c  alog.run(self.sL
0550: 61 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20  ang).           
0560: 20 65 6c 69 66 20 73 43 6d 64 20 3d 3d 20 22 44   elif sCmd == "D
0570: 49 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  I":.            
0580: 20 20 20 20 69 6d 70 6f 72 74 20 44 69 63 74 4f      import DictO
0590: 70 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20  ptions.         
05a0: 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 20 3d         xDialog =
05b0: 20 44 69 63 74 4f 70 74 69 6f 6e 73 2e 44 69 63   DictOptions.Dic
05c0: 74 4f 70 74 69 6f 6e 73 28 73 65 6c 66 2e 63 74  tOptions(self.ct
05d0: 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  x).             
05e0: 20 20 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 73     xDialog.run(s
05f0: 65 6c 66 2e 73 4c 61 6e 67 29 0a 20 20 20 20 20  elf.sLang).     
0600: 20 20 20 20 20 20 20 65 6c 69 66 20 73 43 6d 64         elif sCmd
0610: 20 3d 3d 20 22 4c 45 22 3a 0a 20 20 20 20 20 20   == "LE":.      
0620: 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74            import
0630: 20 4c 65 78 69 63 6f 6e 45 64 69 74 6f 72 0a 20   LexiconEditor. 
0640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
0650: 44 69 61 6c 6f 67 20 3d 20 4c 65 78 69 63 6f 6e  Dialog = Lexicon
0660: 45 64 69 74 6f 72 2e 4c 65 78 69 63 6f 6e 45 64  Editor.LexiconEd
0670: 69 74 6f 72 28 73 65 6c 66 2e 63 74 78 29 0a 20  itor(self.ctx). 
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
0690: 44 69 61 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e  Dialog.run(self.
06a0: 73 4c 61 6e 67 29 0a 20 20 20 20 20 20 20 20 20  sLang).         
06b0: 20 20 20 65 6c 69 66 20 73 43 6d 64 20 3d 3d 20     elif sCmd == 
06c0: 22 44 53 22 3a 0a 20 20 20 20 20 20 20 20 20 20  "DS":.          
06d0: 20 20 20 20 20 20 69 6d 70 6f 72 74 20 44 69 63        import Dic
06e0: 74 69 6f 6e 61 72 79 53 77 69 74 63 68 65 72 0a  tionarySwitcher.
06f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0700: 78 44 69 61 6c 6f 67 20 3d 20 44 69 63 74 69 6f  xDialog = Dictio
0710: 6e 61 72 79 53 77 69 74 63 68 65 72 2e 46 72 65  narySwitcher.Fre
0720: 6e 63 68 44 69 63 74 69 6f 6e 61 72 79 53 77 69  nchDictionarySwi
0730: 74 63 68 65 72 28 73 65 6c 66 2e 63 74 78 29 0a  tcher(self.ctx).
0740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0750: 78 44 69 61 6c 6f 67 2e 72 75 6e 28 73 65 6c 66  xDialog.run(self
0760: 2e 73 4c 61 6e 67 29 0a 20 20 20 20 20 20 20 20  .sLang).        
0770: 20 20 20 20 65 6c 69 66 20 73 43 6d 64 20 3d 3d      elif sCmd ==
0780: 20 22 4d 41 22 3a 0a 20 20 20 20 20 20 20 20 20   "MA":.         
0790: 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 41 75         import Au
07a0: 74 68 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20  thor.           
07b0: 20 20 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 41       xDialog = A
07c0: 75 74 68 6f 72 2e 41 75 74 68 6f 72 28 73 65 6c  uthor.Author(sel
07d0: 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20  f.ctx).         
07e0: 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 2e 72         xDialog.r
07f0: 75 6e 28 73 65 6c 66 2e 73 4c 61 6e 67 29 0a 20  un(self.sLang). 
0800: 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20             elif 
0810: 73 43 6d 64 20 3d 3d 20 22 4f 50 22 3a 0a 20 20  sCmd == "OP":.  
0820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d                im
0830: 70 6f 72 74 20 4f 70 74 69 6f 6e 73 0a 20 20 20  port Options.   
0840: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
0850: 61 6c 6f 67 20 3d 20 4f 70 74 69 6f 6e 73 2e 47  alog = Options.G
0860: 43 5f 4f 70 74 69 6f 6e 73 28 73 65 6c 66 2e 63  C_Options(self.c
0870: 74 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  tx).            
0880: 20 20 20 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28      xDialog.run(
0890: 73 65 6c 66 2e 73 4c 61 6e 67 29 0a 20 20 20 20  self.sLang).    
08a0: 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 43 6d          elif sCm
08b0: 64 20 3d 3d 20 22 45 4e 22 3a 0a 20 20 20 20 20  d == "EN":.     
08c0: 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72             impor
08d0: 74 20 45 6e 75 6d 65 72 61 74 6f 72 0a 20 20 20  t Enumerator.   
08e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
08f0: 61 6c 6f 67 20 3d 20 45 6e 75 6d 65 72 61 74 6f  alog = Enumerato
0900: 72 2e 45 6e 75 6d 65 72 61 74 6f 72 28 73 65 6c  r.Enumerator(sel
0910: 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20  f.ctx).         
0920: 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 2e 72         xDialog.r
0930: 75 6e 28 73 65 6c 66 2e 73 4c 61 6e 67 29 0a 20  un(self.sLang). 
0940: 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20             elif 
0950: 73 43 6d 64 2e 73 74 61 72 74 73 77 69 74 68 28  sCmd.startswith(
0960: 22 46 41 2f 22 29 3a 0a 20 20 20 20 20 20 20 20  "FA/"):.        
0970: 20 20 20 20 20 20 20 20 66 69 6e 64 41 6c 6c 28          findAll(
0980: 73 43 6d 64 5b 36 3a 5d 2c 20 28 73 43 6d 64 5b  sCmd[6:], (sCmd[
0990: 33 3a 34 5d 20 3d 3d 20 22 79 22 29 2c 20 28 73  3:4] == "y"), (s
09a0: 43 6d 64 5b 34 3a 35 5d 20 3d 3d 20 22 79 22 29  Cmd[4:5] == "y")
09b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20  ).            # 
09c0: 65 6c 69 66 20 73 43 6d 64 2e 73 74 61 72 74 73  elif sCmd.starts
09d0: 77 69 74 68 28 22 55 52 4c 2f 22 29 3a 0a 20 20  with("URL/"):.  
09e0: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
09f0: 23 20 43 61 6c 6c 20 66 72 6f 6d 20 63 6f 6e 74  # Call from cont
0a00: 65 78 74 20 6d 65 6e 75 20 74 6f 20 6c 61 75 6e  ext menu to laun
0a10: 63 68 20 55 52 4c 3f 0a 20 20 20 20 20 20 20 20  ch URL?.        
0a20: 20 20 20 20 23 20 20 20 20 20 23 20 68 74 74 70      #     # http
0a30: 3a 2f 2f 6f 70 65 6e 67 72 6f 6b 2e 6c 69 62 72  ://opengrok.libr
0a40: 65 6f 66 66 69 63 65 2e 6f 72 67 2f 78 72 65 66  eoffice.org/xref
0a50: 2f 63 6f 72 65 2f 73 77 2f 73 6f 75 72 63 65 2f  /core/sw/source/
0a60: 75 69 2f 6c 69 6e 67 75 2f 6f 6c 6d 65 6e 75 2e  ui/lingu/olmenu.
0a70: 63 78 78 23 37 38 35 0a 20 20 20 20 20 20 20 20  cxx#785.        
0a80: 20 20 20 20 23 20 20 20 20 20 78 53 79 73 74 65      #     xSyste
0a90: 6d 53 68 65 6c 6c 45 78 65 63 75 74 65 20 3d 20  mShellExecute = 
0aa0: 73 65 6c 66 2e 63 74 78 2e 67 65 74 53 65 72 76  self.ctx.getServ
0ab0: 69 63 65 4d 61 6e 61 67 65 72 28 29 2e 63 72 65  iceManager().cre
0ac0: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
0ad0: 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e  ontext('com.sun.
0ae0: 73 74 61 72 2e 73 79 73 74 65 6d 2e 53 79 73 74  star.system.Syst
0af0: 65 6d 53 68 65 6c 6c 45 78 65 63 75 74 65 27 2c  emShellExecute',
0b00: 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20   self.ctx).     
0b10: 20 20 20 20 20 20 20 23 20 20 20 20 20 78 53 79         #     xSy
0b20: 73 74 65 6d 53 68 65 6c 6c 45 78 65 63 75 74 65  stemShellExecute
0b30: 2e 65 78 65 63 75 74 65 28 75 72 6c 2c 20 22 22  .execute(url, ""
0b40: 2c 20 75 6e 6f 2e 67 65 74 43 6f 6e 73 74 61 6e  , uno.getConstan
0b50: 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73 75 6e  tByName("com.sun
0b60: 2e 73 74 61 72 2e 73 79 73 74 65 6d 2e 53 79 73  .star.system.Sys
0b70: 74 65 6d 53 68 65 6c 6c 45 78 65 63 75 74 65 46  temShellExecuteF
0b80: 6c 61 67 73 2e 55 52 49 53 5f 4f 4e 4c 59 22 29  lags.URIS_ONLY")
0b90: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ).            el
0ba0: 69 66 20 73 43 6d 64 20 3d 3d 20 22 4e 6f 6e 65  if sCmd == "None
0bb0: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
0bc0: 20 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20     pass.        
0bd0: 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20      else:.      
0be0: 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28            print(
0bf0: 22 55 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64  "Unknown command
0c00: 3a 20 22 2b 73 74 72 28 73 43 6d 64 29 29 0a 20  : "+str(sCmd)). 
0c10: 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20         except:. 
0c20: 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
0c30: 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28 29  back.print_exc()
0c40: 0a 0a 0a 64 65 66 20 66 69 6e 64 41 6c 6c 20 28  ...def findAll (
0c50: 73 54 65 78 74 2c 20 62 43 61 73 65 53 65 6e 73  sText, bCaseSens
0c60: 69 74 69 76 65 2c 20 62 46 75 6c 6c 57 6f 72 64  itive, bFullWord
0c70: 29 3a 0a 20 20 20 20 67 6c 6f 62 61 6c 20 78 44  ):.    global xD
0c80: 65 73 6b 74 6f 70 0a 20 20 20 20 69 66 20 6e 6f  esktop.    if no
0c90: 74 20 78 44 65 73 6b 74 6f 70 3a 0a 20 20 20 20  t xDesktop:.    
0ca0: 20 20 20 20 78 43 75 72 43 74 78 20 3d 20 75 6e      xCurCtx = un
0cb0: 6f 2e 67 65 74 43 6f 6d 70 6f 6e 65 6e 74 43 6f  o.getComponentCo
0cc0: 6e 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20  ntext().        
0cd0: 78 44 65 73 6b 74 6f 70 20 3d 20 78 43 75 72 43  xDesktop = xCurC
0ce0: 74 78 2e 67 65 74 53 65 72 76 69 63 65 4d 61 6e  tx.getServiceMan
0cf0: 61 67 65 72 28 29 2e 63 72 65 61 74 65 49 6e 73  ager().createIns
0d00: 74 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74  tanceWithContext
0d10: 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 66  ('com.sun.star.f
0d20: 72 61 6d 65 2e 44 65 73 6b 74 6f 70 27 2c 20 78  rame.Desktop', x
0d30: 43 75 72 43 74 78 29 0a 20 20 20 20 69 66 20 73  CurCtx).    if s
0d40: 54 65 78 74 3a 0a 20 20 20 20 20 20 20 20 78 44  Text:.        xD
0d50: 6f 63 20 3d 20 78 44 65 73 6b 74 6f 70 2e 67 65  oc = xDesktop.ge
0d60: 74 43 75 72 72 65 6e 74 43 6f 6d 70 6f 6e 65 6e  tCurrentComponen
0d70: 74 28 29 0a 20 20 20 20 20 20 20 20 78 53 65 61  t().        xSea
0d80: 72 63 68 44 65 73 63 72 20 3d 20 78 44 6f 63 2e  rchDescr = xDoc.
0d90: 63 72 65 61 74 65 53 65 61 72 63 68 44 65 73 63  createSearchDesc
0da0: 72 69 70 74 6f 72 28 29 0a 20 20 20 20 20 20 20  riptor().       
0db0: 20 78 53 65 61 72 63 68 44 65 73 63 72 2e 53 65   xSearchDescr.Se
0dc0: 61 72 63 68 53 74 72 69 6e 67 20 3d 20 73 54 65  archString = sTe
0dd0: 78 74 0a 20 20 20 20 20 20 20 20 78 53 65 61 72  xt.        xSear
0de0: 63 68 44 65 73 63 72 2e 53 65 61 72 63 68 43 61  chDescr.SearchCa
0df0: 73 65 53 65 6e 73 69 74 69 76 65 20 3d 20 62 43  seSensitive = bC
0e00: 61 73 65 53 65 6e 73 69 74 69 76 65 0a 20 20 20  aseSensitive.   
0e10: 20 20 20 20 20 78 53 65 61 72 63 68 44 65 73 63       xSearchDesc
0e20: 72 2e 53 65 61 72 63 68 57 6f 72 64 73 20 3d 20  r.SearchWords = 
0e30: 62 46 75 6c 6c 57 6f 72 64 0a 20 20 20 20 20 20  bFullWord.      
0e40: 20 20 78 53 65 61 72 63 68 44 65 73 63 72 2e 53    xSearchDescr.S
0e50: 65 61 72 63 68 41 6c 6c 20 3d 20 54 72 75 65 20  earchAll = True 
0e60: 20 20 20 20 20 20 20 20 20 20 23 20 6e 65 63 65            # nece
0e70: 73 73 61 72 79 20 3f 0a 20 20 20 20 20 20 20 20  ssary ?.        
0e80: 78 46 6f 75 6e 64 20 3d 20 78 44 6f 63 2e 66 69  xFound = xDoc.fi
0e90: 6e 64 41 6c 6c 28 78 53 65 61 72 63 68 44 65 73  ndAll(xSearchDes
0ea0: 63 72 29 0a 20 20 20 20 20 20 20 20 78 44 6f 63  cr).        xDoc
0eb0: 2e 43 75 72 72 65 6e 74 43 6f 6e 74 72 6f 6c 6c  .CurrentControll
0ec0: 65 72 2e 73 65 6c 65 63 74 28 78 46 6f 75 6e 64  er.select(xFound
0ed0: 29 0a 0a 0a 67 5f 49 6d 70 6c 65 6d 65 6e 74 61  )...g_Implementa
0ee0: 74 69 6f 6e 48 65 6c 70 65 72 20 3d 20 75 6e 6f  tionHelper = uno
0ef0: 68 65 6c 70 65 72 2e 49 6d 70 6c 65 6d 65 6e 74  helper.Implement
0f00: 61 74 69 6f 6e 48 65 6c 70 65 72 28 29 0a 67 5f  ationHelper().g_
0f10: 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65  ImplementationHe
0f20: 6c 70 65 72 2e 61 64 64 49 6d 70 6c 65 6d 65 6e  lper.addImplemen
0f30: 74 61 74 69 6f 6e 28 41 70 70 4c 61 75 6e 63 68  tation(AppLaunch
0f40: 65 72 2c 20 27 6e 65 74 2e 67 72 61 6d 6d 61 6c  er, 'net.grammal
0f50: 65 63 74 65 2e 41 70 70 4c 61 75 6e 63 68 65 72  ecte.AppLauncher
0f60: 27 2c 20 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61  ', ('com.sun.sta
0f70: 72 2e 74 61 73 6b 2e 4a 6f 62 27 2c 29 29 0a     r.task.Job',)).