Grammalecte  Hex Artifact Content

Artifact 30177fb38ee20e793c4ff221186a1f87489316956c931159d8fd3436d2aab0d1:


0000: 23 20 4c 65 78 69 63 6f 6e 20 45 64 69 74 6f 72  # Lexicon Editor
0010: 0a 23 20 62 79 20 4f 6c 69 76 69 65 72 20 52 2e  .# by Olivier R.
0020: 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 50 4c 20  .# License: MPL 
0030: 32 0a 0a 69 6d 70 6f 72 74 20 75 6e 6f 68 65 6c  2..import unohel
0040: 70 65 72 0a 69 6d 70 6f 72 74 20 75 6e 6f 0a 69  per.import uno.i
0050: 6d 70 6f 72 74 20 6a 73 6f 6e 0a 69 6d 70 6f 72  mport json.impor
0060: 74 20 72 65 0a 69 6d 70 6f 72 74 20 6f 73 0a 69  t re.import os.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: 69 6d 70 6f 72 74 20 6c 78 65 5f 73 74 72 69 6e  import lxe_strin
00a0: 67 73 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61  gs.import gramma
00b0: 6c 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c  lecte.graphspell
00c0: 20 61 73 20 73 63 0a 69 6d 70 6f 72 74 20 67 72   as sc.import gr
00d0: 61 6d 6d 61 6c 65 63 74 65 2e 67 72 61 70 68 73  ammalecte.graphs
00e0: 70 65 6c 6c 2e 64 61 77 67 20 61 73 20 64 61 77  pell.dawg as daw
00f0: 67 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c  g.import grammal
0100: 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c 2e  ecte.graphspell.
0110: 69 62 64 61 77 67 20 61 73 20 69 62 64 61 77 67  ibdawg as ibdawg
0120: 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c 65  .import grammale
0130: 63 74 65 2e 66 72 2e 63 6f 6e 6a 20 61 73 20 63  cte.fr.conj as c
0140: 6f 6e 6a 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d  onj.import gramm
0150: 61 6c 65 63 74 65 2e 66 72 2e 63 6f 6e 6a 5f 67  alecte.fr.conj_g
0160: 65 6e 65 72 61 74 6f 72 20 61 73 20 63 6f 6e 6a  enerator as conj
0170: 67 65 6e 0a 0a 69 6d 70 6f 72 74 20 53 65 61 72  gen..import Sear
0180: 63 68 57 6f 72 64 73 0a 69 6d 70 6f 72 74 20 54  chWords.import T
0190: 61 67 73 49 6e 66 6f 0a 0a 66 72 6f 6d 20 63 6f  agsInfo..from co
01a0: 6d 2e 73 75 6e 2e 73 74 61 72 2e 74 61 73 6b 20  m.sun.star.task 
01b0: 69 6d 70 6f 72 74 20 58 4a 6f 62 45 78 65 63 75  import XJobExecu
01c0: 74 6f 72 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e  tor.from com.sun
01d0: 2e 73 74 61 72 2e 61 77 74 20 69 6d 70 6f 72 74  .star.awt import
01e0: 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72   XActionListener
01f0: 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74  .from com.sun.st
0200: 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58 4b  ar.awt import XK
0210: 65 79 4c 69 73 74 65 6e 65 72 0a 0a 66 72 6f 6d  eyListener..from
0220: 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77   com.sun.star.aw
0230: 74 2e 4d 65 73 73 61 67 65 42 6f 78 42 75 74 74  t.MessageBoxButt
0240: 6f 6e 73 20 69 6d 70 6f 72 74 20 42 55 54 54 4f  ons import BUTTO
0250: 4e 53 5f 4f 4b 0a 23 20 42 55 54 54 4f 4e 53 5f  NS_OK.# BUTTONS_
0260: 4f 4b 2c 20 42 55 54 54 4f 4e 53 5f 4f 4b 5f 43  OK, BUTTONS_OK_C
0270: 41 4e 43 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 59  ANCEL, BUTTONS_Y
0280: 45 53 5f 4e 4f 2c 20 42 55 54 54 4f 4e 53 5f 59  ES_NO, BUTTONS_Y
0290: 45 53 5f 4e 4f 5f 43 41 4e 43 45 4c 2c 20 42 55  ES_NO_CANCEL, BU
02a0: 54 54 4f 4e 53 5f 52 45 54 52 59 5f 43 41 4e 43  TTONS_RETRY_CANC
02b0: 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 41 42 4f 52  EL, BUTTONS_ABOR
02c0: 54 5f 49 47 4e 4f 52 45 5f 52 45 54 52 59 0a 23  T_IGNORE_RETRY.#
02d0: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
02e0: 4f 4b 2c 20 44 45 46 41 55 4c 54 5f 42 55 54 54  OK, DEFAULT_BUTT
02f0: 4f 4e 5f 43 41 4e 43 45 4c 2c 20 44 45 46 41 55  ON_CANCEL, DEFAU
0300: 4c 54 5f 42 55 54 54 4f 4e 5f 52 45 54 52 59 2c  LT_BUTTON_RETRY,
0310: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
0320: 59 45 53 2c 20 44 45 46 41 55 4c 54 5f 42 55 54  YES, DEFAULT_BUT
0330: 54 4f 4e 5f 4e 4f 2c 20 44 45 46 41 55 4c 54 5f  TON_NO, DEFAULT_
0340: 42 55 54 54 4f 4e 5f 49 47 4e 4f 52 45 0a 66 72  BUTTON_IGNORE.fr
0350: 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  om com.sun.star.
0360: 61 77 74 2e 4d 65 73 73 61 67 65 42 6f 78 54 79  awt.MessageBoxTy
0370: 70 65 20 69 6d 70 6f 72 74 20 49 4e 46 4f 42 4f  pe import INFOBO
0380: 58 2c 20 45 52 52 4f 52 42 4f 58 20 23 20 4d 45  X, ERRORBOX # ME
0390: 53 53 41 47 45 42 4f 58 2c 20 49 4e 46 4f 42 4f  SSAGEBOX, INFOBO
03a0: 58 2c 20 57 41 52 4e 49 4e 47 42 4f 58 2c 20 45  X, WARNINGBOX, E
03b0: 52 52 4f 52 42 4f 58 2c 20 51 55 45 52 59 42 4f  RRORBOX, QUERYBO
03c0: 58 0a 0a 64 65 66 20 4d 65 73 73 61 67 65 42 6f  X..def MessageBo
03d0: 78 20 28 78 44 6f 63 75 6d 65 6e 74 2c 20 73 4d  x (xDocument, sM
03e0: 73 67 2c 20 73 54 69 74 6c 65 2c 20 6e 42 6f 78  sg, sTitle, nBox
03f0: 54 79 70 65 3d 49 4e 46 4f 42 4f 58 2c 20 6e 42  Type=INFOBOX, nB
0400: 6f 78 42 75 74 74 6f 6e 73 3d 42 55 54 54 4f 4e  oxButtons=BUTTON
0410: 53 5f 4f 4b 29 3a 0a 20 20 20 20 78 50 61 72 65  S_OK):.    xPare
0420: 6e 74 57 69 6e 20 3d 20 78 44 6f 63 75 6d 65 6e  ntWin = xDocumen
0430: 74 2e 43 75 72 72 65 6e 74 43 6f 6e 74 72 6f 6c  t.CurrentControl
0440: 6c 65 72 2e 46 72 61 6d 65 2e 43 6f 6e 74 61 69  ler.Frame.Contai
0450: 6e 65 72 57 69 6e 64 6f 77 0a 20 20 20 20 63 74  nerWindow.    ct
0460: 78 20 3d 20 75 6e 6f 2e 67 65 74 43 6f 6d 70 6f  x = uno.getCompo
0470: 6e 65 6e 74 43 6f 6e 74 65 78 74 28 29 0a 20 20  nentContext().  
0480: 20 20 78 54 6f 6f 6c 6b 69 74 20 3d 20 63 74 78    xToolkit = ctx
0490: 2e 53 65 72 76 69 63 65 4d 61 6e 61 67 65 72 2e  .ServiceManager.
04a0: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69  createInstanceWi
04b0: 74 68 43 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73  thContext("com.s
04c0: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 54 6f 6f 6c  un.star.awt.Tool
04d0: 6b 69 74 22 2c 20 63 74 78 29 0a 20 20 20 20 78  kit", ctx).    x
04e0: 4d 73 67 42 6f 78 20 3d 20 78 54 6f 6f 6c 6b 69  MsgBox = xToolki
04f0: 74 2e 63 72 65 61 74 65 4d 65 73 73 61 67 65 42  t.createMessageB
0500: 6f 78 28 78 50 61 72 65 6e 74 57 69 6e 2c 20 6e  ox(xParentWin, n
0510: 42 6f 78 54 79 70 65 2c 20 6e 42 6f 78 42 75 74  BoxType, nBoxBut
0520: 74 6f 6e 73 2c 20 73 54 69 74 6c 65 2c 20 73 4d  tons, sTitle, sM
0530: 73 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 78  sg).    return x
0540: 4d 73 67 42 6f 78 2e 65 78 65 63 75 74 65 28 29  MsgBox.execute()
0550: 0a 0a 0a 64 65 66 20 5f 77 61 69 74 50 6f 69 6e  ...def _waitPoin
0560: 74 65 72 20 28 66 75 6e 63 44 65 63 6f 72 61 74  ter (funcDecorat
0570: 65 64 29 3a 0a 20 20 20 20 64 65 66 20 77 72 61  ed):.    def wra
0580: 70 70 65 72 20 28 2a 61 72 67 73 2c 20 2a 2a 6b  pper (*args, **k
0590: 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20  wargs):.        
05a0: 23 20 73 65 6c 66 20 69 73 20 74 68 65 20 66 69  # self is the fi
05b0: 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 66  rst parameter if
05c0: 20 74 68 65 20 64 65 63 6f 72 61 74 6f 72 20 69   the decorator i
05d0: 73 20 61 70 70 6c 69 65 64 20 6f 6e 20 61 20 6f  s applied on a o
05e0: 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 73 65  bject.        se
05f0: 6c 66 20 3d 20 61 72 67 73 5b 30 5d 0a 20 20 20  lf = args[0].   
0600: 20 20 20 20 20 23 20 62 65 66 6f 72 65 0a 20 20       # before.  
0610: 20 20 20 20 20 20 78 50 6f 69 6e 74 65 72 20 3d        xPointer =
0620: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
0630: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
0640: 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73 75 6e 2e  ontext("com.sun.
0650: 73 74 61 72 2e 61 77 74 2e 50 6f 69 6e 74 65 72  star.awt.Pointer
0660: 22 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20  ", self.ctx).   
0670: 20 20 20 20 20 78 50 6f 69 6e 74 65 72 2e 73 65       xPointer.se
0680: 74 54 79 70 65 28 75 6e 6f 2e 67 65 74 43 6f 6e  tType(uno.getCon
0690: 73 74 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d  stantByName("com
06a0: 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 53 79  .sun.star.awt.Sy
06b0: 73 74 65 6d 50 6f 69 6e 74 65 72 2e 57 41 49 54  stemPointer.WAIT
06c0: 22 29 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e  ")).        xWin
06d0: 64 6f 77 50 65 65 72 20 3d 20 73 65 6c 66 2e 78  dowPeer = self.x
06e0: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 50 65 65  Container.getPee
06f0: 72 28 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e  r().        xWin
0700: 64 6f 77 50 65 65 72 2e 73 65 74 50 6f 69 6e 74  dowPeer.setPoint
0710: 65 72 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20  er(xPointer).   
0720: 20 20 20 20 20 66 6f 72 20 78 20 69 6e 20 78 57       for x in xW
0730: 69 6e 64 6f 77 50 65 65 72 2e 57 69 6e 64 6f 77  indowPeer.Window
0740: 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  s:.            x
0750: 2e 73 65 74 50 6f 69 6e 74 65 72 28 78 50 6f 69  .setPointer(xPoi
0760: 6e 74 65 72 29 0a 20 20 20 20 20 20 20 20 23 20  nter).        # 
0770: 70 72 6f 63 65 73 73 69 6e 67 0a 20 20 20 20 20  processing.     
0780: 20 20 20 72 65 73 75 6c 74 20 3d 20 66 75 6e 63     result = func
0790: 44 65 63 6f 72 61 74 65 64 28 2a 61 72 67 73 2c  Decorated(*args,
07a0: 20 2a 2a 6b 77 61 72 67 73 29 0a 20 20 20 20 20   **kwargs).     
07b0: 20 20 20 23 20 61 66 74 65 72 0a 20 20 20 20 20     # after.     
07c0: 20 20 20 78 50 6f 69 6e 74 65 72 2e 73 65 74 54     xPointer.setT
07d0: 79 70 65 28 75 6e 6f 2e 67 65 74 43 6f 6e 73 74  ype(uno.getConst
07e0: 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73  antByName("com.s
07f0: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 53 79 73 74  un.star.awt.Syst
0800: 65 6d 50 6f 69 6e 74 65 72 2e 41 52 52 4f 57 22  emPointer.ARROW"
0810: 29 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e 64  )).        xWind
0820: 6f 77 50 65 65 72 2e 73 65 74 50 6f 69 6e 74 65  owPeer.setPointe
0830: 72 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20 20  r(xPointer).    
0840: 20 20 20 20 66 6f 72 20 78 20 69 6e 20 78 57 69      for x in xWi
0850: 6e 64 6f 77 50 65 65 72 2e 57 69 6e 64 6f 77 73  ndowPeer.Windows
0860: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 2e  :.            x.
0870: 73 65 74 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e  setPointer(xPoin
0880: 74 65 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ter).        sel
0890: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74  f.xContainer.set
08a0: 56 69 73 69 62 6c 65 28 54 72 75 65 29 20 23 20  Visible(True) # 
08b0: 73 65 65 6d 73 20 6e 65 63 65 73 73 61 72 79 20  seems necessary 
08c0: 74 6f 20 72 65 66 72 65 73 68 20 74 68 65 20 64  to refresh the d
08d0: 69 61 6c 6f 67 20 62 6f 78 20 61 6e 64 20 74 65  ialog box and te
08e0: 78 74 20 77 69 64 67 65 74 73 20 28 77 68 79 3f  xt widgets (why?
08f0: 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 74 75  ).        # retu
0900: 72 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  rn.        retur
0910: 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 72 65 74  n result.    ret
0920: 75 72 6e 20 77 72 61 70 70 65 72 0a 0a 0a 63 6c  urn wrapper...cl
0930: 61 73 73 20 4c 65 78 69 63 6f 6e 45 64 69 74 6f  ass LexiconEdito
0940: 72 20 28 75 6e 6f 68 65 6c 70 65 72 2e 42 61 73  r (unohelper.Bas
0950: 65 2c 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e  e, XActionListen
0960: 65 72 2c 20 58 4b 65 79 4c 69 73 74 65 6e 65 72  er, XKeyListener
0970: 2c 20 58 4a 6f 62 45 78 65 63 75 74 6f 72 29 3a  , XJobExecutor):
0980: 0a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74  ..    def __init
0990: 5f 5f 20 28 73 65 6c 66 2c 20 63 74 78 29 3a 0a  __ (self, ctx):.
09a0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 74 78          self.ctx
09b0: 20 3d 20 63 74 78 0a 20 20 20 20 20 20 20 20 73   = ctx.        s
09c0: 65 6c 66 2e 78 53 76 4d 67 72 20 3d 20 73 65 6c  elf.xSvMgr = sel
09d0: 66 2e 63 74 78 2e 53 65 72 76 69 63 65 4d 61 6e  f.ctx.ServiceMan
09e0: 61 67 65 72 0a 20 20 20 20 20 20 20 20 73 65 6c  ager.        sel
09f0: 66 2e 78 44 65 73 6b 74 6f 70 20 3d 20 73 65 6c  f.xDesktop = sel
0a00: 66 2e 78 53 76 4d 67 72 2e 63 72 65 61 74 65 49  f.xSvMgr.createI
0a10: 6e 73 74 61 6e 63 65 57 69 74 68 43 6f 6e 74 65  nstanceWithConte
0a20: 78 74 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  xt("com.sun.star
0a30: 2e 66 72 61 6d 65 2e 44 65 73 6b 74 6f 70 22 2c  .frame.Desktop",
0a40: 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20   self.ctx).     
0a50: 20 20 20 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e     self.xDocumen
0a60: 74 20 3d 20 73 65 6c 66 2e 78 44 65 73 6b 74 6f  t = self.xDeskto
0a70: 70 2e 67 65 74 43 75 72 72 65 6e 74 43 6f 6d 70  p.getCurrentComp
0a80: 6f 6e 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20  onent().        
0a90: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 20  self.xContainer 
0aa0: 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73  = None.        s
0ab0: 65 6c 66 2e 78 44 69 61 6c 6f 67 20 3d 20 4e 6f  elf.xDialog = No
0ac0: 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ne.        self.
0ad0: 6f 50 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e  oPersonalDicJSON
0ae0: 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20   = None.        
0af0: 23 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 73  # data.        s
0b00: 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 22 22 0a  elf.sLemma = "".
0b10: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
0b20: 6e 65 72 61 74 65 64 46 6c 65 78 20 3d 20 5b 5d  neratedFlex = []
0b30: 0a 20 20 20 20 20 20 20 20 23 20 6f 70 74 69 6f  .        # optio
0b40: 6e 73 20 6e 6f 64 65 0a 20 20 20 20 20 20 20 20  ns node.        
0b50: 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64  self.xSettingNod
0b60: 65 20 3d 20 68 65 6c 70 65 72 73 2e 67 65 74 43  e = helpers.getC
0b70: 6f 6e 66 69 67 53 65 74 74 69 6e 67 28 22 2f 6f  onfigSetting("/o
0b80: 72 67 2e 6f 70 65 6e 6f 66 66 69 63 65 2e 4c 69  rg.openoffice.Li
0b90: 67 68 74 70 72 6f 6f 66 5f 67 72 61 6d 6d 61 6c  ghtproof_grammal
0ba0: 65 63 74 65 2f 4f 74 68 65 72 2f 22 2c 20 54 72  ecte/Other/", Tr
0bb0: 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ue).        self
0bc0: 2e 78 4f 70 74 69 6f 6e 4e 6f 64 65 20 3d 20 73  .xOptionNode = s
0bd0: 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64 65  elf.xSettingNode
0be0: 2e 67 65 74 42 79 4e 61 6d 65 28 22 6f 5f 66 72  .getByName("o_fr
0bf0: 22 29 0a 0a 20 20 20 20 64 65 66 20 5f 61 64 64  ")..    def _add
0c00: 57 69 64 67 65 74 20 28 73 65 6c 66 2c 20 6e 61  Widget (self, na
0c10: 6d 65 2c 20 77 74 79 70 65 2c 20 78 2c 20 79 2c  me, wtype, x, y,
0c20: 20 77 2c 20 68 2c 20 2a 2a 6b 77 61 72 67 73 29   w, h, **kwargs)
0c30: 3a 0a 20 20 20 20 20 20 20 20 78 57 69 64 67 65  :.        xWidge
0c40: 74 20 3d 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67  t = self.xDialog
0c50: 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28  .createInstance(
0c60: 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  'com.sun.star.aw
0c70: 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 25 73 4d 6f  t.UnoControl%sMo
0c80: 64 65 6c 27 20 25 20 77 74 79 70 65 29 0a 20 20  del' % wtype).  
0c90: 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 4e 61        xWidget.Na
0ca0: 6d 65 20 3d 20 6e 61 6d 65 0a 20 20 20 20 20 20  me = name.      
0cb0: 20 20 78 57 69 64 67 65 74 2e 50 6f 73 69 74 69    xWidget.Positi
0cc0: 6f 6e 58 20 3d 20 78 0a 20 20 20 20 20 20 20 20  onX = x.        
0cd0: 78 57 69 64 67 65 74 2e 50 6f 73 69 74 69 6f 6e  xWidget.Position
0ce0: 59 20 3d 20 79 0a 20 20 20 20 20 20 20 20 78 57  Y = y.        xW
0cf0: 69 64 67 65 74 2e 57 69 64 74 68 20 3d 20 77 0a  idget.Width = w.
0d00: 20 20 20 20 20 20 20 20 78 57 69 64 67 65 74 2e          xWidget.
0d10: 48 65 69 67 68 74 20 3d 20 68 0a 20 20 20 20 20  Height = h.     
0d20: 20 20 20 66 6f 72 20 6b 2c 20 77 20 69 6e 20 6b     for k, w in k
0d30: 77 61 72 67 73 2e 69 74 65 6d 73 28 29 3a 0a 20  wargs.items():. 
0d40: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 61 74             setat
0d50: 74 72 28 78 57 69 64 67 65 74 2c 20 6b 2c 20 77  tr(xWidget, k, w
0d60: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
0d70: 44 69 61 6c 6f 67 2e 69 6e 73 65 72 74 42 79 4e  Dialog.insertByN
0d80: 61 6d 65 28 6e 61 6d 65 2c 20 78 57 69 64 67 65  ame(name, xWidge
0d90: 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  t).        retur
0da0: 6e 20 78 57 69 64 67 65 74 0a 0a 20 20 20 20 64  n xWidget..    d
0db0: 65 66 20 5f 61 64 64 47 72 69 64 20 28 73 65 6c  ef _addGrid (sel
0dc0: 66 2c 20 6e 61 6d 65 2c 20 78 2c 20 79 2c 20 77  f, name, x, y, w
0dd0: 2c 20 68 2c 20 63 6f 6c 75 6d 6e 73 2c 20 2a 2a  , h, columns, **
0de0: 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20  kwargs):.       
0df0: 20 78 47 72 69 64 4d 6f 64 65 6c 20 3d 20 73 65   xGridModel = se
0e00: 6c 66 2e 78 44 69 61 6c 6f 67 2e 63 72 65 61 74  lf.xDialog.creat
0e10: 65 49 6e 73 74 61 6e 63 65 28 27 63 6f 6d 2e 73  eInstance('com.s
0e20: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 67 72 69 64  un.star.awt.grid
0e30: 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 47 72 69 64 4d  .UnoControlGridM
0e40: 6f 64 65 6c 27 29 0a 20 20 20 20 20 20 20 20 78  odel').        x
0e50: 47 72 69 64 4d 6f 64 65 6c 2e 4e 61 6d 65 20 3d  GridModel.Name =
0e60: 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 78 47   name.        xG
0e70: 72 69 64 4d 6f 64 65 6c 2e 50 6f 73 69 74 69 6f  ridModel.Positio
0e80: 6e 58 20 3d 20 78 0a 20 20 20 20 20 20 20 20 78  nX = x.        x
0e90: 47 72 69 64 4d 6f 64 65 6c 2e 50 6f 73 69 74 69  GridModel.Positi
0ea0: 6f 6e 59 20 3d 20 79 0a 20 20 20 20 20 20 20 20  onY = y.        
0eb0: 78 47 72 69 64 4d 6f 64 65 6c 2e 57 69 64 74 68  xGridModel.Width
0ec0: 20 3d 20 77 0a 20 20 20 20 20 20 20 20 78 47 72   = w.        xGr
0ed0: 69 64 4d 6f 64 65 6c 2e 48 65 69 67 68 74 20 3d  idModel.Height =
0ee0: 20 68 0a 20 20 20 20 20 20 20 20 78 43 6f 6c 75   h.        xColu
0ef0: 6d 6e 4d 6f 64 65 6c 20 3d 20 78 47 72 69 64 4d  mnModel = xGridM
0f00: 6f 64 65 6c 2e 43 6f 6c 75 6d 6e 4d 6f 64 65 6c  odel.ColumnModel
0f10: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 20 69  .        for e i
0f20: 6e 20 63 6f 6c 75 6d 6e 73 3a 0a 20 20 20 20 20  n columns:.     
0f30: 20 20 20 20 20 20 20 78 43 6f 6c 20 3d 20 78 43         xCol = xC
0f40: 6f 6c 75 6d 6e 4d 6f 64 65 6c 2e 63 72 65 61 74  olumnModel.creat
0f50: 65 43 6f 6c 75 6d 6e 28 29 0a 20 20 20 20 20 20  eColumn().      
0f60: 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77 20 69        for k, w i
0f70: 6e 20 65 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20  n e.items():.   
0f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
0f90: 61 74 74 72 28 78 43 6f 6c 2c 20 6b 2c 20 77 29  attr(xCol, k, w)
0fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f  .            xCo
0fb0: 6c 75 6d 6e 4d 6f 64 65 6c 2e 61 64 64 43 6f 6c  lumnModel.addCol
0fc0: 75 6d 6e 28 78 43 6f 6c 29 0a 20 20 20 20 20 20  umn(xCol).      
0fd0: 20 20 66 6f 72 20 6b 2c 20 77 20 69 6e 20 6b 77    for k, w in kw
0fe0: 61 72 67 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20  args.items():.  
0ff0: 20 20 20 20 20 20 20 20 20 20 73 65 74 61 74 74            setatt
1000: 72 28 78 47 72 69 64 4d 6f 64 65 6c 2c 20 6b 2c  r(xGridModel, k,
1010: 20 77 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66   w).        self
1020: 2e 78 44 69 61 6c 6f 67 2e 69 6e 73 65 72 74 42  .xDialog.insertB
1030: 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 78 47 72 69  yName(name, xGri
1040: 64 4d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20  dModel).        
1050: 72 65 74 75 72 6e 20 78 47 72 69 64 4d 6f 64 65  return xGridMode
1060: 6c 0a 0a 20 20 20 20 64 65 66 20 72 75 6e 20 28  l..    def run (
1070: 73 65 6c 66 2c 20 73 4c 61 6e 67 29 3a 0a 20 20  self, sLang):.  
1080: 20 20 20 20 20 20 23 20 75 69 20 6c 61 6e 67 0a        # ui lang.
1090: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 4c 61          self.sLa
10a0: 6e 67 20 3d 20 73 4c 61 6e 67 0a 20 20 20 20 20  ng = sLang.     
10b0: 20 20 20 73 65 6c 66 2e 64 55 49 20 3d 20 6c 78     self.dUI = lx
10c0: 65 5f 73 74 72 69 6e 67 73 2e 67 65 74 55 49 28  e_strings.getUI(
10d0: 73 4c 61 6e 67 29 0a 0a 20 20 20 20 20 20 20 20  sLang)..        
10e0: 23 20 64 69 61 6c 6f 67 0a 20 20 20 20 20 20 20  # dialog.       
10f0: 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 20 3d 20   self.xDialog = 
1100: 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65 61  self.xSvMgr.crea
1110: 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43 6f  teInstanceWithCo
1120: 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e 73  ntext('com.sun.s
1130: 74 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74 72  tar.awt.UnoContr
1140: 6f 6c 44 69 61 6c 6f 67 4d 6f 64 65 6c 27 2c 20  olDialogModel', 
1150: 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20  self.ctx).      
1160: 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 57    self.xDialog.W
1170: 69 64 74 68 20 3d 20 35 35 30 0a 20 20 20 20 20  idth = 550.     
1180: 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e     self.xDialog.
1190: 48 65 69 67 68 74 20 3d 20 32 39 30 0a 20 20 20  Height = 290.   
11a0: 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f       self.xDialo
11b0: 67 2e 54 69 74 6c 65 20 3d 20 73 65 6c 66 2e 64  g.Title = self.d
11c0: 55 49 2e 67 65 74 28 27 74 69 74 6c 65 27 2c 20  UI.get('title', 
11d0: 22 23 74 69 74 6c 65 23 22 29 0a 20 20 20 20 20  "#title#").     
11e0: 20 20 20 78 57 69 6e 64 6f 77 53 69 7a 65 20 3d     xWindowSize =
11f0: 20 68 65 6c 70 65 72 73 2e 67 65 74 57 69 6e 64   helpers.getWind
1200: 6f 77 53 69 7a 65 28 29 0a 20 20 20 20 20 20 20  owSize().       
1210: 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 50 6f   self.xDialog.Po
1220: 73 69 74 69 6f 6e 58 20 3d 20 69 6e 74 28 28 78  sitionX = int((x
1230: 57 69 6e 64 6f 77 53 69 7a 65 2e 57 69 64 74 68  WindowSize.Width
1240: 20 2f 20 32 29 20 2d 20 28 73 65 6c 66 2e 78 44   / 2) - (self.xD
1250: 69 61 6c 6f 67 2e 57 69 64 74 68 20 2f 20 32 29  ialog.Width / 2)
1260: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
1270: 44 69 61 6c 6f 67 2e 50 6f 73 69 74 69 6f 6e 59  Dialog.PositionY
1280: 20 3d 20 69 6e 74 28 28 78 57 69 6e 64 6f 77 53   = int((xWindowS
1290: 69 7a 65 2e 48 65 69 67 68 74 20 2f 20 32 29 20  ize.Height / 2) 
12a0: 2d 20 28 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e  - (self.xDialog.
12b0: 48 65 69 67 68 74 20 2f 20 32 29 29 0a 0a 20 20  Height / 2))..  
12c0: 20 20 20 20 20 20 23 20 66 6f 6e 74 73 0a 20 20        # fonts.  
12d0: 20 20 20 20 20 20 78 46 44 54 69 74 6c 65 20 3d        xFDTitle =
12e0: 20 75 6e 6f 2e 63 72 65 61 74 65 55 6e 6f 53 74   uno.createUnoSt
12f0: 72 75 63 74 28 22 63 6f 6d 2e 73 75 6e 2e 73 74  ruct("com.sun.st
1300: 61 72 2e 61 77 74 2e 46 6f 6e 74 44 65 73 63 72  ar.awt.FontDescr
1310: 69 70 74 6f 72 22 29 0a 20 20 20 20 20 20 20 20  iptor").        
1320: 78 46 44 54 69 74 6c 65 2e 48 65 69 67 68 74 20  xFDTitle.Height 
1330: 3d 20 39 0a 20 20 20 20 20 20 20 20 78 46 44 54  = 9.        xFDT
1340: 69 74 6c 65 2e 57 65 69 67 68 74 20 3d 20 75 6e  itle.Weight = un
1350: 6f 2e 67 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e  o.getConstantByN
1360: 61 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61  ame("com.sun.sta
1370: 72 2e 61 77 74 2e 46 6f 6e 74 57 65 69 67 68 74  r.awt.FontWeight
1380: 2e 42 4f 4c 44 22 29 0a 20 20 20 20 20 20 20 20  .BOLD").        
1390: 78 46 44 54 69 74 6c 65 2e 4e 61 6d 65 20 3d 20  xFDTitle.Name = 
13a0: 22 56 65 72 64 61 6e 61 22 0a 0a 20 20 20 20 20  "Verdana"..     
13b0: 20 20 20 78 46 44 53 75 62 54 69 74 6c 65 20 3d     xFDSubTitle =
13c0: 20 75 6e 6f 2e 63 72 65 61 74 65 55 6e 6f 53 74   uno.createUnoSt
13d0: 72 75 63 74 28 22 63 6f 6d 2e 73 75 6e 2e 73 74  ruct("com.sun.st
13e0: 61 72 2e 61 77 74 2e 46 6f 6e 74 44 65 73 63 72  ar.awt.FontDescr
13f0: 69 70 74 6f 72 22 29 0a 20 20 20 20 20 20 20 20  iptor").        
1400: 78 46 44 53 75 62 54 69 74 6c 65 2e 48 65 69 67  xFDSubTitle.Heig
1410: 68 74 20 3d 20 38 0a 20 20 20 20 20 20 20 20 78  ht = 8.        x
1420: 46 44 53 75 62 54 69 74 6c 65 2e 57 65 69 67 68  FDSubTitle.Weigh
1430: 74 20 3d 20 75 6e 6f 2e 67 65 74 43 6f 6e 73 74  t = uno.getConst
1440: 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73  antByName("com.s
1450: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74  un.star.awt.Font
1460: 57 65 69 67 68 74 2e 42 4f 4c 44 22 29 0a 20 20  Weight.BOLD").  
1470: 20 20 20 20 20 20 78 46 44 53 75 62 54 69 74 6c        xFDSubTitl
1480: 65 2e 4e 61 6d 65 20 3d 20 22 56 65 72 64 61 6e  e.Name = "Verdan
1490: 61 22 0a 0a 20 20 20 20 20 20 20 20 23 20 77 69  a"..        # wi
14a0: 64 67 65 74 0a 20 20 20 20 20 20 20 20 6e 58 31  dget.        nX1
14b0: 20 3d 20 35 0a 20 20 20 20 20 20 20 20 6e 58 32   = 5.        nX2
14c0: 20 3d 20 31 35 0a 0a 20 20 20 20 20 20 20 20 6e   = 15..        n
14d0: 59 30 20 3d 20 35 0a 20 20 20 20 20 20 20 20 6e  Y0 = 5.        n
14e0: 59 31 20 3d 20 6e 59 30 20 2b 20 31 33 0a 20 20  Y1 = nY0 + 13.  
14f0: 20 20 20 20 20 20 6e 59 32 20 3d 20 6e 59 31 20        nY2 = nY1 
1500: 2b 20 32 35 20 23 20 6e 6f 6d 20 63 6f 6d 6d 75  + 25 # nom commu
1510: 6e 0a 20 20 20 20 20 20 20 20 6e 59 33 20 3d 20  n.        nY3 = 
1520: 6e 59 32 20 2b 20 39 35 20 23 20 6e 6f 6d 20 70  nY2 + 95 # nom p
1530: 72 6f 70 72 65 0a 20 20 20 20 20 20 20 20 6e 59  ropre.        nY
1540: 34 20 3d 20 6e 59 33 20 2b 20 34 35 20 23 20 76  4 = nY3 + 45 # v
1550: 65 72 62 65 0a 20 20 20 20 20 20 20 20 6e 59 35  erbe.        nY5
1560: 20 3d 20 6e 59 34 20 2b 20 36 38 20 23 20 61 64   = nY4 + 68 # ad
1570: 76 65 72 62 65 0a 20 20 20 20 20 20 20 20 6e 59  verbe.        nY
1580: 36 20 3d 20 6e 59 35 20 2b 20 31 33 20 23 20 61  6 = nY5 + 13 # a
1590: 75 74 72 65 0a 0a 20 20 20 20 20 20 20 20 6e 58  utre..        nX
15a0: 42 20 3d 20 6e 58 31 20 2b 20 31 37 35 0a 20 20  B = nX1 + 175.  
15b0: 20 20 20 20 20 20 6e 58 43 20 3d 20 6e 58 42 20        nXC = nXB 
15c0: 2b 20 31 36 35 0a 0a 20 20 20 20 20 20 20 20 6e  + 165..        n
15d0: 48 65 69 67 68 74 20 3d 20 31 30 0a 0a 20 20 20  Height = 10..   
15e0: 20 20 20 20 20 23 23 23 23 20 44 69 63 74 69 6f       #### Dictio
15f0: 6e 61 72 79 20 73 65 63 74 69 6f 6e 0a 20 20 20  nary section.   
1600: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
1610: 64 67 65 74 28 22 64 69 63 74 69 6f 6e 61 72 79  dget("dictionary
1620: 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65  _section", 'Fixe
1630: 64 4c 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 30  dLine', nX1, nY0
1640: 2c 20 31 37 30 2c 20 6e 48 65 69 67 68 74 2c 20  , 170, nHeight, 
1650: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
1660: 2e 67 65 74 28 22 64 69 63 74 69 6f 6e 61 72 79  .get("dictionary
1670: 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72 72  _section", "#err
1680: 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  "), FontDescript
1690: 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 2c 20 54  or = xFDTitle, T
16a0: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30  extColor = 0x000
16b0: 30 38 38 29 0a 20 20 20 20 20 20 20 20 73 65 6c  088).        sel
16c0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 73 61  f._addWidget("sa
16d0: 76 65 5f 64 61 74 65 5f 6c 61 62 65 6c 22 2c 20  ve_date_label", 
16e0: 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58 42  'FixedText', nXB
16f0: 2c 20 6e 59 30 2b 32 2c 20 38 30 2c 20 6e 48 65  , nY0+2, 80, nHe
1700: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
1710: 6c 66 2e 64 55 49 2e 67 65 74 28 22 73 61 76 65  lf.dUI.get("save
1720: 5f 64 61 74 65 5f 6c 61 62 65 6c 22 2c 20 22 23  _date_label", "#
1730: 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72  err"), FontDescr
1740: 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69  iptor = xFDSubTi
1750: 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d  tle, TextColor =
1760: 20 30 78 30 30 30 30 38 38 29 0a 20 20 20 20 20   0x000088).     
1770: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
1780: 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69  et("num_of_entri
1790: 65 73 5f 6c 61 62 65 6c 32 22 2c 20 27 46 69 78  es_label2", 'Fix
17a0: 65 64 54 65 78 74 27 2c 20 6e 58 43 2c 20 6e 59  edText', nXC, nY
17b0: 30 2b 32 2c 20 36 35 2c 20 6e 48 65 69 67 68 74  0+2, 65, nHeight
17c0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
17d0: 55 49 2e 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65  UI.get("num_of_e
17e0: 6e 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22  ntries_label", "
17f0: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
1800: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
1810: 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20  itle, TextColor 
1820: 3d 20 30 78 30 30 30 30 38 38 29 0a 20 20 20 20  = 0x000088).    
1830: 20 20 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69      self.xDateDi
1840: 63 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  c = self._addWid
1850: 67 65 74 28 22 73 61 76 65 5f 64 61 74 65 22 2c  get("save_date",
1860: 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58   'FixedText', nX
1870: 42 2b 38 35 2c 20 6e 59 30 2b 32 2c 20 37 35 2c  B+85, nY0+2, 75,
1880: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
1890: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
18a0: 76 6f 69 64 22 2c 20 22 23 65 72 72 22 29 2c 20  void", "#err"), 
18b0: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
18c0: 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65   xFDSubTitle, Te
18d0: 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30  xtColor = 0x0000
18e0: 38 38 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  88).        self
18f0: 2e 78 4e 75 6d 44 69 63 20 3d 20 73 65 6c 66 2e  .xNumDic = self.
1900: 5f 61 64 64 57 69 64 67 65 74 28 22 6e 75 6d 5f  _addWidget("num_
1910: 6f 66 5f 65 6e 74 72 69 65 73 32 22 2c 20 27 46  of_entries2", 'F
1920: 69 78 65 64 54 65 78 74 27 2c 20 6e 58 43 2b 37  ixedText', nXC+7
1930: 30 2c 20 6e 59 30 2b 32 2c 20 34 35 2c 20 6e 48  0, nY0+2, 45, nH
1940: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 22  eight, Label = "
1950: 30 22 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  0", FontDescript
1960: 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65  or = xFDSubTitle
1970: 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78  , TextColor = 0x
1980: 30 30 30 30 38 38 29 0a 20 20 20 20 20 20 20 20  000088).        
1990: 73 65 6c 66 2e 78 49 6d 70 6f 72 74 20 3d 20 73  self.xImport = s
19a0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
19b0: 69 6d 70 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20  import_button', 
19c0: 27 42 75 74 74 6f 6e 27 2c 20 73 65 6c 66 2e 78  'Button', self.x
19d0: 44 69 61 6c 6f 67 2e 57 69 64 74 68 2d 39 30 2c  Dialog.Width-90,
19e0: 20 6e 59 30 2c 20 34 30 2c 20 31 32 2c 20 4c 61   nY0, 40, 12, La
19f0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1a00: 65 74 28 27 69 6d 70 6f 72 74 5f 62 75 74 74 6f  et('import_butto
1a10: 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n', "#err"), Fon
1a20: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
1a30: 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43  DSubTitle, TextC
1a40: 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30 35 35 29  olor = 0x000055)
1a50: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 45  .        self.xE
1a60: 78 70 6f 72 74 20 3d 20 73 65 6c 66 2e 5f 61 64  xport = self._ad
1a70: 64 57 69 64 67 65 74 28 27 65 78 70 6f 72 74 5f  dWidget('export_
1a80: 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e  button', 'Button
1a90: 27 2c 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e  ', self.xDialog.
1aa0: 57 69 64 74 68 2d 34 35 2c 20 6e 59 30 2c 20 34  Width-45, nY0, 4
1ab0: 30 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d 20 73  0, 12, Label = s
1ac0: 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 65 78 70  elf.dUI.get('exp
1ad0: 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 22 23 65  ort_button', "#e
1ae0: 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69  rr"), FontDescri
1af0: 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74  ptor = xFDSubTit
1b00: 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20  le, TextColor = 
1b10: 30 78 30 30 30 30 35 35 29 0a 0a 20 20 20 20 20  0x000055)..     
1b20: 20 20 20 23 23 23 23 20 41 64 64 20 77 6f 72 64     #### Add word
1b30: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
1b40: 64 64 57 69 64 67 65 74 28 22 61 64 64 5f 73 65  ddWidget("add_se
1b50: 63 74 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c 69  ction", 'FixedLi
1b60: 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 31 2c 20 31  ne', nX1, nY1, 1
1b70: 37 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  70, nHeight, Lab
1b80: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
1b90: 74 28 22 61 64 64 5f 73 65 63 74 69 6f 6e 22 2c  t("add_section",
1ba0: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
1bb0: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54 69  scriptor = xFDTi
1bc0: 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c  tle).        sel
1bd0: 66 2e 78 4c 65 6d 6d 61 20 3d 20 73 65 6c 66 2e  f.xLemma = self.
1be0: 5f 61 64 64 57 69 64 67 65 74 28 27 6c 65 6d 6d  _addWidget('lemm
1bf0: 61 27 2c 20 27 45 64 69 74 27 2c 20 6e 58 31 2c  a', 'Edit', nX1,
1c00: 20 6e 59 31 2b 31 30 2c 20 31 30 30 2c 20 31 34   nY1+10, 100, 14
1c10: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
1c20: 20 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20   = xFDTitle).   
1c30: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
1c40: 64 67 65 74 28 27 73 65 61 72 63 68 5f 62 75 74  dget('search_but
1c50: 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20  ton', 'Button', 
1c60: 6e 58 31 2b 31 30 35 2c 20 6e 59 31 2b 31 31 2c  nX1+105, nY1+11,
1c70: 20 34 35 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d   45, 12, Label =
1c80: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 73   self.dUI.get('s
1c90: 65 61 72 63 68 5f 62 75 74 74 6f 6e 27 2c 20 22  earch_button', "
1ca0: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
1cb0: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
1cc0: 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20  itle, TextColor 
1cd0: 3d 20 30 78 35 35 35 35 30 30 29 0a 20 20 20 20  = 0x555500).    
1ce0: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
1cf0: 67 65 74 28 27 69 6e 66 6f 72 6d 61 74 69 6f 6e  get('information
1d00: 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f  _button', 'Butto
1d10: 6e 27 2c 20 6e 58 31 2b 31 35 35 2c 20 6e 59 31  n', nX1+155, nY1
1d20: 2b 31 31 2c 20 31 35 2c 20 31 32 2c 20 4c 61 62  +11, 15, 12, Lab
1d30: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
1d40: 74 28 27 69 6e 66 6f 72 6d 61 74 69 6f 6e 5f 62  t('information_b
1d50: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
1d60: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1d70: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54  = xFDSubTitle, T
1d80: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 35 35 35  extColor = 0x555
1d90: 35 30 30 29 0a 0a 20 20 20 20 20 20 20 20 23 20  500)..        # 
1da0: 52 61 64 69 6f 20 62 75 74 74 6f 6e 73 3a 20 6d  Radio buttons: m
1db0: 61 69 6e 20 50 4f 53 20 74 61 67 0a 20 20 20 20  ain POS tag.    
1dc0: 20 20 20 20 23 20 4e 6f 74 65 3a 20 74 68 65 20      # Note: the 
1dd0: 6f 6e 6c 79 20 77 61 79 20 74 6f 20 67 72 6f 75  only way to grou
1de0: 70 20 52 61 64 69 6f 42 75 74 74 6f 6e 73 20 69  p RadioButtons i
1df0: 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 6d  s to create them
1e00: 20 73 75 63 63 65 73 73 69 76 65 6c 79 0a 20 20   successively.  
1e10: 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 41 20 3d        self.xNA =
1e20: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
1e30: 28 27 6e 6f 6d 5f 61 64 6a 27 2c 20 27 52 61 64  ('nom_adj', 'Rad
1e40: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20  ioButton', nX1, 
1e50: 6e 59 32 2b 31 32 2c 20 36 30 2c 20 6e 48 65 69  nY2+12, 60, nHei
1e60: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
1e70: 66 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d 5f 61  f.dUI.get("nom_a
1e80: 64 6a 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65  dj", "#err"), He
1e90: 6c 70 54 65 78 74 20 3d 20 22 3a 4e 3a 41 22 29  lpText = ":N:A")
1ea0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e  .        self.xN
1eb0: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
1ec0: 65 74 28 27 6e 6f 6d 27 2c 20 27 52 61 64 69 6f  et('nom', 'Radio
1ed0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
1ee0: 32 2b 32 32 2c 20 36 30 2c 20 6e 48 65 69 67 68  2+22, 60, nHeigh
1ef0: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
1f00: 64 55 49 2e 67 65 74 28 22 6e 6f 6d 22 2c 20 22  dUI.get("nom", "
1f10: 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74  #err"), HelpText
1f20: 20 3d 20 22 3a 4e 22 29 0a 20 20 20 20 20 20 20   = ":N").       
1f30: 20 73 65 6c 66 2e 78 41 20 3d 20 73 65 6c 66 2e   self.xA = self.
1f40: 5f 61 64 64 57 69 64 67 65 74 28 27 61 64 6a 27  _addWidget('adj'
1f50: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
1f60: 20 6e 58 31 2c 20 6e 59 32 2b 33 32 2c 20 36 30   nX1, nY2+32, 60
1f70: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
1f80: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
1f90: 22 61 64 6a 22 2c 20 22 23 65 72 72 22 29 2c 20  "adj", "#err"), 
1fa0: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 41 22 29  HelpText = ":A")
1fb0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d  .        self.xM
1fc0: 31 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  1 = self._addWid
1fd0: 67 65 74 28 27 4d 31 27 2c 20 27 52 61 64 69 6f  get('M1', 'Radio
1fe0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
1ff0: 33 2b 31 32 2c 20 36 30 2c 20 6e 48 65 69 67 68  3+12, 60, nHeigh
2000: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
2010: 64 55 49 2e 67 65 74 28 22 4d 31 22 2c 20 22 23  dUI.get("M1", "#
2020: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
2030: 3d 20 22 3a 4d 31 22 29 0a 20 20 20 20 20 20 20  = ":M1").       
2040: 20 73 65 6c 66 2e 78 4d 32 20 3d 20 73 65 6c 66   self.xM2 = self
2050: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 32 27  ._addWidget('M2'
2060: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2070: 20 6e 58 31 2c 20 6e 59 33 2b 32 32 2c 20 36 30   nX1, nY3+22, 60
2080: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2090: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
20a0: 22 4d 32 22 2c 20 22 23 65 72 72 22 29 2c 20 48  "M2", "#err"), H
20b0: 65 6c 70 54 65 78 74 20 3d 20 22 3a 4d 32 22 29  elpText = ":M2")
20c0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d  .        self.xM
20d0: 50 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  P = self._addWid
20e0: 67 65 74 28 27 4d 50 27 2c 20 27 52 61 64 69 6f  get('MP', 'Radio
20f0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
2100: 33 2b 33 32 2c 20 36 30 2c 20 6e 48 65 69 67 68  3+32, 60, nHeigh
2110: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
2120: 64 55 49 2e 67 65 74 28 22 4d 50 22 2c 20 22 23  dUI.get("MP", "#
2130: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
2140: 3d 20 22 3a 4d 50 22 29 0a 20 20 20 20 20 20 20  = ":MP").       
2150: 20 73 65 6c 66 2e 78 56 20 3d 20 73 65 6c 66 2e   self.xV = self.
2160: 5f 61 64 64 57 69 64 67 65 74 28 27 76 65 72 62  _addWidget('verb
2170: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
2180: 2c 20 6e 58 31 2c 20 6e 59 34 2b 32 2c 20 33 35  , nX1, nY4+2, 35
2190: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
21a0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
21b0: 22 76 65 72 62 22 2c 20 22 23 65 72 72 22 29 2c  "verb", "#err"),
21c0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
21d0: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 48  = xFDSubTitle, H
21e0: 65 6c 70 54 65 78 74 20 3d 20 22 3a 56 22 29 0a  elpText = ":V").
21f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 57 20          self.xW 
2200: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2210: 74 28 27 61 64 76 27 2c 20 27 52 61 64 69 6f 42  t('adv', 'RadioB
2220: 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59 35  utton', nX1, nY5
2230: 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67 68 74 2c  +2, 35, nHeight,
2240: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
2250: 49 2e 67 65 74 28 22 61 64 76 65 72 62 22 2c 20  I.get("adverb", 
2260: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
2270: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
2280: 54 69 74 6c 65 2c 20 48 65 6c 70 54 65 78 74 20  Title, HelpText 
2290: 3d 20 22 3a 57 22 29 0a 20 20 20 20 20 20 20 20  = ":W").        
22a0: 73 65 6c 66 2e 78 58 20 3d 20 73 65 6c 66 2e 5f  self.xX = self._
22b0: 61 64 64 57 69 64 67 65 74 28 27 6f 74 68 65 72  addWidget('other
22c0: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
22d0: 2c 20 6e 58 31 2c 20 6e 59 36 2b 32 2c 20 33 35  , nX1, nY6+2, 35
22e0: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
22f0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2300: 22 6f 74 68 65 72 22 2c 20 22 23 65 72 72 22 29  "other", "#err")
2310: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
2320: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20   = xFDSubTitle, 
2330: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 58 22 29  HelpText = ":X")
2340: 0a 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 2c  ..        # Nom,
2350: 20 61 64 6a 65 63 74 69 66 0a 20 20 20 20 20 20   adjectif.      
2360: 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65    self._addWidge
2370: 74 28 22 66 6c 5f 6e 6f 6d 5f 61 64 6a 22 2c 20  t("fl_nom_adj", 
2380: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
2390: 2c 20 6e 59 32 2c 20 31 37 30 2c 20 6e 48 65 69  , nY2, 170, nHei
23a0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
23b0: 66 2e 64 55 49 2e 67 65 74 28 22 63 6f 6d 6d 6f  f.dUI.get("commo
23c0: 6e 5f 6e 61 6d 65 22 2c 20 22 23 65 72 72 22 29  n_name", "#err")
23d0: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
23e0: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a   = xFDSubTitle).
23f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65          self.xSe
2400: 70 69 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  pi = self._addWi
2410: 64 67 65 74 28 27 53 65 70 69 27 2c 20 27 52 61  dget('Sepi', 'Ra
2420: 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b  dioButton', nX1+
2430: 36 35 2c 20 6e 59 32 2b 31 32 2c 20 35 30 2c 20  65, nY2+12, 50, 
2440: 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d  nHeight, Label =
2450: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 65   self.dUI.get("e
2460: 70 69 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65  pi", "#err"), He
2470: 6c 70 54 65 78 74 20 3d 20 22 3a 65 22 29 0a 20  lpText = ":e"). 
2480: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 6d 61         self.xSma
2490: 73 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  s = self._addWid
24a0: 67 65 74 28 27 53 6d 61 73 27 2c 20 27 52 61 64  get('Smas', 'Rad
24b0: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36  ioButton', nX1+6
24c0: 35 2c 20 6e 59 32 2b 32 32 2c 20 35 30 2c 20 6e  5, nY2+22, 50, n
24d0: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
24e0: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6d 61  self.dUI.get("ma
24f0: 73 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  s", "#err"), Hel
2500: 70 54 65 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20  pText = ":m").  
2510: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d        self.xSfem
2520: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2530: 65 74 28 27 53 66 65 6d 27 2c 20 27 52 61 64 69  et('Sfem', 'Radi
2540: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35  oButton', nX1+65
2550: 2c 20 6e 59 32 2b 33 32 2c 20 35 30 2c 20 6e 48  , nY2+32, 50, nH
2560: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2570: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 66 65 6d  elf.dUI.get("fem
2580: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2590: 54 65 78 74 20 3d 20 22 3a 66 22 29 0a 20 20 20  Text = ":f").   
25a0: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
25b0: 64 67 65 74 28 22 66 6c 5f 73 65 70 31 22 2c 20  dget("fl_sep1", 
25c0: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
25d0: 2c 20 6e 59 32 2c 20 31 2c 20 6e 48 65 69 67 68  , nY2, 1, nHeigh
25e0: 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  t).        self.
25f0: 78 53 73 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  xSs = self._addW
2600: 69 64 67 65 74 28 27 53 73 27 2c 20 27 52 61 64  idget('Ss', 'Rad
2610: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31  ioButton', nX1+1
2620: 31 35 2c 20 6e 59 32 2b 31 32 2c 20 35 30 2c 20  15, nY2+12, 50, 
2630: 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d  nHeight, Label =
2640: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 2d   self.dUI.get("-
2650: 73 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  s", "#err"), Hel
2660: 70 54 65 78 74 20 3d 20 22 c2 b7 73 22 29 0a 20  pText = "..s"). 
2670: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 78 20         self.xSx 
2680: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2690: 74 28 27 53 78 27 2c 20 27 52 61 64 69 6f 42 75  t('Sx', 'RadioBu
26a0: 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 31 35 2c 20  tton', nX1+115, 
26b0: 6e 59 32 2b 32 32 2c 20 35 30 2c 20 6e 48 65 69  nY2+22, 50, nHei
26c0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
26d0: 66 2e 64 55 49 2e 67 65 74 28 22 2d 78 22 2c 20  f.dUI.get("-x", 
26e0: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
26f0: 74 20 3d 20 22 c2 b7 78 22 29 0a 20 20 20 20 20  t = "..x").     
2700: 20 20 20 73 65 6c 66 2e 78 53 69 6e 76 20 3d 20     self.xSinv = 
2710: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
2720: 27 53 69 6e 76 27 2c 20 27 52 61 64 69 6f 42 75  'Sinv', 'RadioBu
2730: 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 31 35 2c 20  tton', nX1+115, 
2740: 6e 59 32 2b 33 32 2c 20 35 30 2c 20 6e 48 65 69  nY2+32, 50, nHei
2750: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
2760: 66 2e 64 55 49 2e 67 65 74 28 22 69 6e 76 22 2c  f.dUI.get("inv",
2770: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
2780: 78 74 20 3d 20 22 3a 69 22 29 0a 0a 20 20 20 20  xt = ":i")..    
2790: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
27a0: 67 65 74 28 22 61 6c 74 5f 6c 65 6d 6d 61 5f 6c  get("alt_lemma_l
27b0: 61 62 65 6c 22 2c 20 27 46 69 78 65 64 4c 69 6e  abel", 'FixedLin
27c0: 65 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b  e', nX1+10, nY2+
27d0: 34 32 2c 20 31 36 30 2c 20 6e 48 65 69 67 68 74  42, 160, nHeight
27e0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
27f0: 55 49 2e 67 65 74 28 22 61 6c 74 5f 6c 65 6d 6d  UI.get("alt_lemm
2800: 61 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20  a", "#err")).   
2810: 20 20 20 20 20 73 65 6c 66 2e 78 41 6c 74 4c 65       self.xAltLe
2820: 6d 6d 61 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  mma = self._addW
2830: 69 64 67 65 74 28 27 61 6c 74 5f 6c 65 6d 6d 61  idget('alt_lemma
2840: 27 2c 20 27 45 64 69 74 27 2c 20 6e 58 31 2b 31  ', 'Edit', nX1+1
2850: 30 2c 20 6e 59 32 2b 35 32 2c 20 31 31 30 2c 20  0, nY2+52, 110, 
2860: 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20 20 20  nHeight).       
2870: 20 73 65 6c 66 2e 78 4e 41 32 20 3d 20 73 65 6c   self.xNA2 = sel
2880: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6e 6f  f._addWidget('no
2890: 6d 5f 61 64 6a 32 27 2c 20 27 52 61 64 69 6f 42  m_adj2', 'RadioB
28a0: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30 2c 20  utton', nX1+10, 
28b0: 6e 59 32 2b 36 35 2c 20 36 30 2c 20 6e 48 65 69  nY2+65, 60, nHei
28c0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
28d0: 66 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d 5f 61  f.dUI.get("nom_a
28e0: 64 6a 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65  dj", "#err"), He
28f0: 6c 70 54 65 78 74 20 3d 20 22 3a 4e 3a 41 22 29  lpText = ":N:A")
2900: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e  .        self.xN
2910: 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  2 = self._addWid
2920: 67 65 74 28 27 6e 6f 6d 32 27 2c 20 27 52 61 64  get('nom2', 'Rad
2930: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31  ioButton', nX1+1
2940: 30 2c 20 6e 59 32 2b 37 35 2c 20 36 30 2c 20 6e  0, nY2+75, 60, n
2950: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
2960: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6e 6f  self.dUI.get("no
2970: 6d 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  m", "#err"), Hel
2980: 70 54 65 78 74 20 3d 20 22 3a 4e 22 29 0a 20 20  pText = ":N").  
2990: 20 20 20 20 20 20 73 65 6c 66 2e 78 41 32 20 3d        self.xA2 =
29a0: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
29b0: 28 27 61 64 6a 32 27 2c 20 27 52 61 64 69 6f 42  ('adj2', 'RadioB
29c0: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30 2c 20  utton', nX1+10, 
29d0: 6e 59 32 2b 38 35 2c 20 36 30 2c 20 6e 48 65 69  nY2+85, 60, nHei
29e0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
29f0: 66 2e 64 55 49 2e 67 65 74 28 22 61 64 6a 22 2c  f.dUI.get("adj",
2a00: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
2a10: 78 74 20 3d 20 22 3a 41 22 29 0a 20 20 20 20 20  xt = ":A").     
2a20: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
2a30: 65 74 28 22 66 6c 5f 73 65 70 32 22 2c 20 27 46  et("fl_sep2", 'F
2a40: 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c 20  ixedLine', nX1, 
2a50: 6e 59 32 2c 20 31 2c 20 6e 48 65 69 67 68 74 29  nY2, 1, nHeight)
2a60: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
2a70: 65 70 69 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64  epi2 = self._add
2a80: 57 69 64 67 65 74 28 27 53 65 70 69 32 27 2c 20  Widget('Sepi2', 
2a90: 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e  'RadioButton', n
2aa0: 58 31 2b 37 30 2c 20 6e 59 32 2b 36 35 2c 20 35  X1+70, nY2+65, 5
2ab0: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
2ac0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
2ad0: 28 22 65 70 69 22 2c 20 22 23 65 72 72 22 29 2c  ("epi", "#err"),
2ae0: 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 65 22   HelpText = ":e"
2af0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
2b00: 53 6d 61 73 32 20 3d 20 73 65 6c 66 2e 5f 61 64  Smas2 = self._ad
2b10: 64 57 69 64 67 65 74 28 27 53 6d 61 73 32 27 2c  dWidget('Smas2',
2b20: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
2b30: 6e 58 31 2b 37 30 2c 20 6e 59 32 2b 37 35 2c 20  nX1+70, nY2+75, 
2b40: 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  50, nHeight, Lab
2b50: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
2b60: 74 28 22 6d 61 73 22 2c 20 22 23 65 72 72 22 29  t("mas", "#err")
2b70: 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 6d  , HelpText = ":m
2b80: 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ").        self.
2b90: 78 53 66 65 6d 32 20 3d 20 73 65 6c 66 2e 5f 61  xSfem2 = self._a
2ba0: 64 64 57 69 64 67 65 74 28 27 53 66 65 6d 32 27  ddWidget('Sfem2'
2bb0: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2bc0: 20 6e 58 31 2b 37 30 2c 20 6e 59 32 2b 38 35 2c   nX1+70, nY2+85,
2bd0: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
2be0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2bf0: 65 74 28 22 66 65 6d 22 2c 20 22 23 65 72 72 22  et("fem", "#err"
2c00: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
2c10: 66 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  f").        self
2c20: 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f  ._addWidget("fl_
2c30: 73 65 70 33 22 2c 20 27 46 69 78 65 64 4c 69 6e  sep3", 'FixedLin
2c40: 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20 31 2c  e', nX1, nY2, 1,
2c50: 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20 20   nHeight).      
2c60: 20 20 73 65 6c 66 2e 78 53 73 32 20 3d 20 73 65    self.xSs2 = se
2c70: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53  lf._addWidget('S
2c80: 73 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  s2', 'RadioButto
2c90: 6e 27 2c 20 6e 58 31 2b 31 32 30 2c 20 6e 59 32  n', nX1+120, nY2
2ca0: 2b 36 35 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +65, 50, nHeight
2cb0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
2cc0: 55 49 2e 67 65 74 28 22 2d 73 22 2c 20 22 23 65  UI.get("-s", "#e
2cd0: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
2ce0: 20 22 c2 b7 73 22 29 0a 20 20 20 20 20 20 20 20   "..s").        
2cf0: 73 65 6c 66 2e 78 53 78 32 20 3d 20 73 65 6c 66  self.xSx2 = self
2d00: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 78 32  ._addWidget('Sx2
2d10: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
2d20: 2c 20 6e 58 31 2b 31 32 30 2c 20 6e 59 32 2b 37  , nX1+120, nY2+7
2d30: 35 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  5, 50, nHeight, 
2d40: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
2d50: 2e 67 65 74 28 22 2d 78 22 2c 20 22 23 65 72 72  .get("-x", "#err
2d60: 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22  "), HelpText = "
2d70: c2 b7 78 22 29 0a 20 20 20 20 20 20 20 20 73 65  ..x").        se
2d80: 6c 66 2e 78 53 69 6e 76 32 20 3d 20 73 65 6c 66  lf.xSinv2 = self
2d90: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 69 6e  ._addWidget('Sin
2da0: 76 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  v2', 'RadioButto
2db0: 6e 27 2c 20 6e 58 31 2b 31 32 30 2c 20 6e 59 32  n', nX1+120, nY2
2dc0: 2b 38 35 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +85, 50, nHeight
2dd0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
2de0: 55 49 2e 67 65 74 28 22 69 6e 76 22 2c 20 22 23  UI.get("inv", "#
2df0: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
2e00: 3d 20 22 3a 69 22 29 0a 0a 20 20 20 20 20 20 20  = ":i")..       
2e10: 20 23 20 4e 6f 6d 20 70 72 6f 70 72 65 0a 20 20   # Nom propre.  
2e20: 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57        self._addW
2e30: 69 64 67 65 74 28 22 66 6c 5f 4d 22 2c 20 27 46  idget("fl_M", 'F
2e40: 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c 20  ixedLine', nX1, 
2e50: 6e 59 33 2c 20 31 37 30 2c 20 6e 48 65 69 67 68  nY3, 170, nHeigh
2e60: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
2e70: 64 55 49 2e 67 65 74 28 22 70 72 6f 70 65 72 5f  dUI.get("proper_
2e80: 6e 61 6d 65 22 2c 20 22 23 65 72 72 22 29 2c 20  name", "#err"), 
2e90: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
2ea0: 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20   xFDSubTitle).  
2eb0: 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 65 70 69        self.xMepi
2ec0: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2ed0: 65 74 28 27 4d 65 70 69 27 2c 20 27 52 61 64 69  et('Mepi', 'Radi
2ee0: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35  oButton', nX1+65
2ef0: 2c 20 6e 59 33 2b 31 32 2c 20 35 30 2c 20 6e 48  , nY3+12, 50, nH
2f00: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2f10: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 65 70 69  elf.dUI.get("epi
2f20: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2f30: 54 65 78 74 20 3d 20 22 3a 65 22 29 0a 20 20 20  Text = ":e").   
2f40: 20 20 20 20 20 73 65 6c 66 2e 78 4d 6d 61 73 20       self.xMmas 
2f50: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2f60: 74 28 27 4d 6d 61 73 27 2c 20 27 52 61 64 69 6f  t('Mmas', 'Radio
2f70: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c  Button', nX1+65,
2f80: 20 6e 59 33 2b 32 32 2c 20 35 30 2c 20 6e 48 65   nY3+22, 50, nHe
2f90: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2fa0: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6d 61 73 22  lf.dUI.get("mas"
2fb0: 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54  , "#err"), HelpT
2fc0: 65 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20 20 20  ext = ":m").    
2fd0: 20 20 20 20 73 65 6c 66 2e 78 4d 66 65 6d 20 3d      self.xMfem =
2fe0: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2ff0: 28 27 4d 66 65 6d 27 2c 20 27 52 61 64 69 6f 42  ('Mfem', 'RadioB
3000: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c 20  utton', nX1+65, 
3010: 6e 59 33 2b 33 32 2c 20 35 30 2c 20 6e 48 65 69  nY3+32, 50, nHei
3020: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
3030: 66 2e 64 55 49 2e 67 65 74 28 22 66 65 6d 22 2c  f.dUI.get("fem",
3040: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
3050: 78 74 20 3d 20 22 3a 66 22 29 0a 0a 20 20 20 20  xt = ":f")..    
3060: 20 20 20 20 23 20 56 65 72 62 65 0a 20 20 20 20      # Verbe.    
3070: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
3080: 67 65 74 28 22 66 6c 5f 76 65 72 62 22 2c 20 27  get("fl_verb", '
3090: 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 32 2b  FixedLine', nX2+
30a0: 33 30 2c 20 6e 59 34 2c 20 31 33 30 2c 20 6e 48  30, nY4, 130, nH
30b0: 65 69 67 68 74 2c 20 46 6f 6e 74 44 65 73 63 72  eight, FontDescr
30c0: 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69  iptor = xFDSubTi
30d0: 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c  tle).        sel
30e0: 66 2e 78 56 5f 69 20 3d 20 73 65 6c 66 2e 5f 61  f.xV_i = self._a
30f0: 64 64 57 69 64 67 65 74 28 27 76 5f 69 27 2c 20  ddWidget('v_i', 
3100: 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2c  'CheckBox', nX2,
3110: 20 6e 59 34 2b 31 32 2c 20 36 30 2c 20 6e 48 65   nY4+12, 60, nHe
3120: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
3130: 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 69 22  lf.dUI.get("v_i"
3140: 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20  , "#err")).     
3150: 20 20 20 73 65 6c 66 2e 78 56 5f 74 20 3d 20 73     self.xV_t = s
3160: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
3170: 76 5f 74 27 2c 20 27 43 68 65 63 6b 42 6f 78 27  v_t', 'CheckBox'
3180: 2c 20 6e 58 32 2c 20 6e 59 34 2b 32 30 2c 20 36  , nX2, nY4+20, 6
3190: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
31a0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
31b0: 28 22 76 5f 74 22 2c 20 22 23 65 72 72 22 29 29  ("v_t", "#err"))
31c0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56  .        self.xV
31d0: 5f 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  _n = self._addWi
31e0: 64 67 65 74 28 27 76 5f 6e 27 2c 20 27 43 68 65  dget('v_n', 'Che
31f0: 63 6b 42 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34  ckBox', nX2, nY4
3200: 2b 32 38 2c 20 36 30 2c 20 6e 48 65 69 67 68 74  +28, 60, nHeight
3210: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
3220: 55 49 2e 67 65 74 28 22 76 5f 6e 22 2c 20 22 23  UI.get("v_n", "#
3230: 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73  err")).        s
3240: 65 6c 66 2e 78 56 5f 70 20 3d 20 73 65 6c 66 2e  elf.xV_p = self.
3250: 5f 61 64 64 57 69 64 67 65 74 28 27 76 5f 70 27  _addWidget('v_p'
3260: 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58  , 'CheckBox', nX
3270: 32 2c 20 6e 59 34 2b 33 36 2c 20 36 30 2c 20 6e  2, nY4+36, 60, n
3280: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
3290: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f  self.dUI.get("v_
32a0: 70 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20  p", "#err")).   
32b0: 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 6d 20 3d       self.xV_m =
32c0: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
32d0: 28 27 76 5f 6d 27 2c 20 27 43 68 65 63 6b 42 6f  ('v_m', 'CheckBo
32e0: 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b 34 34 2c  x', nX2, nY4+44,
32f0: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
3300: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
3310: 65 74 28 22 76 5f 6d 22 2c 20 22 23 65 72 72 22  et("v_m", "#err"
3320: 29 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ))..        self
3330: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 61 75 78  ._addWidget('aux
3340: 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20  ', 'FixedText', 
3350: 6e 58 32 2b 37 35 2c 20 6e 59 34 2b 31 30 2c 20  nX2+75, nY4+10, 
3360: 39 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  90, nHeight, Lab
3370: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
3380: 74 28 22 61 75 78 22 2c 20 22 23 65 72 72 22 29  t("aux", "#err")
3390: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
33a0: 56 5f 61 65 20 3d 20 73 65 6c 66 2e 5f 61 64 64  V_ae = self._add
33b0: 57 69 64 67 65 74 28 27 76 5f 61 65 27 2c 20 27  Widget('v_ae', '
33c0: 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2b 37  CheckBox', nX2+7
33d0: 35 2c 20 6e 59 34 2b 32 30 2c 20 39 30 2c 20 6e  5, nY4+20, 90, n
33e0: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
33f0: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f  self.dUI.get("v_
3400: 61 65 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20  ae", "#err")).  
3410: 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 61 61        self.xV_aa
3420: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
3430: 65 74 28 27 76 5f 61 61 27 2c 20 27 43 68 65 63  et('v_aa', 'Chec
3440: 6b 42 6f 78 27 2c 20 6e 58 32 2b 37 35 2c 20 6e  kBox', nX2+75, n
3450: 59 34 2b 32 38 2c 20 39 30 2c 20 6e 48 65 69 67  Y4+28, 90, nHeig
3460: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
3470: 2e 64 55 49 2e 67 65 74 28 22 76 5f 61 61 22 2c  .dUI.get("v_aa",
3480: 20 22 23 65 72 72 22 29 29 0a 0a 20 20 20 20 20   "#err"))..     
3490: 20 20 20 73 65 6c 66 2e 78 56 5f 70 70 20 3d 20     self.xV_pp = 
34a0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
34b0: 27 76 5f 70 70 27 2c 20 27 43 68 65 63 6b 42 6f  'v_pp', 'CheckBo
34c0: 78 27 2c 20 6e 58 32 2b 37 35 2c 20 6e 59 34 2b  x', nX2+75, nY4+
34d0: 34 34 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c  44, 90, nHeight,
34e0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
34f0: 49 2e 67 65 74 28 22 76 5f 70 70 22 2c 20 22 23  I.get("v_pp", "#
3500: 65 72 72 22 29 29 0a 0a 20 20 20 20 20 20 20 20  err"))..        
3510: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
3520: 27 76 5f 70 61 74 74 65 72 6e 5f 6c 61 62 65 6c  'v_pattern_label
3530: 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20  ', 'FixedText', 
3540: 6e 58 32 2c 20 6e 59 34 2b 35 36 2c 20 37 35 2c  nX2, nY4+56, 75,
3550: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
3560: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27  = self.dUI.get('
3570: 76 5f 70 61 74 74 65 72 6e 27 2c 20 22 23 65 72  v_pattern', "#er
3580: 72 22 29 2c 20 41 6c 69 67 6e 20 3d 20 32 29 0a  r"), Align = 2).
3590: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56 70          self.xVp
35a0: 61 74 74 65 72 6e 20 3d 20 73 65 6c 66 2e 5f 61  attern = self._a
35b0: 64 64 57 69 64 67 65 74 28 27 76 5f 70 61 74 74  ddWidget('v_patt
35c0: 65 72 6e 27 2c 20 27 45 64 69 74 27 2c 20 6e 58  ern', 'Edit', nX
35d0: 32 2b 38 30 2c 20 6e 59 34 2b 35 36 2c 20 38 30  2+80, nY4+56, 80
35e0: 2c 20 6e 48 65 69 67 68 74 29 0a 0a 20 20 20 20  , nHeight)..    
35f0: 20 20 20 20 23 20 41 64 76 65 72 62 65 0a 20 20      # Adverbe.  
3600: 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57        self._addW
3610: 69 64 67 65 74 28 22 66 6c 5f 61 64 76 22 2c 20  idget("fl_adv", 
3620: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 32  'FixedLine', nX2
3630: 2b 33 30 2c 20 6e 59 35 2c 20 31 33 30 2c 20 6e  +30, nY5, 130, n
3640: 48 65 69 67 68 74 2c 20 46 6f 6e 74 44 65 73 63  Height, FontDesc
3650: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
3660: 69 74 6c 65 29 0a 0a 20 20 20 20 20 20 20 20 23  itle)..        #
3670: 20 41 75 74 72 65 0a 20 20 20 20 20 20 20 20 73   Autre.        s
3680: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
3690: 66 6c 5f 6f 74 68 65 72 22 2c 20 27 46 69 78 65  fl_other", 'Fixe
36a0: 64 4c 69 6e 65 27 2c 20 6e 58 32 2b 33 30 2c 20  dLine', nX2+30, 
36b0: 6e 59 36 2c 20 31 33 30 2c 20 6e 48 65 69 67 68  nY6, 130, nHeigh
36c0: 74 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f  t, FontDescripto
36d0: 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 29  r = xFDSubTitle)
36e0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
36f0: 64 64 57 69 64 67 65 74 28 27 66 6c 65 78 69 6f  ddWidget('flexio
3700: 6e 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78 65 64  n_label', 'Fixed
3710: 54 65 78 74 27 2c 20 6e 58 32 2c 20 6e 59 36 2b  Text', nX2, nY6+
3720: 31 31 2c 20 32 32 2c 20 6e 48 65 69 67 68 74 2c  11, 22, nHeight,
3730: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3740: 49 2e 67 65 74 28 27 66 6c 65 78 69 6f 6e 27 2c  I.get('flexion',
3750: 20 22 23 65 72 72 22 29 2c 20 41 6c 69 67 6e 20   "#err"), Align 
3760: 3d 20 32 29 0a 20 20 20 20 20 20 20 20 73 65 6c  = 2).        sel
3770: 66 2e 78 46 6c 65 78 69 6f 6e 20 3d 20 73 65 6c  f.xFlexion = sel
3780: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 66 6c  f._addWidget('fl
3790: 65 78 69 6f 6e 27 2c 20 27 45 64 69 74 27 2c 20  exion', 'Edit', 
37a0: 6e 58 32 2b 32 35 2c 20 6e 59 36 2b 31 30 2c 20  nX2+25, nY6+10, 
37b0: 35 30 2c 20 6e 48 65 69 67 68 74 29 0a 20 20 20  50, nHeight).   
37c0: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
37d0: 64 67 65 74 28 27 74 61 67 73 5f 6c 61 62 65 6c  dget('tags_label
37e0: 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20  ', 'FixedText', 
37f0: 6e 58 32 2b 38 30 2c 20 6e 59 36 2b 31 31 2c 20  nX2+80, nY6+11, 
3800: 32 37 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  27, nHeight, Lab
3810: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
3820: 74 28 27 74 61 67 73 27 2c 20 22 23 65 72 72 22  t('tags', "#err"
3830: 29 2c 20 41 6c 69 67 6e 20 3d 20 32 29 0a 20 20  ), Align = 2).  
3840: 20 20 20 20 20 20 73 65 6c 66 2e 78 54 61 67 73        self.xTags
3850: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
3860: 65 74 28 27 74 61 67 73 27 2c 20 27 45 64 69 74  et('tags', 'Edit
3870: 27 2c 20 6e 58 32 2b 31 31 30 2c 20 6e 59 36 2b  ', nX2+110, nY6+
3880: 31 30 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 29  10, 50, nHeight)
3890: 0a 0a 20 20 20 20 20 20 20 20 23 23 23 23 20 47  ..        #### G
38a0: 65 6e 65 72 61 74 65 64 20 77 6f 72 64 73 0a 20  enerated words. 
38b0: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64         self._add
38c0: 57 69 64 67 65 74 28 22 67 77 6f 72 64 73 5f 73  Widget("gwords_s
38d0: 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c  ection", 'FixedL
38e0: 69 6e 65 27 2c 20 6e 58 42 2c 20 6e 59 31 2c 20  ine', nXB, nY1, 
38f0: 31 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61  160, nHeight, La
3900: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
3910: 65 74 28 22 6e 65 77 5f 73 65 63 74 69 6f 6e 22  et("new_section"
3920: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
3930: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54  escriptor = xFDT
3940: 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65  itle).        se
3950: 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77  lf.xGridModelNew
3960: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 47 72 69 64   = self._addGrid
3970: 28 22 6c 69 73 74 5f 67 72 69 64 5f 67 77 6f 72  ("list_grid_gwor
3980: 64 73 22 2c 20 6e 58 42 2c 20 6e 59 31 2b 31 30  ds", nXB, nY1+10
3990: 2c 20 31 36 30 2c 20 32 34 30 2c 20 5b 0a 20 20  , 160, 240, [.  
39a0: 20 20 20 20 20 20 20 20 20 20 7b 22 54 69 74 6c            {"Titl
39b0: 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  e": self.dUI.get
39c0: 28 22 6c 65 78 5f 66 6c 65 78 22 2c 20 22 23 65  ("lex_flex", "#e
39d0: 72 72 22 29 2c 20 22 43 6f 6c 75 6d 6e 57 69 64  rr"), "ColumnWid
39e0: 74 68 22 3a 20 38 30 7d 2c 0a 20 20 20 20 20 20  th": 80},.      
39f0: 20 20 20 20 20 20 7b 22 54 69 74 6c 65 22 3a 20        {"Title": 
3a00: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c 65  self.dUI.get("le
3a10: 78 5f 74 61 67 73 22 2c 20 22 23 65 72 72 22 29  x_tags", "#err")
3a20: 2c 20 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a  , "ColumnWidth":
3a30: 20 38 30 7d 0a 20 20 20 20 20 20 20 20 5d 2c 20   80}.        ], 
3a40: 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65 6c 20 3d  SelectionModel =
3a50: 20 75 6e 6f 2e 45 6e 75 6d 28 22 63 6f 6d 2e 73   uno.Enum("com.s
3a60: 75 6e 2e 73 74 61 72 2e 76 69 65 77 2e 53 65 6c  un.star.view.Sel
3a70: 65 63 74 69 6f 6e 54 79 70 65 22 2c 20 22 4d 55  ectionType", "MU
3a80: 4c 54 49 22 29 29 0a 20 20 20 20 20 20 20 20 73  LTI")).        s
3a90: 65 6c 66 2e 78 41 64 64 20 3d 20 73 65 6c 66 2e  elf.xAdd = self.
3aa0: 5f 61 64 64 57 69 64 67 65 74 28 27 61 64 64 5f  _addWidget('add_
3ab0: 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e  button', 'Button
3ac0: 27 2c 20 6e 58 42 2c 20 6e 59 31 2b 32 35 35 2c  ', nXB, nY1+255,
3ad0: 20 37 35 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d   75, 12, Label =
3ae0: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 61   self.dUI.get('a
3af0: 64 64 5f 62 75 74 74 6f 6e 27 2c 20 22 23 65 72  dd_button', "#er
3b00: 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  r"), FontDescrip
3b10: 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c  tor = xFDSubTitl
3b20: 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30  e, TextColor = 0
3b30: 78 30 30 35 35 30 30 2c 20 45 6e 61 62 6c 65 64  x005500, Enabled
3b40: 20 3d 20 46 61 6c 73 65 29 0a 20 20 20 20 20 20   = False).      
3b50: 20 20 73 65 6c 66 2e 78 44 65 6c 65 74 65 20 3d    self.xDelete =
3b60: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
3b70: 28 27 64 65 6c 65 74 65 5f 62 75 74 74 6f 6e 27  ('delete_button'
3b80: 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 42 2b  , 'Button', nXB+
3b90: 38 30 2c 20 6e 59 31 2b 32 35 35 2c 20 38 30 2c  80, nY1+255, 80,
3ba0: 20 31 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c   12, Label = sel
3bb0: 66 2e 64 55 49 2e 67 65 74 28 27 64 65 6c 65 74  f.dUI.get('delet
3bc0: 65 5f 62 75 74 74 6f 6e 27 2c 20 22 23 65 72 72  e_button', "#err
3bd0: 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  "), FontDescript
3be0: 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65  or = xFDSubTitle
3bf0: 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78  , TextColor = 0x
3c00: 35 35 30 30 30 30 29 0a 0a 20 20 20 20 20 20 20  550000)..       
3c10: 20 23 23 23 23 20 4c 65 78 69 63 6f 6e 20 73 65   #### Lexicon se
3c20: 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65  ction.        se
3c30: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 6c  lf._addWidget("l
3c40: 65 78 69 63 6f 6e 5f 73 65 63 74 69 6f 6e 22 2c  exicon_section",
3c50: 20 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58   'FixedLine', nX
3c60: 43 2c 20 6e 59 31 2c 20 32 30 30 2c 20 6e 48 65  C, nY1, 200, nHe
3c70: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
3c80: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78 69  lf.dUI.get("lexi
3c90: 63 6f 6e 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23  con_section", "#
3ca0: 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72  err"), FontDescr
3cb0: 69 70 74 6f 72 20 3d 20 78 46 44 54 69 74 6c 65  iptor = xFDTitle
3cc0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
3cd0: 47 72 69 64 4d 6f 64 65 6c 4c 65 78 20 3d 20 73  GridModelLex = s
3ce0: 65 6c 66 2e 5f 61 64 64 47 72 69 64 28 22 6c 69  elf._addGrid("li
3cf0: 73 74 5f 67 72 69 64 5f 6c 65 78 69 63 6f 6e 22  st_grid_lexicon"
3d00: 2c 20 6e 58 43 2c 20 6e 59 31 2b 31 30 2c 20 32  , nXC, nY1+10, 2
3d10: 30 30 2c 20 32 34 30 2c 20 5b 0a 20 20 20 20 20  00, 240, [.     
3d20: 20 20 20 20 20 20 20 7b 22 54 69 74 6c 65 22 3a         {"Title":
3d30: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c   self.dUI.get("l
3d40: 65 78 5f 66 6c 65 78 22 2c 20 22 23 65 72 72 22  ex_flex", "#err"
3d50: 29 2c 20 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22  ), "ColumnWidth"
3d60: 3a 20 36 35 7d 2c 0a 20 20 20 20 20 20 20 20 20  : 65},.         
3d70: 20 20 20 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c     {"Title": sel
3d80: 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78 5f 6c  f.dUI.get("lex_l
3d90: 65 6d 6d 61 22 2c 20 22 23 65 72 72 22 29 2c 20  emma", "#err"), 
3da0: 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a 20 35  "ColumnWidth": 5
3db0: 30 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  0},.            
3dc0: 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64  {"Title": self.d
3dd0: 55 49 2e 67 65 74 28 22 6c 65 78 5f 74 61 67 73  UI.get("lex_tags
3de0: 22 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f 6c  ", "#err"), "Col
3df0: 75 6d 6e 57 69 64 74 68 22 3a 20 36 35 7d 0a 20  umnWidth": 65}. 
3e00: 20 20 20 20 20 20 20 5d 2c 20 53 65 6c 65 63 74         ], Select
3e10: 69 6f 6e 4d 6f 64 65 6c 20 3d 20 75 6e 6f 2e 45  ionModel = uno.E
3e20: 6e 75 6d 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61  num("com.sun.sta
3e30: 72 2e 76 69 65 77 2e 53 65 6c 65 63 74 69 6f 6e  r.view.Selection
3e40: 54 79 70 65 22 2c 20 22 4d 55 4c 54 49 22 29 29  Type", "MULTI"))
3e50: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
3e60: 64 64 57 69 64 67 65 74 28 22 6e 75 6d 5f 6f 66  ddWidget("num_of
3e70: 5f 65 6e 74 72 69 65 73 5f 6c 61 62 65 6c 31 22  _entries_label1"
3e80: 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e  , 'FixedText', n
3e90: 58 43 2c 20 6e 59 31 2b 32 35 37 2c 20 36 30 2c  XC, nY1+257, 60,
3ea0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
3eb0: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
3ec0: 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 5f 6c  num_of_entries_l
3ed0: 61 62 65 6c 22 2c 20 22 23 65 72 72 22 29 2c 20  abel", "#err"), 
3ee0: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
3ef0: 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20   xFDSubTitle).  
3f00: 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d 4c        self.xNumL
3f10: 65 78 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  ex = self._addWi
3f20: 64 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74  dget("num_of_ent
3f30: 72 69 65 73 31 22 2c 20 27 46 69 78 65 64 54 65  ries1", 'FixedTe
3f40: 78 74 27 2c 20 6e 58 43 2b 36 35 2c 20 6e 59 31  xt', nXC+65, nY1
3f50: 2b 32 35 37 2c 20 34 30 2c 20 6e 48 65 69 67 68  +257, 40, nHeigh
3f60: 74 2c 20 4c 61 62 65 6c 20 3d 20 22 30 22 2c 20  t, Label = "0", 
3f70: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
3f80: 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20   xFDSubTitle).  
3f90: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 61 76 65        self.xSave
3fa0: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
3fb0: 65 74 28 27 73 61 76 65 5f 62 75 74 74 6f 6e 27  et('save_button'
3fc0: 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 43 2b  , 'Button', nXC+
3fd0: 31 31 30 2c 20 6e 59 31 2b 32 35 35 2c 20 34 35  110, nY1+255, 45
3fe0: 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65  , 12, Label = se
3ff0: 6c 66 2e 64 55 49 2e 67 65 74 28 27 73 61 76 65  lf.dUI.get('save
4000: 5f 62 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22  _button', "#err"
4010: 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f  ), FontDescripto
4020: 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c  r = xFDSubTitle,
4030: 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30   TextColor = 0x0
4040: 30 35 35 30 30 29 0a 20 20 20 20 20 20 20 20 73  05500).        s
4050: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
4060: 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 2c 20 27  close_button', '
4070: 42 75 74 74 6f 6e 27 2c 20 6e 58 43 2b 31 36 30  Button', nXC+160
4080: 2c 20 6e 59 31 2b 32 35 35 2c 20 34 30 2c 20 31  , nY1+255, 40, 1
4090: 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  2, Label = self.
40a0: 64 55 49 2e 67 65 74 28 27 63 6c 6f 73 65 5f 62  dUI.get('close_b
40b0: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
40c0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
40d0: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54  = xFDSubTitle, T
40e0: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 35 35 30  extColor = 0x550
40f0: 30 30 30 29 0a 0a 20 20 20 20 20 20 20 20 73 65  000)..        se
4100: 6c 66 2e 6c 6f 61 64 4c 65 78 69 63 6f 6e 28 29  lf.loadLexicon()
4110: 0a 0a 20 20 20 20 20 20 20 20 23 20 63 6f 6e 74  ..        # cont
4120: 61 69 6e 65 72 0a 20 20 20 20 20 20 20 20 73 65  ainer.        se
4130: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 20 3d 20  lf.xContainer = 
4140: 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65 61  self.xSvMgr.crea
4150: 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43 6f  teInstanceWithCo
4160: 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e 73  ntext('com.sun.s
4170: 74 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74 72  tar.awt.UnoContr
4180: 6f 6c 44 69 61 6c 6f 67 27 2c 20 73 65 6c 66 2e  olDialog', self.
4190: 63 74 78 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ctx).        sel
41a0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74  f.xContainer.set
41b0: 4d 6f 64 65 6c 28 73 65 6c 66 2e 78 44 69 61 6c  Model(self.xDial
41c0: 6f 67 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  og).        self
41d0: 2e 78 47 72 69 64 43 6f 6e 74 72 6f 6c 4e 65 77  .xGridControlNew
41e0: 20 3d 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e   = self.xContain
41f0: 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 6c  er.getControl('l
4200: 69 73 74 5f 67 72 69 64 5f 67 77 6f 72 64 73 27  ist_grid_gwords'
4210: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
4220: 47 72 69 64 43 6f 6e 74 72 6f 6c 4c 65 78 20 3d  GridControlLex =
4230: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
4240: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 6c 69 73  .getControl('lis
4250: 74 5f 67 72 69 64 5f 6c 65 78 69 63 6f 6e 27 29  t_grid_lexicon')
4260: 0a 20 20 20 20 20 20 20 20 23 68 65 6c 70 65 72  .        #helper
4270: 73 2e 78 72 61 79 28 73 65 6c 66 2e 78 43 6f 6e  s.xray(self.xCon
4280: 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f  tainer.getContro
4290: 6c 28 27 6c 65 6d 6d 61 27 29 29 0a 20 20 20 20  l('lemma')).    
42a0: 20 20 20 20 73 65 6c 66 2e 5f 63 72 65 61 74 65      self._create
42b0: 4b 65 79 4c 69 73 74 65 6e 65 72 73 28 5b 27 6c  KeyListeners(['l
42c0: 65 6d 6d 61 27 2c 20 27 61 6c 74 5f 6c 65 6d 6d  emma', 'alt_lemm
42d0: 61 27 2c 20 22 76 5f 70 61 74 74 65 72 6e 22 2c  a', "v_pattern",
42e0: 20 27 66 6c 65 78 69 6f 6e 27 2c 20 27 74 61 67   'flexion', 'tag
42f0: 73 27 5d 2c 20 22 55 70 64 61 74 65 22 29 0a 20  s'], "Update"). 
4300: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 72 65         self._cre
4310: 61 74 65 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65  ateActionListene
4320: 72 73 28 5b 27 6e 6f 6d 5f 61 64 6a 27 2c 20 27  rs(['nom_adj', '
4330: 6e 6f 6d 27 2c 20 27 61 64 6a 27 2c 20 27 4d 31  nom', 'adj', 'M1
4340: 27 2c 20 27 4d 32 27 2c 20 27 4d 50 27 2c 20 27  ', 'M2', 'MP', '
4350: 76 65 72 62 27 2c 20 27 61 64 76 27 2c 20 27 6f  verb', 'adv', 'o
4360: 74 68 65 72 27 2c 20 5c 0a 20 20 20 20 20 20 20  ther', \.       
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 53                'S
4390: 65 70 69 27 2c 20 27 53 6d 61 73 27 2c 20 27 53  epi', 'Smas', 'S
43a0: 66 65 6d 27 2c 20 27 53 73 27 2c 20 27 53 78 27  fem', 'Ss', 'Sx'
43b0: 2c 20 27 53 69 6e 76 27 2c 20 27 6e 6f 6d 5f 61  , 'Sinv', 'nom_a
43c0: 64 6a 32 27 2c 20 27 6e 6f 6d 32 27 2c 20 27 61  dj2', 'nom2', 'a
43d0: 64 6a 32 27 2c 20 5c 0a 20 20 20 20 20 20 20 20  dj2', \.        
43e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 27 53 65               'Se
4400: 70 69 32 27 2c 20 27 53 6d 61 73 32 27 2c 20 27  pi2', 'Smas2', '
4410: 53 66 65 6d 32 27 2c 20 27 53 73 32 27 2c 20 27  Sfem2', 'Ss2', '
4420: 53 78 32 27 2c 20 27 53 69 6e 76 32 27 2c 20 27  Sx2', 'Sinv2', '
4430: 4d 65 70 69 27 2c 20 27 4d 6d 61 73 27 2c 20 27  Mepi', 'Mmas', '
4440: 4d 66 65 6d 27 2c 20 5c 0a 20 20 20 20 20 20 20  Mfem', \.       
4450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 76                'v
4470: 5f 69 27 2c 20 27 76 5f 74 27 2c 20 27 76 5f 6e  _i', 'v_t', 'v_n
4480: 27 2c 20 27 76 5f 70 27 2c 20 27 76 5f 6d 27 2c  ', 'v_p', 'v_m',
4490: 20 27 76 5f 61 65 27 2c 20 27 76 5f 61 61 27 2c   'v_ae', 'v_aa',
44a0: 20 27 76 5f 70 70 27 5d 2c 20 22 55 70 64 61 74   'v_pp'], "Updat
44b0: 65 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  e").        self
44c0: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
44d0: 6f 6e 74 72 6f 6c 28 27 73 65 61 72 63 68 5f 62  ontrol('search_b
44e0: 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f  utton').addActio
44f0: 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a  nListener(self).
4500: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
4510: 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72  ntainer.getContr
4520: 6f 6c 28 27 73 65 61 72 63 68 5f 62 75 74 74 6f  ol('search_butto
4530: 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d  n').setActionCom
4540: 6d 61 6e 64 28 27 53 65 61 72 63 68 57 6f 72 64  mand('SearchWord
4550: 73 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  s').        self
4560: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
4570: 6f 6e 74 72 6f 6c 28 27 69 6e 66 6f 72 6d 61 74  ontrol('informat
4580: 69 6f 6e 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64  ion_button').add
4590: 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73  ActionListener(s
45a0: 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c  elf).        sel
45b0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
45c0: 43 6f 6e 74 72 6f 6c 28 27 69 6e 66 6f 72 6d 61  Control('informa
45d0: 74 69 6f 6e 5f 62 75 74 74 6f 6e 27 29 2e 73 65  tion_button').se
45e0: 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27  tActionCommand('
45f0: 54 61 67 73 49 6e 66 6f 27 29 0a 20 20 20 20 20  TagsInfo').     
4600: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
4610: 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 61  er.getControl('a
4620: 64 64 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41  dd_button').addA
4630: 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65  ctionListener(se
4640: 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lf).        self
4650: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
4660: 6f 6e 74 72 6f 6c 28 27 61 64 64 5f 62 75 74 74  ontrol('add_butt
4670: 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f  on').setActionCo
4680: 6d 6d 61 6e 64 28 27 41 64 64 27 29 0a 20 20 20  mmand('Add').   
4690: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
46a0: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
46b0: 27 64 65 6c 65 74 65 5f 62 75 74 74 6f 6e 27 29  'delete_button')
46c0: 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e  .addActionListen
46d0: 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20  er(self).       
46e0: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
46f0: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 64 65 6c  .getControl('del
4700: 65 74 65 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74  ete_button').set
4710: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 44  ActionCommand('D
4720: 65 6c 65 74 65 27 29 0a 20 20 20 20 20 20 20 20  elete').        
4730: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
4740: 67 65 74 43 6f 6e 74 72 6f 6c 28 27 73 61 76 65  getControl('save
4750: 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74  _button').addAct
4760: 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66  ionListener(self
4770: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
4780: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4790: 74 72 6f 6c 28 27 73 61 76 65 5f 62 75 74 74 6f  trol('save_butto
47a0: 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d  n').setActionCom
47b0: 6d 61 6e 64 28 27 53 61 76 65 27 29 0a 20 20 20  mand('Save').   
47c0: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
47d0: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
47e0: 27 69 6d 70 6f 72 74 5f 62 75 74 74 6f 6e 27 29  'import_button')
47f0: 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e  .addActionListen
4800: 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20  er(self).       
4810: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
4820: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 69 6d 70  .getControl('imp
4830: 6f 72 74 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74  ort_button').set
4840: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 49  ActionCommand('I
4850: 6d 70 6f 72 74 27 29 0a 20 20 20 20 20 20 20 20  mport').        
4860: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
4870: 67 65 74 43 6f 6e 74 72 6f 6c 28 27 65 78 70 6f  getControl('expo
4880: 72 74 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41  rt_button').addA
4890: 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65  ctionListener(se
48a0: 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lf).        self
48b0: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
48c0: 6f 6e 74 72 6f 6c 28 27 65 78 70 6f 72 74 5f 62  ontrol('export_b
48d0: 75 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f  utton').setActio
48e0: 6e 43 6f 6d 6d 61 6e 64 28 27 45 78 70 6f 72 74  nCommand('Export
48f0: 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ').        self.
4900: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
4910: 6e 74 72 6f 6c 28 27 63 6c 6f 73 65 5f 62 75 74  ntrol('close_but
4920: 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c  ton').addActionL
4930: 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20  istener(self).  
4940: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
4950: 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c  ainer.getControl
4960: 28 27 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 29  ('close_button')
4970: 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  .setActionComman
4980: 64 28 27 43 6c 6f 73 65 27 29 0a 20 20 20 20 20  d('Close').     
4990: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
49a0: 65 72 2e 73 65 74 56 69 73 69 62 6c 65 28 46 61  er.setVisible(Fa
49b0: 6c 73 65 29 0a 20 20 20 20 20 20 20 20 78 54 6f  lse).        xTo
49c0: 6f 6c 6b 69 74 20 3d 20 73 65 6c 66 2e 78 53 76  olkit = self.xSv
49d0: 4d 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e  Mgr.createInstan
49e0: 63 65 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63  ceWithContext('c
49f0: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e  om.sun.star.awt.
4a00: 45 78 74 54 6f 6f 6c 6b 69 74 27 2c 20 73 65 6c  ExtToolkit', sel
4a10: 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 73  f.ctx).        s
4a20: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 63  elf.xContainer.c
4a30: 72 65 61 74 65 50 65 65 72 28 78 54 6f 6f 6c 6b  reatePeer(xToolk
4a40: 69 74 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20  it, None).      
4a50: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
4a60: 72 2e 65 78 65 63 75 74 65 28 29 0a 0a 20 20 20  r.execute()..   
4a70: 20 64 65 66 20 5f 63 72 65 61 74 65 4b 65 79 4c   def _createKeyL
4a80: 69 73 74 65 6e 65 72 73 20 28 73 65 6c 66 2c 20  isteners (self, 
4a90: 6c 4e 61 6d 65 73 2c 20 73 41 63 74 69 6f 6e 29  lNames, sAction)
4aa0: 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 73 4e  :.        for sN
4ab0: 61 6d 65 20 69 6e 20 6c 4e 61 6d 65 73 3a 0a 20  ame in lNames:. 
4ac0: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
4ad0: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
4ae0: 6e 74 72 6f 6c 28 73 4e 61 6d 65 29 2e 61 64 64  ntrol(sName).add
4af0: 4b 65 79 4c 69 73 74 65 6e 65 72 28 73 65 6c 66  KeyListener(self
4b00: 29 0a 0a 20 20 20 20 64 65 66 20 5f 63 72 65 61  )..    def _crea
4b10: 74 65 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72  teActionListener
4b20: 73 20 28 73 65 6c 66 2c 20 6c 4e 61 6d 65 73 2c  s (self, lNames,
4b30: 20 73 41 63 74 69 6f 6e 29 3a 0a 20 20 20 20 20   sAction):.     
4b40: 20 20 20 66 6f 72 20 73 4e 61 6d 65 20 69 6e 20     for sName in 
4b50: 6c 4e 61 6d 65 73 3a 0a 20 20 20 20 20 20 20 20  lNames:.        
4b60: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
4b70: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 73  ner.getControl(s
4b80: 4e 61 6d 65 29 2e 61 64 64 41 63 74 69 6f 6e 4c  Name).addActionL
4b90: 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20  istener(self).  
4ba0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78            self.x
4bb0: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4bc0: 74 72 6f 6c 28 73 4e 61 6d 65 29 2e 73 65 74 41  trol(sName).setA
4bd0: 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 73 41 63  ctionCommand(sAc
4be0: 74 69 6f 6e 29 0a 0a 20 20 20 20 23 20 58 41 63  tion)..    # XAc
4bf0: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 20 20 20  tionListener.   
4c00: 20 64 65 66 20 61 63 74 69 6f 6e 50 65 72 66 6f   def actionPerfo
4c10: 72 6d 65 64 20 28 73 65 6c 66 2c 20 78 41 63 74  rmed (self, xAct
4c20: 69 6f 6e 45 76 65 6e 74 29 3a 0a 20 20 20 20 20  ionEvent):.     
4c30: 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20     try:.        
4c40: 20 20 20 20 69 66 20 78 41 63 74 69 6f 6e 45 76      if xActionEv
4c50: 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  ent.ActionComman
4c60: 64 20 3d 3d 20 22 55 70 64 61 74 65 22 3a 0a 20  d == "Update":. 
4c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4c80: 65 6c 66 2e 75 70 64 61 74 65 47 65 6e 57 6f 72  elf.updateGenWor
4c90: 64 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  ds().           
4ca0: 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65   elif xActionEve
4cb0: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
4cc0: 20 3d 3d 20 22 53 65 61 72 63 68 57 6f 72 64 73   == "SearchWords
4cd0: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
4ce0: 20 20 20 73 65 6c 66 2e 6c 61 75 6e 63 68 53 65     self.launchSe
4cf0: 61 72 63 68 57 6f 72 64 73 28 29 0a 20 20 20 20  archWords().    
4d00: 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41 63          elif xAc
4d10: 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e  tionEvent.Action
4d20: 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 54 61 67 73  Command == "Tags
4d30: 49 6e 66 6f 22 3a 0a 20 20 20 20 20 20 20 20 20  Info":.         
4d40: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 61 75 6e         self.laun
4d50: 63 68 54 61 67 73 49 6e 66 6f 28 29 0a 20 20 20  chTagsInfo().   
4d60: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41           elif xA
4d70: 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f  ctionEvent.Actio
4d80: 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 41 64 64  nCommand == "Add
4d90: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
4da0: 20 20 20 73 65 6c 66 2e 61 64 64 54 6f 4c 65 78     self.addToLex
4db0: 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20  icon().         
4dc0: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4dd0: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
4de0: 6e 64 20 3d 3d 20 22 44 65 6c 65 74 65 22 3a 0a  nd == "Delete":.
4df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e00: 73 65 6c 66 2e 64 65 6c 65 74 65 53 65 6c 65 63  self.deleteSelec
4e10: 74 65 64 45 6e 74 72 69 65 73 28 29 0a 20 20 20  tedEntries().   
4e20: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41           elif xA
4e30: 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f  ctionEvent.Actio
4e40: 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 53 61 76  nCommand == "Sav
4e50: 65 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  e":.            
4e60: 20 20 20 20 73 65 6c 66 2e 73 61 76 65 4c 65 78      self.saveLex
4e70: 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20  icon().         
4e80: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4e90: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
4ea0: 6e 64 20 3d 3d 20 22 49 6d 70 6f 72 74 22 3a 0a  nd == "Import":.
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 73 65 6c 66 2e 69 6d 70 6f 72 74 44 69 63 74 69  self.importDicti
4ed0: 6f 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20 20  onary().        
4ee0: 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e      elif xAction
4ef0: 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d  Event.ActionComm
4f00: 61 6e 64 20 3d 3d 20 22 45 78 70 6f 72 74 22 3a  and == "Export":
4f10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4f20: 20 73 65 6c 66 2e 65 78 70 6f 72 74 44 69 63 74   self.exportDict
4f30: 69 6f 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20  ionary().       
4f40: 20 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f       elif xActio
4f50: 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d  nEvent.ActionCom
4f60: 6d 61 6e 64 20 3d 3d 20 27 49 6e 66 6f 27 3a 0a  mand == 'Info':.
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 70 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20  pass.           
4f90: 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65   elif xActionEve
4fa0: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
4fb0: 20 3d 3d 20 22 43 6c 6f 73 65 22 3a 0a 20 20 20   == "Close":.   
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
4fd0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 65 6e 64  f.xContainer.end
4fe0: 45 78 65 63 75 74 65 28 29 0a 20 20 20 20 20 20  Execute().      
4ff0: 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20    except:.      
5000: 20 20 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e        traceback.
5010: 70 72 69 6e 74 5f 65 78 63 28 29 0a 0a 20 20 20  print_exc()..   
5020: 20 23 20 58 4b 65 79 4c 69 73 74 65 6e 65 72 0a   # XKeyListener.
5030: 20 20 20 20 64 65 66 20 6b 65 79 50 72 65 73 73      def keyPress
5040: 65 64 20 28 73 65 6c 66 2c 20 78 4b 65 79 45 76  ed (self, xKeyEv
5050: 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 70 61  ent):.        pa
5060: 73 73 0a 0a 20 20 20 20 64 65 66 20 6b 65 79 52  ss..    def keyR
5070: 65 6c 65 61 73 65 64 20 28 73 65 6c 66 2c 20 78  eleased (self, x
5080: 4b 65 79 45 76 65 6e 74 29 3a 0a 20 20 20 20 20  KeyEvent):.     
5090: 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 47 65     self.updateGe
50a0: 6e 57 6f 72 64 73 28 29 0a 0a 20 20 20 20 23 20  nWords()..    # 
50b0: 58 4a 6f 62 45 78 65 63 75 74 6f 72 0a 20 20 20  XJobExecutor.   
50c0: 20 64 65 66 20 74 72 69 67 67 65 72 20 28 73 65   def trigger (se
50d0: 6c 66 2c 20 61 72 67 73 29 3a 0a 20 20 20 20 20  lf, args):.     
50e0: 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20     try:.        
50f0: 20 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 4c 65      xDialog = Le
5100: 78 69 63 6f 6e 45 64 69 74 6f 72 28 73 65 6c 66  xiconEditor(self
5110: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20 20  .ctx).          
5120: 20 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 29 0a    xDialog.run().
5130: 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a          except:.
5140: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
5150: 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28  eback.print_exc(
5160: 29 0a 0a 20 20 20 20 23 20 43 6f 64 65 0a 20 20  )..    # Code.  
5170: 20 20 64 65 66 20 6c 61 75 6e 63 68 53 65 61 72    def launchSear
5180: 63 68 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a  chWords (self):.
5190: 20 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 20          xDialog 
51a0: 3d 20 53 65 61 72 63 68 57 6f 72 64 73 2e 53 65  = SearchWords.Se
51b0: 61 72 63 68 57 6f 72 64 73 28 73 65 6c 66 2e 63  archWords(self.c
51c0: 74 78 29 0a 20 20 20 20 20 20 20 20 78 44 69 61  tx).        xDia
51d0: 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e 73 4c 61  log.run(self.sLa
51e0: 6e 67 2c 20 73 65 6c 66 2e 6f 50 65 72 73 6f 6e  ng, self.oPerson
51f0: 61 6c 44 69 63 4a 53 4f 4e 29 0a 0a 20 20 20 20  alDicJSON)..    
5200: 64 65 66 20 6c 61 75 6e 63 68 54 61 67 73 49 6e  def launchTagsIn
5210: 66 6f 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20  fo (self):.     
5220: 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 54 61 67     xDialog = Tag
5230: 73 49 6e 66 6f 2e 54 61 67 73 49 6e 66 6f 28 73  sInfo.TagsInfo(s
5240: 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20  elf.ctx).       
5250: 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 73 65 6c   xDialog.run(sel
5260: 66 2e 73 4c 61 6e 67 29 0a 0a 20 20 20 20 23 40  f.sLang)..    #@
5270: 5f 77 61 69 74 50 6f 69 6e 74 65 72 20 28 64 6f  _waitPointer (do
5280: 6e e2 80 99 74 3a 20 73 74 72 61 6e 67 65 20 62  n...t: strange b
5290: 65 68 61 76 69 6f 72 20 77 68 65 6e 20 64 69 61  ehavior when dia
52a0: 6c 6f 67 20 69 73 20 6e 6f 74 20 66 69 6e 69 73  log is not finis
52b0: 68 65 64 29 0a 20 20 20 20 64 65 66 20 6c 6f 61  hed).    def loa
52c0: 64 4c 65 78 69 63 6f 6e 20 28 73 65 6c 66 29 3a  dLexicon (self):
52d0: 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61  .        xGridDa
52e0: 74 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78  taModel = self.x
52f0: 47 72 69 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69  GridModelLex.Gri
5300: 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20  dDataModel.     
5310: 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65     xGridDataMode
5320: 6c 2e 72 65 6d 6f 76 65 41 6c 6c 52 6f 77 73 28  l.removeAllRows(
5330: 29 0a 20 20 20 20 20 20 20 20 73 4a 53 4f 4e 20  ).        sJSON 
5340: 3d 20 73 65 6c 66 2e 78 4f 70 74 69 6f 6e 4e 6f  = self.xOptionNo
5350: 64 65 2e 67 65 74 50 72 6f 70 65 72 74 79 56 61  de.getPropertyVa
5360: 6c 75 65 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  lue("personal_di
5370: 63 22 29 0a 20 20 20 20 20 20 20 20 69 66 20 73  c").        if s
5380: 4a 53 4f 4e 3a 0a 20 20 20 20 20 20 20 20 20 20  JSON:.          
5390: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
53a0: 20 20 20 20 20 20 20 73 65 6c 66 2e 6f 50 65 72         self.oPer
53b0: 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 20 3d 20 6a  sonalDicJSON = j
53c0: 73 6f 6e 2e 6c 6f 61 64 73 28 73 4a 53 4f 4e 29  son.loads(sJSON)
53d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
53e0: 20 6f 49 42 44 41 57 47 20 3d 20 69 62 64 61 77   oIBDAWG = ibdaw
53f0: 67 2e 49 42 44 41 57 47 28 73 65 6c 66 2e 6f 50  g.IBDAWG(self.oP
5400: 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 29 0a  ersonalDicJSON).
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 66 6f 72 20 69 2c 20 61 45 6e 74 72 79 20 69 6e  for i, aEntry in
5430: 20 65 6e 75 6d 65 72 61 74 65 28 6f 49 42 44 41   enumerate(oIBDA
5440: 57 47 2e 73 65 6c 65 63 74 28 29 29 3a 0a 20 20  WG.select()):.  
5450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5460: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
5470: 2e 61 64 64 52 6f 77 28 69 2c 20 61 45 6e 74 72  .addRow(i, aEntr
5480: 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y).             
5490: 20 20 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e     self.xNumLex.
54a0: 4c 61 62 65 6c 20 3d 20 73 74 72 28 69 29 0a 20  Label = str(i). 
54b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
54c0: 65 6c 66 2e 78 4e 75 6d 44 69 63 2e 4c 61 62 65  elf.xNumDic.Labe
54d0: 6c 20 3d 20 73 74 72 28 69 29 0a 20 20 20 20 20  l = str(i).     
54e0: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
54f0: 78 44 61 74 65 44 69 63 2e 4c 61 62 65 6c 20 3d  xDateDic.Label =
5500: 20 6f 49 42 44 41 57 47 2e 73 44 61 74 65 0a 20   oIBDAWG.sDate. 
5510: 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70             excep
5520: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t:.             
5530: 20 20 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65     sMessage = se
5540: 6c 66 2e 64 55 49 2e 67 65 74 28 27 6e 6f 74 5f  lf.dUI.get('not_
5550: 6c 6f 61 64 65 64 27 2c 20 22 23 65 72 72 22 29  loaded', "#err")
5560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5570: 20 73 4d 65 73 73 61 67 65 20 2b 3d 20 74 72 61   sMessage += tra
5580: 63 65 62 61 63 6b 2e 66 6f 72 6d 61 74 5f 65 78  ceback.format_ex
5590: 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  c().            
55a0: 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73      MessageBox(s
55b0: 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73  elf.xDocument, s
55c0: 4d 65 73 73 61 67 65 2c 20 73 65 6c 66 2e 64 55  Message, self.dU
55d0: 49 2e 67 65 74 28 27 6c 6f 61 64 5f 74 69 74 6c  I.get('load_titl
55e0: 65 27 2c 20 22 23 65 72 72 22 29 2c 20 45 52 52  e', "#err"), ERR
55f0: 4f 52 42 4f 58 29 0a 20 20 20 20 20 20 20 20 65  ORBOX).        e
5600: 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lse:.           
5610: 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e 4c 61   self.xNumLex.La
5620: 62 65 6c 20 3d 20 30 0a 20 20 20 20 20 20 20 20  bel = 0.        
5630: 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d 44 69 63      self.xNumDic
5640: 2e 4c 61 62 65 6c 20 3d 20 30 0a 20 20 20 20 20  .Label = 0.     
5650: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 61 74         self.xDat
5660: 65 44 69 63 2e 4c 61 62 65 6c 20 3d 20 73 65 6c  eDic.Label = sel
5670: 66 2e 64 55 49 2e 67 65 74 28 22 76 6f 69 64 22  f.dUI.get("void"
5680: 2c 20 22 23 65 72 72 22 29 0a 0a 20 20 20 20 40  , "#err")..    @
5690: 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20 20 20  _waitPointer.   
56a0: 20 64 65 66 20 69 6d 70 6f 72 74 44 69 63 74 69   def importDicti
56b0: 6f 6e 61 72 79 20 28 73 65 6c 66 29 3a 0a 20 20  onary (self):.  
56c0: 20 20 20 20 20 20 23 20 46 69 6c 65 50 69 63 6b        # FilePick
56d0: 65 72 20 64 6f 65 73 6e e2 80 99 74 20 77 6f 72  er doesn...t wor
56e0: 6b 20 61 74 20 61 6c 6c e2 80 a6 0a 20 20 20 20  k at all....    
56f0: 20 20 20 20 23 78 46 69 6c 65 50 69 63 6b 65 72      #xFilePicker
5700: 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63   = self.xSvMgr.c
5710: 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74  reateInstanceWit
5720: 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75  hContext('com.su
5730: 6e 2e 73 74 61 72 2e 75 69 2e 64 69 61 6c 6f 67  n.star.ui.dialog
5740: 73 2e 46 69 6c 65 50 69 63 6b 65 72 27 2c 20 73  s.FilePicker', s
5750: 65 6c 66 2e 63 74 78 29 20 20 23 20 6f 74 68 65  elf.ctx)  # othe
5760: 72 20 70 6f 73 73 69 62 69 6c 69 74 79 3a 20 63  r possibility: c
5770: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 75 69 2e 64  om.sun.star.ui.d
5780: 69 61 6c 6f 67 73 2e 53 79 73 74 65 6d 46 69 6c  ialogs.SystemFil
5790: 65 50 69 63 6b 65 72 0a 20 20 20 20 20 20 20 20  ePicker.        
57a0: 23 78 46 69 6c 65 50 69 63 6b 65 72 2e 69 6e 69  #xFilePicker.ini
57b0: 74 69 61 6c 69 7a 65 28 5b 75 6e 6f 2e 67 65 74  tialize([uno.get
57c0: 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28 22  ConstantByName("
57d0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 75 69 2e  com.sun.star.ui.
57e0: 64 69 61 6c 6f 67 73 2e 54 65 6d 70 6c 61 74 65  dialogs.Template
57f0: 44 65 73 63 72 69 70 74 69 6f 6e 2e 46 49 4c 45  Description.FILE
5800: 4f 50 45 4e 5f 53 49 4d 50 4c 45 22 29 5d 29 20  OPEN_SIMPLE")]) 
5810: 23 20 73 65 65 6d 73 20 75 73 65 6c 65 73 73 0a  # seems useless.
5820: 20 20 20 20 20 20 20 20 23 78 46 69 6c 65 50 69          #xFilePi
5830: 63 6b 65 72 2e 61 70 70 65 6e 64 46 69 6c 74 65  cker.appendFilte
5840: 72 28 22 53 75 70 70 6f 72 74 65 64 20 66 69 6c  r("Supported fil
5850: 65 73 22 2c 20 22 2a 2e 6a 73 6f 6e 3b 20 2a 2e  es", "*.json; *.
5860: 62 64 69 63 22 29 0a 20 20 20 20 20 20 20 20 23  bdic").        #
5870: 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 44  xFilePicker.setD
5880: 65 66 61 75 6c 74 4e 61 6d 65 28 22 66 72 2e 70  efaultName("fr.p
5890: 65 72 73 6f 6e 61 6c 2e 6a 73 6f 6e 22 29 20 23  ersonal.json") #
58a0: 20 75 73 65 6c 65 73 73 2c 20 64 6f 65 73 6e e2   useless, doesn.
58b0: 80 99 74 20 77 6f 72 6b 0a 20 20 20 20 20 20 20  ..t work.       
58c0: 20 23 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65   #xFilePicker.se
58d0: 74 44 69 73 70 6c 61 79 44 69 72 65 63 74 6f 72  tDisplayDirector
58e0: 79 28 22 22 29 0a 20 20 20 20 20 20 20 20 23 78  y("").        #x
58f0: 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 4d 75  FilePicker.setMu
5900: 6c 74 69 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65  ltiSelectionMode
5910: 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20  (False).        
5920: 23 6e 52 65 73 75 6c 74 20 3d 20 78 46 69 6c 65  #nResult = xFile
5930: 50 69 63 6b 65 72 2e 65 78 65 63 75 74 65 28 29  Picker.execute()
5940: 0a 20 20 20 20 20 20 20 20 23 69 66 20 6e 52 65  .        #if nRe
5950: 73 75 6c 74 20 3d 3d 20 31 3a 0a 20 20 20 20 20  sult == 1:.     
5960: 20 20 20 23 20 20 20 20 6c 46 69 6c 65 20 3d 20     #    lFile = 
5970: 78 46 69 6c 65 50 69 63 6b 65 72 2e 67 65 74 53  xFilePicker.getS
5980: 65 6c 65 63 74 65 64 46 69 6c 65 73 28 29 0a 20  electedFiles(). 
5990: 20 20 20 20 20 20 20 23 20 20 20 20 6c 46 69 6c         #    lFil
59a0: 65 20 3d 20 78 46 69 6c 65 50 69 63 6b 65 72 2e  e = xFilePicker.
59b0: 67 65 74 46 69 6c 65 73 28 29 0a 20 20 20 20 20  getFiles().     
59c0: 20 20 20 23 20 20 20 20 70 72 69 6e 74 28 6c 46     #    print(lF
59d0: 69 6c 65 29 0a 20 20 20 20 20 20 20 20 23 20 20  ile).        #  
59e0: 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73 65 6c    MessageBox(sel
59f0: 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 22 46 69  f.xDocument, "Fi
5a00: 6c 65 28 73 29 3a 20 22 20 2b 20 73 74 72 28 6c  le(s): " + str(l
5a10: 46 69 6c 65 29 2c 20 22 44 45 42 55 47 22 2c 20  File), "DEBUG", 
5a20: 49 4e 46 4f 42 4f 58 29 0a 20 20 20 20 20 20 20  INFOBOX).       
5a30: 20 23 20 77 6f 72 6b 61 72 6f 75 6e 64 0a 20 20   # workaround.  
5a40: 20 20 20 20 20 20 73 70 66 49 6d 70 6f 72 74 65        spfImporte
5a50: 64 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e  d = os.path.join
5a60: 28 6f 73 2e 70 61 74 68 2e 65 78 70 61 6e 64 75  (os.path.expandu
5a70: 73 65 72 28 22 7e 22 29 2c 20 22 66 72 2e 70 65  ser("~"), "fr.pe
5a80: 72 73 6f 6e 61 6c 2e 6a 73 6f 6e 22 29 0a 20 20  rsonal.json").  
5a90: 20 20 20 20 20 20 69 66 20 6f 73 2e 70 61 74 68        if os.path
5aa0: 2e 69 73 66 69 6c 65 28 73 70 66 49 6d 70 6f 72  .isfile(spfImpor
5ab0: 74 65 64 29 3a 0a 20 20 20 20 20 20 20 20 20 20  ted):.          
5ac0: 20 20 77 69 74 68 20 6f 70 65 6e 28 73 70 66 49    with open(spfI
5ad0: 6d 70 6f 72 74 65 64 2c 20 22 72 22 2c 20 65 6e  mported, "r", en
5ae0: 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 29 20  coding="utf-8") 
5af0: 61 73 20 68 44 73 74 3a 0a 20 20 20 20 20 20 20  as hDst:.       
5b00: 20 20 20 20 20 20 20 20 20 73 4a 53 4f 4e 20 3d           sJSON =
5b10: 20 68 44 73 74 2e 72 65 61 64 28 29 0a 20 20 20   hDst.read().   
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
5b30: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
5b40: 20 20 20 20 20 20 73 54 65 73 74 20 3d 20 6a 73        sTest = js
5b50: 6f 6e 2e 6c 6f 61 64 73 28 73 4a 53 4f 4e 29 0a  on.loads(sJSON).
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b70: 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20  except:.        
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 73 4d 65 73              sMes
5b90: 73 61 67 65 20 3d 20 73 65 6c 66 2e 64 55 49 2e  sage = self.dUI.
5ba0: 67 65 74 28 27 77 72 6f 6e 67 5f 6a 73 6f 6e 27  get('wrong_json'
5bb0: 2c 20 22 23 65 72 72 5f 6d 73 67 3a 20 25 73 22  , "#err_msg: %s"
5bc0: 29 20 25 20 73 70 66 49 6d 70 6f 72 74 65 64 0a  ) % spfImported.
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73      MessageBox(s
5bf0: 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73  elf.xDocument, s
5c00: 4d 65 73 73 61 67 65 2c 20 73 65 6c 66 2e 64 55  Message, self.dU
5c10: 49 2e 67 65 74 28 27 69 6d 70 6f 72 74 5f 74 69  I.get('import_ti
5c20: 74 6c 65 27 2c 20 22 23 65 72 72 22 29 2c 20 45  tle', "#err"), E
5c30: 52 52 4f 52 42 4f 58 29 0a 20 20 20 20 20 20 20  RRORBOX).       
5c40: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 73 65 6c 66 2e 78 4f 70 74 69 6f 6e 4e     self.xOptionN
5c70: 6f 64 65 2e 73 65 74 50 72 6f 70 65 72 74 79 56  ode.setPropertyV
5c80: 61 6c 75 65 28 22 70 65 72 73 6f 6e 61 6c 5f 64  alue("personal_d
5c90: 69 63 22 2c 20 73 4a 53 4f 4e 29 0a 20 20 20 20  ic", sJSON).    
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cb0: 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64  self.xSettingNod
5cc0: 65 2e 63 6f 6d 6d 69 74 43 68 61 6e 67 65 73 28  e.commitChanges(
5cd0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5ce0: 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64 4c        self.loadL
5cf0: 65 78 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20  exicon().       
5d00: 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20   else:.         
5d10: 20 20 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65     sMessage = se
5d20: 6c 66 2e 64 55 49 2e 67 65 74 28 27 66 69 6c 65  lf.dUI.get('file
5d30: 5f 6e 6f 74 5f 66 6f 75 6e 64 27 2c 20 22 23 65  _not_found', "#e
5d40: 72 72 5f 6d 73 67 3a 20 25 73 22 29 20 25 20 73  rr_msg: %s") % s
5d50: 70 66 49 6d 70 6f 72 74 65 64 0a 20 20 20 20 20  pfImported.     
5d60: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f         MessageBo
5d70: 78 28 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74  x(self.xDocument
5d80: 2c 20 73 4d 65 73 73 61 67 65 2c 20 73 65 6c 66  , sMessage, self
5d90: 2e 64 55 49 2e 67 65 74 28 27 69 6d 70 6f 72 74  .dUI.get('import
5da0: 5f 74 69 74 6c 65 27 2c 20 22 23 65 72 72 22 29  _title', "#err")
5db0: 2c 20 45 52 52 4f 52 42 4f 58 29 0a 0a 20 20 20  , ERRORBOX)..   
5dc0: 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20   @_waitPointer. 
5dd0: 20 20 20 64 65 66 20 73 61 76 65 4c 65 78 69 63     def saveLexic
5de0: 6f 6e 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20  on (self):.     
5df0: 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65     xGridDataMode
5e00: 6c 20 3d 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f  l = self.xGridMo
5e10: 64 65 6c 4c 65 78 2e 47 72 69 64 44 61 74 61 4d  delLex.GridDataM
5e20: 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 6c 45 6e  odel.        lEn
5e30: 74 72 79 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20  try = [].       
5e40: 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28   for i in range(
5e50: 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 52  xGridDataModel.R
5e60: 6f 77 43 6f 75 6e 74 29 3a 0a 20 20 20 20 20 20  owCount):.      
5e70: 20 20 20 20 20 20 6c 45 6e 74 72 79 2e 61 70 70        lEntry.app
5e80: 65 6e 64 28 78 47 72 69 64 44 61 74 61 4d 6f 64  end(xGridDataMod
5e90: 65 6c 2e 67 65 74 52 6f 77 44 61 74 61 28 69 29  el.getRowData(i)
5ea0: 29 0a 20 20 20 20 20 20 20 20 69 66 20 6c 45 6e  ).        if lEn
5eb0: 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20  try:.           
5ec0: 20 6f 44 41 57 47 20 3d 20 64 61 77 67 2e 44 41   oDAWG = dawg.DA
5ed0: 57 47 28 6c 45 6e 74 72 79 2c 20 22 53 22 2c 20  WG(lEntry, "S", 
5ee0: 22 66 72 22 2c 20 22 46 72 61 6e c3 a7 61 69 73  "fr", "Fran..ais
5ef0: 22 2c 20 22 66 72 2e 70 65 72 73 6f 6e 61 6c 22  ", "fr.personal"
5f00: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ).            se
5f10: 6c 66 2e 6f 50 65 72 73 6f 6e 61 6c 44 69 63 4a  lf.oPersonalDicJ
5f20: 53 4f 4e 20 3d 20 6f 44 41 57 47 2e 67 65 74 42  SON = oDAWG.getB
5f30: 69 6e 61 72 79 41 73 4a 53 4f 4e 28 29 0a 20 20  inaryAsJSON().  
5f40: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78            self.x
5f50: 4f 70 74 69 6f 6e 4e 6f 64 65 2e 73 65 74 50 72  OptionNode.setPr
5f60: 6f 70 65 72 74 79 56 61 6c 75 65 28 22 70 65 72  opertyValue("per
5f70: 73 6f 6e 61 6c 5f 64 69 63 22 2c 20 6a 73 6f 6e  sonal_dic", json
5f80: 2e 64 75 6d 70 73 28 73 65 6c 66 2e 6f 50 65 72  .dumps(self.oPer
5f90: 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 2c 20 65 6e  sonalDicJSON, en
5fa0: 73 75 72 65 5f 61 73 63 69 69 3d 46 61 6c 73 65  sure_ascii=False
5fb0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  )).            s
5fc0: 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64 65  elf.xSettingNode
5fd0: 2e 63 6f 6d 6d 69 74 43 68 61 6e 67 65 73 28 29  .commitChanges()
5fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c  .            sel
5ff0: 66 2e 78 4e 75 6d 44 69 63 2e 4c 61 62 65 6c 20  f.xNumDic.Label 
6000: 3d 20 73 74 72 28 73 65 6c 66 2e 6f 50 65 72 73  = str(self.oPers
6010: 6f 6e 61 6c 44 69 63 4a 53 4f 4e 5b 22 6e 45 6e  onalDicJSON["nEn
6020: 74 72 79 22 5d 29 0a 20 20 20 20 20 20 20 20 20  try"]).         
6030: 20 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69 63     self.xDateDic
6040: 2e 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 6f 50  .Label = self.oP
6050: 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 5b 22  ersonalDicJSON["
6060: 73 44 61 74 65 22 5d 0a 20 20 20 20 20 20 20 20  sDate"].        
6070: 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20  else:.          
6080: 20 20 73 65 6c 66 2e 78 4f 70 74 69 6f 6e 4e 6f    self.xOptionNo
6090: 64 65 2e 73 65 74 50 72 6f 70 65 72 74 79 56 61  de.setPropertyVa
60a0: 6c 75 65 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  lue("personal_di
60b0: 63 22 2c 20 22 22 29 0a 20 20 20 20 20 20 20 20  c", "").        
60c0: 20 20 20 20 73 65 6c 66 2e 78 53 65 74 74 69 6e      self.xSettin
60d0: 67 4e 6f 64 65 2e 63 6f 6d 6d 69 74 43 68 61 6e  gNode.commitChan
60e0: 67 65 73 28 29 0a 20 20 20 20 20 20 20 20 20 20  ges().          
60f0: 20 20 73 65 6c 66 2e 78 4e 75 6d 44 69 63 2e 4c    self.xNumDic.L
6100: 61 62 65 6c 20 3d 20 22 30 22 0a 20 20 20 20 20  abel = "0".     
6110: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 61 74         self.xDat
6120: 65 44 69 63 2e 4c 61 62 65 6c 20 3d 20 73 65 6c  eDic.Label = sel
6130: 66 2e 64 55 49 2e 67 65 74 28 22 76 6f 69 64 22  f.dUI.get("void"
6140: 2c 20 22 23 65 72 72 22 29 0a 20 20 20 20 20 20  , "#err").      
6150: 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73 65 6c    MessageBox(sel
6160: 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73 65 6c  f.xDocument, sel
6170: 66 2e 64 55 49 2e 67 65 74 28 27 73 61 76 65 5f  f.dUI.get('save_
6180: 6d 65 73 73 61 67 65 27 2c 20 22 23 65 72 72 22  message', "#err"
6190: 29 2c 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28  ), self.dUI.get(
61a0: 27 73 61 76 65 5f 74 69 74 6c 65 27 2c 20 22 23  'save_title', "#
61b0: 65 72 72 22 29 29 0a 0a 20 20 20 20 64 65 66 20  err"))..    def 
61c0: 65 78 70 6f 72 74 44 69 63 74 69 6f 6e 61 72 79  exportDictionary
61d0: 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20   (self):.       
61e0: 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20   try:.          
61f0: 20 20 73 70 66 45 78 70 6f 72 74 65 64 20 3d 20    spfExported = 
6200: 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 6f 73 2e  os.path.join(os.
6210: 70 61 74 68 2e 65 78 70 61 6e 64 75 73 65 72 28  path.expanduser(
6220: 22 7e 22 29 2c 20 22 66 72 2e 70 65 72 73 6f 6e  "~"), "fr.person
6230: 61 6c 2e 6a 73 6f 6e 22 29 0a 20 20 20 20 20 20  al.json").      
6240: 20 20 20 20 20 20 73 4a 53 4f 4e 20 3d 20 73 65        sJSON = se
6250: 6c 66 2e 78 4f 70 74 69 6f 6e 4e 6f 64 65 2e 67  lf.xOptionNode.g
6260: 65 74 50 72 6f 70 65 72 74 79 56 61 6c 75 65 28  etPropertyValue(
6270: 22 70 65 72 73 6f 6e 61 6c 5f 64 69 63 22 29 0a  "personal_dic").
6280: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73              if s
6290: 4a 53 4f 4e 3a 0a 20 20 20 20 20 20 20 20 20 20  JSON:.          
62a0: 20 20 20 20 20 20 77 69 74 68 20 6f 70 65 6e 28        with open(
62b0: 73 70 66 45 78 70 6f 72 74 65 64 2c 20 22 77 22  spfExported, "w"
62c0: 2c 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d  , encoding="utf-
62d0: 38 22 29 20 61 73 20 68 44 73 74 3a 0a 20 20 20  8") as hDst:.   
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 20 68 44 73 74 2e 77 72 69 74 65 28 73 4a 53 4f   hDst.write(sJSO
6300: 4e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N).             
6310: 20 20 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65     sMessage = se
6320: 6c 66 2e 64 55 49 2e 67 65 74 28 27 65 78 70 6f  lf.dUI.get('expo
6330: 72 74 5f 6d 65 73 73 61 67 65 27 2c 20 22 23 65  rt_message', "#e
6340: 72 72 5f 6d 73 67 3a 20 25 73 22 29 20 25 20 73  rr_msg: %s") % s
6350: 70 66 45 78 70 6f 72 74 65 64 0a 20 20 20 20 20  pfExported.     
6360: 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20         else:.   
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 4d 65               sMe
6380: 73 73 61 67 65 20 3d 20 73 65 6c 66 2e 64 55 49  ssage = self.dUI
6390: 2e 67 65 74 28 27 65 6d 70 74 79 5f 64 69 63 74  .get('empty_dict
63a0: 69 6f 6e 61 72 79 27 2c 20 22 23 65 72 72 22 29  ionary', "#err")
63b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 65 73  .            Mes
63c0: 73 61 67 65 42 6f 78 28 73 65 6c 66 2e 78 44 6f  sageBox(self.xDo
63d0: 63 75 6d 65 6e 74 2c 20 73 4d 65 73 73 61 67 65  cument, sMessage
63e0: 2c 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27  , self.dUI.get('
63f0: 65 78 70 6f 72 74 5f 74 69 74 6c 65 27 2c 20 22  export_title', "
6400: 23 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20  #err")).        
6410: 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20  except:.        
6420: 20 20 20 20 73 4d 65 73 73 61 67 65 20 3d 20 74      sMessage = t
6430: 72 61 63 65 62 61 63 6b 2e 66 6f 72 6d 61 74 5f  raceback.format_
6440: 65 78 63 28 29 0a 20 20 20 20 20 20 20 20 20 20  exc().          
6450: 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73 65 6c    MessageBox(sel
6460: 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73 4d 65  f.xDocument, sMe
6470: 73 73 61 67 65 2c 20 73 65 6c 66 2e 64 55 49 2e  ssage, self.dUI.
6480: 67 65 74 28 27 65 78 70 6f 72 74 5f 74 69 74 6c  get('export_titl
6490: 65 27 2c 20 22 23 65 72 72 22 29 2c 20 45 52 52  e', "#err"), ERR
64a0: 4f 52 42 4f 58 29 0a 0a 20 20 20 20 64 65 66 20  ORBOX)..    def 
64b0: 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65 20 28  _getRadioValue (
64c0: 73 65 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20  self, *args):.  
64d0: 20 20 20 20 20 20 66 6f 72 20 78 20 69 6e 20 61        for x in a
64e0: 72 67 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20  rgs:.           
64f0: 20 69 66 20 78 2e 53 74 61 74 65 3a 0a 20 20 20   if x.State:.   
6500: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6510: 75 72 6e 20 78 2e 48 65 6c 70 54 65 78 74 0a 20  urn x.HelpText. 
6520: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f         return No
6530: 6e 65 0a 0a 20 20 20 20 40 5f 77 61 69 74 50 6f  ne..    @_waitPo
6540: 69 6e 74 65 72 0a 20 20 20 20 64 65 66 20 75 70  inter.    def up
6550: 64 61 74 65 47 65 6e 57 6f 72 64 73 20 28 73 65  dateGenWords (se
6560: 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c  lf):.        sel
6570: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
6580: 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 73 65   = [].        se
6590: 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c 66  lf.sLemma = self
65a0: 2e 78 4c 65 6d 6d 61 2e 54 65 78 74 2e 73 74 72  .xLemma.Text.str
65b0: 69 70 28 29 0a 20 20 20 20 20 20 20 20 69 66 20  ip().        if 
65c0: 73 65 6c 66 2e 73 4c 65 6d 6d 61 3a 0a 20 20 20  self.sLemma:.   
65d0: 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66           if self
65e0: 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28  ._getRadioValue(
65f0: 73 65 6c 66 2e 78 4e 41 2c 20 73 65 6c 66 2e 78  self.xNA, self.x
6600: 4e 2c 20 73 65 6c 66 2e 78 41 29 3a 0a 20 20 20  N, self.xA):.   
6610: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 53               # S
6620: 75 62 73 74 61 6e 74 69 66 0a 20 20 20 20 20 20  ubstantif.      
6630: 20 20 20 20 20 20 20 20 20 20 73 50 4f 53 20 3d            sPOS =
6640: 20 73 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56   self._getRadioV
6650: 61 6c 75 65 28 73 65 6c 66 2e 78 4e 41 2c 20 73  alue(self.xNA, s
6660: 65 6c 66 2e 78 4e 2c 20 73 65 6c 66 2e 78 41 29  elf.xN, self.xA)
6670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6680: 20 73 47 65 6e 64 65 72 54 61 67 20 3d 20 73 65   sGenderTag = se
6690: 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75  lf._getRadioValu
66a0: 65 28 73 65 6c 66 2e 78 53 65 70 69 2c 20 73 65  e(self.xSepi, se
66b0: 6c 66 2e 78 53 6d 61 73 2c 20 73 65 6c 66 2e 78  lf.xSmas, self.x
66c0: 53 66 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20  Sfem).          
66d0: 20 20 20 20 20 20 69 66 20 73 47 65 6e 64 65 72        if sGender
66e0: 54 61 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20  Tag:.           
66f0: 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66           if self
6700: 2e 78 53 73 2e 53 74 61 74 65 3a 0a 20 20 20 20  .xSs.State:.    
6710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6720: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
6730: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
6740: 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f  self.sLemma, sPO
6750: 53 2b 73 47 65 6e 64 65 72 54 61 67 2b 22 3a 73  S+sGenderTag+":s
6760: 2f 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20  /*")).          
6770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
6780: 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65  lf.lGeneratedFle
6790: 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66 2e 73  x.append((self.s
67a0: 4c 65 6d 6d 61 2b 22 73 22 2c 20 73 50 4f 53 2b  Lemma+"s", sPOS+
67b0: 73 47 65 6e 64 65 72 54 61 67 2b 22 3a 70 2f 2a  sGenderTag+":p/*
67c0: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
67d0: 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c          elif sel
67e0: 66 2e 78 53 78 2e 53 74 61 74 65 3a 0a 20 20 20  f.xSx.State:.   
67f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6800: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
6810: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
6820: 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c 20 73 50  (self.sLemma, sP
6830: 4f 53 2b 73 47 65 6e 64 65 72 54 61 67 2b 22 3a  OS+sGenderTag+":
6840: 73 2f 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20  s/*")).         
6850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6860: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
6870: 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66 2e  ex.append((self.
6880: 73 4c 65 6d 6d 61 2b 22 78 22 2c 20 73 50 4f 53  sLemma+"x", sPOS
6890: 2b 73 47 65 6e 64 65 72 54 61 67 2b 22 3a 70 2f  +sGenderTag+":p/
68a0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
68b0: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65           elif se
68c0: 6c 66 2e 78 53 69 6e 76 2e 53 74 61 74 65 3a 0a  lf.xSinv.State:.
68d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68e0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
68f0: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
6900: 6e 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c  nd((self.sLemma,
6910: 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54 61 67   sPOS+sGenderTag
6920: 2b 22 3a 69 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":i/*")).      
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 4c                sL
6940: 65 6d 6d 61 32 20 3d 20 73 65 6c 66 2e 78 41 6c  emma2 = self.xAl
6950: 74 4c 65 6d 6d 61 2e 54 65 78 74 2e 73 74 72 69  tLemma.Text.stri
6960: 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  p().            
6970: 20 20 20 20 20 20 20 20 69 66 20 73 4c 65 6d 6d          if sLemm
6980: 61 32 20 61 6e 64 20 73 65 6c 66 2e 5f 67 65 74  a2 and self._get
6990: 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e  RadioValue(self.
69a0: 78 4e 41 32 2c 20 73 65 6c 66 2e 78 4e 32 2c 20  xNA2, self.xN2, 
69b0: 73 65 6c 66 2e 78 41 32 29 20 61 6e 64 20 73 65  self.xA2) and se
69c0: 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75  lf._getRadioValu
69d0: 65 28 73 65 6c 66 2e 78 53 65 70 69 32 2c 20 73  e(self.xSepi2, s
69e0: 65 6c 66 2e 78 53 6d 61 73 32 2c 20 73 65 6c 66  elf.xSmas2, self
69f0: 2e 78 53 66 65 6d 32 29 3a 0a 20 20 20 20 20 20  .xSfem2):.      
6a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a10: 20 20 73 54 61 67 32 20 3d 20 73 65 6c 66 2e 5f    sTag2 = self._
6a20: 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28 73 65  getRadioValue(se
6a30: 6c 66 2e 78 4e 41 32 2c 20 73 65 6c 66 2e 78 4e  lf.xNA2, self.xN
6a40: 32 2c 20 73 65 6c 66 2e 78 41 32 29 20 2b 20 73  2, self.xA2) + s
6a50: 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c  elf._getRadioVal
6a60: 75 65 28 73 65 6c 66 2e 78 53 65 70 69 32 2c 20  ue(self.xSepi2, 
6a70: 73 65 6c 66 2e 78 53 6d 61 73 32 2c 20 73 65 6c  self.xSmas2, sel
6a80: 66 2e 78 53 66 65 6d 32 29 0a 20 20 20 20 20 20  f.xSfem2).      
6a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6aa0: 20 20 69 66 20 73 65 6c 66 2e 78 53 73 32 2e 53    if self.xSs2.S
6ab0: 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20  tate:.          
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ad0: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
6ae0: 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c  dFlex.append((sL
6af0: 65 6d 6d 61 32 2c 20 73 54 61 67 32 2b 22 3a 73  emma2, sTag2+":s
6b00: 2f 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20  /*")).          
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b20: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
6b30: 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c  dFlex.append((sL
6b40: 65 6d 6d 61 32 2b 22 73 22 2c 20 73 54 61 67 32  emma2+"s", sTag2
6b50: 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":p/*")).      
6b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b70: 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 53 78 32    elif self.xSx2
6b80: 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20  .State:.        
6b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ba0: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
6bb0: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
6bc0: 73 4c 65 6d 6d 61 32 2c 20 73 54 61 67 32 2b 22  sLemma2, sTag2+"
6bd0: 3a 73 2f 2a 22 29 29 0a 20 20 20 20 20 20 20 20  :s/*")).        
6be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bf0: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
6c00: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
6c10: 73 4c 65 6d 6d 61 32 2b 22 78 22 2c 20 73 54 61  sLemma2+"x", sTa
6c20: 67 32 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20  g2+":p/*")).    
6c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c40: 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 53      elif self.xS
6c50: 69 6e 76 32 2e 53 74 61 74 65 3a 0a 20 20 20 20  inv2.State:.    
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c70: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
6c80: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
6c90: 6e 64 28 28 73 4c 65 6d 6d 61 32 2c 20 73 54 61  nd((sLemma2, sTa
6ca0: 67 32 2b 22 3a 69 2f 2a 22 29 29 0a 20 20 20 20  g2+":i/*")).    
6cb0: 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c          elif sel
6cc0: 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65  f._getRadioValue
6cd0: 28 73 65 6c 66 2e 78 4d 31 2c 20 73 65 6c 66 2e  (self.xM1, self.
6ce0: 78 4d 32 2c 20 73 65 6c 66 2e 78 4d 50 29 3a 0a  xM2, self.xMP):.
6cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d00: 23 20 4e 6f 6d 20 70 72 6f 70 72 65 0a 20 20 20  # Nom propre.   
6d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 50 4f               sPO
6d20: 53 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52 61 64  S = self._getRad
6d30: 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4d 31  ioValue(self.xM1
6d40: 2c 20 73 65 6c 66 2e 78 4d 32 2c 20 73 65 6c 66  , self.xM2, self
6d50: 2e 78 4d 50 29 0a 20 20 20 20 20 20 20 20 20 20  .xMP).          
6d60: 20 20 20 20 20 20 73 65 6c 66 2e 73 4c 65 6d 6d        self.sLemm
6d70: 61 20 3d 20 73 65 6c 66 2e 73 4c 65 6d 6d 61 5b  a = self.sLemma[
6d80: 30 3a 31 5d 2e 75 70 70 65 72 28 29 20 2b 20 73  0:1].upper() + s
6d90: 65 6c 66 2e 73 4c 65 6d 6d 61 5b 31 3a 5d 3b 0a  elf.sLemma[1:];.
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 73 47 65 6e 64 65 72 54 61 67 20 3d 20 73 65 6c  sGenderTag = sel
6dc0: 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65  f._getRadioValue
6dd0: 28 73 65 6c 66 2e 78 4d 65 70 69 2c 20 73 65 6c  (self.xMepi, sel
6de0: 66 2e 78 4d 6d 61 73 2c 20 73 65 6c 66 2e 78 4d  f.xMmas, self.xM
6df0: 66 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20  fem).           
6e00: 20 20 20 20 20 69 66 20 73 47 65 6e 64 65 72 54       if sGenderT
6e10: 61 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ag:.            
6e20: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
6e30: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
6e40: 6e 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c  nd((self.sLemma,
6e50: 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54 61 67   sPOS+sGenderTag
6e60: 2b 22 3a 69 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":i/*")).      
6e70: 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e        elif self.
6e80: 78 56 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20  xV.State:.      
6e90: 20 20 20 20 20 20 20 20 20 20 23 20 56 65 72 62            # Verb
6ea0: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e.              
6eb0: 20 20 69 66 20 73 65 6c 66 2e 73 4c 65 6d 6d 61    if self.sLemma
6ec0: 2e 65 6e 64 73 77 69 74 68 28 28 22 65 72 22 2c  .endswith(("er",
6ed0: 20 22 69 72 22 2c 20 22 72 65 22 29 29 3a 0a 20   "ir", "re")):. 
6ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ef0: 20 20 20 73 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d     self.sLemma =
6f00: 20 73 65 6c 66 2e 73 4c 65 6d 6d 61 2e 6c 6f 77   self.sLemma.low
6f10: 65 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  er().           
6f20: 20 20 20 20 20 20 20 20 20 63 5f 69 20 3d 20 22           c_i = "
6f30: 69 22 20 20 69 66 20 73 65 6c 66 2e 78 56 5f 69  i"  if self.xV_i
6f40: 2e 53 74 61 74 65 20 20 65 6c 73 65 20 22 5f 22  .State  else "_"
6f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6f60: 20 20 20 20 20 63 5f 74 20 3d 20 22 74 22 20 20       c_t = "t"  
6f70: 69 66 20 73 65 6c 66 2e 78 56 5f 74 2e 53 74 61  if self.xV_t.Sta
6f80: 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20 20  te  else "_".   
6f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fa0: 20 63 5f 6e 20 3d 20 22 6e 22 20 20 69 66 20 73   c_n = "n"  if s
6fb0: 65 6c 66 2e 78 56 5f 6e 2e 53 74 61 74 65 20 20  elf.xV_n.State  
6fc0: 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20 20  else "_".       
6fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f 70               c_p
6fe0: 20 3d 20 22 70 22 20 20 69 66 20 73 65 6c 66 2e   = "p"  if self.
6ff0: 78 56 5f 70 2e 53 74 61 74 65 20 20 65 6c 73 65  xV_p.State  else
7000: 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20 20   "_".           
7010: 20 20 20 20 20 20 20 20 20 63 5f 6d 20 3d 20 22           c_m = "
7020: 6d 22 20 20 69 66 20 73 65 6c 66 2e 78 56 5f 6d  m"  if self.xV_m
7030: 2e 53 74 61 74 65 20 20 65 6c 73 65 20 22 5f 22  .State  else "_"
7040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7050: 20 20 20 20 20 63 5f 61 65 20 3d 20 22 65 22 20       c_ae = "e" 
7060: 20 69 66 20 73 65 6c 66 2e 78 56 5f 61 65 2e 53   if self.xV_ae.S
7070: 74 61 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20  tate  else "_". 
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7090: 20 20 20 63 5f 61 61 20 3d 20 22 61 22 20 20 69     c_aa = "a"  i
70a0: 66 20 73 65 6c 66 2e 78 56 5f 61 61 2e 53 74 61  f self.xV_aa.Sta
70b0: 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20 20  te  else "_".   
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70d0: 20 73 56 65 72 62 54 61 67 20 3d 20 63 5f 69 20   sVerbTag = c_i 
70e0: 2b 20 63 5f 74 20 2b 20 63 5f 6e 20 2b 20 63 5f  + c_t + c_n + c_
70f0: 70 20 2b 20 63 5f 6d 20 2b 20 63 5f 61 65 20 2b  p + c_m + c_ae +
7100: 20 63 5f 61 61 0a 20 20 20 20 20 20 20 20 20 20   c_aa.          
7110: 20 20 20 20 20 20 20 20 20 20 69 66 20 22 70 22            if "p"
7120: 20 69 6e 20 73 56 65 72 62 54 61 67 20 61 6e 64   in sVerbTag and
7130: 20 6e 6f 74 20 73 56 65 72 62 54 61 67 2e 73 74   not sVerbTag.st
7140: 61 72 74 73 77 69 74 68 28 22 5f 5f 5f 70 5f 22  artswith("___p_"
7150: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ):.             
7160: 20 20 20 20 20 20 20 20 20 20 20 73 56 65 72 62             sVerb
7170: 54 61 67 20 3d 20 73 56 65 72 62 54 61 67 2e 72  Tag = sVerbTag.r
7180: 65 70 6c 61 63 65 28 22 70 22 2c 20 22 71 22 29  eplace("p", "q")
7190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71a0: 20 20 20 20 20 69 66 20 6e 6f 74 20 73 56 65 72       if not sVer
71b0: 62 54 61 67 2e 65 6e 64 73 77 69 74 68 28 22 5f  bTag.endswith("_
71c0: 5f 22 29 20 61 6e 64 20 6e 6f 74 20 73 56 65 72  _") and not sVer
71d0: 62 54 61 67 2e 73 74 61 72 74 73 77 69 74 68 28  bTag.startswith(
71e0: 22 5f 5f 5f 5f 22 29 3a 0a 20 20 20 20 20 20 20  "____"):.       
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7200: 20 73 56 65 72 62 50 61 74 74 65 72 6e 20 3d 20   sVerbPattern = 
7210: 73 65 6c 66 2e 78 56 70 61 74 74 65 72 6e 2e 54  self.xVpattern.T
7220: 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20  ext.strip().    
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 20 20 20 20 69 66 20 6e 6f 74 20 73 56 65 72 62      if not sVerb
7250: 50 61 74 74 65 72 6e 3a 0a 20 20 20 20 20 20 20  Pattern:.       
7260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7270: 20 20 20 20 20 23 20 55 74 69 6c 69 73 61 74 69       # Utilisati
7280: 6f 6e 20 64 75 20 67 c3 a9 6e c3 a9 72 61 74 65  on du g..n..rate
7290: 75 72 20 64 65 20 63 6f 6e 6a 75 67 61 69 73 6f  ur de conjugaiso
72a0: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
72b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
72c0: 72 20 73 46 6c 65 78 69 6f 6e 2c 20 73 46 6c 65  r sFlexion, sFle
72d0: 78 54 61 67 73 20 69 6e 20 63 6f 6e 6a 67 65 6e  xTags in conjgen
72e0: 2e 63 6f 6e 6a 75 67 61 74 65 28 73 65 6c 66 2e  .conjugate(self.
72f0: 73 4c 65 6d 6d 61 2c 20 73 56 65 72 62 54 61 67  sLemma, sVerbTag
7300: 2c 20 6e 6f 74 20 62 6f 6f 6c 28 73 65 6c 66 2e  , not bool(self.
7310: 78 56 5f 70 70 2e 53 74 61 74 65 29 29 3a 0a 20  xV_pp.State)):. 
7320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7340: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
7350: 65 78 2e 61 70 70 65 6e 64 28 28 73 46 6c 65 78  ex.append((sFlex
7360: 69 6f 6e 2c 20 73 46 6c 65 78 54 61 67 73 29 29  ion, sFlexTags))
7370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7380: 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20           else:. 
7390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73a0: 20 20 20 20 20 20 20 20 20 20 20 23 20 63 6f 70             # cop
73b0: 69 65 20 64 75 20 6d 6f 74 69 66 20 64 e2 80 99  ie du motif d...
73c0: 75 6e 20 61 75 74 72 65 20 76 65 72 62 65 20 3a  un autre verbe :
73d0: 20 75 74 69 6c 69 73 61 74 69 6f 6e 20 64 75 20   utilisation du 
73e0: 63 6f 6e 6a 75 67 75 65 75 72 0a 20 20 20 20 20  conjugueur.     
73f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7400: 20 20 20 20 20 20 20 69 66 20 63 6f 6e 6a 2e 69         if conj.i
7410: 73 56 65 72 62 28 73 56 65 72 62 50 61 74 74 65  sVerb(sVerbPatte
7420: 72 6e 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  rn):.           
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7440: 20 20 20 20 20 6f 56 65 72 62 20 3d 20 63 6f 6e       oVerb = con
7450: 6a 2e 56 65 72 62 28 73 65 6c 66 2e 73 4c 65 6d  j.Verb(self.sLem
7460: 6d 61 2c 20 73 56 65 72 62 50 61 74 74 65 72 6e  ma, sVerbPattern
7470: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7490: 20 20 66 6f 72 20 73 54 61 67 31 2c 20 64 46 6c    for sTag1, dFl
74a0: 65 78 20 69 6e 20 6f 56 65 72 62 2e 64 43 6f 6e  ex in oVerb.dCon
74b0: 6a 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20  j.items():.     
74c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
74e0: 66 20 73 54 61 67 31 20 21 3d 20 22 3a 51 22 3a  f sTag1 != ":Q":
74f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7510: 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 54 61           for sTa
7520: 67 32 2c 20 73 43 6f 6e 6a 20 69 6e 20 64 46 6c  g2, sConj in dFl
7530: 65 78 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20  ex.items():.    
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7560: 20 20 20 20 20 20 20 20 69 66 20 73 54 61 67 32          if sTag2
7570: 2e 73 74 61 72 74 73 77 69 74 68 28 22 3a 22 29  .startswith(":")
7580: 20 61 6e 64 20 73 43 6f 6e 6a 3a 0a 20 20 20 20   and sConj:.    
7590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
75c0: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
75d0: 61 70 70 65 6e 64 28 28 73 43 6f 6e 6a 2c 20 22  append((sConj, "
75e0: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
75f0: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
7600: 54 61 67 20 2b 20 73 54 61 67 31 20 2b 20 73 54  Tag + sTag1 + sT
7610: 61 67 32 29 29 0a 20 20 20 20 20 20 20 20 20 20  ag2)).          
7620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7630: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a            else:.
7640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7660: 20 20 20 20 20 20 20 20 23 20 70 61 72 74 69 63          # partic
7670: 69 70 65 73 20 70 61 73 73 c3 a9 73 0a 20 20 20  ipes pass..s.   
7680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76a0: 20 20 20 20 20 69 66 20 64 46 6c 65 78 5b 22 3a       if dFlex[":
76b0: 51 33 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20  Q3"]:.          
76c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76e0: 20 20 69 66 20 64 46 6c 65 78 5b 22 3a 51 32 22    if dFlex[":Q2"
76f0: 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]:.             
7700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7720: 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74     self.lGenerat
7730: 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64  edFlex.append((d
7740: 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 22 3a 56  Flex[":Q1"], ":V
7750: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
7760: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
7770: 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 73 2f 2a 22  g + ":Q:A:m:s/*"
7780: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
7790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77b0: 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74     self.lGenerat
77c0: 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64  edFlex.append((d
77d0: 46 6c 65 78 5b 22 3a 51 32 22 5d 2c 20 22 3a 56  Flex[":Q2"], ":V
77e0: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
77f0: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
7800: 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 70 2f 2a 22  g + ":Q:A:m:p/*"
7810: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
7820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
7840: 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lse:.           
7850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7870: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
7880: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
7890: 28 64 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 22  (dFlex[":Q1"], "
78a0: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
78b0: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
78c0: 54 61 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 69 2f  Tag + ":Q:A:m:i/
78d0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
78e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7900: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
7910: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c  Flex.append((dFl
7920: 65 78 5b 22 3a 51 33 22 5d 2c 20 22 3a 56 22 20  ex[":Q3"], ":V" 
7930: 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b  + oVerb.cGroup +
7940: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
7950: 2b 20 22 3a 51 3a 41 3a 66 3a 73 2f 2a 22 29 29  + ":Q:A:f:s/*"))
7960: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
7990: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
79a0: 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22  .append((dFlex["
79b0: 3a 51 34 22 5d 2c 20 22 3a 56 22 20 2b 20 6f 56  :Q4"], ":V" + oV
79c0: 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22  erb.cGroup + "_"
79d0: 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a   + sVerbTag + ":
79e0: 51 3a 41 3a 66 3a 70 2f 2a 22 29 29 0a 20 20 20  Q:A:f:p/*")).   
79f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20       else:.     
7a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a40: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e         self.lGen
7a50: 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e  eratedFlex.appen
7a60: 64 28 28 64 46 6c 65 78 5b 22 3a 51 31 22 5d 2c  d((dFlex[":Q1"],
7a70: 20 22 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47   ":V" + oVerb.cG
7a80: 72 6f 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65  roup + "_" + sVe
7a90: 72 62 54 61 67 20 2b 20 22 3a 51 3a 65 3a 69 2f  rbTag + ":Q:e:i/
7aa0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
7ab0: 20 65 6c 69 66 20 73 65 6c 66 2e 78 57 2e 53 74   elif self.xW.St
7ac0: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
7ad0: 20 20 20 20 20 23 20 41 64 76 65 72 62 65 0a 20       # Adverbe. 
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7af0: 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c  elf.sLemma = sel
7b00: 66 2e 73 4c 65 6d 6d 61 2e 6c 6f 77 65 72 28 29  f.sLemma.lower()
7b10: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
7b20: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
7b30: 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65  dFlex.append((se
7b40: 6c 66 2e 73 4c 65 6d 6d 61 2c 20 22 3a 57 2f 2a  lf.sLemma, ":W/*
7b50: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
7b60: 65 6c 69 66 20 73 65 6c 66 2e 78 58 2e 53 74 61  elif self.xX.Sta
7b70: 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  te:.            
7b80: 20 20 20 20 23 20 41 75 74 72 65 0a 20 20 20 20      # Autre.    
7b90: 20 20 20 20 20 20 20 20 20 20 20 20 73 46 6c 65              sFle
7ba0: 78 69 6f 6e 20 3d 20 73 65 6c 66 2e 78 46 6c 65  xion = self.xFle
7bb0: 78 69 6f 6e 2e 54 65 78 74 2e 73 74 72 69 70 28  xion.Text.strip(
7bc0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7bd0: 20 20 73 54 61 67 73 20 3d 20 73 65 6c 66 2e 78    sTags = self.x
7be0: 54 61 67 73 2e 54 65 78 74 2e 73 74 72 69 70 28  Tags.Text.strip(
7bf0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7c00: 20 20 69 66 20 73 46 6c 65 78 69 6f 6e 20 61 6e    if sFlexion an
7c10: 64 20 73 54 61 67 73 2e 73 74 61 72 74 73 77 69  d sTags.startswi
7c20: 74 68 28 22 3a 22 29 3a 0a 20 20 20 20 20 20 20  th(":"):.       
7c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
7c40: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
7c50: 2e 61 70 70 65 6e 64 28 28 73 46 6c 65 78 69 6f  .append((sFlexio
7c60: 6e 2c 20 73 54 61 67 73 29 29 0a 20 20 20 20 20  n, sTags)).     
7c70: 20 20 20 73 65 6c 66 2e 5f 73 68 6f 77 47 65 6e     self._showGen
7c80: 57 6f 72 64 73 28 29 0a 0a 20 20 20 20 64 65 66  Words()..    def
7c90: 20 5f 73 68 6f 77 47 65 6e 57 6f 72 64 73 20 28   _showGenWords (
7ca0: 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 78  self):.        x
7cb0: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 20 3d 20  GridDataModel = 
7cc0: 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e  self.xGridModelN
7cd0: 65 77 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  ew.GridDataModel
7ce0: 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61  .        xGridDa
7cf0: 74 61 4d 6f 64 65 6c 2e 72 65 6d 6f 76 65 41 6c  taModel.removeAl
7d00: 6c 52 6f 77 73 28 29 0a 20 20 20 20 20 20 20 20  lRows().        
7d10: 69 66 20 6e 6f 74 20 73 65 6c 66 2e 6c 47 65 6e  if not self.lGen
7d20: 65 72 61 74 65 64 46 6c 65 78 3a 0a 20 20 20 20  eratedFlex:.    
7d30: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64          self.xAd
7d40: 64 2e 45 6e 61 62 6c 65 64 20 3d 20 46 61 6c 73  d.Enabled = Fals
7d50: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  e.            re
7d60: 74 75 72 6e 0a 20 20 20 20 20 20 20 20 66 6f 72  turn.        for
7d70: 20 69 2c 20 28 73 46 6c 65 78 69 6f 6e 2c 20 73   i, (sFlexion, s
7d80: 54 61 67 29 20 69 6e 20 65 6e 75 6d 65 72 61 74  Tag) in enumerat
7d90: 65 28 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65  e(self.lGenerate
7da0: 64 46 6c 65 78 29 3a 0a 20 20 20 20 20 20 20 20  dFlex):.        
7db0: 20 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64      xGridDataMod
7dc0: 65 6c 2e 61 64 64 52 6f 77 28 69 2c 20 28 73 46  el.addRow(i, (sF
7dd0: 6c 65 78 69 6f 6e 2c 20 73 54 61 67 29 29 0a 20  lexion, sTag)). 
7de0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64         self.xAdd
7df0: 2e 45 6e 61 62 6c 65 64 20 3d 20 54 72 75 65 0a  .Enabled = True.
7e00: 0a 20 20 20 20 64 65 66 20 5f 72 65 73 65 74 57  .    def _resetW
7e10: 69 64 67 65 74 73 20 28 73 65 6c 66 29 3a 0a 20  idgets (self):. 
7e20: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4c 65 6d         self.xLem
7e30: 6d 61 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20  ma.Text = "".   
7e40: 20 20 20 20 20 73 65 6c 66 2e 78 4e 41 2e 53 74       self.xNA.St
7e50: 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20  ate = False.    
7e60: 20 20 20 20 73 65 6c 66 2e 78 4e 2e 53 74 61 74      self.xN.Stat
7e70: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
7e80: 20 20 73 65 6c 66 2e 78 41 2e 53 74 61 74 65 20    self.xA.State 
7e90: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
7ea0: 73 65 6c 66 2e 78 4d 31 2e 53 74 61 74 65 20 3d  self.xM1.State =
7eb0: 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73   False.        s
7ec0: 65 6c 66 2e 78 4d 32 2e 53 74 61 74 65 20 3d 20  elf.xM2.State = 
7ed0: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
7ee0: 6c 66 2e 78 4d 50 2e 53 74 61 74 65 20 3d 20 46  lf.xMP.State = F
7ef0: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c  alse.        sel
7f00: 66 2e 78 56 2e 53 74 61 74 65 20 3d 20 46 61 6c  f.xV.State = Fal
7f10: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
7f20: 78 57 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  xW.State = False
7f30: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 58  .        self.xX
7f40: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
7f50: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65 70         self.xSep
7f60: 69 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  i.State = False.
7f70: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 6d          self.xSm
7f80: 61 73 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  as.State = False
7f90: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
7fa0: 66 65 6d 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  fem.State = Fals
7fb0: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
7fc0: 53 73 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  Ss.State = False
7fd0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
7fe0: 78 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  x.State = False.
7ff0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69          self.xSi
8000: 6e 76 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  nv.State = False
8010: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41  .        self.xA
8020: 6c 74 4c 65 6d 6d 61 2e 54 65 78 74 20 3d 20 22  ltLemma.Text = "
8030: 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ".        self.x
8040: 4e 41 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  NA2.State = Fals
8050: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
8060: 4e 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  N2.State = False
8070: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41  .        self.xA
8080: 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  2.State = False.
8090: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65          self.xSe
80a0: 70 69 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  pi2.State = Fals
80b0: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
80c0: 53 6d 61 73 32 2e 53 74 61 74 65 20 3d 20 46 61  Smas2.State = Fa
80d0: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
80e0: 2e 78 53 66 65 6d 32 2e 53 74 61 74 65 20 3d 20  .xSfem2.State = 
80f0: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
8100: 6c 66 2e 78 53 73 32 2e 53 74 61 74 65 20 3d 20  lf.xSs2.State = 
8110: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
8120: 6c 66 2e 78 53 78 32 2e 53 74 61 74 65 20 3d 20  lf.xSx2.State = 
8130: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
8140: 6c 66 2e 78 53 69 6e 76 32 2e 53 74 61 74 65 20  lf.xSinv2.State 
8150: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
8160: 73 65 6c 66 2e 78 4d 65 70 69 2e 53 74 61 74 65  self.xMepi.State
8170: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
8180: 20 73 65 6c 66 2e 78 4d 6d 61 73 2e 53 74 61 74   self.xMmas.Stat
8190: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
81a0: 20 20 73 65 6c 66 2e 78 4d 66 65 6d 2e 53 74 61    self.xMfem.Sta
81b0: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
81c0: 20 20 20 73 65 6c 66 2e 78 56 5f 69 2e 53 74 61     self.xV_i.Sta
81d0: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
81e0: 20 20 20 73 65 6c 66 2e 78 56 5f 74 2e 53 74 61     self.xV_t.Sta
81f0: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
8200: 20 20 20 73 65 6c 66 2e 78 56 5f 6e 2e 53 74 61     self.xV_n.Sta
8210: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
8220: 20 20 20 73 65 6c 66 2e 78 56 5f 70 2e 53 74 61     self.xV_p.Sta
8230: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
8240: 20 20 20 73 65 6c 66 2e 78 56 5f 6d 2e 53 74 61     self.xV_m.Sta
8250: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
8260: 20 20 20 73 65 6c 66 2e 78 56 5f 61 65 2e 53 74     self.xV_ae.St
8270: 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20  ate = False.    
8280: 20 20 20 20 73 65 6c 66 2e 78 56 5f 61 61 2e 53      self.xV_aa.S
8290: 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20  tate = False.   
82a0: 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 70 70 2e       self.xV_pp.
82b0: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
82c0: 20 20 20 20 20 20 73 65 6c 66 2e 78 56 70 61 74        self.xVpat
82d0: 74 65 72 6e 2e 54 65 78 74 20 3d 20 22 22 0a 20  tern.Text = "". 
82e0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 46 6c 65         self.xFle
82f0: 78 69 6f 6e 2e 54 65 78 74 20 3d 20 22 22 0a 20  xion.Text = "". 
8300: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 54 61 67         self.xTag
8310: 73 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20 20  s.Text = "".    
8320: 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f      self.xGridMo
8330: 64 65 6c 4e 65 77 2e 47 72 69 64 44 61 74 61 4d  delNew.GridDataM
8340: 6f 64 65 6c 2e 72 65 6d 6f 76 65 41 6c 6c 52 6f  odel.removeAllRo
8350: 77 73 28 29 0a 0a 20 20 20 20 40 5f 77 61 69 74  ws()..    @_wait
8360: 50 6f 69 6e 74 65 72 0a 20 20 20 20 64 65 66 20  Pointer.    def 
8370: 61 64 64 54 6f 4c 65 78 69 63 6f 6e 20 28 73 65  addToLexicon (se
8380: 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c  lf):.        sel
8390: 66 2e 78 41 64 64 2e 45 6e 61 62 6c 65 64 20 3d  f.xAdd.Enabled =
83a0: 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 78   False.        x
83b0: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77  GridDataModelNew
83c0: 20 3d 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64   = self.xGridMod
83d0: 65 6c 4e 65 77 2e 47 72 69 64 44 61 74 61 4d 6f  elNew.GridDataMo
83e0: 64 65 6c 0a 20 20 20 20 20 20 20 20 78 47 72 69  del.        xGri
83f0: 64 44 61 74 61 4d 6f 64 65 6c 4c 65 78 20 3d 20  dDataModelLex = 
8400: 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4c  self.xGridModelL
8410: 65 78 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  ex.GridDataModel
8420: 0a 20 20 20 20 20 20 20 20 6e 53 74 61 72 74 20  .        nStart 
8430: 3d 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  = xGridDataModel
8440: 4c 65 78 2e 52 6f 77 43 6f 75 6e 74 0a 20 20 20  Lex.RowCount.   
8450: 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61       for i in ra
8460: 6e 67 65 28 78 47 72 69 64 44 61 74 61 4d 6f 64  nge(xGridDataMod
8470: 65 6c 4e 65 77 2e 52 6f 77 43 6f 75 6e 74 29 3a  elNew.RowCount):
8480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 46 6c  .            sFl
8490: 65 78 69 6f 6e 2c 20 73 54 61 67 20 3d 20 78 47  exion, sTag = xG
84a0: 72 69 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77 2e  ridDataModelNew.
84b0: 67 65 74 52 6f 77 44 61 74 61 28 69 29 0a 20 20  getRowData(i).  
84c0: 20 20 20 20 20 20 20 20 20 20 78 47 72 69 64 44            xGridD
84d0: 61 74 61 4d 6f 64 65 6c 4c 65 78 2e 61 64 64 52  ataModelLex.addR
84e0: 6f 77 28 6e 53 74 61 72 74 20 2b 20 69 2c 20 28  ow(nStart + i, (
84f0: 73 46 6c 65 78 69 6f 6e 2c 20 73 65 6c 66 2e 73  sFlexion, self.s
8500: 4c 65 6d 6d 61 2c 20 73 54 61 67 29 29 0a 20 20  Lemma, sTag)).  
8510: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 61 76 65        self.xSave
8520: 2e 45 6e 61 62 6c 65 64 20 3d 20 54 72 75 65 0a  .Enabled = True.
8530: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 75          self.xNu
8540: 6d 4c 65 78 2e 4c 61 62 65 6c 20 3d 20 73 74 72  mLex.Label = str
8550: 28 69 6e 74 28 73 65 6c 66 2e 78 4e 75 6d 4c 65  (int(self.xNumLe
8560: 78 2e 4c 61 62 65 6c 29 20 2b 20 78 47 72 69 64  x.Label) + xGrid
8570: 44 61 74 61 4d 6f 64 65 6c 4e 65 77 2e 52 6f 77  DataModelNew.Row
8580: 43 6f 75 6e 74 29 0a 20 20 20 20 20 20 20 20 73  Count).        s
8590: 65 6c 66 2e 5f 72 65 73 65 74 57 69 64 67 65 74  elf._resetWidget
85a0: 73 28 29 0a 0a 20 20 20 20 40 5f 77 61 69 74 50  s()..    @_waitP
85b0: 6f 69 6e 74 65 72 0a 20 20 20 20 64 65 66 20 64  ointer.    def d
85c0: 65 6c 65 74 65 53 65 6c 65 63 74 65 64 45 6e 74  eleteSelectedEnt
85d0: 72 69 65 73 20 28 73 65 6c 66 29 3a 0a 20 20 20  ries (self):.   
85e0: 20 20 20 20 20 23 20 67 65 6e 65 72 61 74 65 64       # generated
85f0: 20 65 6e 74 72 69 65 73 0a 20 20 20 20 20 20 20   entries.       
8600: 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 20   xGridDataModel 
8610: 3d 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65  = self.xGridMode
8620: 6c 4e 65 77 2e 47 72 69 64 44 61 74 61 4d 6f 64  lNew.GridDataMod
8630: 65 6c 0a 20 20 20 20 20 20 20 20 23 68 65 6c 70  el.        #help
8640: 65 72 73 2e 78 72 61 79 28 78 47 72 69 64 44 61  ers.xray(xGridDa
8650: 74 61 4d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20  taModel).       
8660: 20 66 6f 72 20 69 20 69 6e 20 73 65 6c 66 2e 78   for i in self.x
8670: 47 72 69 64 43 6f 6e 74 72 6f 6c 4e 65 77 2e 67  GridControlNew.g
8680: 65 74 53 65 6c 65 63 74 65 64 52 6f 77 73 28 29  etSelectedRows()
8690: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  :.            if
86a0: 20 69 20 3c 20 78 47 72 69 64 44 61 74 61 4d 6f   i < xGridDataMo
86b0: 64 65 6c 2e 52 6f 77 43 6f 75 6e 74 3a 0a 20 20  del.RowCount:.  
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 47                xG
86d0: 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 72 65 6d  ridDataModel.rem
86e0: 6f 76 65 52 6f 77 28 69 29 0a 20 20 20 20 20 20  oveRow(i).      
86f0: 20 20 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74    self.xGridCont
8700: 72 6f 6c 4e 65 77 2e 64 65 73 65 6c 65 63 74 41  rolNew.deselectA
8710: 6c 6c 52 6f 77 73 28 29 0a 20 20 20 20 20 20 20  llRows().       
8720: 20 23 20 6c 65 78 69 63 6f 6e 0a 20 20 20 20 20   # lexicon.     
8730: 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65     xGridDataMode
8740: 6c 20 3d 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f  l = self.xGridMo
8750: 64 65 6c 4c 65 78 2e 47 72 69 64 44 61 74 61 4d  delLex.GridDataM
8760: 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 6e 53 65  odel.        nSe
8770: 6c 65 63 74 65 64 45 6e 74 72 69 65 73 20 3d 20  lectedEntries = 
8780: 6c 65 6e 28 73 65 6c 66 2e 78 47 72 69 64 43 6f  len(self.xGridCo
8790: 6e 74 72 6f 6c 4c 65 78 2e 67 65 74 53 65 6c 65  ntrolLex.getSele
87a0: 63 74 65 64 52 6f 77 73 28 29 29 0a 20 20 20 20  ctedRows()).    
87b0: 20 20 20 20 66 6f 72 20 69 20 69 6e 20 73 65 6c      for i in sel
87c0: 66 2e 78 47 72 69 64 43 6f 6e 74 72 6f 6c 4c 65  f.xGridControlLe
87d0: 78 2e 67 65 74 53 65 6c 65 63 74 65 64 52 6f 77  x.getSelectedRow
87e0: 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  s():.           
87f0: 20 69 66 20 69 20 3c 20 78 47 72 69 64 44 61 74   if i < xGridDat
8800: 61 4d 6f 64 65 6c 2e 52 6f 77 43 6f 75 6e 74 3a  aModel.RowCount:
8810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8820: 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e   xGridDataModel.
8830: 72 65 6d 6f 76 65 52 6f 77 28 69 29 0a 20 20 20  removeRow(i).   
8840: 20 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64 43       self.xGridC
8850: 6f 6e 74 72 6f 6c 4c 65 78 2e 64 65 73 65 6c 65  ontrolLex.desele
8860: 63 74 41 6c 6c 52 6f 77 73 28 29 0a 20 20 20 20  ctAllRows().    
8870: 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78      self.xNumLex
8880: 2e 4c 61 62 65 6c 20 3d 20 73 74 72 28 78 47 72  .Label = str(xGr
8890: 69 64 44 61 74 61 4d 6f 64 65 6c 2e 52 6f 77 43  idDataModel.RowC
88a0: 6f 75 6e 74 29 0a 0a 0a 23 67 5f 49 6d 70 6c 65  ount)...#g_Imple
88b0: 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70 65 72 20  mentationHelper 
88c0: 3d 20 75 6e 6f 68 65 6c 70 65 72 2e 49 6d 70 6c  = unohelper.Impl
88d0: 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70 65 72  ementationHelper
88e0: 28 29 0a 23 67 5f 49 6d 70 6c 65 6d 65 6e 74 61  ().#g_Implementa
88f0: 74 69 6f 6e 48 65 6c 70 65 72 2e 61 64 64 49 6d  tionHelper.addIm
8900: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 28 4c 65 78  plementation(Lex
8910: 69 63 6f 6e 45 64 69 74 6f 72 2c 20 27 6e 65 74  iconEditor, 'net
8920: 2e 67 72 61 6d 6d 61 6c 65 63 74 65 2e 4c 65 78  .grammalecte.Lex
8930: 69 63 6f 6e 45 64 69 74 6f 72 27 2c 20 28 27 63  iconEditor', ('c
8940: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 74 61 73 6b  om.sun.star.task
8950: 2e 4a 6f 62 27 2c 29 29 0a                       .Job',)).