Grammalecte  Hex Artifact Content

Artifact 4af54009de87a3bb22bbd6da5b44bd2581c04c12714ff5183772eefbf7e06dbf:


0000: 23 20 44 69 63 74 69 6f 6e 61 72 79 20 4f 70 74  # Dictionary Opt
0010: 69 6f 6e 73 0a 23 20 62 79 20 4f 6c 69 76 69 65  ions.# by Olivie
0020: 72 20 52 2e 0a 23 20 4c 69 63 65 6e 73 65 3a 20  r R..# License: 
0030: 4d 50 4c 20 32 0a 0a 69 6d 70 6f 72 74 20 75 6e  MPL 2..import un
0040: 6f 68 65 6c 70 65 72 0a 69 6d 70 6f 72 74 20 75  ohelper.import u
0050: 6e 6f 0a 69 6d 70 6f 72 74 20 74 72 61 63 65 62  no.import traceb
0060: 61 63 6b 0a 0a 69 6d 70 6f 72 74 20 68 65 6c 70  ack..import help
0070: 65 72 73 0a 69 6d 70 6f 72 74 20 64 6f 5f 73 74  ers.import do_st
0080: 72 69 6e 67 73 0a 0a 66 72 6f 6d 20 63 6f 6d 2e  rings..from com.
0090: 73 75 6e 2e 73 74 61 72 2e 74 61 73 6b 20 69 6d  sun.star.task im
00a0: 70 6f 72 74 20 58 4a 6f 62 45 78 65 63 75 74 6f  port XJobExecuto
00b0: 72 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73  r.from com.sun.s
00c0: 74 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58  tar.awt import X
00d0: 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 66  ActionListener.f
00e0: 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  rom com.sun.star
00f0: 2e 62 65 61 6e 73 20 69 6d 70 6f 72 74 20 50 72  .beans import Pr
0100: 6f 70 65 72 74 79 56 61 6c 75 65 0a 0a 0a 63 6c  opertyValue...cl
0110: 61 73 73 20 44 69 63 74 4f 70 74 69 6f 6e 73 20  ass DictOptions 
0120: 28 75 6e 6f 68 65 6c 70 65 72 2e 42 61 73 65 2c  (unohelper.Base,
0130: 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72   XActionListener
0140: 2c 20 58 4a 6f 62 45 78 65 63 75 74 6f 72 29 3a  , XJobExecutor):
0150: 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74  ..    def __init
0160: 5f 5f 20 28 73 65 6c 66 2c 20 63 74 78 29 3a 0a  __ (self, ctx):.
0170: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78          self.ctx
0180: 20 3d 20 63 74 78 0a 20 20 20 20 20 20 20 20 73   = ctx.        s
0190: 65 6c 66 2e 78 53 76 4d 67 72 20 3d 20 73 65 6c  elf.xSvMgr = sel
01a0: 66 2e 63 74 78 2e 53 65 72 76 69 63 65 4d 61 6e  f.ctx.ServiceMan
01b0: 61 67 65 72 0a 20 20 20 20 20 20 20 20 73 65 6c  ager.        sel
01c0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 20 3d 20 4e  f.xContainer = N
01d0: 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  one.        self
01e0: 2e 78 44 69 61 6c 6f 67 20 3d 20 4e 6f 6e 65 0a  .xDialog = None.
01f0: 20 20 20 20 20 20 20 20 0a 20 20 20 20 64 65 66          .    def
0200: 20 5f 61 64 64 57 69 64 67 65 74 20 28 73 65 6c   _addWidget (sel
0210: 66 2c 20 6e 61 6d 65 2c 20 77 74 79 70 65 2c 20  f, name, wtype, 
0220: 78 2c 20 79 2c 20 77 2c 20 68 2c 20 2a 2a 6b 77  x, y, w, h, **kw
0230: 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 78  args):.        x
0240: 57 69 64 67 65 74 20 3d 20 73 65 6c 66 2e 78 44  Widget = self.xD
0250: 69 61 6c 6f 67 2e 63 72 65 61 74 65 49 6e 73 74  ialog.createInst
0260: 61 6e 63 65 28 27 63 6f 6d 2e 73 75 6e 2e 73 74  ance('com.sun.st
0270: 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f  ar.awt.UnoContro
0280: 6c 25 73 4d 6f 64 65 6c 27 20 25 20 77 74 79 70  l%sModel' % wtyp
0290: 65 29 0a 20 20 20 20 20 20 20 20 78 57 69 64 67  e).        xWidg
02a0: 65 74 2e 4e 61 6d 65 20 3d 20 6e 61 6d 65 0a 20  et.Name = name. 
02b0: 20 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 50         xWidget.P
02c0: 6f 73 69 74 69 6f 6e 58 20 3d 20 78 0a 20 20 20  ositionX = x.   
02d0: 20 20 20 20 20 78 57 69 64 67 65 74 2e 50 6f 73       xWidget.Pos
02e0: 69 74 69 6f 6e 59 20 3d 20 79 0a 20 20 20 20 20  itionY = y.     
02f0: 20 20 20 78 57 69 64 67 65 74 2e 57 69 64 74 68     xWidget.Width
0300: 20 3d 20 77 0a 20 20 20 20 20 20 20 20 78 57 69   = w.        xWi
0310: 64 67 65 74 2e 48 65 69 67 68 74 20 3d 20 68 0a  dget.Height = h.
0320: 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77          for k, w
0330: 20 69 6e 20 6b 77 61 72 67 73 2e 69 74 65 6d 73   in kwargs.items
0340: 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ():.            
0350: 73 65 74 61 74 74 72 28 78 57 69 64 67 65 74 2c  setattr(xWidget,
0360: 20 6b 2c 20 77 29 0a 20 20 20 20 20 20 20 20 73   k, w).        s
0370: 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 69 6e 73 65  elf.xDialog.inse
0380: 72 74 42 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 78  rtByName(name, x
0390: 57 69 64 67 65 74 29 0a 20 20 20 20 20 20 20 20  Widget).        
03a0: 72 65 74 75 72 6e 20 78 57 69 64 67 65 74 0a 0a  return xWidget..
03b0: 20 20 20 20 64 65 66 20 72 75 6e 20 28 73 65 6c      def run (sel
03c0: 66 2c 20 73 4c 61 6e 67 29 3a 0a 20 20 20 20 20  f, sLang):.     
03d0: 20 20 20 64 55 49 20 3d 20 64 6f 5f 73 74 72 69     dUI = do_stri
03e0: 6e 67 73 2e 67 65 74 55 49 28 73 4c 61 6e 67 29  ngs.getUI(sLang)
03f0: 0a 0a 20 20 20 20 20 20 20 20 23 20 77 68 61 74  ..        # what
0400: 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 20   is the current 
0410: 64 69 63 74 69 6f 6e 61 72 79 0a 20 20 20 20 20  dictionary.     
0420: 20 20 20 78 53 65 74 74 69 6e 67 73 20 3d 20 68     xSettings = h
0430: 65 6c 70 65 72 73 2e 67 65 74 43 6f 6e 66 69 67  elpers.getConfig
0440: 53 65 74 74 69 6e 67 28 22 2f 6f 72 67 2e 6f 70  Setting("/org.op
0450: 65 6e 6f 66 66 69 63 65 2e 4f 66 66 69 63 65 2e  enoffice.Office.
0460: 4c 69 6e 67 75 69 73 74 69 63 2f 53 65 72 76 69  Linguistic/Servi
0470: 63 65 4d 61 6e 61 67 65 72 2f 44 69 63 74 69 6f  ceManager/Dictio
0480: 6e 61 72 69 65 73 2f 48 75 6e 53 70 65 6c 6c 44  naries/HunSpellD
0490: 69 63 5f 66 72 22 2c 20 46 61 6c 73 65 29 0a 20  ic_fr", False). 
04a0: 20 20 20 20 20 20 20 78 4c 6f 63 61 74 69 6f 6e         xLocation
04b0: 73 20 3d 20 78 53 65 74 74 69 6e 67 73 2e 67 65  s = xSettings.ge
04c0: 74 42 79 4e 61 6d 65 28 22 4c 6f 63 61 74 69 6f  tByName("Locatio
04d0: 6e 73 22 29 0a 20 20 20 20 20 20 20 20 0a 20 20  ns").        .  
04e0: 20 20 20 20 20 20 23 20 64 69 61 6c 6f 67 0a 20        # dialog. 
04f0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61         self.xDia
0500: 6c 6f 67 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67  log = self.xSvMg
0510: 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65  r.createInstance
0520: 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d  WithContext('com
0530: 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 55 6e  .sun.star.awt.Un
0540: 6f 43 6f 6e 74 72 6f 6c 44 69 61 6c 6f 67 4d 6f  oControlDialogMo
0550: 64 65 6c 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a  del', self.ctx).
0560: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69          self.xDi
0570: 61 6c 6f 67 2e 57 69 64 74 68 20 3d 20 32 30 30  alog.Width = 200
0580: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44  .        self.xD
0590: 69 61 6c 6f 67 2e 48 65 69 67 68 74 20 3d 20 32  ialog.Height = 2
05a0: 35 35 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  55.        self.
05b0: 78 44 69 61 6c 6f 67 2e 54 69 74 6c 65 20 3d 20  xDialog.Title = 
05c0: 64 55 49 2e 67 65 74 28 27 74 69 74 6c 65 27 2c  dUI.get('title',
05d0: 20 22 23 74 69 74 6c 65 23 22 29 0a 20 20 20 20   "#title#").    
05e0: 20 20 20 20 78 57 69 6e 64 6f 77 53 69 7a 65 20      xWindowSize 
05f0: 3d 20 68 65 6c 70 65 72 73 2e 67 65 74 57 69 6e  = helpers.getWin
0600: 64 6f 77 53 69 7a 65 28 29 0a 20 20 20 20 20 20  dowSize().      
0610: 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 50    self.xDialog.P
0620: 6f 73 69 74 69 6f 6e 58 20 3d 20 69 6e 74 28 28  ositionX = int((
0630: 78 57 69 6e 64 6f 77 53 69 7a 65 2e 57 69 64 74  xWindowSize.Widt
0640: 68 20 2f 20 32 29 20 2d 20 28 73 65 6c 66 2e 78  h / 2) - (self.x
0650: 44 69 61 6c 6f 67 2e 57 69 64 74 68 20 2f 20 32  Dialog.Width / 2
0660: 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  )).        self.
0670: 78 44 69 61 6c 6f 67 2e 50 6f 73 69 74 69 6f 6e  xDialog.Position
0680: 59 20 3d 20 69 6e 74 28 28 78 57 69 6e 64 6f 77  Y = int((xWindow
0690: 53 69 7a 65 2e 48 65 69 67 68 74 20 2f 20 32 29  Size.Height / 2)
06a0: 20 2d 20 28 73 65 6c 66 2e 78 44 69 61 6c 6f 67   - (self.xDialog
06b0: 2e 48 65 69 67 68 74 20 2f 20 32 29 29 0a 0a 20  .Height / 2)).. 
06c0: 20 20 20 20 20 20 20 23 20 66 6f 6e 74 73 0a 20         # fonts. 
06d0: 20 20 20 20 20 20 20 78 46 44 54 69 74 6c 65 20         xFDTitle 
06e0: 3d 20 75 6e 6f 2e 63 72 65 61 74 65 55 6e 6f 53  = uno.createUnoS
06f0: 74 72 75 63 74 28 22 63 6f 6d 2e 73 75 6e 2e 73  truct("com.sun.s
0700: 74 61 72 2e 61 77 74 2e 46 6f 6e 74 44 65 73 63  tar.awt.FontDesc
0710: 72 69 70 74 6f 72 22 29 0a 20 20 20 20 20 20 20  riptor").       
0720: 20 78 46 44 54 69 74 6c 65 2e 48 65 69 67 68 74   xFDTitle.Height
0730: 20 3d 20 39 0a 20 20 20 20 20 20 20 20 78 46 44   = 9.        xFD
0740: 54 69 74 6c 65 2e 57 65 69 67 68 74 20 3d 20 75  Title.Weight = u
0750: 6e 6f 2e 67 65 74 43 6f 6e 73 74 61 6e 74 42 79  no.getConstantBy
0760: 4e 61 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74  Name("com.sun.st
0770: 61 72 2e 61 77 74 2e 46 6f 6e 74 57 65 69 67 68  ar.awt.FontWeigh
0780: 74 2e 42 4f 4c 44 22 29 0a 20 20 20 20 20 20 20  t.BOLD").       
0790: 20 78 46 44 54 69 74 6c 65 2e 4e 61 6d 65 20 3d   xFDTitle.Name =
07a0: 20 22 56 65 72 64 61 6e 61 22 0a 20 20 20 20 20   "Verdana".     
07b0: 20 20 20 0a 20 20 20 20 20 20 20 20 78 46 44 53     .        xFDS
07c0: 75 62 54 69 74 6c 65 20 3d 20 75 6e 6f 2e 63 72  ubTitle = uno.cr
07d0: 65 61 74 65 55 6e 6f 53 74 72 75 63 74 28 22 63  eateUnoStruct("c
07e0: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e  om.sun.star.awt.
07f0: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 22 29  FontDescriptor")
0800: 0a 20 20 20 20 20 20 20 20 78 46 44 53 75 62 54  .        xFDSubT
0810: 69 74 6c 65 2e 48 65 69 67 68 74 20 3d 20 38 0a  itle.Height = 8.
0820: 20 20 20 20 20 20 20 20 78 46 44 53 75 62 54 69          xFDSubTi
0830: 74 6c 65 2e 57 65 69 67 68 74 20 3d 20 75 6e 6f  tle.Weight = uno
0840: 2e 67 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61  .getConstantByNa
0850: 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  me("com.sun.star
0860: 2e 61 77 74 2e 46 6f 6e 74 57 65 69 67 68 74 2e  .awt.FontWeight.
0870: 42 4f 4c 44 22 29 0a 20 20 20 20 20 20 20 20 78  BOLD").        x
0880: 46 44 53 75 62 54 69 74 6c 65 2e 4e 61 6d 65 20  FDSubTitle.Name 
0890: 3d 20 22 56 65 72 64 61 6e 61 22 0a 0a 20 20 20  = "Verdana"..   
08a0: 20 20 20 20 20 23 20 77 69 64 67 65 74 0a 20 20       # widget.  
08b0: 20 20 20 20 20 20 6e 58 20 3d 20 31 30 0a 20 20        nX = 10.  
08c0: 20 20 20 20 20 20 6e 59 31 20 3d 20 31 30 0a 20        nY1 = 10. 
08d0: 20 20 20 20 20 20 20 6e 59 32 20 3d 20 6e 59 31         nY2 = nY1
08e0: 20 2b 20 35 30 0a 20 20 20 20 20 20 20 20 6e 59   + 50.        nY
08f0: 33 20 3d 20 6e 59 32 20 2b 20 37 30 0a 0a 20 20  3 = nY2 + 70..  
0900: 20 20 20 20 20 20 6e 57 69 64 74 68 20 3d 20 73        nWidth = s
0910: 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74  elf.xDialog.Widt
0920: 68 20 2d 20 32 30 0a 20 20 20 20 20 20 20 20 6e  h - 20.        n
0930: 48 65 69 67 68 74 20 3d 20 31 30 0a 0a 20 20 20  Height = 10..   
0940: 20 20 20 20 20 23 20 53 70 65 6c 6c 20 63 68 65       # Spell che
0950: 63 6b 65 72 20 73 65 63 74 69 6f 6e 0a 20 20 20  cker section.   
0960: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
0970: 64 67 65 74 28 22 73 70 65 6c 6c 69 6e 67 5f 73  dget("spelling_s
0980: 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c  ection", 'FixedL
0990: 69 6e 65 27 2c 20 6e 58 2c 20 6e 59 31 2c 20 6e  ine', nX, nY1, n
09a0: 57 69 64 74 68 2c 20 6e 48 65 69 67 68 74 2c 20  Width, nHeight, 
09b0: 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28  Label = dUI.get(
09c0: 22 73 70 65 6c 6c 69 6e 67 5f 73 65 63 74 69 6f  "spelling_sectio
09d0: 6e 22 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n", "#err"), Fon
09e0: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
09f0: 44 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20  DTitle).        
0a00: 73 65 6c 66 2e 78 41 63 74 69 76 61 74 65 4d 61  self.xActivateMa
0a10: 69 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  in = self._addWi
0a20: 64 67 65 74 28 27 61 63 74 69 76 61 74 65 5f 6d  dget('activate_m
0a30: 61 69 6e 27 2c 20 27 43 68 65 63 6b 42 6f 78 27  ain', 'CheckBox'
0a40: 2c 20 6e 58 2c 20 6e 59 31 2b 31 35 2c 20 6e 57  , nX, nY1+15, nW
0a50: 69 64 74 68 2c 20 6e 48 65 69 67 68 74 2c 20 4c  idth, nHeight, L
0a60: 61 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28 27  abel = dUI.get('
0a70: 61 63 74 69 76 61 74 65 5f 6d 61 69 6e 27 2c 20  activate_main', 
0a80: 22 23 65 72 72 22 29 2c 20 53 74 61 74 65 20 3d  "#err"), State =
0a90: 20 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73   True).        s
0aa0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
0ab0: 61 63 74 69 76 61 74 65 5f 6d 61 69 6e 5f 64 65  activate_main_de
0ac0: 73 63 72 27 2c 20 27 46 69 78 65 64 54 65 78 74  scr', 'FixedText
0ad0: 27 2c 20 6e 58 2c 20 6e 59 31 2b 32 35 2c 20 6e  ', nX, nY1+25, n
0ae0: 57 69 64 74 68 2c 20 6e 48 65 69 67 68 74 2a 32  Width, nHeight*2
0af0: 2c 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67 65  , Label = dUI.ge
0b00: 74 28 27 61 63 74 69 76 61 74 65 5f 6d 61 69 6e  t('activate_main
0b10: 5f 64 65 73 63 72 27 2c 20 22 23 65 72 72 22 29  _descr', "#err")
0b20: 2c 20 4d 75 6c 74 69 4c 69 6e 65 20 3d 20 54 72  , MultiLine = Tr
0b30: 75 65 29 0a 0a 20 20 20 20 20 20 20 20 23 20 53  ue)..        # S
0b40: 70 65 6c 6c 20 73 75 67 67 65 73 74 69 6f 6e 20  pell suggestion 
0b50: 65 6e 67 69 6e 65 20 73 65 63 74 69 6f 6e 0a 20  engine section. 
0b60: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64         self._add
0b70: 57 69 64 67 65 74 28 22 73 75 67 67 65 73 74 69  Widget("suggesti
0b80: 6f 6e 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46 69  on_section", 'Fi
0b90: 78 65 64 4c 69 6e 65 27 2c 20 6e 58 2c 20 6e 59  xedLine', nX, nY
0ba0: 32 2c 20 6e 57 69 64 74 68 2c 20 6e 48 65 69 67  2, nWidth, nHeig
0bb0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e  ht, Label = dUI.
0bc0: 67 65 74 28 22 73 75 67 67 65 73 74 69 6f 6e 5f  get("suggestion_
0bd0: 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72 72 22  section", "#err"
0be0: 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f  ), FontDescripto
0bf0: 72 20 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20  r = xFDTitle).  
0c00: 20 20 20 20 20 20 73 65 6c 66 2e 78 41 63 74 69        self.xActi
0c10: 76 61 74 65 53 75 67 67 20 3d 20 73 65 6c 66 2e  vateSugg = self.
0c20: 5f 61 64 64 57 69 64 67 65 74 28 27 61 63 74 69  _addWidget('acti
0c30: 76 61 74 65 5f 73 70 65 6c 6c 5f 73 75 67 67 27  vate_spell_sugg'
0c40: 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58  , 'CheckBox', nX
0c50: 2c 20 6e 59 32 2b 31 35 2c 20 6e 57 69 64 74 68  , nY2+15, nWidth
0c60: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
0c70: 20 3d 20 64 55 49 2e 67 65 74 28 27 61 63 74 69   = dUI.get('acti
0c80: 76 61 74 65 5f 73 70 65 6c 6c 5f 73 75 67 67 27  vate_spell_sugg'
0c90: 2c 20 22 23 65 72 72 22 29 2c 20 53 74 61 74 65  , "#err"), State
0ca0: 20 3d 20 54 72 75 65 29 0a 20 20 20 20 20 20 20   = True).       
0cb0: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
0cc0: 28 27 61 63 74 69 76 61 74 65 5f 73 70 65 6c 6c  ('activate_spell
0cd0: 5f 73 75 67 67 5f 64 65 73 63 72 27 2c 20 27 46  _sugg_descr', 'F
0ce0: 69 78 65 64 54 65 78 74 27 2c 20 6e 58 2c 20 6e  ixedText', nX, n
0cf0: 59 32 2b 32 35 2c 20 6e 57 69 64 74 68 2c 20 6e  Y2+25, nWidth, n
0d00: 48 65 69 67 68 74 2a 34 2c 20 4c 61 62 65 6c 20  Height*4, Label 
0d10: 3d 20 64 55 49 2e 67 65 74 28 27 61 63 74 69 76  = dUI.get('activ
0d20: 61 74 65 5f 73 70 65 6c 6c 5f 73 75 67 67 5f 64  ate_spell_sugg_d
0d30: 65 73 63 72 27 2c 20 22 23 65 72 72 22 29 2c 20  escr', "#err"), 
0d40: 4d 75 6c 74 69 4c 69 6e 65 20 3d 20 54 72 75 65  MultiLine = True
0d50: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 50 65 72  )..        # Per
0d60: 73 6f 6e 61 6c 20 64 69 63 74 69 6f 6e 61 72 79  sonal dictionary
0d70: 20 73 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20   section.       
0d80: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
0d90: 28 22 70 65 72 73 6f 6e 61 6c 5f 73 65 63 74 69  ("personal_secti
0da0: 6f 6e 22 2c 20 27 46 69 78 65 64 4c 69 6e 65 27  on", 'FixedLine'
0db0: 2c 20 6e 58 2c 20 6e 59 33 2c 20 6e 57 69 64 74  , nX, nY3, nWidt
0dc0: 68 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  h, nHeight, Labe
0dd0: 6c 20 3d 20 64 55 49 2e 67 65 74 28 22 70 65 72  l = dUI.get("per
0de0: 73 6f 6e 61 6c 5f 73 65 63 74 69 6f 6e 22 2c 20  sonal_section", 
0df0: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
0e00: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54 69 74  criptor = xFDTit
0e10: 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  le).        self
0e20: 2e 78 41 63 74 69 76 61 74 65 50 65 72 73 6f 6e  .xActivatePerson
0e30: 6e 61 6c 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  nal = self._addW
0e40: 69 64 67 65 74 28 27 61 63 74 69 76 61 74 65 5f  idget('activate_
0e50: 70 65 72 73 6f 6e 61 6c 27 2c 20 27 43 68 65 63  personal', 'Chec
0e60: 6b 42 6f 78 27 2c 20 6e 58 2c 20 6e 59 33 2b 31  kBox', nX, nY3+1
0e70: 35 2c 20 6e 57 69 64 74 68 2c 20 6e 48 65 69 67  5, nWidth, nHeig
0e80: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e  ht, Label = dUI.
0e90: 67 65 74 28 27 61 63 74 69 76 61 74 65 5f 70 65  get('activate_pe
0ea0: 72 73 6f 6e 61 6c 27 2c 20 22 23 65 72 72 22 29  rsonal', "#err")
0eb0: 2c 20 53 74 61 74 65 20 3d 20 54 72 75 65 29 0a  , State = True).
0ec0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
0ed0: 64 57 69 64 67 65 74 28 27 61 63 74 69 76 61 74  dWidget('activat
0ee0: 65 5f 70 65 72 73 6f 6e 6e 61 6c 5f 64 65 73 63  e_personnal_desc
0ef0: 72 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c  r', 'FixedText',
0f00: 20 6e 58 2c 20 6e 59 33 2b 32 35 2c 20 6e 57 69   nX, nY3+25, nWi
0f10: 64 74 68 2c 20 6e 48 65 69 67 68 74 2a 33 2c 20  dth, nHeight*3, 
0f20: 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28  Label = dUI.get(
0f30: 27 61 63 74 69 76 61 74 65 5f 70 65 72 73 6f 6e  'activate_person
0f40: 61 6c 5f 64 65 73 63 72 27 2c 20 22 23 65 72 72  al_descr', "#err
0f50: 22 29 2c 20 4d 75 6c 74 69 4c 69 6e 65 20 3d 20  "), MultiLine = 
0f60: 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65  True).        se
0f70: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 69  lf._addWidget('i
0f80: 6d 70 6f 72 74 5f 70 65 72 73 6f 6e 61 6c 27 2c  mport_personal',
0f90: 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58   'FixedText', nX
0fa0: 2c 20 6e 59 33 2b 35 35 2c 20 6e 57 69 64 74 68  , nY3+55, nWidth
0fb0: 2d 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61  -60, nHeight, La
0fc0: 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28 27 69  bel = dUI.get('i
0fd0: 6d 70 6f 72 74 5f 70 65 72 73 6f 6e 61 6c 27 2c  mport_personal',
0fe0: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
0ff0: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
1000: 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20  bTitle).        
1010: 73 65 6c 66 2e 78 4d 73 67 20 3d 20 73 65 6c 66  self.xMsg = self
1020: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6d 73 67  ._addWidget('msg
1030: 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20  ', 'FixedText', 
1040: 6e 58 2c 20 6e 59 33 2b 36 35 2c 20 6e 57 69 64  nX, nY3+65, nWid
1050: 74 68 2d 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  th-50, nHeight, 
1060: 4c 61 62 65 6c 20 3d 20 22 5b 6e c3 a9 61 6e 74  Label = "[n..ant
1070: 5d 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ]").        self
1080: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 69 6d 70  ._addWidget('imp
1090: 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75  ort_button', 'Bu
10a0: 74 74 6f 6e 27 2c 20 73 65 6c 66 2e 78 44 69 61  tton', self.xDia
10b0: 6c 6f 67 2e 57 69 64 74 68 2d 35 30 2c 20 6e 59  log.Width-50, nY
10c0: 33 2b 36 35 2c 20 34 30 2c 20 31 30 2c 20 4c 61  3+65, 40, 10, La
10d0: 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28 27 69  bel = dUI.get('i
10e0: 6d 70 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 22  mport_button', "
10f0: 23 65 72 72 22 29 2c 20 54 65 78 74 43 6f 6c 6f  #err"), TextColo
1100: 72 20 3d 20 30 78 30 30 35 35 30 30 29 0a 20 20  r = 0x005500).  
1110: 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57        self._addW
1120: 69 64 67 65 74 28 27 63 72 65 61 74 65 5f 64 69  idget('create_di
1130: 63 74 69 6f 6e 61 72 79 27 2c 20 27 46 69 78 65  ctionary', 'Fixe
1140: 64 54 65 78 74 27 2c 20 6e 58 2c 20 6e 59 33 2b  dText', nX, nY3+
1150: 37 35 2c 20 6e 57 69 64 74 68 2c 20 6e 48 65 69  75, nWidth, nHei
1160: 67 68 74 2a 32 2c 20 4c 61 62 65 6c 20 3d 20 64  ght*2, Label = d
1170: 55 49 2e 67 65 74 28 27 63 72 65 61 74 65 5f 64  UI.get('create_d
1180: 69 63 74 69 6f 6e 61 72 79 27 2c 20 22 23 65 72  ictionary', "#er
1190: 72 22 29 2c 20 4d 75 6c 74 69 4c 69 6e 65 20 3d  r"), MultiLine =
11a0: 20 54 72 75 65 29 0a 0a 20 20 20 20 20 20 20 20   True)..        
11b0: 23 20 42 75 74 74 6f 6e 0a 20 20 20 20 20 20 20  # Button.       
11c0: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
11d0: 28 27 61 70 70 6c 79 5f 62 75 74 74 6f 6e 27 2c  ('apply_button',
11e0: 20 27 42 75 74 74 6f 6e 27 2c 20 73 65 6c 66 2e   'Button', self.
11f0: 78 44 69 61 6c 6f 67 2e 57 69 64 74 68 2d 31 32  xDialog.Width-12
1200: 30 2c 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e  0, self.xDialog.
1210: 48 65 69 67 68 74 2d 32 35 2c 20 35 30 2c 20 31  Height-25, 50, 1
1220: 34 2c 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67  4, Label = dUI.g
1230: 65 74 28 27 61 70 70 6c 79 5f 62 75 74 74 6f 6e  et('apply_button
1240: 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74  ', "#err"), Font
1250: 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44  Descriptor = xFD
1260: 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72  Title, TextColor
1270: 20 3d 20 30 78 30 30 35 35 30 30 29 0a 20 20 20   = 0x005500).   
1280: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
1290: 64 67 65 74 28 27 63 61 6e 63 65 6c 5f 62 75 74  dget('cancel_but
12a0: 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20  ton', 'Button', 
12b0: 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64  self.xDialog.Wid
12c0: 74 68 2d 36 30 2c 20 73 65 6c 66 2e 78 44 69 61  th-60, self.xDia
12d0: 6c 6f 67 2e 48 65 69 67 68 74 2d 32 35 2c 20 35  log.Height-25, 5
12e0: 30 2c 20 31 34 2c 20 4c 61 62 65 6c 20 3d 20 64  0, 14, Label = d
12f0: 55 49 2e 67 65 74 28 27 63 61 6e 63 65 6c 5f 62  UI.get('cancel_b
1300: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
1310: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1320: 3d 20 78 46 44 54 69 74 6c 65 2c 20 54 65 78 74  = xFDTitle, Text
1330: 43 6f 6c 6f 72 20 3d 20 30 78 35 35 30 30 30 30  Color = 0x550000
1340: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 63 6f 6e  )..        # con
1350: 74 61 69 6e 65 72 0a 20 20 20 20 20 20 20 20 73  tainer.        s
1360: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 20 3d  elf.xContainer =
1370: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
1380: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
1390: 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e  ontext('com.sun.
13a0: 73 74 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74  star.awt.UnoCont
13b0: 72 6f 6c 44 69 61 6c 6f 67 27 2c 20 73 65 6c 66  rolDialog', self
13c0: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 73 65  .ctx).        se
13d0: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65  lf.xContainer.se
13e0: 74 4d 6f 64 65 6c 28 73 65 6c 66 2e 78 44 69 61  tModel(self.xDia
13f0: 6c 6f 67 29 0a 20 20 20 20 20 20 20 20 73 65 6c  log).        sel
1400: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
1410: 43 6f 6e 74 72 6f 6c 28 27 61 70 70 6c 79 5f 62  Control('apply_b
1420: 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f  utton').addActio
1430: 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a  nListener(self).
1440: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
1450: 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72  ntainer.getContr
1460: 6f 6c 28 27 61 70 70 6c 79 5f 62 75 74 74 6f 6e  ol('apply_button
1470: 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d 6d  ').setActionComm
1480: 61 6e 64 28 27 41 70 70 6c 79 27 29 0a 20 20 20  and('Apply').   
1490: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
14a0: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
14b0: 27 69 6d 70 6f 72 74 5f 62 75 74 74 6f 6e 27 29  'import_button')
14c0: 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e  .addActionListen
14d0: 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20  er(self).       
14e0: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
14f0: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 69 6d 70  .getControl('imp
1500: 6f 72 74 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74  ort_button').set
1510: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 49  ActionCommand('I
1520: 6d 70 6f 72 74 27 29 0a 20 20 20 20 20 20 20 20  mport').        
1530: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
1540: 67 65 74 43 6f 6e 74 72 6f 6c 28 27 63 61 6e 63  getControl('canc
1550: 65 6c 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41  el_button').addA
1560: 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65  ctionListener(se
1570: 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lf).        self
1580: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
1590: 6f 6e 74 72 6f 6c 28 27 63 61 6e 63 65 6c 5f 62  ontrol('cancel_b
15a0: 75 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f  utton').setActio
15b0: 6e 43 6f 6d 6d 61 6e 64 28 27 43 61 6e 63 65 6c  nCommand('Cancel
15c0: 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ').        self.
15d0: 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74 56 69  xContainer.setVi
15e0: 73 69 62 6c 65 28 46 61 6c 73 65 29 0a 20 20 20  sible(False).   
15f0: 20 20 20 20 20 74 6f 6f 6c 6b 69 74 20 3d 20 73       toolkit = s
1600: 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65 61 74  elf.xSvMgr.creat
1610: 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43 6f 6e  eInstanceWithCon
1620: 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e 73 74  text('com.sun.st
1630: 61 72 2e 61 77 74 2e 45 78 74 54 6f 6f 6c 6b 69  ar.awt.ExtToolki
1640: 74 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20 20  t', self.ctx).  
1650: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
1660: 61 69 6e 65 72 2e 63 72 65 61 74 65 50 65 65 72  ainer.createPeer
1670: 28 74 6f 6f 6c 6b 69 74 2c 20 4e 6f 6e 65 29 0a  (toolkit, None).
1680: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
1690: 6e 74 61 69 6e 65 72 2e 65 78 65 63 75 74 65 28  ntainer.execute(
16a0: 29 0a 0a 20 20 20 20 23 20 58 41 63 74 69 6f 6e  )..    # XAction
16b0: 4c 69 73 74 65 6e 65 72 0a 20 20 20 20 64 65 66  Listener.    def
16c0: 20 61 63 74 69 6f 6e 50 65 72 66 6f 72 6d 65 64   actionPerformed
16d0: 20 28 73 65 6c 66 2c 20 78 41 63 74 69 6f 6e 45   (self, xActionE
16e0: 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 74  vent):.        t
16f0: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
1700: 69 66 20 78 41 63 74 69 6f 6e 45 76 65 6e 74 2e  if xActionEvent.
1710: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20 3d 3d  ActionCommand ==
1720: 20 27 41 70 70 6c 79 27 3a 0a 20 20 20 20 20 20   'Apply':.      
1730: 20 20 20 20 20 20 20 20 20 20 69 66 20 46 61 6c            if Fal
1740: 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  se:.            
1750: 20 20 20 20 20 20 20 20 23 20 4d 6f 64 69 66 79          # Modify
1760: 20 74 68 65 20 72 65 67 69 73 74 72 79 0a 20 20   the registry.  
1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1780: 20 20 78 53 65 74 74 69 6e 67 73 20 3d 20 68 65    xSettings = he
1790: 6c 70 65 72 73 2e 67 65 74 43 6f 6e 66 69 67 53  lpers.getConfigS
17a0: 65 74 74 69 6e 67 28 22 2f 6f 72 67 2e 6f 70 65  etting("/org.ope
17b0: 6e 6f 66 66 69 63 65 2e 4f 66 66 69 63 65 2e 4c  noffice.Office.L
17c0: 69 6e 67 75 69 73 74 69 63 2f 53 65 72 76 69 63  inguistic/Servic
17d0: 65 4d 61 6e 61 67 65 72 2f 44 69 63 74 69 6f 6e  eManager/Diction
17e0: 61 72 69 65 73 2f 48 75 6e 53 70 65 6c 6c 44 69  aries/HunSpellDi
17f0: 63 5f 66 72 22 2c 20 54 72 75 65 29 0a 20 20 20  c_fr", True).   
1800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1810: 20 78 4c 6f 63 61 74 69 6f 6e 73 20 3d 20 78 53   xLocations = xS
1820: 65 74 74 69 6e 67 73 2e 67 65 74 42 79 4e 61 6d  ettings.getByNam
1830: 65 28 22 4c 6f 63 61 74 69 6f 6e 73 22 29 0a 20  e("Locations"). 
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 76 31 20 3d 20 78 4c 6f 63 61 74 69 6f     v1 = xLocatio
1860: 6e 73 5b 30 5d 2e 72 65 70 6c 61 63 65 28 73 65  ns[0].replace(se
1870: 6c 66 2e 73 43 75 72 72 65 6e 74 44 69 63 2c 20  lf.sCurrentDic, 
1880: 73 65 6c 66 2e 73 53 65 6c 65 63 74 65 64 44 69  self.sSelectedDi
1890: 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  c).             
18a0: 20 20 20 20 20 20 20 76 32 20 3d 20 78 4c 6f 63         v2 = xLoc
18b0: 61 74 69 6f 6e 73 5b 31 5d 2e 72 65 70 6c 61 63  ations[1].replac
18c0: 65 28 73 65 6c 66 2e 73 43 75 72 72 65 6e 74 44  e(self.sCurrentD
18d0: 69 63 2c 20 73 65 6c 66 2e 73 53 65 6c 65 63 74  ic, self.sSelect
18e0: 65 64 44 69 63 29 0a 20 20 20 20 20 20 20 20 20  edDic).         
18f0: 20 20 20 20 20 20 20 20 20 20 20 23 78 53 65 74             #xSet
1900: 74 69 6e 67 73 2e 72 65 70 6c 61 63 65 42 79 4e  tings.replaceByN
1910: 61 6d 65 28 22 4c 6f 63 61 74 69 6f 6e 73 22 2c  ame("Locations",
1920: 20 78 4c 6f 63 61 74 69 6f 6e 73 29 20 20 23 20   xLocations)  # 
1930: 64 6f 65 73 6e 27 74 20 77 6f 72 6b 2c 20 73 65  doesn't work, se
1940: 65 20 6c 69 6e 65 20 62 65 6c 6f 77 0a 20 20 20  e line below.   
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1960: 20 75 6e 6f 2e 69 6e 76 6f 6b 65 28 78 53 65 74   uno.invoke(xSet
1970: 74 69 6e 67 73 2c 20 22 72 65 70 6c 61 63 65 42  tings, "replaceB
1980: 79 4e 61 6d 65 22 2c 20 28 22 4c 6f 63 61 74 69  yName", ("Locati
1990: 6f 6e 73 22 2c 20 75 6e 6f 2e 41 6e 79 28 22 5b  ons", uno.Any("[
19a0: 5d 73 74 72 69 6e 67 22 2c 20 28 76 31 2c 20 76  ]string", (v1, v
19b0: 32 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  2)))).          
19c0: 20 20 20 20 20 20 20 20 20 20 78 53 65 74 74 69            xSetti
19d0: 6e 67 73 2e 63 6f 6d 6d 69 74 43 68 61 6e 67 65  ngs.commitChange
19e0: 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  s().            
19f0: 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65 6e  elif xActionEven
1a00: 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20  t.ActionCommand 
1a10: 3d 3d 20 22 49 6d 70 6f 72 74 22 3a 0a 20 20 20  == "Import":.   
1a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 78 46               #xF
1a30: 69 6c 65 50 69 63 6b 65 72 20 3d 20 75 6e 6f 2e  ilePicker = uno.
1a40: 63 72 65 61 74 65 55 6e 6f 53 65 72 76 69 63 65  createUnoService
1a50: 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 75  ("com.sun.star.u
1a60: 69 2e 64 69 61 6c 6f 67 73 2e 46 69 6c 65 50 69  i.dialogs.FilePi
1a70: 63 6b 65 72 22 29 0a 20 20 20 20 20 20 20 20 20  cker").         
1a80: 20 20 20 20 20 20 20 78 46 69 6c 65 50 69 63 6b         xFilePick
1a90: 65 72 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72  er = self.xSvMgr
1aa0: 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57  .createInstanceW
1ab0: 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d 2e  ithContext('com.
1ac0: 73 75 6e 2e 73 74 61 72 2e 75 69 2e 64 69 61 6c  sun.star.ui.dial
1ad0: 6f 67 73 2e 53 79 73 74 65 6d 46 69 6c 65 50 69  ogs.SystemFilePi
1ae0: 63 6b 65 72 27 2c 20 73 65 6c 66 2e 63 74 78 29  cker', self.ctx)
1af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b00: 20 78 46 69 6c 65 50 69 63 6b 65 72 2e 61 70 70   xFilePicker.app
1b10: 65 6e 64 46 69 6c 74 65 72 28 22 53 75 70 70 6f  endFilter("Suppo
1b20: 72 74 65 64 20 66 69 6c 65 73 22 2c 20 22 2a 2e  rted files", "*.
1b30: 6a 73 6f 6e 3b 20 2a 2e 62 64 69 63 22 29 0a 20  json; *.bdic"). 
1b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                 #
1b50: 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 44  xFilePicker.setD
1b60: 69 73 70 6c 61 79 44 69 72 65 63 74 6f 72 79 28  isplayDirectory(
1b70: 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  "").            
1b80: 20 20 20 20 23 78 46 69 6c 65 50 69 63 6b 65 72      #xFilePicker
1b90: 2e 73 65 74 4d 75 6c 74 69 53 65 6c 65 63 74 69  .setMultiSelecti
1ba0: 6f 6e 4d 6f 64 65 28 54 72 75 65 29 0a 20 20 20  onMode(True).   
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 52 65               nRe
1bc0: 73 75 6c 74 20 3d 20 78 46 69 6c 65 50 69 63 6b  sult = xFilePick
1bd0: 65 72 2e 65 78 65 63 75 74 65 28 29 0a 20 20 20  er.execute().   
1be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69               pri
1bf0: 6e 74 28 6e 52 65 73 75 6c 74 29 0a 20 20 20 20  nt(nResult).    
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e              if n
1c10: 52 65 73 75 6c 74 20 3d 3d 20 31 3a 0a 20 20 20  Result == 1:.   
1c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c30: 20 70 72 69 6e 74 28 22 74 77 6f 22 29 0a 20 20   print("two").  
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c50: 20 20 6c 46 69 6c 65 20 3d 20 78 46 69 6c 65 50    lFile = xFileP
1c60: 69 63 6b 65 72 2e 67 65 74 53 65 6c 65 63 74 65  icker.getSelecte
1c70: 64 46 69 6c 65 73 28 29 0a 20 20 20 20 20 20 20  dFiles().       
1c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69               pri
1c90: 6e 74 28 22 6f 6e 65 22 29 0a 20 20 20 20 20 20  nt("one").      
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 46                lF
1cb0: 69 6c 65 20 3d 20 78 46 69 6c 65 50 69 63 6b 65  ile = xFilePicke
1cc0: 72 2e 67 65 74 46 69 6c 65 73 28 29 0a 20 20 20  r.getFiles().   
1cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce0: 20 70 72 69 6e 74 28 6c 46 69 6c 65 29 0a 20 20   print(lFile).  
1cf0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a            else:.
1d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d10: 70 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20  pass.           
1d20: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
1d30: 2e 65 6e 64 45 78 65 63 75 74 65 28 29 0a 20 20  .endExecute().  
1d40: 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20        except:.  
1d50: 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 62            traceb
1d60: 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28 29 0a  ack.print_exc().
1d70: 20 20 20 20 0a 20 20 20 20 23 20 58 4a 6f 62 45      .    # XJobE
1d80: 78 65 63 75 74 6f 72 0a 20 20 20 20 64 65 66 20  xecutor.    def 
1d90: 74 72 69 67 67 65 72 20 28 73 65 6c 66 2c 20 61  trigger (self, a
1da0: 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 74 72  rgs):.        tr
1db0: 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  y:.            d
1dc0: 69 61 6c 6f 67 20 3d 20 44 69 63 74 4f 70 74 69  ialog = DictOpti
1dd0: 6f 6e 73 28 73 65 6c 66 2e 63 74 78 29 0a 20 20  ons(self.ctx).  
1de0: 20 20 20 20 20 20 20 20 20 20 64 69 61 6c 6f 67            dialog
1df0: 2e 72 75 6e 28 29 0a 20 20 20 20 20 20 20 20 65  .run().        e
1e00: 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20  xcept:.         
1e10: 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69     traceback.pri
1e20: 6e 74 5f 65 78 63 28 29 0a 0a 0a 23 67 5f 49 6d  nt_exc()...#g_Im
1e30: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70  plementationHelp
1e40: 65 72 20 3d 20 75 6e 6f 68 65 6c 70 65 72 2e 49  er = unohelper.I
1e50: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c  mplementationHel
1e60: 70 65 72 28 29 0a 23 67 5f 49 6d 70 6c 65 6d 65  per().#g_Impleme
1e70: 6e 74 61 74 69 6f 6e 48 65 6c 70 65 72 2e 61 64  ntationHelper.ad
1e80: 64 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 28  dImplementation(
1e90: 44 69 63 74 4f 70 74 69 6f 6e 73 2c 20 27 6e 65  DictOptions, 'ne
1ea0: 74 2e 67 72 61 6d 6d 61 6c 65 63 74 65 2e 67 72  t.grammalecte.gr
1eb0: 61 70 68 73 70 65 6c 6c 2e 44 69 63 74 4f 70 74  aphspell.DictOpt
1ec0: 69 6f 6e 73 27 2c 20 28 27 63 6f 6d 2e 73 75 6e  ions', ('com.sun
1ed0: 2e 73 74 61 72 2e 74 61 73 6b 2e 4a 6f 62 27 2c  .star.task.Job',
1ee0: 29 29 0a                                         )).