Grammalecte  Hex Artifact Content

Artifact 828f4f365eb594eeaee30ed4433e8a250eef6d1053344b05e5f6c997325c5bb3:


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: 69 6d 70 6f 72 74 20 70 6c 61 74 66 6f 72 6d 0a  import platform.
0090: 0a 69 6d 70 6f 72 74 20 68 65 6c 70 65 72 73 0a  .import helpers.
00a0: 69 6d 70 6f 72 74 20 6c 78 65 5f 73 74 72 69 6e  import lxe_strin
00b0: 67 73 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61  gs.import gramma
00c0: 6c 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c  lecte.graphspell
00d0: 20 61 73 20 73 63 0a 69 6d 70 6f 72 74 20 67 72   as sc.import gr
00e0: 61 6d 6d 61 6c 65 63 74 65 2e 67 72 61 70 68 73  ammalecte.graphs
00f0: 70 65 6c 6c 2e 64 61 77 67 20 61 73 20 64 61 77  pell.dawg as daw
0100: 67 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c  g.import grammal
0110: 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c 2e  ecte.graphspell.
0120: 69 62 64 61 77 67 20 61 73 20 69 62 64 61 77 67  ibdawg as ibdawg
0130: 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c 65  .import grammale
0140: 63 74 65 2e 66 72 2e 63 6f 6e 6a 20 61 73 20 63  cte.fr.conj as c
0150: 6f 6e 6a 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d  onj.import gramm
0160: 61 6c 65 63 74 65 2e 66 72 2e 63 6f 6e 6a 5f 67  alecte.fr.conj_g
0170: 65 6e 65 72 61 74 6f 72 20 61 73 20 63 6f 6e 6a  enerator as conj
0180: 67 65 6e 0a 0a 69 6d 70 6f 72 74 20 53 65 61 72  gen..import Sear
0190: 63 68 57 6f 72 64 73 0a 69 6d 70 6f 72 74 20 54  chWords.import T
01a0: 61 67 73 49 6e 66 6f 0a 0a 66 72 6f 6d 20 63 6f  agsInfo..from co
01b0: 6d 2e 73 75 6e 2e 73 74 61 72 2e 74 61 73 6b 20  m.sun.star.task 
01c0: 69 6d 70 6f 72 74 20 58 4a 6f 62 45 78 65 63 75  import XJobExecu
01d0: 74 6f 72 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e  tor.from com.sun
01e0: 2e 73 74 61 72 2e 61 77 74 20 69 6d 70 6f 72 74  .star.awt import
01f0: 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72   XActionListener
0200: 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74  .from com.sun.st
0210: 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58 54  ar.awt import XT
0220: 6f 70 57 69 6e 64 6f 77 4c 69 73 74 65 6e 65 72  opWindowListener
0230: 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74  .from com.sun.st
0240: 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58 4b  ar.awt import XK
0250: 65 79 4c 69 73 74 65 6e 65 72 0a 0a 66 72 6f 6d  eyListener..from
0260: 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77   com.sun.star.aw
0270: 74 2e 4d 65 73 73 61 67 65 42 6f 78 42 75 74 74  t.MessageBoxButt
0280: 6f 6e 73 20 69 6d 70 6f 72 74 20 42 55 54 54 4f  ons import BUTTO
0290: 4e 53 5f 4f 4b 0a 23 20 42 55 54 54 4f 4e 53 5f  NS_OK.# BUTTONS_
02a0: 4f 4b 2c 20 42 55 54 54 4f 4e 53 5f 4f 4b 5f 43  OK, BUTTONS_OK_C
02b0: 41 4e 43 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 59  ANCEL, BUTTONS_Y
02c0: 45 53 5f 4e 4f 2c 20 42 55 54 54 4f 4e 53 5f 59  ES_NO, BUTTONS_Y
02d0: 45 53 5f 4e 4f 5f 43 41 4e 43 45 4c 2c 20 42 55  ES_NO_CANCEL, BU
02e0: 54 54 4f 4e 53 5f 52 45 54 52 59 5f 43 41 4e 43  TTONS_RETRY_CANC
02f0: 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 41 42 4f 52  EL, BUTTONS_ABOR
0300: 54 5f 49 47 4e 4f 52 45 5f 52 45 54 52 59 0a 23  T_IGNORE_RETRY.#
0310: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
0320: 4f 4b 2c 20 44 45 46 41 55 4c 54 5f 42 55 54 54  OK, DEFAULT_BUTT
0330: 4f 4e 5f 43 41 4e 43 45 4c 2c 20 44 45 46 41 55  ON_CANCEL, DEFAU
0340: 4c 54 5f 42 55 54 54 4f 4e 5f 52 45 54 52 59 2c  LT_BUTTON_RETRY,
0350: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
0360: 59 45 53 2c 20 44 45 46 41 55 4c 54 5f 42 55 54  YES, DEFAULT_BUT
0370: 54 4f 4e 5f 4e 4f 2c 20 44 45 46 41 55 4c 54 5f  TON_NO, DEFAULT_
0380: 42 55 54 54 4f 4e 5f 49 47 4e 4f 52 45 0a 66 72  BUTTON_IGNORE.fr
0390: 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  om com.sun.star.
03a0: 61 77 74 2e 4d 65 73 73 61 67 65 42 6f 78 54 79  awt.MessageBoxTy
03b0: 70 65 20 69 6d 70 6f 72 74 20 49 4e 46 4f 42 4f  pe import INFOBO
03c0: 58 2c 20 45 52 52 4f 52 42 4f 58 20 23 20 4d 45  X, ERRORBOX # ME
03d0: 53 53 41 47 45 42 4f 58 2c 20 49 4e 46 4f 42 4f  SSAGEBOX, INFOBO
03e0: 58 2c 20 57 41 52 4e 49 4e 47 42 4f 58 2c 20 45  X, WARNINGBOX, E
03f0: 52 52 4f 52 42 4f 58 2c 20 51 55 45 52 59 42 4f  RRORBOX, QUERYBO
0400: 58 0a 0a 64 65 66 20 4d 65 73 73 61 67 65 42 6f  X..def MessageBo
0410: 78 20 28 78 44 6f 63 75 6d 65 6e 74 2c 20 73 4d  x (xDocument, sM
0420: 73 67 2c 20 73 54 69 74 6c 65 2c 20 6e 42 6f 78  sg, sTitle, nBox
0430: 54 79 70 65 3d 49 4e 46 4f 42 4f 58 2c 20 6e 42  Type=INFOBOX, nB
0440: 6f 78 42 75 74 74 6f 6e 73 3d 42 55 54 54 4f 4e  oxButtons=BUTTON
0450: 53 5f 4f 4b 29 3a 0a 20 20 20 20 78 50 61 72 65  S_OK):.    xPare
0460: 6e 74 57 69 6e 20 3d 20 78 44 6f 63 75 6d 65 6e  ntWin = xDocumen
0470: 74 2e 43 75 72 72 65 6e 74 43 6f 6e 74 72 6f 6c  t.CurrentControl
0480: 6c 65 72 2e 46 72 61 6d 65 2e 43 6f 6e 74 61 69  ler.Frame.Contai
0490: 6e 65 72 57 69 6e 64 6f 77 0a 20 20 20 20 63 74  nerWindow.    ct
04a0: 78 20 3d 20 75 6e 6f 2e 67 65 74 43 6f 6d 70 6f  x = uno.getCompo
04b0: 6e 65 6e 74 43 6f 6e 74 65 78 74 28 29 0a 20 20  nentContext().  
04c0: 20 20 78 54 6f 6f 6c 6b 69 74 20 3d 20 63 74 78    xToolkit = ctx
04d0: 2e 53 65 72 76 69 63 65 4d 61 6e 61 67 65 72 2e  .ServiceManager.
04e0: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69  createInstanceWi
04f0: 74 68 43 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73  thContext("com.s
0500: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 54 6f 6f 6c  un.star.awt.Tool
0510: 6b 69 74 22 2c 20 63 74 78 29 0a 20 20 20 20 78  kit", ctx).    x
0520: 4d 73 67 42 6f 78 20 3d 20 78 54 6f 6f 6c 6b 69  MsgBox = xToolki
0530: 74 2e 63 72 65 61 74 65 4d 65 73 73 61 67 65 42  t.createMessageB
0540: 6f 78 28 78 50 61 72 65 6e 74 57 69 6e 2c 20 6e  ox(xParentWin, n
0550: 42 6f 78 54 79 70 65 2c 20 6e 42 6f 78 42 75 74  BoxType, nBoxBut
0560: 74 6f 6e 73 2c 20 73 54 69 74 6c 65 2c 20 73 4d  tons, sTitle, sM
0570: 73 67 29 0a 20 20 20 20 72 65 74 75 72 6e 20 78  sg).    return x
0580: 4d 73 67 42 6f 78 2e 65 78 65 63 75 74 65 28 29  MsgBox.execute()
0590: 0a 0a 0a 64 65 66 20 5f 77 61 69 74 50 6f 69 6e  ...def _waitPoin
05a0: 74 65 72 20 28 66 75 6e 63 44 65 63 6f 72 61 74  ter (funcDecorat
05b0: 65 64 29 3a 0a 20 20 20 20 64 65 66 20 77 72 61  ed):.    def wra
05c0: 70 70 65 72 20 28 2a 61 72 67 73 2c 20 2a 2a 6b  pper (*args, **k
05d0: 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20  wargs):.        
05e0: 23 20 73 65 6c 66 20 69 73 20 74 68 65 20 66 69  # self is the fi
05f0: 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 66  rst parameter if
0600: 20 74 68 65 20 64 65 63 6f 72 61 74 6f 72 20 69   the decorator i
0610: 73 20 61 70 70 6c 69 65 64 20 6f 6e 20 61 20 6f  s applied on a o
0620: 62 6a 65 63 74 0a 20 20 20 20 20 20 20 20 73 65  bject.        se
0630: 6c 66 20 3d 20 61 72 67 73 5b 30 5d 0a 20 20 20  lf = args[0].   
0640: 20 20 20 20 20 23 20 62 65 66 6f 72 65 0a 20 20       # before.  
0650: 20 20 20 20 20 20 78 50 6f 69 6e 74 65 72 20 3d        xPointer =
0660: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
0670: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
0680: 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73 75 6e 2e  ontext("com.sun.
0690: 73 74 61 72 2e 61 77 74 2e 50 6f 69 6e 74 65 72  star.awt.Pointer
06a0: 22 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20  ", self.ctx).   
06b0: 20 20 20 20 20 78 50 6f 69 6e 74 65 72 2e 73 65       xPointer.se
06c0: 74 54 79 70 65 28 75 6e 6f 2e 67 65 74 43 6f 6e  tType(uno.getCon
06d0: 73 74 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d  stantByName("com
06e0: 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 53 79  .sun.star.awt.Sy
06f0: 73 74 65 6d 50 6f 69 6e 74 65 72 2e 57 41 49 54  stemPointer.WAIT
0700: 22 29 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e  ")).        xWin
0710: 64 6f 77 50 65 65 72 20 3d 20 73 65 6c 66 2e 78  dowPeer = self.x
0720: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 50 65 65  Container.getPee
0730: 72 28 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e  r().        xWin
0740: 64 6f 77 50 65 65 72 2e 73 65 74 50 6f 69 6e 74  dowPeer.setPoint
0750: 65 72 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20  er(xPointer).   
0760: 20 20 20 20 20 66 6f 72 20 78 20 69 6e 20 78 57       for x in xW
0770: 69 6e 64 6f 77 50 65 65 72 2e 57 69 6e 64 6f 77  indowPeer.Window
0780: 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  s:.            x
0790: 2e 73 65 74 50 6f 69 6e 74 65 72 28 78 50 6f 69  .setPointer(xPoi
07a0: 6e 74 65 72 29 0a 20 20 20 20 20 20 20 20 23 20  nter).        # 
07b0: 70 72 6f 63 65 73 73 69 6e 67 0a 20 20 20 20 20  processing.     
07c0: 20 20 20 72 65 73 75 6c 74 20 3d 20 66 75 6e 63     result = func
07d0: 44 65 63 6f 72 61 74 65 64 28 2a 61 72 67 73 2c  Decorated(*args,
07e0: 20 2a 2a 6b 77 61 72 67 73 29 0a 20 20 20 20 20   **kwargs).     
07f0: 20 20 20 23 20 61 66 74 65 72 0a 20 20 20 20 20     # after.     
0800: 20 20 20 78 50 6f 69 6e 74 65 72 2e 73 65 74 54     xPointer.setT
0810: 79 70 65 28 75 6e 6f 2e 67 65 74 43 6f 6e 73 74  ype(uno.getConst
0820: 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73  antByName("com.s
0830: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 53 79 73 74  un.star.awt.Syst
0840: 65 6d 50 6f 69 6e 74 65 72 2e 41 52 52 4f 57 22  emPointer.ARROW"
0850: 29 29 0a 20 20 20 20 20 20 20 20 78 57 69 6e 64  )).        xWind
0860: 6f 77 50 65 65 72 2e 73 65 74 50 6f 69 6e 74 65  owPeer.setPointe
0870: 72 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20 20  r(xPointer).    
0880: 20 20 20 20 66 6f 72 20 78 20 69 6e 20 78 57 69      for x in xWi
0890: 6e 64 6f 77 50 65 65 72 2e 57 69 6e 64 6f 77 73  ndowPeer.Windows
08a0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 2e  :.            x.
08b0: 73 65 74 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e  setPointer(xPoin
08c0: 74 65 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ter).        sel
08d0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74  f.xContainer.set
08e0: 56 69 73 69 62 6c 65 28 54 72 75 65 29 20 23 20  Visible(True) # 
08f0: 73 65 65 6d 73 20 6e 65 63 65 73 73 61 72 79 20  seems necessary 
0900: 74 6f 20 72 65 66 72 65 73 68 20 74 68 65 20 64  to refresh the d
0910: 69 61 6c 6f 67 20 62 6f 78 20 61 6e 64 20 74 65  ialog box and te
0920: 78 74 20 77 69 64 67 65 74 73 20 28 77 68 79 3f  xt widgets (why?
0930: 29 0a 20 20 20 20 20 20 20 20 23 20 72 65 74 75  ).        # retu
0940: 72 6e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  rn.        retur
0950: 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 72 65 74  n result.    ret
0960: 75 72 6e 20 77 72 61 70 70 65 72 0a 0a 0a 63 6c  urn wrapper...cl
0970: 61 73 73 20 4c 65 78 69 63 6f 6e 45 64 69 74 6f  ass LexiconEdito
0980: 72 20 28 75 6e 6f 68 65 6c 70 65 72 2e 42 61 73  r (unohelper.Bas
0990: 65 2c 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e  e, XActionListen
09a0: 65 72 2c 20 58 54 6f 70 57 69 6e 64 6f 77 4c 69  er, XTopWindowLi
09b0: 73 74 65 6e 65 72 2c 20 58 4b 65 79 4c 69 73 74  stener, XKeyList
09c0: 65 6e 65 72 2c 20 58 4a 6f 62 45 78 65 63 75 74  ener, XJobExecut
09d0: 6f 72 29 3a 0a 0a 20 20 20 20 64 65 66 20 5f 5f  or):..    def __
09e0: 69 6e 69 74 5f 5f 20 28 73 65 6c 66 2c 20 63 74  init__ (self, ct
09f0: 78 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66  x):.        self
0a00: 2e 63 74 78 20 3d 20 63 74 78 0a 20 20 20 20 20  .ctx = ctx.     
0a10: 20 20 20 73 65 6c 66 2e 78 53 76 4d 67 72 20 3d     self.xSvMgr =
0a20: 20 73 65 6c 66 2e 63 74 78 2e 53 65 72 76 69 63   self.ctx.Servic
0a30: 65 4d 61 6e 61 67 65 72 0a 20 20 20 20 20 20 20  eManager.       
0a40: 20 73 65 6c 66 2e 78 44 65 73 6b 74 6f 70 20 3d   self.xDesktop =
0a50: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
0a60: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
0a70: 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73 75 6e 2e  ontext("com.sun.
0a80: 73 74 61 72 2e 66 72 61 6d 65 2e 44 65 73 6b 74  star.frame.Deskt
0a90: 6f 70 22 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20  op", self.ctx). 
0aa0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 6f 63         self.xDoc
0ab0: 75 6d 65 6e 74 20 3d 20 73 65 6c 66 2e 78 44 65  ument = self.xDe
0ac0: 73 6b 74 6f 70 2e 67 65 74 43 75 72 72 65 6e 74  sktop.getCurrent
0ad0: 43 6f 6d 70 6f 6e 65 6e 74 28 29 0a 20 20 20 20  Component().    
0ae0: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
0af0: 6e 65 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20  ner = None.     
0b00: 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 20     self.xDialog 
0b10: 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73  = None.        s
0b20: 65 6c 66 2e 62 43 6c 6f 73 65 64 20 3d 20 46 61  elf.bClosed = Fa
0b30: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
0b40: 2e 6f 50 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f  .oPersonalDicJSO
0b50: 4e 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20  N = None.       
0b60: 20 23 20 64 61 74 61 0a 20 20 20 20 20 20 20 20   # data.        
0b70: 73 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 22 22  self.sLemma = ""
0b80: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47  .        self.lG
0b90: 65 6e 65 72 61 74 65 64 46 6c 65 78 20 3d 20 5b  eneratedFlex = [
0ba0: 5d 0a 20 20 20 20 20 20 20 20 23 20 6f 70 74 69  ].        # opti
0bb0: 6f 6e 73 20 6e 6f 64 65 0a 20 20 20 20 20 20 20  ons node.       
0bc0: 20 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f   self.xSettingNo
0bd0: 64 65 20 3d 20 68 65 6c 70 65 72 73 2e 67 65 74  de = helpers.get
0be0: 43 6f 6e 66 69 67 53 65 74 74 69 6e 67 28 22 2f  ConfigSetting("/
0bf0: 6f 72 67 2e 6f 70 65 6e 6f 66 66 69 63 65 2e 4c  org.openoffice.L
0c00: 69 67 68 74 70 72 6f 6f 66 5f 67 72 61 6d 6d 61  ightproof_gramma
0c10: 6c 65 63 74 65 2f 4f 74 68 65 72 2f 22 2c 20 54  lecte/Other/", T
0c20: 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c  rue).        sel
0c30: 66 2e 78 4f 70 74 69 6f 6e 4e 6f 64 65 20 3d 20  f.xOptionNode = 
0c40: 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64  self.xSettingNod
0c50: 65 2e 67 65 74 42 79 4e 61 6d 65 28 22 6f 5f 66  e.getByName("o_f
0c60: 72 22 29 0a 0a 20 20 20 20 64 65 66 20 5f 61 64  r")..    def _ad
0c70: 64 57 69 64 67 65 74 20 28 73 65 6c 66 2c 20 6e  dWidget (self, n
0c80: 61 6d 65 2c 20 77 74 79 70 65 2c 20 78 2c 20 79  ame, wtype, x, y
0c90: 2c 20 77 2c 20 68 2c 20 2a 2a 6b 77 61 72 67 73  , w, h, **kwargs
0ca0: 29 3a 0a 20 20 20 20 20 20 20 20 78 57 69 64 67  ):.        xWidg
0cb0: 65 74 20 3d 20 73 65 6c 66 2e 78 44 69 61 6c 6f  et = self.xDialo
0cc0: 67 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65  g.createInstance
0cd0: 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  ('com.sun.star.a
0ce0: 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 25 73 4d  wt.UnoControl%sM
0cf0: 6f 64 65 6c 27 20 25 20 77 74 79 70 65 29 0a 20  odel' % wtype). 
0d00: 20 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 4e         xWidget.N
0d10: 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20 20 20 20  ame = name.     
0d20: 20 20 20 78 57 69 64 67 65 74 2e 50 6f 73 69 74     xWidget.Posit
0d30: 69 6f 6e 58 20 3d 20 78 0a 20 20 20 20 20 20 20  ionX = x.       
0d40: 20 78 57 69 64 67 65 74 2e 50 6f 73 69 74 69 6f   xWidget.Positio
0d50: 6e 59 20 3d 20 79 0a 20 20 20 20 20 20 20 20 78  nY = y.        x
0d60: 57 69 64 67 65 74 2e 57 69 64 74 68 20 3d 20 77  Widget.Width = w
0d70: 0a 20 20 20 20 20 20 20 20 78 57 69 64 67 65 74  .        xWidget
0d80: 2e 48 65 69 67 68 74 20 3d 20 68 0a 20 20 20 20  .Height = h.    
0d90: 20 20 20 20 66 6f 72 20 6b 2c 20 77 20 69 6e 20      for k, w in 
0da0: 6b 77 61 72 67 73 2e 69 74 65 6d 73 28 29 3a 0a  kwargs.items():.
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 61              seta
0dc0: 74 74 72 28 78 57 69 64 67 65 74 2c 20 6b 2c 20  ttr(xWidget, k, 
0dd0: 77 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  w).        self.
0de0: 78 44 69 61 6c 6f 67 2e 69 6e 73 65 72 74 42 79  xDialog.insertBy
0df0: 4e 61 6d 65 28 6e 61 6d 65 2c 20 78 57 69 64 67  Name(name, xWidg
0e00: 65 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75  et).        retu
0e10: 72 6e 20 78 57 69 64 67 65 74 0a 0a 20 20 20 20  rn xWidget..    
0e20: 64 65 66 20 5f 61 64 64 47 72 69 64 20 28 73 65  def _addGrid (se
0e30: 6c 66 2c 20 6e 61 6d 65 2c 20 78 2c 20 79 2c 20  lf, name, x, y, 
0e40: 77 2c 20 68 2c 20 63 6f 6c 75 6d 6e 73 2c 20 2a  w, h, columns, *
0e50: 2a 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20  *kwargs):.      
0e60: 20 20 78 47 72 69 64 4d 6f 64 65 6c 20 3d 20 73    xGridModel = s
0e70: 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 63 72 65 61  elf.xDialog.crea
0e80: 74 65 49 6e 73 74 61 6e 63 65 28 27 63 6f 6d 2e  teInstance('com.
0e90: 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 67 72 69  sun.star.awt.gri
0ea0: 64 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 47 72 69 64  d.UnoControlGrid
0eb0: 4d 6f 64 65 6c 27 29 0a 20 20 20 20 20 20 20 20  Model').        
0ec0: 78 47 72 69 64 4d 6f 64 65 6c 2e 4e 61 6d 65 20  xGridModel.Name 
0ed0: 3d 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 78  = name.        x
0ee0: 47 72 69 64 4d 6f 64 65 6c 2e 50 6f 73 69 74 69  GridModel.Positi
0ef0: 6f 6e 58 20 3d 20 78 0a 20 20 20 20 20 20 20 20  onX = x.        
0f00: 78 47 72 69 64 4d 6f 64 65 6c 2e 50 6f 73 69 74  xGridModel.Posit
0f10: 69 6f 6e 59 20 3d 20 79 0a 20 20 20 20 20 20 20  ionY = y.       
0f20: 20 78 47 72 69 64 4d 6f 64 65 6c 2e 57 69 64 74   xGridModel.Widt
0f30: 68 20 3d 20 77 0a 20 20 20 20 20 20 20 20 78 47  h = w.        xG
0f40: 72 69 64 4d 6f 64 65 6c 2e 48 65 69 67 68 74 20  ridModel.Height 
0f50: 3d 20 68 0a 20 20 20 20 20 20 20 20 78 43 6f 6c  = h.        xCol
0f60: 75 6d 6e 4d 6f 64 65 6c 20 3d 20 78 47 72 69 64  umnModel = xGrid
0f70: 4d 6f 64 65 6c 2e 43 6f 6c 75 6d 6e 4d 6f 64 65  Model.ColumnMode
0f80: 6c 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 20  l.        for e 
0f90: 69 6e 20 63 6f 6c 75 6d 6e 73 3a 0a 20 20 20 20  in columns:.    
0fa0: 20 20 20 20 20 20 20 20 78 43 6f 6c 20 3d 20 78          xCol = x
0fb0: 43 6f 6c 75 6d 6e 4d 6f 64 65 6c 2e 63 72 65 61  ColumnModel.crea
0fc0: 74 65 43 6f 6c 75 6d 6e 28 29 0a 20 20 20 20 20  teColumn().     
0fd0: 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77 20         for k, w 
0fe0: 69 6e 20 65 2e 69 74 65 6d 73 28 29 3a 0a 20 20  in e.items():.  
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
1000: 74 61 74 74 72 28 78 43 6f 6c 2c 20 6b 2c 20 77  tattr(xCol, k, w
1010: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 43  ).            xC
1020: 6f 6c 75 6d 6e 4d 6f 64 65 6c 2e 61 64 64 43 6f  olumnModel.addCo
1030: 6c 75 6d 6e 28 78 43 6f 6c 29 0a 20 20 20 20 20  lumn(xCol).     
1040: 20 20 20 66 6f 72 20 6b 2c 20 77 20 69 6e 20 6b     for k, w in k
1050: 77 61 72 67 73 2e 69 74 65 6d 73 28 29 3a 0a 20  wargs.items():. 
1060: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 61 74             setat
1070: 74 72 28 78 47 72 69 64 4d 6f 64 65 6c 2c 20 6b  tr(xGridModel, k
1080: 2c 20 77 29 0a 20 20 20 20 20 20 20 20 73 65 6c  , w).        sel
1090: 66 2e 78 44 69 61 6c 6f 67 2e 69 6e 73 65 72 74  f.xDialog.insert
10a0: 42 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 78 47 72  ByName(name, xGr
10b0: 69 64 4d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20  idModel).       
10c0: 20 72 65 74 75 72 6e 20 78 47 72 69 64 4d 6f 64   return xGridMod
10d0: 65 6c 0a 0a 20 20 20 20 64 65 66 20 72 75 6e 20  el..    def run 
10e0: 28 73 65 6c 66 2c 20 73 4c 61 6e 67 2c 20 73 57  (self, sLang, sW
10f0: 6f 72 64 3d 22 22 29 3a 0a 20 20 20 20 20 20 20  ord=""):.       
1100: 20 23 20 75 69 20 6c 61 6e 67 0a 20 20 20 20 20   # ui lang.     
1110: 20 20 20 73 65 6c 66 2e 73 4c 61 6e 67 20 3d 20     self.sLang = 
1120: 73 4c 61 6e 67 0a 20 20 20 20 20 20 20 20 73 65  sLang.        se
1130: 6c 66 2e 64 55 49 20 3d 20 6c 78 65 5f 73 74 72  lf.dUI = lxe_str
1140: 69 6e 67 73 2e 67 65 74 55 49 28 73 4c 61 6e 67  ings.getUI(sLang
1150: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 64 69 61  )..        # dia
1160: 6c 6f 67 0a 20 20 20 20 20 20 20 20 73 65 6c 66  log.        self
1170: 2e 78 44 69 61 6c 6f 67 20 3d 20 73 65 6c 66 2e  .xDialog = self.
1180: 78 53 76 4d 67 72 2e 63 72 65 61 74 65 49 6e 73  xSvMgr.createIns
1190: 74 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74  tanceWithContext
11a0: 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  ('com.sun.star.a
11b0: 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 44 69 61  wt.UnoControlDia
11c0: 6c 6f 67 4d 6f 64 65 6c 27 2c 20 73 65 6c 66 2e  logModel', self.
11d0: 63 74 78 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ctx).        sel
11e0: 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74 68 20  f.xDialog.Width 
11f0: 3d 20 35 35 30 0a 20 20 20 20 20 20 20 20 73 65  = 550.        se
1200: 6c 66 2e 78 44 69 61 6c 6f 67 2e 48 65 69 67 68  lf.xDialog.Heigh
1210: 74 20 3d 20 32 39 30 0a 20 20 20 20 20 20 20 20  t = 290.        
1220: 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 54 69 74  self.xDialog.Tit
1230: 6c 65 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  le = self.dUI.ge
1240: 74 28 27 74 69 74 6c 65 27 2c 20 22 23 74 69 74  t('title', "#tit
1250: 6c 65 23 22 29 0a 20 20 20 20 20 20 20 20 78 57  le#").        xW
1260: 69 6e 64 6f 77 53 69 7a 65 20 3d 20 68 65 6c 70  indowSize = help
1270: 65 72 73 2e 67 65 74 57 69 6e 64 6f 77 53 69 7a  ers.getWindowSiz
1280: 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  e().        self
1290: 2e 78 44 69 61 6c 6f 67 2e 50 6f 73 69 74 69 6f  .xDialog.Positio
12a0: 6e 58 20 3d 20 69 6e 74 28 28 78 57 69 6e 64 6f  nX = int((xWindo
12b0: 77 53 69 7a 65 2e 57 69 64 74 68 20 2f 20 32 29  wSize.Width / 2)
12c0: 20 2d 20 28 73 65 6c 66 2e 78 44 69 61 6c 6f 67   - (self.xDialog
12d0: 2e 57 69 64 74 68 20 2f 20 32 29 29 0a 20 20 20  .Width / 2)).   
12e0: 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f       self.xDialo
12f0: 67 2e 50 6f 73 69 74 69 6f 6e 59 20 3d 20 69 6e  g.PositionY = in
1300: 74 28 28 78 57 69 6e 64 6f 77 53 69 7a 65 2e 48  t((xWindowSize.H
1310: 65 69 67 68 74 20 2f 20 32 29 20 2d 20 28 73 65  eight / 2) - (se
1320: 6c 66 2e 78 44 69 61 6c 6f 67 2e 48 65 69 67 68  lf.xDialog.Heigh
1330: 74 20 2f 20 32 29 29 0a 0a 20 20 20 20 20 20 20  t / 2))..       
1340: 20 23 20 66 6f 6e 74 73 0a 20 20 20 20 20 20 20   # fonts.       
1350: 20 78 46 44 54 69 74 6c 65 20 3d 20 75 6e 6f 2e   xFDTitle = uno.
1360: 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63 74 28  createUnoStruct(
1370: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
1380: 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  t.FontDescriptor
1390: 22 29 0a 20 20 20 20 20 20 20 20 78 46 44 54 69  ").        xFDTi
13a0: 74 6c 65 2e 48 65 69 67 68 74 20 3d 20 39 0a 20  tle.Height = 9. 
13b0: 20 20 20 20 20 20 20 78 46 44 54 69 74 6c 65 2e         xFDTitle.
13c0: 57 65 69 67 68 74 20 3d 20 75 6e 6f 2e 67 65 74  Weight = uno.get
13d0: 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28 22  ConstantByName("
13e0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74  com.sun.star.awt
13f0: 2e 46 6f 6e 74 57 65 69 67 68 74 2e 42 4f 4c 44  .FontWeight.BOLD
1400: 22 29 0a 20 20 20 20 20 20 20 20 78 46 44 54 69  ").        xFDTi
1410: 74 6c 65 2e 4e 61 6d 65 20 3d 20 22 56 65 72 64  tle.Name = "Verd
1420: 61 6e 61 22 0a 0a 20 20 20 20 20 20 20 20 78 46  ana"..        xF
1430: 44 53 75 62 54 69 74 6c 65 20 3d 20 75 6e 6f 2e  DSubTitle = uno.
1440: 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63 74 28  createUnoStruct(
1450: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
1460: 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  t.FontDescriptor
1470: 22 29 0a 20 20 20 20 20 20 20 20 78 46 44 53 75  ").        xFDSu
1480: 62 54 69 74 6c 65 2e 48 65 69 67 68 74 20 3d 20  bTitle.Height = 
1490: 38 0a 20 20 20 20 20 20 20 20 78 46 44 53 75 62  8.        xFDSub
14a0: 54 69 74 6c 65 2e 57 65 69 67 68 74 20 3d 20 75  Title.Weight = u
14b0: 6e 6f 2e 67 65 74 43 6f 6e 73 74 61 6e 74 42 79  no.getConstantBy
14c0: 4e 61 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74  Name("com.sun.st
14d0: 61 72 2e 61 77 74 2e 46 6f 6e 74 57 65 69 67 68  ar.awt.FontWeigh
14e0: 74 2e 42 4f 4c 44 22 29 0a 20 20 20 20 20 20 20  t.BOLD").       
14f0: 20 78 46 44 53 75 62 54 69 74 6c 65 2e 4e 61 6d   xFDSubTitle.Nam
1500: 65 20 3d 20 22 56 65 72 64 61 6e 61 22 0a 0a 20  e = "Verdana".. 
1510: 20 20 20 20 20 20 20 23 20 77 69 64 67 65 74 0a         # widget.
1520: 20 20 20 20 20 20 20 20 6e 58 31 20 3d 20 35 0a          nX1 = 5.
1530: 20 20 20 20 20 20 20 20 6e 58 32 20 3d 20 31 35          nX2 = 15
1540: 0a 0a 20 20 20 20 20 20 20 20 6e 59 30 20 3d 20  ..        nY0 = 
1550: 35 0a 20 20 20 20 20 20 20 20 6e 59 31 20 3d 20  5.        nY1 = 
1560: 6e 59 30 20 2b 20 31 33 0a 20 20 20 20 20 20 20  nY0 + 13.       
1570: 20 6e 59 32 20 3d 20 6e 59 31 20 2b 20 32 35 20   nY2 = nY1 + 25 
1580: 23 20 6e 6f 6d 20 63 6f 6d 6d 75 6e 0a 20 20 20  # nom commun.   
1590: 20 20 20 20 20 6e 59 33 20 3d 20 6e 59 32 20 2b       nY3 = nY2 +
15a0: 20 39 35 20 23 20 6e 6f 6d 20 70 72 6f 70 72 65   95 # nom propre
15b0: 0a 20 20 20 20 20 20 20 20 6e 59 34 20 3d 20 6e  .        nY4 = n
15c0: 59 33 20 2b 20 34 35 20 23 20 76 65 72 62 65 0a  Y3 + 45 # verbe.
15d0: 20 20 20 20 20 20 20 20 6e 59 35 20 3d 20 6e 59          nY5 = nY
15e0: 34 20 2b 20 36 38 20 23 20 61 64 76 65 72 62 65  4 + 68 # adverbe
15f0: 0a 20 20 20 20 20 20 20 20 6e 59 36 20 3d 20 6e  .        nY6 = n
1600: 59 35 20 2b 20 31 33 20 23 20 61 75 74 72 65 0a  Y5 + 13 # autre.
1610: 0a 20 20 20 20 20 20 20 20 6e 58 42 20 3d 20 6e  .        nXB = n
1620: 58 31 20 2b 20 31 37 35 0a 20 20 20 20 20 20 20  X1 + 175.       
1630: 20 6e 58 43 20 3d 20 6e 58 42 20 2b 20 31 36 35   nXC = nXB + 165
1640: 0a 0a 20 20 20 20 20 20 20 20 6e 48 65 69 67 68  ..        nHeigh
1650: 74 20 3d 20 31 30 0a 0a 20 20 20 20 20 20 20 20  t = 10..        
1660: 23 23 23 23 20 44 69 63 74 69 6f 6e 61 72 79 20  #### Dictionary 
1670: 73 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20  section.        
1680: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
1690: 22 64 69 63 74 69 6f 6e 61 72 79 5f 73 65 63 74  "dictionary_sect
16a0: 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c 69 6e 65  ion", 'FixedLine
16b0: 27 2c 20 6e 58 31 2c 20 6e 59 30 2c 20 31 37 30  ', nX1, nY0, 170
16c0: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
16d0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
16e0: 22 64 69 63 74 69 6f 6e 61 72 79 5f 73 65 63 74  "dictionary_sect
16f0: 69 6f 6e 22 2c 20 22 23 65 72 72 22 29 2c 20 46  ion", "#err"), F
1700: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
1710: 78 46 44 54 69 74 6c 65 2c 20 54 65 78 74 43 6f  xFDTitle, TextCo
1720: 6c 6f 72 20 3d 20 30 78 30 30 30 30 38 38 29 0a  lor = 0x000088).
1730: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
1740: 64 57 69 64 67 65 74 28 22 73 61 76 65 5f 64 61  dWidget("save_da
1750: 74 65 5f 6c 61 62 65 6c 22 2c 20 27 46 69 78 65  te_label", 'Fixe
1760: 64 54 65 78 74 27 2c 20 6e 58 42 2c 20 6e 59 30  dText', nXB, nY0
1770: 2b 32 2c 20 38 30 2c 20 6e 48 65 69 67 68 74 2c  +2, 80, nHeight,
1780: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
1790: 49 2e 67 65 74 28 22 73 61 76 65 5f 64 61 74 65  I.get("save_date
17a0: 5f 6c 61 62 65 6c 22 2c 20 22 23 65 72 72 22 29  _label", "#err")
17b0: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
17c0: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20   = xFDSubTitle, 
17d0: 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30  TextColor = 0x00
17e0: 30 30 38 38 29 0a 20 20 20 20 20 20 20 20 73 65  0088).        se
17f0: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 6e  lf._addWidget("n
1800: 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 5f 6c 61  um_of_entries_la
1810: 62 65 6c 32 22 2c 20 27 46 69 78 65 64 54 65 78  bel2", 'FixedTex
1820: 74 27 2c 20 6e 58 43 2c 20 6e 59 30 2b 32 2c 20  t', nXC, nY0+2, 
1830: 36 35 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  65, nHeight, Lab
1840: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
1850: 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65  t("num_of_entrie
1860: 73 5f 6c 61 62 65 6c 22 2c 20 22 23 65 72 72 22  s_label", "#err"
1870: 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f  ), FontDescripto
1880: 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c  r = xFDSubTitle,
1890: 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30   TextColor = 0x0
18a0: 30 30 30 38 38 29 0a 20 20 20 20 20 20 20 20 73  00088).        s
18b0: 65 6c 66 2e 78 44 61 74 65 44 69 63 20 3d 20 73  elf.xDateDic = s
18c0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
18d0: 73 61 76 65 5f 64 61 74 65 22 2c 20 27 46 69 78  save_date", 'Fix
18e0: 65 64 54 65 78 74 27 2c 20 6e 58 42 2b 38 35 2c  edText', nXB+85,
18f0: 20 6e 59 30 2b 32 2c 20 37 35 2c 20 6e 48 65 69   nY0+2, 75, nHei
1900: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
1910: 66 2e 64 55 49 2e 67 65 74 28 22 76 6f 69 64 22  f.dUI.get("void"
1920: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
1930: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53  escriptor = xFDS
1940: 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c  ubTitle, TextCol
1950: 6f 72 20 3d 20 30 78 30 30 30 30 38 38 29 0a 20  or = 0x000088). 
1960: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d         self.xNum
1970: 44 69 63 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  Dic = self._addW
1980: 69 64 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e  idget("num_of_en
1990: 74 72 69 65 73 32 22 2c 20 27 46 69 78 65 64 54  tries2", 'FixedT
19a0: 65 78 74 27 2c 20 6e 58 43 2b 37 30 2c 20 6e 59  ext', nXC+70, nY
19b0: 30 2b 32 2c 20 34 35 2c 20 6e 48 65 69 67 68 74  0+2, 45, nHeight
19c0: 2c 20 4c 61 62 65 6c 20 3d 20 22 30 22 2c 20 46  , Label = "0", F
19d0: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
19e0: 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78  xFDSubTitle, Tex
19f0: 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30 38  tColor = 0x00008
1a00: 38 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  8).        self.
1a10: 78 49 6d 70 6f 72 74 20 3d 20 73 65 6c 66 2e 5f  xImport = self._
1a20: 61 64 64 57 69 64 67 65 74 28 27 69 6d 70 6f 72  addWidget('impor
1a30: 74 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74  t_button', 'Butt
1a40: 6f 6e 27 2c 20 73 65 6c 66 2e 78 44 69 61 6c 6f  on', self.xDialo
1a50: 67 2e 57 69 64 74 68 2d 39 30 2c 20 6e 59 30 2c  g.Width-90, nY0,
1a60: 20 34 30 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d   40, 12, Label =
1a70: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 69   self.dUI.get('i
1a80: 6d 70 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 22  mport_button', "
1a90: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
1aa0: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
1ab0: 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20  itle, TextColor 
1ac0: 3d 20 30 78 30 30 30 30 35 35 29 0a 20 20 20 20  = 0x000055).    
1ad0: 20 20 20 20 73 65 6c 66 2e 78 45 78 70 6f 72 74      self.xExport
1ae0: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
1af0: 65 74 28 27 65 78 70 6f 72 74 5f 62 75 74 74 6f  et('export_butto
1b00: 6e 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20 73 65  n', 'Button', se
1b10: 6c 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74 68  lf.xDialog.Width
1b20: 2d 34 35 2c 20 6e 59 30 2c 20 34 30 2c 20 31 32  -45, nY0, 40, 12
1b30: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1b40: 55 49 2e 67 65 74 28 27 65 78 70 6f 72 74 5f 62  UI.get('export_b
1b50: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
1b60: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1b70: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54  = xFDSubTitle, T
1b80: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30  extColor = 0x000
1b90: 30 35 35 29 0a 0a 20 20 20 20 20 20 20 20 23 23  055)..        ##
1ba0: 23 23 20 41 64 64 20 77 6f 72 64 0a 20 20 20 20  ## Add word.    
1bb0: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
1bc0: 67 65 74 28 22 61 64 64 5f 73 65 63 74 69 6f 6e  get("add_section
1bd0: 22 2c 20 27 46 69 78 65 64 4c 69 6e 65 27 2c 20  ", 'FixedLine', 
1be0: 6e 58 31 2c 20 6e 59 31 2c 20 31 37 30 2c 20 6e  nX1, nY1, 170, n
1bf0: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
1c00: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 61 64  self.dUI.get("ad
1c10: 64 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72  d_section", "#er
1c20: 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  r"), FontDescrip
1c30: 74 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 29 0a  tor = xFDTitle).
1c40: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4c 65          self.xLe
1c50: 6d 6d 61 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  mma = self._addW
1c60: 69 64 67 65 74 28 27 6c 65 6d 6d 61 27 2c 20 27  idget('lemma', '
1c70: 45 64 69 74 27 2c 20 6e 58 31 2c 20 6e 59 31 2b  Edit', nX1, nY1+
1c80: 31 30 2c 20 31 30 30 2c 20 31 34 2c 20 54 65 78  10, 100, 14, Tex
1c90: 74 20 3d 20 73 57 6f 72 64 2c 20 46 6f 6e 74 44  t = sWord, FontD
1ca0: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54  escriptor = xFDT
1cb0: 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65  itle).        se
1cc0: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 73  lf._addWidget('s
1cd0: 65 61 72 63 68 5f 62 75 74 74 6f 6e 27 2c 20 27  earch_button', '
1ce0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30 35  Button', nX1+105
1cf0: 2c 20 6e 59 31 2b 31 31 2c 20 34 35 2c 20 31 32  , nY1+11, 45, 12
1d00: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1d10: 55 49 2e 67 65 74 28 27 73 65 61 72 63 68 5f 62  UI.get('search_b
1d20: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
1d30: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1d40: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54  = xFDSubTitle, T
1d50: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 35 35 35  extColor = 0x555
1d60: 35 30 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c  500).        sel
1d70: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 69 6e  f._addWidget('in
1d80: 66 6f 72 6d 61 74 69 6f 6e 5f 62 75 74 74 6f 6e  formation_button
1d90: 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 31  ', 'Button', nX1
1da0: 2b 31 35 35 2c 20 6e 59 31 2b 31 31 2c 20 31 35  +155, nY1+11, 15
1db0: 2c 20 31 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65  , 12, Label = se
1dc0: 6c 66 2e 64 55 49 2e 67 65 74 28 27 69 6e 66 6f  lf.dUI.get('info
1dd0: 72 6d 61 74 69 6f 6e 5f 62 75 74 74 6f 6e 27 2c  rmation_button',
1de0: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
1df0: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
1e00: 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f  bTitle, TextColo
1e10: 72 20 3d 20 30 78 35 35 35 35 30 30 29 0a 0a 20  r = 0x555500).. 
1e20: 20 20 20 20 20 20 20 23 20 52 61 64 69 6f 20 62         # Radio b
1e30: 75 74 74 6f 6e 73 3a 20 6d 61 69 6e 20 50 4f 53  uttons: main POS
1e40: 20 74 61 67 0a 20 20 20 20 20 20 20 20 23 20 4e   tag.        # N
1e50: 6f 74 65 3a 20 74 68 65 20 6f 6e 6c 79 20 77 61  ote: the only wa
1e60: 79 20 74 6f 20 67 72 6f 75 70 20 52 61 64 69 6f  y to group Radio
1e70: 42 75 74 74 6f 6e 73 20 69 73 20 74 6f 20 63 72  Buttons is to cr
1e80: 65 61 74 65 20 74 68 65 6d 20 73 75 63 63 65 73  eate them succes
1e90: 73 69 76 65 6c 79 0a 20 20 20 20 20 20 20 20 73  sively.        s
1ea0: 65 6c 66 2e 78 4e 41 20 3d 20 73 65 6c 66 2e 5f  elf.xNA = self._
1eb0: 61 64 64 57 69 64 67 65 74 28 27 6e 6f 6d 5f 61  addWidget('nom_a
1ec0: 64 6a 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  dj', 'RadioButto
1ed0: 6e 27 2c 20 6e 58 31 2c 20 6e 59 32 2b 31 32 2c  n', nX1, nY2+12,
1ee0: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
1ef0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1f00: 65 74 28 22 6e 6f 6d 5f 61 64 6a 22 2c 20 22 23  et("nom_adj", "#
1f10: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
1f20: 3d 20 22 3a 4e 3a 41 22 29 0a 20 20 20 20 20 20  = ":N:A").      
1f30: 20 20 73 65 6c 66 2e 78 4e 20 3d 20 73 65 6c 66    self.xN = self
1f40: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6e 6f 6d  ._addWidget('nom
1f50: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
1f60: 2c 20 6e 58 31 2c 20 6e 59 32 2b 32 32 2c 20 36  , nX1, nY2+22, 6
1f70: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
1f80: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
1f90: 28 22 6e 6f 6d 22 2c 20 22 23 65 72 72 22 29 2c  ("nom", "#err"),
1fa0: 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 4e 22   HelpText = ":N"
1fb0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
1fc0: 41 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  A = self._addWid
1fd0: 67 65 74 28 27 61 64 6a 27 2c 20 27 52 61 64 69  get('adj', 'Radi
1fe0: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e  oButton', nX1, n
1ff0: 59 32 2b 33 32 2c 20 36 30 2c 20 6e 48 65 69 67  Y2+32, 60, nHeig
2000: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2010: 2e 64 55 49 2e 67 65 74 28 22 61 64 6a 22 2c 20  .dUI.get("adj", 
2020: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
2030: 74 20 3d 20 22 3a 41 22 29 0a 20 20 20 20 20 20  t = ":A").      
2040: 20 20 73 65 6c 66 2e 78 4d 31 20 3d 20 73 65 6c    self.xM1 = sel
2050: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 31  f._addWidget('M1
2060: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
2070: 2c 20 6e 58 31 2c 20 6e 59 33 2b 31 32 2c 20 36  , nX1, nY3+12, 6
2080: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
2090: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
20a0: 28 22 4d 31 22 2c 20 22 23 65 72 72 22 29 2c 20  ("M1", "#err"), 
20b0: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 4d 31 22  HelpText = ":M1"
20c0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
20d0: 4d 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  M2 = self._addWi
20e0: 64 67 65 74 28 27 4d 32 27 2c 20 27 52 61 64 69  dget('M2', 'Radi
20f0: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e  oButton', nX1, n
2100: 59 33 2b 32 32 2c 20 36 30 2c 20 6e 48 65 69 67  Y3+22, 60, nHeig
2110: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2120: 2e 64 55 49 2e 67 65 74 28 22 4d 32 22 2c 20 22  .dUI.get("M2", "
2130: 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74  #err"), HelpText
2140: 20 3d 20 22 3a 4d 32 22 29 0a 20 20 20 20 20 20   = ":M2").      
2150: 20 20 73 65 6c 66 2e 78 4d 50 20 3d 20 73 65 6c    self.xMP = sel
2160: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 50  f._addWidget('MP
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 33 2b 33 32 2c 20 36  , nX1, nY3+32, 6
2190: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
21a0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
21b0: 28 22 4d 50 22 2c 20 22 23 65 72 72 22 29 2c 20  ("MP", "#err"), 
21c0: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 4d 50 22  HelpText = ":MP"
21d0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
21e0: 56 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  V = self._addWid
21f0: 67 65 74 28 27 76 65 72 62 27 2c 20 27 52 61 64  get('verb', 'Rad
2200: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20  ioButton', nX1, 
2210: 6e 59 34 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67  nY4+2, 35, nHeig
2220: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2230: 2e 64 55 49 2e 67 65 74 28 22 76 65 72 62 22 2c  .dUI.get("verb",
2240: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
2250: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
2260: 62 54 69 74 6c 65 2c 20 48 65 6c 70 54 65 78 74  bTitle, HelpText
2270: 20 3d 20 22 3a 56 22 29 0a 20 20 20 20 20 20 20   = ":V").       
2280: 20 73 65 6c 66 2e 78 57 20 3d 20 73 65 6c 66 2e   self.xW = self.
2290: 5f 61 64 64 57 69 64 67 65 74 28 27 61 64 76 27  _addWidget('adv'
22a0: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
22b0: 20 6e 58 31 2c 20 6e 59 35 2b 32 2c 20 33 35 2c   nX1, nY5+2, 35,
22c0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
22d0: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
22e0: 61 64 76 65 72 62 22 2c 20 22 23 65 72 72 22 29  adverb", "#err")
22f0: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
2300: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20   = xFDSubTitle, 
2310: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 57 22 29  HelpText = ":W")
2320: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 58  .        self.xX
2330: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2340: 65 74 28 27 6f 74 68 65 72 27 2c 20 27 52 61 64  et('other', 'Rad
2350: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20  ioButton', nX1, 
2360: 6e 59 36 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67  nY6+2, 35, nHeig
2370: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2380: 2e 64 55 49 2e 67 65 74 28 22 6f 74 68 65 72 22  .dUI.get("other"
2390: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
23a0: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53  escriptor = xFDS
23b0: 75 62 54 69 74 6c 65 2c 20 48 65 6c 70 54 65 78  ubTitle, HelpTex
23c0: 74 20 3d 20 22 3a 58 22 29 0a 0a 20 20 20 20 20  t = ":X")..     
23d0: 20 20 20 23 20 4e 6f 6d 2c 20 61 64 6a 65 63 74     # Nom, adject
23e0: 69 66 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  if.        self.
23f0: 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f 6e  _addWidget("fl_n
2400: 6f 6d 5f 61 64 6a 22 2c 20 27 46 69 78 65 64 4c  om_adj", 'FixedL
2410: 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20  ine', nX1, nY2, 
2420: 31 37 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61  170, nHeight, La
2430: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2440: 65 74 28 22 63 6f 6d 6d 6f 6e 5f 6e 61 6d 65 22  et("common_name"
2450: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
2460: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53  escriptor = xFDS
2470: 75 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20  ubTitle).       
2480: 20 73 65 6c 66 2e 78 53 65 70 69 20 3d 20 73 65   self.xSepi = se
2490: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53  lf._addWidget('S
24a0: 65 70 69 27 2c 20 27 52 61 64 69 6f 42 75 74 74  epi', 'RadioButt
24b0: 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32  on', nX1+65, nY2
24c0: 2b 31 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +12, 50, nHeight
24d0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
24e0: 55 49 2e 67 65 74 28 22 65 70 69 22 2c 20 22 23  UI.get("epi", "#
24f0: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
2500: 3d 20 22 3a 65 22 29 0a 20 20 20 20 20 20 20 20  = ":e").        
2510: 73 65 6c 66 2e 78 53 6d 61 73 20 3d 20 73 65 6c  self.xSmas = sel
2520: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 6d  f._addWidget('Sm
2530: 61 73 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  as', 'RadioButto
2540: 6e 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32 2b  n', nX1+65, nY2+
2550: 32 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c  22, 50, nHeight,
2560: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
2570: 49 2e 67 65 74 28 22 6d 61 73 22 2c 20 22 23 65  I.get("mas", "#e
2580: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
2590: 20 22 3a 6d 22 29 0a 20 20 20 20 20 20 20 20 73   ":m").        s
25a0: 65 6c 66 2e 78 53 66 65 6d 20 3d 20 73 65 6c 66  elf.xSfem = self
25b0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 66 65  ._addWidget('Sfe
25c0: 6d 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  m', 'RadioButton
25d0: 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32 2b 33  ', nX1+65, nY2+3
25e0: 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  2, 50, nHeight, 
25f0: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
2600: 2e 67 65 74 28 22 66 65 6d 22 2c 20 22 23 65 72  .get("fem", "#er
2610: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
2620: 22 3a 66 22 29 0a 20 20 20 20 20 20 20 20 73 65  ":f").        se
2630: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66  lf._addWidget("f
2640: 6c 5f 73 65 70 31 22 2c 20 27 46 69 78 65 64 4c  l_sep1", 'FixedL
2650: 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20  ine', nX1, nY2, 
2660: 31 2c 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20  1, nHeight).    
2670: 20 20 20 20 73 65 6c 66 2e 78 53 73 20 3d 20 73      self.xSs = s
2680: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
2690: 53 73 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  Ss', 'RadioButto
26a0: 6e 27 2c 20 6e 58 31 2b 31 31 35 2c 20 6e 59 32  n', nX1+115, nY2
26b0: 2b 31 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +12, 50, nHeight
26c0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
26d0: 55 49 2e 67 65 74 28 22 2d 73 22 2c 20 22 23 65  UI.get("-s", "#e
26e0: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
26f0: 20 22 c2 b7 73 22 29 0a 20 20 20 20 20 20 20 20   "..s").        
2700: 73 65 6c 66 2e 78 53 78 20 3d 20 73 65 6c 66 2e  self.xSx = self.
2710: 5f 61 64 64 57 69 64 67 65 74 28 27 53 78 27 2c  _addWidget('Sx',
2720: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
2730: 6e 58 31 2b 31 31 35 2c 20 6e 59 32 2b 32 32 2c  nX1+115, nY2+22,
2740: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
2750: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2760: 65 74 28 22 2d 78 22 2c 20 22 23 65 72 72 22 29  et("-x", "#err")
2770: 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 c2 b7  , HelpText = "..
2780: 78 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  x").        self
2790: 2e 78 53 69 6e 76 20 3d 20 73 65 6c 66 2e 5f 61  .xSinv = self._a
27a0: 64 64 57 69 64 67 65 74 28 27 53 69 6e 76 27 2c  ddWidget('Sinv',
27b0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
27c0: 6e 58 31 2b 31 31 35 2c 20 6e 59 32 2b 33 32 2c  nX1+115, nY2+32,
27d0: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
27e0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
27f0: 65 74 28 22 69 6e 76 22 2c 20 22 23 65 72 72 22  et("inv", "#err"
2800: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
2810: 69 22 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c  i")..        sel
2820: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 61 6c  f._addWidget("al
2830: 74 5f 6c 65 6d 6d 61 5f 6c 61 62 65 6c 22 2c 20  t_lemma_label", 
2840: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
2850: 2b 31 30 2c 20 6e 59 32 2b 34 32 2c 20 31 36 30  +10, nY2+42, 160
2860: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2870: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2880: 22 61 6c 74 5f 6c 65 6d 6d 61 22 2c 20 22 23 65  "alt_lemma", "#e
2890: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
28a0: 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61 20 3d 20 73  lf.xAltLemma = s
28b0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
28c0: 61 6c 74 5f 6c 65 6d 6d 61 27 2c 20 27 45 64 69  alt_lemma', 'Edi
28d0: 74 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b  t', nX1+10, nY2+
28e0: 35 32 2c 20 31 31 30 2c 20 6e 48 65 69 67 68 74  52, 110, nHeight
28f0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
2900: 4e 41 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  NA2 = self._addW
2910: 69 64 67 65 74 28 27 6e 6f 6d 5f 61 64 6a 32 27  idget('nom_adj2'
2920: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2930: 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b 36 35 2c   nX1+10, nY2+65,
2940: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
2950: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2960: 65 74 28 22 6e 6f 6d 5f 61 64 6a 22 2c 20 22 23  et("nom_adj", "#
2970: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
2980: 3d 20 22 3a 4e 3a 41 22 29 0a 20 20 20 20 20 20  = ":N:A").      
2990: 20 20 73 65 6c 66 2e 78 4e 32 20 3d 20 73 65 6c    self.xN2 = sel
29a0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6e 6f  f._addWidget('no
29b0: 6d 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  m2', 'RadioButto
29c0: 6e 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b  n', nX1+10, nY2+
29d0: 37 35 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c  75, 60, nHeight,
29e0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
29f0: 49 2e 67 65 74 28 22 6e 6f 6d 22 2c 20 22 23 65  I.get("nom", "#e
2a00: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
2a10: 20 22 3a 4e 22 29 0a 20 20 20 20 20 20 20 20 73   ":N").        s
2a20: 65 6c 66 2e 78 41 32 20 3d 20 73 65 6c 66 2e 5f  elf.xA2 = self._
2a30: 61 64 64 57 69 64 67 65 74 28 27 61 64 6a 32 27  addWidget('adj2'
2a40: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2a50: 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b 38 35 2c   nX1+10, nY2+85,
2a60: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
2a70: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2a80: 65 74 28 22 61 64 6a 22 2c 20 22 23 65 72 72 22  et("adj", "#err"
2a90: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
2aa0: 41 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  A").        self
2ab0: 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f  ._addWidget("fl_
2ac0: 73 65 70 32 22 2c 20 27 46 69 78 65 64 4c 69 6e  sep2", 'FixedLin
2ad0: 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20 31 2c  e', nX1, nY2, 1,
2ae0: 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20 20   nHeight).      
2af0: 20 20 73 65 6c 66 2e 78 53 65 70 69 32 20 3d 20    self.xSepi2 = 
2b00: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
2b10: 27 53 65 70 69 32 27 2c 20 27 52 61 64 69 6f 42  'Sepi2', 'RadioB
2b20: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 30 2c 20  utton', nX1+70, 
2b30: 6e 59 32 2b 36 35 2c 20 35 30 2c 20 6e 48 65 69  nY2+65, 50, nHei
2b40: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
2b50: 66 2e 64 55 49 2e 67 65 74 28 22 65 70 69 22 2c  f.dUI.get("epi",
2b60: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
2b70: 78 74 20 3d 20 22 3a 65 22 29 0a 20 20 20 20 20  xt = ":e").     
2b80: 20 20 20 73 65 6c 66 2e 78 53 6d 61 73 32 20 3d     self.xSmas2 =
2b90: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2ba0: 28 27 53 6d 61 73 32 27 2c 20 27 52 61 64 69 6f  ('Smas2', 'Radio
2bb0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 30 2c  Button', nX1+70,
2bc0: 20 6e 59 32 2b 37 35 2c 20 35 30 2c 20 6e 48 65   nY2+75, 50, nHe
2bd0: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2be0: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6d 61 73 22  lf.dUI.get("mas"
2bf0: 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54  , "#err"), HelpT
2c00: 65 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20 20 20  ext = ":m").    
2c10: 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d 32 20      self.xSfem2 
2c20: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2c30: 74 28 27 53 66 65 6d 32 27 2c 20 27 52 61 64 69  t('Sfem2', 'Radi
2c40: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 30  oButton', nX1+70
2c50: 2c 20 6e 59 32 2b 38 35 2c 20 35 30 2c 20 6e 48  , nY2+85, 50, nH
2c60: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2c70: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 66 65 6d  elf.dUI.get("fem
2c80: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2c90: 54 65 78 74 20 3d 20 22 3a 66 22 29 0a 20 20 20  Text = ":f").   
2ca0: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
2cb0: 64 67 65 74 28 22 66 6c 5f 73 65 70 33 22 2c 20  dget("fl_sep3", 
2cc0: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
2cd0: 2c 20 6e 59 32 2c 20 31 2c 20 6e 48 65 69 67 68  , nY2, 1, nHeigh
2ce0: 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  t).        self.
2cf0: 78 53 73 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64  xSs2 = self._add
2d00: 57 69 64 67 65 74 28 27 53 73 32 27 2c 20 27 52  Widget('Ss2', 'R
2d10: 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31  adioButton', nX1
2d20: 2b 31 32 30 2c 20 6e 59 32 2b 36 35 2c 20 35 30  +120, nY2+65, 50
2d30: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2d40: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2d50: 22 2d 73 22 2c 20 22 23 65 72 72 22 29 2c 20 48  "-s", "#err"), H
2d60: 65 6c 70 54 65 78 74 20 3d 20 22 c2 b7 73 22 29  elpText = "..s")
2d70: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
2d80: 78 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  x2 = self._addWi
2d90: 64 67 65 74 28 27 53 78 32 27 2c 20 27 52 61 64  dget('Sx2', 'Rad
2da0: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31  ioButton', nX1+1
2db0: 32 30 2c 20 6e 59 32 2b 37 35 2c 20 35 30 2c 20  20, nY2+75, 50, 
2dc0: 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d  nHeight, Label =
2dd0: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 2d   self.dUI.get("-
2de0: 78 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  x", "#err"), Hel
2df0: 70 54 65 78 74 20 3d 20 22 c2 b7 78 22 29 0a 20  pText = "..x"). 
2e00: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69 6e         self.xSin
2e10: 76 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  v2 = self._addWi
2e20: 64 67 65 74 28 27 53 69 6e 76 32 27 2c 20 27 52  dget('Sinv2', 'R
2e30: 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31  adioButton', nX1
2e40: 2b 31 32 30 2c 20 6e 59 32 2b 38 35 2c 20 35 30  +120, nY2+85, 50
2e50: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2e60: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2e70: 22 69 6e 76 22 2c 20 22 23 65 72 72 22 29 2c 20  "inv", "#err"), 
2e80: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 69 22 29  HelpText = ":i")
2e90: 0a 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 20  ..        # Nom 
2ea0: 70 72 6f 70 72 65 0a 20 20 20 20 20 20 20 20 73  propre.        s
2eb0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
2ec0: 66 6c 5f 4d 22 2c 20 27 46 69 78 65 64 4c 69 6e  fl_M", 'FixedLin
2ed0: 65 27 2c 20 6e 58 31 2c 20 6e 59 33 2c 20 31 37  e', nX1, nY3, 17
2ee0: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
2ef0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
2f00: 28 22 70 72 6f 70 65 72 5f 6e 61 6d 65 22 2c 20  ("proper_name", 
2f10: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
2f20: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
2f30: 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73  Title).        s
2f40: 65 6c 66 2e 78 4d 65 70 69 20 3d 20 73 65 6c 66  elf.xMepi = self
2f50: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 65 70  ._addWidget('Mep
2f60: 69 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  i', 'RadioButton
2f70: 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 31  ', nX1+65, nY3+1
2f80: 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  2, 50, nHeight, 
2f90: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
2fa0: 2e 67 65 74 28 22 65 70 69 22 2c 20 22 23 65 72  .get("epi", "#er
2fb0: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
2fc0: 22 3a 65 22 29 0a 20 20 20 20 20 20 20 20 73 65  ":e").        se
2fd0: 6c 66 2e 78 4d 6d 61 73 20 3d 20 73 65 6c 66 2e  lf.xMmas = self.
2fe0: 5f 61 64 64 57 69 64 67 65 74 28 27 4d 6d 61 73  _addWidget('Mmas
2ff0: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
3000: 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 32 32  , nX1+65, nY3+22
3010: 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c  , 50, nHeight, L
3020: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
3030: 67 65 74 28 22 6d 61 73 22 2c 20 22 23 65 72 72  get("mas", "#err
3040: 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22  "), HelpText = "
3050: 3a 6d 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c  :m").        sel
3060: 66 2e 78 4d 66 65 6d 20 3d 20 73 65 6c 66 2e 5f  f.xMfem = self._
3070: 61 64 64 57 69 64 67 65 74 28 27 4d 66 65 6d 27  addWidget('Mfem'
3080: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
3090: 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 33 32 2c   nX1+65, nY3+32,
30a0: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
30b0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
30c0: 65 74 28 22 66 65 6d 22 2c 20 22 23 65 72 72 22  et("fem", "#err"
30d0: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
30e0: 66 22 29 0a 0a 20 20 20 20 20 20 20 20 23 20 56  f")..        # V
30f0: 65 72 62 65 0a 20 20 20 20 20 20 20 20 73 65 6c  erbe.        sel
3100: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c  f._addWidget("fl
3110: 5f 76 65 72 62 22 2c 20 27 46 69 78 65 64 4c 69  _verb", 'FixedLi
3120: 6e 65 27 2c 20 6e 58 32 2b 33 30 2c 20 6e 59 34  ne', nX2+30, nY4
3130: 2c 20 31 33 30 2c 20 6e 48 65 69 67 68 74 2c 20  , 130, nHeight, 
3140: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
3150: 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20   xFDSubTitle).  
3160: 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 69 20        self.xV_i 
3170: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
3180: 74 28 27 76 5f 69 27 2c 20 27 43 68 65 63 6b 42  t('v_i', 'CheckB
3190: 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b 31 32  ox', nX2, nY4+12
31a0: 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c  , 60, nHeight, L
31b0: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
31c0: 67 65 74 28 22 76 5f 69 22 2c 20 22 23 65 72 72  get("v_i", "#err
31d0: 22 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ")).        self
31e0: 2e 78 56 5f 74 20 3d 20 73 65 6c 66 2e 5f 61 64  .xV_t = self._ad
31f0: 64 57 69 64 67 65 74 28 27 76 5f 74 27 2c 20 27  dWidget('v_t', '
3200: 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2c 20  CheckBox', nX2, 
3210: 6e 59 34 2b 32 30 2c 20 36 30 2c 20 6e 48 65 69  nY4+20, 60, nHei
3220: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
3230: 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 74 22 2c  f.dUI.get("v_t",
3240: 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20 20   "#err")).      
3250: 20 20 73 65 6c 66 2e 78 56 5f 6e 20 3d 20 73 65    self.xV_n = se
3260: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76  lf._addWidget('v
3270: 5f 6e 27 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c  _n', 'CheckBox',
3280: 20 6e 58 32 2c 20 6e 59 34 2b 32 38 2c 20 36 30   nX2, nY4+28, 60
3290: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
32a0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
32b0: 22 76 5f 6e 22 2c 20 22 23 65 72 72 22 29 29 0a  "v_n", "#err")).
32c0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f          self.xV_
32d0: 70 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  p = self._addWid
32e0: 67 65 74 28 27 76 5f 70 27 2c 20 27 43 68 65 63  get('v_p', 'Chec
32f0: 6b 42 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b  kBox', nX2, nY4+
3300: 33 36 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c  36, 60, nHeight,
3310: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3320: 49 2e 67 65 74 28 22 76 5f 70 22 2c 20 22 23 65  I.get("v_p", "#e
3330: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
3340: 6c 66 2e 78 56 5f 6d 20 3d 20 73 65 6c 66 2e 5f  lf.xV_m = self._
3350: 61 64 64 57 69 64 67 65 74 28 27 76 5f 6d 27 2c  addWidget('v_m',
3360: 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32   'CheckBox', nX2
3370: 2c 20 6e 59 34 2b 34 34 2c 20 36 30 2c 20 6e 48  , nY4+44, 60, nH
3380: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
3390: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 6d  elf.dUI.get("v_m
33a0: 22 2c 20 22 23 65 72 72 22 29 29 0a 0a 20 20 20  ", "#err"))..   
33b0: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
33c0: 64 67 65 74 28 27 61 75 78 27 2c 20 27 46 69 78  dget('aux', 'Fix
33d0: 65 64 54 65 78 74 27 2c 20 6e 58 32 2b 37 35 2c  edText', nX2+75,
33e0: 20 6e 59 34 2b 31 30 2c 20 39 30 2c 20 6e 48 65   nY4+10, 90, nHe
33f0: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
3400: 6c 66 2e 64 55 49 2e 67 65 74 28 22 61 75 78 22  lf.dUI.get("aux"
3410: 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20  , "#err")).     
3420: 20 20 20 73 65 6c 66 2e 78 56 5f 61 65 20 3d 20     self.xV_ae = 
3430: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
3440: 27 76 5f 61 65 27 2c 20 27 43 68 65 63 6b 42 6f  'v_ae', 'CheckBo
3450: 78 27 2c 20 6e 58 32 2b 37 35 2c 20 6e 59 34 2b  x', nX2+75, nY4+
3460: 32 30 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c  20, 90, nHeight,
3470: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3480: 49 2e 67 65 74 28 22 76 5f 61 65 22 2c 20 22 23  I.get("v_ae", "#
3490: 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73  err")).        s
34a0: 65 6c 66 2e 78 56 5f 61 61 20 3d 20 73 65 6c 66  elf.xV_aa = self
34b0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76 5f 61  ._addWidget('v_a
34c0: 61 27 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c 20  a', 'CheckBox', 
34d0: 6e 58 32 2b 37 35 2c 20 6e 59 34 2b 32 38 2c 20  nX2+75, nY4+28, 
34e0: 39 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  90, nHeight, Lab
34f0: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
3500: 74 28 22 76 5f 61 61 22 2c 20 22 23 65 72 72 22  t("v_aa", "#err"
3510: 29 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ))..        self
3520: 2e 78 56 5f 70 70 20 3d 20 73 65 6c 66 2e 5f 61  .xV_pp = self._a
3530: 64 64 57 69 64 67 65 74 28 27 76 5f 70 70 27 2c  ddWidget('v_pp',
3540: 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32   'CheckBox', nX2
3550: 2b 37 35 2c 20 6e 59 34 2b 34 34 2c 20 39 30 2c  +75, nY4+44, 90,
3560: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
3570: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
3580: 76 5f 70 70 22 2c 20 22 23 65 72 72 22 29 29 0a  v_pp", "#err")).
3590: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
35a0: 64 64 57 69 64 67 65 74 28 27 76 5f 70 61 74 74  ddWidget('v_patt
35b0: 65 72 6e 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78  ern_label', 'Fix
35c0: 65 64 54 65 78 74 27 2c 20 6e 58 32 2c 20 6e 59  edText', nX2, nY
35d0: 34 2b 35 36 2c 20 37 35 2c 20 6e 48 65 69 67 68  4+56, 75, nHeigh
35e0: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
35f0: 64 55 49 2e 67 65 74 28 27 76 5f 70 61 74 74 65  dUI.get('v_patte
3600: 72 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 41 6c  rn', "#err"), Al
3610: 69 67 6e 20 3d 20 32 29 0a 20 20 20 20 20 20 20  ign = 2).       
3620: 20 73 65 6c 66 2e 78 56 70 61 74 74 65 72 6e 20   self.xVpattern 
3630: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
3640: 74 28 27 76 5f 70 61 74 74 65 72 6e 27 2c 20 27  t('v_pattern', '
3650: 45 64 69 74 27 2c 20 6e 58 32 2b 38 30 2c 20 6e  Edit', nX2+80, n
3660: 59 34 2b 35 36 2c 20 38 30 2c 20 6e 48 65 69 67  Y4+56, 80, nHeig
3670: 68 74 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41  ht)..        # A
3680: 64 76 65 72 62 65 0a 20 20 20 20 20 20 20 20 73  dverbe.        s
3690: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
36a0: 66 6c 5f 61 64 76 22 2c 20 27 46 69 78 65 64 4c  fl_adv", 'FixedL
36b0: 69 6e 65 27 2c 20 6e 58 32 2b 33 30 2c 20 6e 59  ine', nX2+30, nY
36c0: 35 2c 20 31 33 30 2c 20 6e 48 65 69 67 68 74 2c  5, 130, nHeight,
36d0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
36e0: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 0a  = xFDSubTitle)..
36f0: 20 20 20 20 20 20 20 20 23 20 41 75 74 72 65 0a          # Autre.
3700: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
3710: 64 57 69 64 67 65 74 28 22 66 6c 5f 6f 74 68 65  dWidget("fl_othe
3720: 72 22 2c 20 27 46 69 78 65 64 4c 69 6e 65 27 2c  r", 'FixedLine',
3730: 20 6e 58 32 2b 33 30 2c 20 6e 59 36 2c 20 31 33   nX2+30, nY6, 13
3740: 30 2c 20 6e 48 65 69 67 68 74 2c 20 46 6f 6e 74  0, nHeight, Font
3750: 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44  Descriptor = xFD
3760: 53 75 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20  SubTitle).      
3770: 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65    self._addWidge
3780: 74 28 27 66 6c 65 78 69 6f 6e 5f 6c 61 62 65 6c  t('flexion_label
3790: 27 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20  ', 'FixedText', 
37a0: 6e 58 32 2c 20 6e 59 36 2b 31 31 2c 20 32 32 2c  nX2, nY6+11, 22,
37b0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
37c0: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27  = self.dUI.get('
37d0: 66 6c 65 78 69 6f 6e 27 2c 20 22 23 65 72 72 22  flexion', "#err"
37e0: 29 2c 20 41 6c 69 67 6e 20 3d 20 32 29 0a 20 20  ), Align = 2).  
37f0: 20 20 20 20 20 20 73 65 6c 66 2e 78 46 6c 65 78        self.xFlex
3800: 69 6f 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  ion = self._addW
3810: 69 64 67 65 74 28 27 66 6c 65 78 69 6f 6e 27 2c  idget('flexion',
3820: 20 27 45 64 69 74 27 2c 20 6e 58 32 2b 32 35 2c   'Edit', nX2+25,
3830: 20 6e 59 36 2b 31 30 2c 20 35 30 2c 20 6e 48 65   nY6+10, 50, nHe
3840: 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 73 65  ight).        se
3850: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 74  lf._addWidget('t
3860: 61 67 73 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78  ags_label', 'Fix
3870: 65 64 54 65 78 74 27 2c 20 6e 58 32 2b 38 30 2c  edText', nX2+80,
3880: 20 6e 59 36 2b 31 31 2c 20 32 37 2c 20 6e 48 65   nY6+11, 27, nHe
3890: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
38a0: 6c 66 2e 64 55 49 2e 67 65 74 28 27 74 61 67 73  lf.dUI.get('tags
38b0: 27 2c 20 22 23 65 72 72 22 29 2c 20 41 6c 69 67  ', "#err"), Alig
38c0: 6e 20 3d 20 32 29 0a 20 20 20 20 20 20 20 20 73  n = 2).        s
38d0: 65 6c 66 2e 78 54 61 67 73 20 3d 20 73 65 6c 66  elf.xTags = self
38e0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 74 61 67  ._addWidget('tag
38f0: 73 27 2c 20 27 45 64 69 74 27 2c 20 6e 58 32 2b  s', 'Edit', nX2+
3900: 31 31 30 2c 20 6e 59 36 2b 31 30 2c 20 35 30 2c  110, nY6+10, 50,
3910: 20 6e 48 65 69 67 68 74 29 0a 0a 20 20 20 20 20   nHeight)..     
3920: 20 20 20 23 23 23 23 20 47 65 6e 65 72 61 74 65     #### Generate
3930: 64 20 77 6f 72 64 73 0a 20 20 20 20 20 20 20 20  d words.        
3940: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
3950: 22 67 77 6f 72 64 73 5f 73 65 63 74 69 6f 6e 22  "gwords_section"
3960: 2c 20 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e  , 'FixedLine', n
3970: 58 42 2c 20 6e 59 31 2c 20 31 36 30 2c 20 6e 48  XB, nY1, 160, nH
3980: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
3990: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6e 65 77  elf.dUI.get("new
39a0: 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72 72  _section", "#err
39b0: 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  "), FontDescript
39c0: 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 29 0a 20  or = xFDTitle). 
39d0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 47 72 69         self.xGri
39e0: 64 4d 6f 64 65 6c 4e 65 77 20 3d 20 73 65 6c 66  dModelNew = self
39f0: 2e 5f 61 64 64 47 72 69 64 28 22 6c 69 73 74 5f  ._addGrid("list_
3a00: 67 72 69 64 5f 67 77 6f 72 64 73 22 2c 20 6e 58  grid_gwords", nX
3a10: 42 2c 20 6e 59 31 2b 31 30 2c 20 31 36 30 2c 20  B, nY1+10, 160, 
3a20: 32 34 30 2c 20 5b 0a 20 20 20 20 20 20 20 20 20  240, [.         
3a30: 20 20 20 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c     {"Title": sel
3a40: 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78 5f 66  f.dUI.get("lex_f
3a50: 6c 65 78 22 2c 20 22 23 65 72 72 22 29 2c 20 22  lex", "#err"), "
3a60: 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a 20 38 30  ColumnWidth": 80
3a70: 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  },.            {
3a80: 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64 55  "Title": self.dU
3a90: 49 2e 67 65 74 28 22 6c 65 78 5f 74 61 67 73 22  I.get("lex_tags"
3aa0: 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f 6c 75  , "#err"), "Colu
3ab0: 6d 6e 57 69 64 74 68 22 3a 20 38 30 7d 0a 20 20  mnWidth": 80}.  
3ac0: 20 20 20 20 20 20 5d 2c 20 53 65 6c 65 63 74 69        ], Selecti
3ad0: 6f 6e 4d 6f 64 65 6c 20 3d 20 75 6e 6f 2e 45 6e  onModel = uno.En
3ae0: 75 6d 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  um("com.sun.star
3af0: 2e 76 69 65 77 2e 53 65 6c 65 63 74 69 6f 6e 54  .view.SelectionT
3b00: 79 70 65 22 2c 20 22 4d 55 4c 54 49 22 29 29 0a  ype", "MULTI")).
3b10: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64          self.xAd
3b20: 64 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  d = self._addWid
3b30: 67 65 74 28 27 61 64 64 5f 62 75 74 74 6f 6e 27  get('add_button'
3b40: 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 42 2c  , 'Button', nXB,
3b50: 20 6e 59 31 2b 32 35 35 2c 20 37 35 2c 20 31 32   nY1+255, 75, 12
3b60: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
3b70: 55 49 2e 67 65 74 28 27 61 64 64 5f 62 75 74 74  UI.get('add_butt
3b80: 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f  on', "#err"), Fo
3b90: 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78  ntDescriptor = x
3ba0: 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74  FDSubTitle, Text
3bb0: 43 6f 6c 6f 72 20 3d 20 30 78 30 30 35 35 30 30  Color = 0x005500
3bc0: 2c 20 45 6e 61 62 6c 65 64 20 3d 20 46 61 6c 73  , Enabled = Fals
3bd0: 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  e).        self.
3be0: 78 44 65 6c 65 74 65 20 3d 20 73 65 6c 66 2e 5f  xDelete = self._
3bf0: 61 64 64 57 69 64 67 65 74 28 27 64 65 6c 65 74  addWidget('delet
3c00: 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74  e_button', 'Butt
3c10: 6f 6e 27 2c 20 6e 58 42 2b 38 30 2c 20 6e 59 31  on', nXB+80, nY1
3c20: 2b 32 35 35 2c 20 38 30 2c 20 31 32 2c 20 4c 61  +255, 80, 12, La
3c30: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
3c40: 65 74 28 27 64 65 6c 65 74 65 5f 62 75 74 74 6f  et('delete_butto
3c50: 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n', "#err"), Fon
3c60: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
3c70: 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43  DSubTitle, TextC
3c80: 6f 6c 6f 72 20 3d 20 30 78 35 35 30 30 30 30 29  olor = 0x550000)
3c90: 0a 0a 20 20 20 20 20 20 20 20 23 23 23 23 20 4c  ..        #### L
3ca0: 65 78 69 63 6f 6e 20 73 65 63 74 69 6f 6e 0a 20  exicon section. 
3cb0: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64         self._add
3cc0: 57 69 64 67 65 74 28 22 6c 65 78 69 63 6f 6e 5f  Widget("lexicon_
3cd0: 73 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65 64  section", 'Fixed
3ce0: 4c 69 6e 65 27 2c 20 6e 58 43 2c 20 6e 59 31 2c  Line', nXC, nY1,
3cf0: 20 32 30 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c   200, nHeight, L
3d00: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
3d10: 67 65 74 28 22 6c 65 78 69 63 6f 6e 5f 73 65 63  get("lexicon_sec
3d20: 74 69 6f 6e 22 2c 20 22 23 65 72 72 22 29 2c 20  tion", "#err"), 
3d30: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
3d40: 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20 20 20   xFDTitle).     
3d50: 20 20 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64     self.xGridMod
3d60: 65 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 5f 61 64  elLex = self._ad
3d70: 64 47 72 69 64 28 22 6c 69 73 74 5f 67 72 69 64  dGrid("list_grid
3d80: 5f 6c 65 78 69 63 6f 6e 22 2c 20 6e 58 43 2c 20  _lexicon", nXC, 
3d90: 6e 59 31 2b 31 30 2c 20 32 30 30 2c 20 32 34 30  nY1+10, 200, 240
3da0: 2c 20 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20  , [.            
3db0: 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64  {"Title": self.d
3dc0: 55 49 2e 67 65 74 28 22 6c 65 78 5f 66 6c 65 78  UI.get("lex_flex
3dd0: 22 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f 6c  ", "#err"), "Col
3de0: 75 6d 6e 57 69 64 74 68 22 3a 20 36 35 7d 2c 0a  umnWidth": 65},.
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 22 54 69              {"Ti
3e00: 74 6c 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e 67  tle": self.dUI.g
3e10: 65 74 28 22 6c 65 78 5f 6c 65 6d 6d 61 22 2c 20  et("lex_lemma", 
3e20: 22 23 65 72 72 22 29 2c 20 22 43 6f 6c 75 6d 6e  "#err"), "Column
3e30: 57 69 64 74 68 22 3a 20 35 30 7d 2c 0a 20 20 20  Width": 50},.   
3e40: 20 20 20 20 20 20 20 20 20 7b 22 54 69 74 6c 65           {"Title
3e50: 22 3a 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28  ": self.dUI.get(
3e60: 22 6c 65 78 5f 74 61 67 73 22 2c 20 22 23 65 72  "lex_tags", "#er
3e70: 72 22 29 2c 20 22 43 6f 6c 75 6d 6e 57 69 64 74  r"), "ColumnWidt
3e80: 68 22 3a 20 36 35 7d 0a 20 20 20 20 20 20 20 20  h": 65}.        
3e90: 5d 2c 20 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65  ], SelectionMode
3ea0: 6c 20 3d 20 75 6e 6f 2e 45 6e 75 6d 28 22 63 6f  l = uno.Enum("co
3eb0: 6d 2e 73 75 6e 2e 73 74 61 72 2e 76 69 65 77 2e  m.sun.star.view.
3ec0: 53 65 6c 65 63 74 69 6f 6e 54 79 70 65 22 2c 20  SelectionType", 
3ed0: 22 4d 55 4c 54 49 22 29 29 0a 20 20 20 20 20 20  "MULTI")).      
3ee0: 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65    self._addWidge
3ef0: 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65  t("num_of_entrie
3f00: 73 5f 6c 61 62 65 6c 31 22 2c 20 27 46 69 78 65  s_label1", 'Fixe
3f10: 64 54 65 78 74 27 2c 20 6e 58 43 2c 20 6e 59 31  dText', nXC, nY1
3f20: 2b 32 35 37 2c 20 36 30 2c 20 6e 48 65 69 67 68  +257, 60, nHeigh
3f30: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
3f40: 64 55 49 2e 67 65 74 28 22 6e 75 6d 5f 6f 66 5f  dUI.get("num_of_
3f50: 65 6e 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20  entries_label", 
3f60: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
3f70: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
3f80: 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73  Title).        s
3f90: 65 6c 66 2e 78 4e 75 6d 4c 65 78 20 3d 20 73 65  elf.xNumLex = se
3fa0: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 6e  lf._addWidget("n
3fb0: 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 31 22 2c  um_of_entries1",
3fc0: 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58   'FixedText', nX
3fd0: 43 2b 36 35 2c 20 6e 59 31 2b 32 35 37 2c 20 34  C+65, nY1+257, 4
3fe0: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
3ff0: 6c 20 3d 20 22 30 22 2c 20 46 6f 6e 74 44 65 73  l = "0", FontDes
4000: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
4010: 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73  Title).        s
4020: 65 6c 66 2e 78 53 61 76 65 20 3d 20 73 65 6c 66  elf.xSave = self
4030: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 73 61 76  ._addWidget('sav
4040: 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74  e_button', 'Butt
4050: 6f 6e 27 2c 20 6e 58 43 2b 31 31 30 2c 20 6e 59  on', nXC+110, nY
4060: 31 2b 32 35 35 2c 20 34 35 2c 20 31 32 2c 20 4c  1+255, 45, 12, L
4070: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
4080: 67 65 74 28 27 73 61 76 65 5f 62 75 74 74 6f 6e  get('save_button
4090: 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74  ', "#err"), Font
40a0: 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44  Descriptor = xFD
40b0: 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f  SubTitle, TextCo
40c0: 6c 6f 72 20 3d 20 30 78 30 30 35 35 30 30 29 0a  lor = 0x005500).
40d0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
40e0: 64 57 69 64 67 65 74 28 27 63 6c 6f 73 65 5f 62  dWidget('close_b
40f0: 75 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e 27  utton', 'Button'
4100: 2c 20 6e 58 43 2b 31 36 30 2c 20 6e 59 31 2b 32  , nXC+160, nY1+2
4110: 35 35 2c 20 34 30 2c 20 31 32 2c 20 4c 61 62 65  55, 40, 12, Labe
4120: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
4130: 28 27 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 2c  ('close_button',
4140: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
4150: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
4160: 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f  bTitle, TextColo
4170: 72 20 3d 20 30 78 35 35 30 30 30 30 29 0a 0a 20  r = 0x550000).. 
4180: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61 64         self.load
4190: 4c 65 78 69 63 6f 6e 28 29 0a 0a 20 20 20 20 20  Lexicon()..     
41a0: 20 20 20 23 20 63 6f 6e 74 61 69 6e 65 72 0a 20     # container. 
41b0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e         self.xCon
41c0: 74 61 69 6e 65 72 20 3d 20 73 65 6c 66 2e 78 53  tainer = self.xS
41d0: 76 4d 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61  vMgr.createInsta
41e0: 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74 28 27  nceWithContext('
41f0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74  com.sun.star.awt
4200: 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 44 69 61 6c 6f  .UnoControlDialo
4210: 67 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20 20  g', self.ctx).  
4220: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
4230: 61 69 6e 65 72 2e 73 65 74 4d 6f 64 65 6c 28 73  ainer.setModel(s
4240: 65 6c 66 2e 78 44 69 61 6c 6f 67 29 0a 20 20 20  elf.xDialog).   
4250: 20 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64 43       self.xGridC
4260: 6f 6e 74 72 6f 6c 4e 65 77 20 3d 20 73 65 6c 66  ontrolNew = self
4270: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
4280: 6f 6e 74 72 6f 6c 28 27 6c 69 73 74 5f 67 72 69  ontrol('list_gri
4290: 64 5f 67 77 6f 72 64 73 27 29 0a 20 20 20 20 20  d_gwords').     
42a0: 20 20 20 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e     self.xGridCon
42b0: 74 72 6f 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 78  trolLex = self.x
42c0: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
42d0: 74 72 6f 6c 28 27 6c 69 73 74 5f 67 72 69 64 5f  trol('list_grid_
42e0: 6c 65 78 69 63 6f 6e 27 29 0a 20 20 20 20 20 20  lexicon').      
42f0: 20 20 23 68 65 6c 70 65 72 73 2e 78 72 61 79 28    #helpers.xray(
4300: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
4310: 67 65 74 43 6f 6e 74 72 6f 6c 28 27 6c 65 6d 6d  getControl('lemm
4320: 61 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c  a')).        sel
4330: 66 2e 5f 63 72 65 61 74 65 4b 65 79 4c 69 73 74  f._createKeyList
4340: 65 6e 65 72 73 28 5b 27 6c 65 6d 6d 61 27 2c 20  eners(['lemma', 
4350: 27 61 6c 74 5f 6c 65 6d 6d 61 27 2c 20 22 76 5f  'alt_lemma', "v_
4360: 70 61 74 74 65 72 6e 22 2c 20 27 66 6c 65 78 69  pattern", 'flexi
4370: 6f 6e 27 2c 20 27 74 61 67 73 27 5d 2c 20 22 55  on', 'tags'], "U
4380: 70 64 61 74 65 22 29 0a 20 20 20 20 20 20 20 20  pdate").        
4390: 73 65 6c 66 2e 5f 63 72 65 61 74 65 41 63 74 69  self._createActi
43a0: 6f 6e 4c 69 73 74 65 6e 65 72 73 28 5b 27 6e 6f  onListeners(['no
43b0: 6d 5f 61 64 6a 27 2c 20 27 6e 6f 6d 27 2c 20 27  m_adj', 'nom', '
43c0: 61 64 6a 27 2c 20 27 4d 31 27 2c 20 27 4d 32 27  adj', 'M1', 'M2'
43d0: 2c 20 27 4d 50 27 2c 20 27 76 65 72 62 27 2c 20  , 'MP', 'verb', 
43e0: 27 61 64 76 27 2c 20 27 6f 74 68 65 72 27 2c 20  'adv', 'other', 
43f0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
4400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4410: 20 20 20 20 20 20 20 27 53 65 70 69 27 2c 20 27         'Sepi', '
4420: 53 6d 61 73 27 2c 20 27 53 66 65 6d 27 2c 20 27  Smas', 'Sfem', '
4430: 53 73 27 2c 20 27 53 78 27 2c 20 27 53 69 6e 76  Ss', 'Sx', 'Sinv
4440: 27 2c 20 27 6e 6f 6d 5f 61 64 6a 32 27 2c 20 27  ', 'nom_adj2', '
4450: 6e 6f 6d 32 27 2c 20 27 61 64 6a 32 27 2c 20 5c  nom2', 'adj2', \
4460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4480: 20 20 20 20 20 20 27 53 65 70 69 32 27 2c 20 27        'Sepi2', '
4490: 53 6d 61 73 32 27 2c 20 27 53 66 65 6d 32 27 2c  Smas2', 'Sfem2',
44a0: 20 27 53 73 32 27 2c 20 27 53 78 32 27 2c 20 27   'Ss2', 'Sx2', '
44b0: 53 69 6e 76 32 27 2c 20 27 4d 65 70 69 27 2c 20  Sinv2', 'Mepi', 
44c0: 27 4d 6d 61 73 27 2c 20 27 4d 66 65 6d 27 2c 20  'Mmas', 'Mfem', 
44d0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
44e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44f0: 20 20 20 20 20 20 20 27 76 5f 69 27 2c 20 27 76         'v_i', 'v
4500: 5f 74 27 2c 20 27 76 5f 6e 27 2c 20 27 76 5f 70  _t', 'v_n', 'v_p
4510: 27 2c 20 27 76 5f 6d 27 2c 20 27 76 5f 61 65 27  ', 'v_m', 'v_ae'
4520: 2c 20 27 76 5f 61 61 27 2c 20 27 76 5f 70 70 27  , 'v_aa', 'v_pp'
4530: 5d 2c 20 22 55 70 64 61 74 65 22 29 0a 20 20 20  ], "Update").   
4540: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
4550: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
4560: 27 73 65 61 72 63 68 5f 62 75 74 74 6f 6e 27 29  'search_button')
4570: 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e  .addActionListen
4580: 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20  er(self).       
4590: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
45a0: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 73 65 61  .getControl('sea
45b0: 72 63 68 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74  rch_button').set
45c0: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 53  ActionCommand('S
45d0: 65 61 72 63 68 57 6f 72 64 73 27 29 0a 20 20 20  earchWords').   
45e0: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
45f0: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
4600: 27 69 6e 66 6f 72 6d 61 74 69 6f 6e 5f 62 75 74  'information_but
4610: 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c  ton').addActionL
4620: 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20  istener(self).  
4630: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
4640: 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c  ainer.getControl
4650: 28 27 69 6e 66 6f 72 6d 61 74 69 6f 6e 5f 62 75  ('information_bu
4660: 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e  tton').setAction
4670: 43 6f 6d 6d 61 6e 64 28 27 54 61 67 73 49 6e 66  Command('TagsInf
4680: 6f 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  o').        self
4690: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43  .xContainer.getC
46a0: 6f 6e 74 72 6f 6c 28 27 61 64 64 5f 62 75 74 74  ontrol('add_butt
46b0: 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69  on').addActionLi
46c0: 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20  stener(self).   
46d0: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
46e0: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
46f0: 27 61 64 64 5f 62 75 74 74 6f 6e 27 29 2e 73 65  'add_button').se
4700: 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27  tActionCommand('
4710: 41 64 64 27 29 0a 20 20 20 20 20 20 20 20 73 65  Add').        se
4720: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65  lf.xContainer.ge
4730: 74 43 6f 6e 74 72 6f 6c 28 27 64 65 6c 65 74 65  tControl('delete
4740: 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74  _button').addAct
4750: 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66  ionListener(self
4760: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
4770: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4780: 74 72 6f 6c 28 27 64 65 6c 65 74 65 5f 62 75 74  trol('delete_but
4790: 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43  ton').setActionC
47a0: 6f 6d 6d 61 6e 64 28 27 44 65 6c 65 74 65 27 29  ommand('Delete')
47b0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43  .        self.xC
47c0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
47d0: 72 6f 6c 28 27 73 61 76 65 5f 62 75 74 74 6f 6e  rol('save_button
47e0: 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74  ').addActionList
47f0: 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20  ener(self).     
4800: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
4810: 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 73  er.getControl('s
4820: 61 76 65 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74  ave_button').set
4830: 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 53  ActionCommand('S
4840: 61 76 65 27 29 0a 20 20 20 20 20 20 20 20 73 65  ave').        se
4850: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65  lf.xContainer.ge
4860: 74 43 6f 6e 74 72 6f 6c 28 27 69 6d 70 6f 72 74  tControl('import
4870: 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74  _button').addAct
4880: 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66  ionListener(self
4890: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
48a0: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
48b0: 74 72 6f 6c 28 27 69 6d 70 6f 72 74 5f 62 75 74  trol('import_but
48c0: 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43  ton').setActionC
48d0: 6f 6d 6d 61 6e 64 28 27 49 6d 70 6f 72 74 27 29  ommand('Import')
48e0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43  .        self.xC
48f0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
4900: 72 6f 6c 28 27 65 78 70 6f 72 74 5f 62 75 74 74  rol('export_butt
4910: 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69  on').addActionLi
4920: 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20  stener(self).   
4930: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
4940: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
4950: 27 65 78 70 6f 72 74 5f 62 75 74 74 6f 6e 27 29  'export_button')
4960: 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  .setActionComman
4970: 64 28 27 45 78 70 6f 72 74 27 29 0a 20 20 20 20  d('Export').    
4980: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
4990: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27  ner.getControl('
49a0: 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 29 2e 61  close_button').a
49b0: 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72  ddActionListener
49c0: 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73  (self).        s
49d0: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67  elf.xContainer.g
49e0: 65 74 43 6f 6e 74 72 6f 6c 28 27 63 6c 6f 73 65  etControl('close
49f0: 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74 41 63 74  _button').setAct
4a00: 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 43 6c 6f 73  ionCommand('Clos
4a10: 65 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  e').        self
4a20: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 61 64 64 54  .xContainer.addT
4a30: 6f 70 57 69 6e 64 6f 77 4c 69 73 74 65 6e 65 72  opWindowListener
4a40: 28 73 65 6c 66 29 20 23 20 6c 69 73 74 65 6e 65  (self) # listene
4a50: 72 20 77 69 74 68 20 58 54 6f 70 57 69 6e 64 6f  r with XTopWindo
4a60: 77 4c 69 73 74 65 6e 65 72 20 6d 65 74 68 6f 64  wListener method
4a70: 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  s.        self.x
4a80: 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74 56 69 73  Container.setVis
4a90: 69 62 6c 65 28 54 72 75 65 29 20 20 23 20 54 72  ible(True)  # Tr
4aa0: 75 65 20 66 6f 72 20 6e 6f 6e 20 6d 6f 64 61 6c  ue for non modal
4ab0: 20 64 69 61 6c 6f 67 0a 20 20 20 20 20 20 20 20   dialog.        
4ac0: 78 54 6f 6f 6c 6b 69 74 20 3d 20 73 65 6c 66 2e  xToolkit = self.
4ad0: 78 53 76 4d 67 72 2e 63 72 65 61 74 65 49 6e 73  xSvMgr.createIns
4ae0: 74 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74  tanceWithContext
4af0: 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  ('com.sun.star.a
4b00: 77 74 2e 45 78 74 54 6f 6f 6c 6b 69 74 27 2c 20  wt.ExtToolkit', 
4b10: 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20  self.ctx).      
4b20: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
4b30: 72 2e 63 72 65 61 74 65 50 65 65 72 28 78 54 6f  r.createPeer(xTo
4b40: 6f 6c 6b 69 74 2c 20 4e 6f 6e 65 29 0a 20 20 20  olkit, None).   
4b50: 20 20 20 20 20 23 73 65 6c 66 2e 78 43 6f 6e 74       #self.xCont
4b60: 61 69 6e 65 72 2e 65 78 65 63 75 74 65 28 29 20  ainer.execute() 
4b70: 20 20 20 20 20 20 20 23 20 46 6f 72 20 6d 6f 64         # For mod
4b80: 61 6c 20 64 69 61 6c 6f 67 0a 0a 20 20 20 20 64  al dialog..    d
4b90: 65 66 20 5f 63 72 65 61 74 65 4b 65 79 4c 69 73  ef _createKeyLis
4ba0: 74 65 6e 65 72 73 20 28 73 65 6c 66 2c 20 6c 4e  teners (self, lN
4bb0: 61 6d 65 73 2c 20 73 41 63 74 69 6f 6e 29 3a 0a  ames, sAction):.
4bc0: 20 20 20 20 20 20 20 20 66 6f 72 20 73 4e 61 6d          for sNam
4bd0: 65 20 69 6e 20 6c 4e 61 6d 65 73 3a 0a 20 20 20  e in lNames:.   
4be0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43           self.xC
4bf0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
4c00: 72 6f 6c 28 73 4e 61 6d 65 29 2e 61 64 64 4b 65  rol(sName).addKe
4c10: 79 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a  yListener(self).
4c20: 0a 20 20 20 20 64 65 66 20 5f 63 72 65 61 74 65  .    def _create
4c30: 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 73 20  ActionListeners 
4c40: 28 73 65 6c 66 2c 20 6c 4e 61 6d 65 73 2c 20 73  (self, lNames, s
4c50: 41 63 74 69 6f 6e 29 3a 0a 20 20 20 20 20 20 20  Action):.       
4c60: 20 66 6f 72 20 73 4e 61 6d 65 20 69 6e 20 6c 4e   for sName in lN
4c70: 61 6d 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20  ames:.          
4c80: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
4c90: 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 73 4e 61  r.getControl(sNa
4ca0: 6d 65 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73  me).addActionLis
4cb0: 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20 20  tener(self).    
4cc0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
4cd0: 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72  ntainer.getContr
4ce0: 6f 6c 28 73 4e 61 6d 65 29 2e 73 65 74 41 63 74  ol(sName).setAct
4cf0: 69 6f 6e 43 6f 6d 6d 61 6e 64 28 73 41 63 74 69  ionCommand(sActi
4d00: 6f 6e 29 0a 0a 20 20 20 20 64 65 66 20 6e 65 77  on)..    def new
4d10: 45 6e 74 72 79 20 28 73 65 6c 66 2c 20 73 57 6f  Entry (self, sWo
4d20: 72 64 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c  rd):.        sel
4d30: 66 2e 78 4c 65 6d 6d 61 2e 54 65 78 74 20 3d 20  f.xLemma.Text = 
4d40: 73 57 6f 72 64 0a 0a 20 20 20 20 23 20 58 41 63  sWord..    # XAc
4d50: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 20 20 20  tionListener.   
4d60: 20 64 65 66 20 61 63 74 69 6f 6e 50 65 72 66 6f   def actionPerfo
4d70: 72 6d 65 64 20 28 73 65 6c 66 2c 20 78 41 63 74  rmed (self, xAct
4d80: 69 6f 6e 45 76 65 6e 74 29 3a 0a 20 20 20 20 20  ionEvent):.     
4d90: 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20     try:.        
4da0: 20 20 20 20 69 66 20 78 41 63 74 69 6f 6e 45 76      if xActionEv
4db0: 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  ent.ActionComman
4dc0: 64 20 3d 3d 20 22 55 70 64 61 74 65 22 3a 0a 20  d == "Update":. 
4dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4de0: 65 6c 66 2e 75 70 64 61 74 65 47 65 6e 57 6f 72  elf.updateGenWor
4df0: 64 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  ds().           
4e00: 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65   elif xActionEve
4e10: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
4e20: 20 3d 3d 20 22 53 65 61 72 63 68 57 6f 72 64 73   == "SearchWords
4e30: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
4e40: 20 20 20 73 65 6c 66 2e 6c 61 75 6e 63 68 53 65     self.launchSe
4e50: 61 72 63 68 57 6f 72 64 73 28 29 0a 20 20 20 20  archWords().    
4e60: 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41 63          elif xAc
4e70: 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e  tionEvent.Action
4e80: 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 54 61 67 73  Command == "Tags
4e90: 49 6e 66 6f 22 3a 0a 20 20 20 20 20 20 20 20 20  Info":.         
4ea0: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 61 75 6e         self.laun
4eb0: 63 68 54 61 67 73 49 6e 66 6f 28 29 0a 20 20 20  chTagsInfo().   
4ec0: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41           elif xA
4ed0: 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f  ctionEvent.Actio
4ee0: 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 41 64 64  nCommand == "Add
4ef0: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
4f00: 20 20 20 73 65 6c 66 2e 61 64 64 54 6f 4c 65 78     self.addToLex
4f10: 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20  icon().         
4f20: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4f30: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
4f40: 6e 64 20 3d 3d 20 22 44 65 6c 65 74 65 22 3a 0a  nd == "Delete":.
4f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f60: 73 65 6c 66 2e 64 65 6c 65 74 65 53 65 6c 65 63  self.deleteSelec
4f70: 74 65 64 45 6e 74 72 69 65 73 28 29 0a 20 20 20  tedEntries().   
4f80: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41           elif xA
4f90: 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f  ctionEvent.Actio
4fa0: 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 53 61 76  nCommand == "Sav
4fb0: 65 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  e":.            
4fc0: 20 20 20 20 73 65 6c 66 2e 73 61 76 65 4c 65 78      self.saveLex
4fd0: 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20  icon().         
4fe0: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4ff0: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
5000: 6e 64 20 3d 3d 20 22 49 6d 70 6f 72 74 22 3a 0a  nd == "Import":.
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5020: 73 65 6c 66 2e 69 6d 70 6f 72 74 44 69 63 74 69  self.importDicti
5030: 6f 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20 20  onary().        
5040: 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e      elif xAction
5050: 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d  Event.ActionComm
5060: 61 6e 64 20 3d 3d 20 22 45 78 70 6f 72 74 22 3a  and == "Export":
5070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5080: 20 73 65 6c 66 2e 65 78 70 6f 72 74 44 69 63 74   self.exportDict
5090: 69 6f 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20  ionary().       
50a0: 20 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f       elif xActio
50b0: 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d  nEvent.ActionCom
50c0: 6d 61 6e 64 20 3d 3d 20 27 49 6e 66 6f 27 3a 0a  mand == 'Info':.
50d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50e0: 70 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20  pass.           
50f0: 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65   elif xActionEve
5100: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
5110: 20 3d 3d 20 22 43 6c 6f 73 65 22 3a 0a 20 20 20   == "Close":.   
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
5130: 66 2e 62 43 6c 6f 73 65 64 20 3d 20 54 72 75 65  f.bClosed = True
5140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5150: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
5160: 2e 64 69 73 70 6f 73 65 28 29 20 20 20 20 20 20  .dispose()      
5170: 20 20 20 20 20 23 20 4e 6f 6e 20 6d 6f 64 61 6c       # Non modal
5180: 20 64 69 61 6c 6f 67 0a 20 20 20 20 20 20 20 20   dialog.        
5190: 20 20 20 20 20 20 20 20 23 73 65 6c 66 2e 78 43          #self.xC
51a0: 6f 6e 74 61 69 6e 65 72 2e 65 6e 64 45 78 65 63  ontainer.endExec
51b0: 75 74 65 28 29 20 20 20 20 20 20 20 23 20 4d 6f  ute()       # Mo
51c0: 64 61 6c 20 64 69 61 6c 6f 67 0a 20 20 20 20 20  dal dialog.     
51d0: 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20     except:.     
51e0: 20 20 20 20 20 20 20 74 72 61 63 65 62 61 63 6b         traceback
51f0: 2e 70 72 69 6e 74 5f 65 78 63 28 29 0a 0a 20 20  .print_exc()..  
5200: 20 20 23 20 58 54 6f 70 57 69 6e 64 6f 77 4c 69    # XTopWindowLi
5210: 73 74 65 6e 65 72 20 28 75 73 65 66 75 6c 20 66  stener (useful f
5220: 6f 72 20 6e 6f 6e 20 6d 6f 64 61 6c 20 64 69 61  or non modal dia
5230: 6c 6f 67 20 6f 6e 6c 79 29 0a 20 20 20 20 64 65  log only).    de
5240: 66 20 77 69 6e 64 6f 77 4f 70 65 6e 65 64 20 28  f windowOpened (
5250: 73 65 6c 66 2c 20 78 45 76 65 6e 74 29 3a 0a 20  self, xEvent):. 
5260: 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20         return.. 
5270: 20 20 20 64 65 66 20 77 69 6e 64 6f 77 43 6c 6f     def windowClo
5280: 73 69 6e 67 20 28 73 65 6c 66 2c 20 78 45 76 65  sing (self, xEve
5290: 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c  nt):.        sel
52a0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 64 69 73  f.xContainer.dis
52b0: 70 6f 73 65 28 29 20 20 20 20 20 20 20 20 20 20  pose()          
52c0: 20 23 20 4e 6f 6e 20 6d 6f 64 61 6c 20 64 69 61   # Non modal dia
52d0: 6c 6f 67 0a 0a 20 20 20 20 64 65 66 20 77 69 6e  log..    def win
52e0: 64 6f 77 43 6c 6f 73 65 64 20 28 73 65 6c 66 2c  dowClosed (self,
52f0: 20 78 45 76 65 6e 74 29 3a 0a 20 20 20 20 20 20   xEvent):.      
5300: 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 64 65    return..    de
5310: 66 20 77 69 6e 64 6f 77 4d 69 6e 69 6d 69 7a 65  f windowMinimize
5320: 64 20 28 73 65 6c 66 2c 20 78 45 76 65 6e 74 29  d (self, xEvent)
5330: 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  :.        return
5340: 0a 0a 20 20 20 20 64 65 66 20 77 69 6e 64 6f 77  ..    def window
5350: 4e 6f 72 6d 61 6c 69 7a 65 64 20 28 73 65 6c 66  Normalized (self
5360: 2c 20 78 45 76 65 6e 74 29 3a 0a 20 20 20 20 20  , xEvent):.     
5370: 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 64     return..    d
5380: 65 66 20 77 69 6e 64 6f 77 41 63 74 69 76 61 74  ef windowActivat
5390: 65 64 20 28 73 65 6c 66 2c 20 78 45 76 65 6e 74  ed (self, xEvent
53a0: 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ):.        retur
53b0: 6e 0a 0a 20 20 20 20 64 65 66 20 77 69 6e 64 6f  n..    def windo
53c0: 77 44 65 61 63 74 69 76 61 74 65 64 20 28 73 65  wDeactivated (se
53d0: 6c 66 2c 20 78 45 76 65 6e 74 29 3a 0a 20 20 20  lf, xEvent):.   
53e0: 20 20 20 20 20 72 65 74 75 72 6e 0a 0a 20 20 20       return..   
53f0: 20 23 20 58 4b 65 79 4c 69 73 74 65 6e 65 72 0a   # XKeyListener.
5400: 20 20 20 20 64 65 66 20 6b 65 79 50 72 65 73 73      def keyPress
5410: 65 64 20 28 73 65 6c 66 2c 20 78 4b 65 79 45 76  ed (self, xKeyEv
5420: 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 70 61  ent):.        pa
5430: 73 73 0a 0a 20 20 20 20 64 65 66 20 6b 65 79 52  ss..    def keyR
5440: 65 6c 65 61 73 65 64 20 28 73 65 6c 66 2c 20 78  eleased (self, x
5450: 4b 65 79 45 76 65 6e 74 29 3a 0a 20 20 20 20 20  KeyEvent):.     
5460: 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 47 65     self.updateGe
5470: 6e 57 6f 72 64 73 28 29 0a 0a 20 20 20 20 23 20  nWords()..    # 
5480: 58 4a 6f 62 45 78 65 63 75 74 6f 72 0a 20 20 20  XJobExecutor.   
5490: 20 64 65 66 20 74 72 69 67 67 65 72 20 28 73 65   def trigger (se
54a0: 6c 66 2c 20 61 72 67 73 29 3a 0a 20 20 20 20 20  lf, args):.     
54b0: 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20     try:.        
54c0: 20 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 4c 65      xDialog = Le
54d0: 78 69 63 6f 6e 45 64 69 74 6f 72 28 73 65 6c 66  xiconEditor(self
54e0: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20 20  .ctx).          
54f0: 20 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 29 0a    xDialog.run().
5500: 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a          except:.
5510: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
5520: 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28  eback.print_exc(
5530: 29 0a 0a 20 20 20 20 23 20 43 6f 64 65 0a 20 20  )..    # Code.  
5540: 20 20 64 65 66 20 6c 61 75 6e 63 68 53 65 61 72    def launchSear
5550: 63 68 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a  chWords (self):.
5560: 20 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 20          xDialog 
5570: 3d 20 53 65 61 72 63 68 57 6f 72 64 73 2e 53 65  = SearchWords.Se
5580: 61 72 63 68 57 6f 72 64 73 28 73 65 6c 66 2e 63  archWords(self.c
5590: 74 78 29 0a 20 20 20 20 20 20 20 20 78 44 69 61  tx).        xDia
55a0: 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e 73 4c 61  log.run(self.sLa
55b0: 6e 67 2c 20 73 65 6c 66 2e 6f 50 65 72 73 6f 6e  ng, self.oPerson
55c0: 61 6c 44 69 63 4a 53 4f 4e 29 0a 0a 20 20 20 20  alDicJSON)..    
55d0: 64 65 66 20 6c 61 75 6e 63 68 54 61 67 73 49 6e  def launchTagsIn
55e0: 66 6f 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20  fo (self):.     
55f0: 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 54 61 67     xDialog = Tag
5600: 73 49 6e 66 6f 2e 54 61 67 73 49 6e 66 6f 28 73  sInfo.TagsInfo(s
5610: 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20  elf.ctx).       
5620: 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 73 65 6c   xDialog.run(sel
5630: 66 2e 73 4c 61 6e 67 29 0a 0a 20 20 20 20 23 40  f.sLang)..    #@
5640: 5f 77 61 69 74 50 6f 69 6e 74 65 72 20 28 64 6f  _waitPointer (do
5650: 6e e2 80 99 74 3a 20 73 74 72 61 6e 67 65 20 62  n...t: strange b
5660: 65 68 61 76 69 6f 72 20 77 68 65 6e 20 64 69 61  ehavior when dia
5670: 6c 6f 67 20 69 73 20 6e 6f 74 20 66 69 6e 69 73  log is not finis
5680: 68 65 64 29 0a 20 20 20 20 64 65 66 20 6c 6f 61  hed).    def loa
5690: 64 4c 65 78 69 63 6f 6e 20 28 73 65 6c 66 29 3a  dLexicon (self):
56a0: 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61  .        xGridDa
56b0: 74 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78  taModel = self.x
56c0: 47 72 69 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69  GridModelLex.Gri
56d0: 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20  dDataModel.     
56e0: 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65     xGridDataMode
56f0: 6c 2e 72 65 6d 6f 76 65 41 6c 6c 52 6f 77 73 28  l.removeAllRows(
5700: 29 0a 20 20 20 20 20 20 20 20 73 4a 53 4f 4e 20  ).        sJSON 
5710: 3d 20 73 65 6c 66 2e 78 4f 70 74 69 6f 6e 4e 6f  = self.xOptionNo
5720: 64 65 2e 67 65 74 50 72 6f 70 65 72 74 79 56 61  de.getPropertyVa
5730: 6c 75 65 28 22 70 65 72 73 6f 6e 61 6c 5f 64 69  lue("personal_di
5740: 63 22 29 0a 20 20 20 20 20 20 20 20 69 66 20 73  c").        if s
5750: 4a 53 4f 4e 3a 0a 20 20 20 20 20 20 20 20 20 20  JSON:.          
5760: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
5770: 20 20 20 20 20 20 20 73 65 6c 66 2e 6f 50 65 72         self.oPer
5780: 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 20 3d 20 6a  sonalDicJSON = j
5790: 73 6f 6e 2e 6c 6f 61 64 73 28 73 4a 53 4f 4e 29  son.loads(sJSON)
57a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
57b0: 20 6f 49 42 44 41 57 47 20 3d 20 69 62 64 61 77   oIBDAWG = ibdaw
57c0: 67 2e 49 42 44 41 57 47 28 73 65 6c 66 2e 6f 50  g.IBDAWG(self.oP
57d0: 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 29 0a  ersonalDicJSON).
57e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57f0: 66 6f 72 20 69 2c 20 61 45 6e 74 72 79 20 69 6e  for i, aEntry in
5800: 20 65 6e 75 6d 65 72 61 74 65 28 6f 49 42 44 41   enumerate(oIBDA
5810: 57 47 2e 73 65 6c 65 63 74 28 29 29 3a 0a 20 20  WG.select()):.  
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5830: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
5840: 2e 61 64 64 52 6f 77 28 69 2c 20 61 45 6e 74 72  .addRow(i, aEntr
5850: 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y).             
5860: 20 20 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e     self.xNumLex.
5870: 4c 61 62 65 6c 20 3d 20 73 74 72 28 69 29 0a 20  Label = str(i). 
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5890: 65 6c 66 2e 78 4e 75 6d 44 69 63 2e 4c 61 62 65  elf.xNumDic.Labe
58a0: 6c 20 3d 20 73 74 72 28 69 29 0a 20 20 20 20 20  l = str(i).     
58b0: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
58c0: 78 44 61 74 65 44 69 63 2e 4c 61 62 65 6c 20 3d  xDateDic.Label =
58d0: 20 6f 49 42 44 41 57 47 2e 73 44 61 74 65 0a 20   oIBDAWG.sDate. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65 70             excep
58f0: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t:.             
5900: 20 20 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65     sMessage = se
5910: 6c 66 2e 64 55 49 2e 67 65 74 28 27 6e 6f 74 5f  lf.dUI.get('not_
5920: 6c 6f 61 64 65 64 27 2c 20 22 23 65 72 72 22 29  loaded', "#err")
5930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5940: 20 73 4d 65 73 73 61 67 65 20 2b 3d 20 74 72 61   sMessage += tra
5950: 63 65 62 61 63 6b 2e 66 6f 72 6d 61 74 5f 65 78  ceback.format_ex
5960: 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  c().            
5970: 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73      MessageBox(s
5980: 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73  elf.xDocument, s
5990: 4d 65 73 73 61 67 65 2c 20 73 65 6c 66 2e 64 55  Message, self.dU
59a0: 49 2e 67 65 74 28 27 6c 6f 61 64 5f 74 69 74 6c  I.get('load_titl
59b0: 65 27 2c 20 22 23 65 72 72 22 29 2c 20 45 52 52  e', "#err"), ERR
59c0: 4f 52 42 4f 58 29 0a 20 20 20 20 20 20 20 20 65  ORBOX).        e
59d0: 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lse:.           
59e0: 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e 4c 61   self.xNumLex.La
59f0: 62 65 6c 20 3d 20 30 0a 20 20 20 20 20 20 20 20  bel = 0.        
5a00: 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d 44 69 63      self.xNumDic
5a10: 2e 4c 61 62 65 6c 20 3d 20 30 0a 20 20 20 20 20  .Label = 0.     
5a20: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 61 74         self.xDat
5a30: 65 44 69 63 2e 4c 61 62 65 6c 20 3d 20 73 65 6c  eDic.Label = sel
5a40: 66 2e 64 55 49 2e 67 65 74 28 22 76 6f 69 64 22  f.dUI.get("void"
5a50: 2c 20 22 23 65 72 72 22 29 0a 0a 20 20 20 20 40  , "#err")..    @
5a60: 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20 20 20  _waitPointer.   
5a70: 20 64 65 66 20 69 6d 70 6f 72 74 44 69 63 74 69   def importDicti
5a80: 6f 6e 61 72 79 20 28 73 65 6c 66 29 3a 0a 20 20  onary (self):.  
5a90: 20 20 20 20 20 20 73 70 66 49 6d 70 6f 72 74 65        spfImporte
5aa0: 64 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 74  d = "".        t
5ab0: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
5ac0: 78 46 69 6c 65 50 69 63 6b 65 72 20 3d 20 73 65  xFilePicker = se
5ad0: 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65 61 74 65  lf.xSvMgr.create
5ae0: 49 6e 73 74 61 6e 63 65 57 69 74 68 43 6f 6e 74  InstanceWithCont
5af0: 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61  ext('com.sun.sta
5b00: 72 2e 75 69 2e 64 69 61 6c 6f 67 73 2e 46 69 6c  r.ui.dialogs.Fil
5b10: 65 50 69 63 6b 65 72 27 2c 20 73 65 6c 66 2e 63  ePicker', self.c
5b20: 74 78 29 20 20 23 20 6f 74 68 65 72 20 70 6f 73  tx)  # other pos
5b30: 73 69 62 69 6c 69 74 79 3a 20 63 6f 6d 2e 73 75  sibility: com.su
5b40: 6e 2e 73 74 61 72 2e 75 69 2e 64 69 61 6c 6f 67  n.star.ui.dialog
5b50: 73 2e 53 79 73 74 65 6d 46 69 6c 65 50 69 63 6b  s.SystemFilePick
5b60: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  er.            x
5b70: 46 69 6c 65 50 69 63 6b 65 72 2e 69 6e 69 74 69  FilePicker.initi
5b80: 61 6c 69 7a 65 28 5b 75 6e 6f 2e 67 65 74 43 6f  alize([uno.getCo
5b90: 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f  nstantByName("co
5ba0: 6d 2e 73 75 6e 2e 73 74 61 72 2e 75 69 2e 64 69  m.sun.star.ui.di
5bb0: 61 6c 6f 67 73 2e 54 65 6d 70 6c 61 74 65 44 65  alogs.TemplateDe
5bc0: 73 63 72 69 70 74 69 6f 6e 2e 46 49 4c 45 4f 50  scription.FILEOP
5bd0: 45 4e 5f 53 49 4d 50 4c 45 22 29 5d 29 20 23 20  EN_SIMPLE")]) # 
5be0: 73 65 65 6d 73 20 75 73 65 6c 65 73 73 0a 20 20  seems useless.  
5bf0: 20 20 20 20 20 20 20 20 20 20 78 46 69 6c 65 50            xFileP
5c00: 69 63 6b 65 72 2e 61 70 70 65 6e 64 46 69 6c 74  icker.appendFilt
5c10: 65 72 28 22 53 75 70 70 6f 72 74 65 64 20 66 69  er("Supported fi
5c20: 6c 65 73 22 2c 20 22 2a 2e 6a 73 6f 6e 3b 20 2a  les", "*.json; *
5c30: 2e 62 64 69 63 22 29 0a 20 20 20 20 20 20 20 20  .bdic").        
5c40: 20 20 20 20 78 46 69 6c 65 50 69 63 6b 65 72 2e      xFilePicker.
5c50: 73 65 74 44 65 66 61 75 6c 74 4e 61 6d 65 28 22  setDefaultName("
5c60: 66 72 2e 5f 5f 70 65 72 73 6f 6e 61 6c 5f 5f 2e  fr.__personal__.
5c70: 6a 73 6f 6e 22 29 20 23 20 75 73 65 6c 65 73 73  json") # useless
5c80: 2c 20 64 6f 65 73 6e e2 80 99 74 20 77 6f 72 6b  , doesn...t work
5c90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69  .            xFi
5ca0: 6c 65 50 69 63 6b 65 72 2e 73 65 74 44 69 73 70  lePicker.setDisp
5cb0: 6c 61 79 44 69 72 65 63 74 6f 72 79 28 22 22 29  layDirectory("")
5cc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69  .            xFi
5cd0: 6c 65 50 69 63 6b 65 72 2e 73 65 74 4d 75 6c 74  lePicker.setMult
5ce0: 69 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65 28 46  iSelectionMode(F
5cf0: 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20  alse).          
5d00: 20 20 6e 52 65 73 75 6c 74 20 3d 20 78 46 69 6c    nResult = xFil
5d10: 65 50 69 63 6b 65 72 2e 65 78 65 63 75 74 65 28  ePicker.execute(
5d20: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ).            if
5d30: 20 6e 52 65 73 75 6c 74 20 3d 3d 20 31 3a 0a 20   nResult == 1:. 
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                 #
5d50: 20 6c 46 69 6c 65 20 3d 20 78 46 69 6c 65 50 69   lFile = xFilePi
5d60: 63 6b 65 72 2e 67 65 74 53 65 6c 65 63 74 65 64  cker.getSelected
5d70: 46 69 6c 65 73 28 29 0a 20 20 20 20 20 20 20 20  Files().        
5d80: 20 20 20 20 20 20 20 20 6c 46 69 6c 65 20 3d 20          lFile = 
5d90: 78 46 69 6c 65 50 69 63 6b 65 72 2e 67 65 74 46  xFilePicker.getF
5da0: 69 6c 65 73 28 29 0a 20 20 20 20 20 20 20 20 20  iles().         
5db0: 20 20 20 20 20 20 20 23 70 72 69 6e 74 28 6c 46         #print(lF
5dc0: 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20  ile).           
5dd0: 20 20 20 20 20 23 4d 65 73 73 61 67 65 42 6f 78       #MessageBox
5de0: 28 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c  (self.xDocument,
5df0: 20 22 46 69 6c 65 28 73 29 3a 20 22 20 2b 20 73   "File(s): " + s
5e00: 74 72 28 6c 46 69 6c 65 29 2c 20 22 44 45 42 55  tr(lFile), "DEBU
5e10: 47 22 2c 20 49 4e 46 4f 42 4f 58 29 0a 20 20 20  G", INFOBOX).   
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 66               spf
5e30: 49 6d 70 6f 72 74 65 64 20 3d 20 6c 46 69 6c 65  Imported = lFile
5e40: 5b 30 5d 5b 35 3a 5d 2e 6c 73 74 72 69 70 28 22  [0][5:].lstrip("
5e50: 2f 22 29 20 23 20 72 65 6d 6f 76 65 20 66 69 6c  /") # remove fil
5e60: 65 3a 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 20  e://.           
5e70: 20 20 20 20 20 69 66 20 70 6c 61 74 66 6f 72 6d       if platform
5e80: 2e 73 79 73 74 65 6d 28 29 20 21 3d 20 22 57 69  .system() != "Wi
5e90: 6e 64 6f 77 73 22 3a 0a 20 20 20 20 20 20 20 20  ndows":.        
5ea0: 20 20 20 20 20 20 20 20 20 20 20 20 73 70 66 49              spfI
5eb0: 6d 70 6f 72 74 65 64 20 3d 20 22 2f 22 20 2b 20  mported = "/" + 
5ec0: 73 70 66 49 6d 70 6f 72 74 65 64 0a 20 20 20 20  spfImported.    
5ed0: 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20      except:.    
5ee0: 20 20 20 20 20 20 20 20 73 70 66 49 6d 70 6f 72          spfImpor
5ef0: 74 65 64 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f  ted = os.path.jo
5f00: 69 6e 28 6f 73 2e 70 61 74 68 2e 65 78 70 61 6e  in(os.path.expan
5f10: 64 75 73 65 72 28 22 7e 22 29 2c 20 22 66 72 2e  duser("~"), "fr.
5f20: 5f 5f 70 65 72 73 6f 6e 61 6c 5f 5f 2e 6a 73 6f  __personal__.jso
5f30: 6e 22 29 20 23 20 77 6f 72 6b 61 72 6f 75 6e 64  n") # workaround
5f40: 0a 20 20 20 20 20 20 20 20 69 66 20 73 70 66 49  .        if spfI
5f50: 6d 70 6f 72 74 65 64 20 61 6e 64 20 6f 73 2e 70  mported and os.p
5f60: 61 74 68 2e 69 73 66 69 6c 65 28 73 70 66 49 6d  ath.isfile(spfIm
5f70: 70 6f 72 74 65 64 29 3a 0a 20 20 20 20 20 20 20  ported):.       
5f80: 20 20 20 20 20 77 69 74 68 20 6f 70 65 6e 28 73       with open(s
5f90: 70 66 49 6d 70 6f 72 74 65 64 2c 20 22 72 22 2c  pfImported, "r",
5fa0: 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38   encoding="utf-8
5fb0: 22 29 20 61 73 20 68 44 73 74 3a 0a 20 20 20 20  ") as hDst:.    
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 73 4a 53 4f              sJSO
5fd0: 4e 20 3d 20 68 44 73 74 2e 72 65 61 64 28 29 0a  N = hDst.read().
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20  try:.           
6000: 20 20 20 20 20 20 20 20 20 73 54 65 73 74 20 3d           sTest =
6010: 20 6a 73 6f 6e 2e 6c 6f 61 64 73 28 73 4a 53 4f   json.loads(sJSO
6020: 4e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  N).             
6030: 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20     except:.     
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6050: 4d 65 73 73 61 67 65 20 3d 20 73 65 6c 66 2e 64  Message = self.d
6060: 55 49 2e 67 65 74 28 27 77 72 6f 6e 67 5f 6a 73  UI.get('wrong_js
6070: 6f 6e 27 2c 20 22 23 65 72 72 5f 6d 73 67 3a 20  on', "#err_msg: 
6080: 25 73 22 29 20 25 20 73 70 66 49 6d 70 6f 72 74  %s") % spfImport
6090: 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ed.             
60a0: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f         MessageBo
60b0: 78 28 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74  x(self.xDocument
60c0: 2c 20 73 4d 65 73 73 61 67 65 2c 20 73 65 6c 66  , sMessage, self
60d0: 2e 64 55 49 2e 67 65 74 28 27 69 6d 70 6f 72 74  .dUI.get('import
60e0: 5f 74 69 74 6c 65 27 2c 20 22 23 65 72 72 22 29  _title', "#err")
60f0: 2c 20 45 52 52 4f 52 42 4f 58 29 0a 20 20 20 20  , ERRORBOX).    
6100: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
6110: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
6120: 20 20 20 20 20 20 73 65 6c 66 2e 78 4f 70 74 69        self.xOpti
6130: 6f 6e 4e 6f 64 65 2e 73 65 74 50 72 6f 70 65 72  onNode.setProper
6140: 74 79 56 61 6c 75 65 28 22 70 65 72 73 6f 6e 61  tyValue("persona
6150: 6c 5f 64 69 63 22 2c 20 73 4a 53 4f 4e 29 0a 20  l_dic", sJSON). 
6160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6170: 20 20 20 73 65 6c 66 2e 78 53 65 74 74 69 6e 67     self.xSetting
6180: 4e 6f 64 65 2e 63 6f 6d 6d 69 74 43 68 61 6e 67  Node.commitChang
6190: 65 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  es().           
61a0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f           self.lo
61b0: 61 64 4c 65 78 69 63 6f 6e 28 29 0a 20 20 20 20  adLexicon().    
61c0: 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20      else:.      
61d0: 20 20 20 20 20 20 73 4d 65 73 73 61 67 65 20 3d        sMessage =
61e0: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 66   self.dUI.get('f
61f0: 69 6c 65 5f 6e 6f 74 5f 66 6f 75 6e 64 27 2c 20  ile_not_found', 
6200: 22 23 65 72 72 5f 6d 73 67 3a 20 25 73 22 29 20  "#err_msg: %s") 
6210: 25 20 73 70 66 49 6d 70 6f 72 74 65 64 0a 20 20  % spfImported.  
6220: 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 67            Messag
6230: 65 42 6f 78 28 73 65 6c 66 2e 78 44 6f 63 75 6d  eBox(self.xDocum
6240: 65 6e 74 2c 20 73 4d 65 73 73 61 67 65 2c 20 73  ent, sMessage, s
6250: 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 69 6d 70  elf.dUI.get('imp
6260: 6f 72 74 5f 74 69 74 6c 65 27 2c 20 22 23 65 72  ort_title', "#er
6270: 72 22 29 2c 20 45 52 52 4f 52 42 4f 58 29 0a 0a  r"), ERRORBOX)..
6280: 20 20 20 20 40 5f 77 61 69 74 50 6f 69 6e 74 65      @_waitPointe
6290: 72 0a 20 20 20 20 64 65 66 20 73 61 76 65 4c 65  r.    def saveLe
62a0: 78 69 63 6f 6e 20 28 73 65 6c 66 29 3a 0a 20 20  xicon (self):.  
62b0: 20 20 20 20 20 20 78 47 72 69 64 44 61 74 61 4d        xGridDataM
62c0: 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78 47 72 69  odel = self.xGri
62d0: 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69 64 44 61  dModelLex.GridDa
62e0: 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20  taModel.        
62f0: 6c 45 6e 74 72 79 20 3d 20 5b 5d 0a 20 20 20 20  lEntry = [].    
6300: 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e      for i in ran
6310: 67 65 28 78 47 72 69 64 44 61 74 61 4d 6f 64 65  ge(xGridDataMode
6320: 6c 2e 52 6f 77 43 6f 75 6e 74 29 3a 0a 20 20 20  l.RowCount):.   
6330: 20 20 20 20 20 20 20 20 20 6c 45 6e 74 72 79 2e           lEntry.
6340: 61 70 70 65 6e 64 28 78 47 72 69 64 44 61 74 61  append(xGridData
6350: 4d 6f 64 65 6c 2e 67 65 74 52 6f 77 44 61 74 61  Model.getRowData
6360: 28 69 29 29 0a 20 20 20 20 20 20 20 20 69 66 20  (i)).        if 
6370: 6c 45 6e 74 72 79 3a 0a 20 20 20 20 20 20 20 20  lEntry:.        
6380: 20 20 20 20 6f 44 41 57 47 20 3d 20 64 61 77 67      oDAWG = dawg
6390: 2e 44 41 57 47 28 6c 45 6e 74 72 79 2c 20 22 53  .DAWG(lEntry, "S
63a0: 22 2c 20 22 66 72 22 2c 20 22 46 72 61 6e c3 a7  ", "fr", "Fran..
63b0: 61 69 73 22 2c 20 22 66 72 2e 5f 5f 70 65 72 73  ais", "fr.__pers
63c0: 6f 6e 61 6c 5f 5f 22 2c 20 22 44 69 63 74 69 6f  onal__", "Dictio
63d0: 6e 6e 61 69 72 65 20 70 65 72 73 6f 6e 6e 65 6c  nnaire personnel
63e0: 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ").            s
63f0: 65 6c 66 2e 6f 50 65 72 73 6f 6e 61 6c 44 69 63  elf.oPersonalDic
6400: 4a 53 4f 4e 20 3d 20 6f 44 41 57 47 2e 67 65 74  JSON = oDAWG.get
6410: 42 69 6e 61 72 79 41 73 4a 53 4f 4e 28 29 0a 20  BinaryAsJSON(). 
6420: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
6430: 78 4f 70 74 69 6f 6e 4e 6f 64 65 2e 73 65 74 50  xOptionNode.setP
6440: 72 6f 70 65 72 74 79 56 61 6c 75 65 28 22 70 65  ropertyValue("pe
6450: 72 73 6f 6e 61 6c 5f 64 69 63 22 2c 20 6a 73 6f  rsonal_dic", jso
6460: 6e 2e 64 75 6d 70 73 28 73 65 6c 66 2e 6f 50 65  n.dumps(self.oPe
6470: 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 2c 20 65  rsonalDicJSON, e
6480: 6e 73 75 72 65 5f 61 73 63 69 69 3d 46 61 6c 73  nsure_ascii=Fals
6490: 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)).            
64a0: 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64  self.xSettingNod
64b0: 65 2e 63 6f 6d 6d 69 74 43 68 61 6e 67 65 73 28  e.commitChanges(
64c0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ).            se
64d0: 6c 66 2e 78 4e 75 6d 44 69 63 2e 4c 61 62 65 6c  lf.xNumDic.Label
64e0: 20 3d 20 73 74 72 28 73 65 6c 66 2e 6f 50 65 72   = str(self.oPer
64f0: 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 5b 22 6e 45  sonalDicJSON["nE
6500: 6e 74 72 79 22 5d 29 0a 20 20 20 20 20 20 20 20  ntry"]).        
6510: 20 20 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69      self.xDateDi
6520: 63 2e 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 6f  c.Label = self.o
6530: 50 65 72 73 6f 6e 61 6c 44 69 63 4a 53 4f 4e 5b  PersonalDicJSON[
6540: 22 73 44 61 74 65 22 5d 0a 20 20 20 20 20 20 20  "sDate"].       
6550: 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20   else:.         
6560: 20 20 20 73 65 6c 66 2e 78 4f 70 74 69 6f 6e 4e     self.xOptionN
6570: 6f 64 65 2e 73 65 74 50 72 6f 70 65 72 74 79 56  ode.setPropertyV
6580: 61 6c 75 65 28 22 70 65 72 73 6f 6e 61 6c 5f 64  alue("personal_d
6590: 69 63 22 2c 20 22 22 29 0a 20 20 20 20 20 20 20  ic", "").       
65a0: 20 20 20 20 20 73 65 6c 66 2e 78 53 65 74 74 69       self.xSetti
65b0: 6e 67 4e 6f 64 65 2e 63 6f 6d 6d 69 74 43 68 61  ngNode.commitCha
65c0: 6e 67 65 73 28 29 0a 20 20 20 20 20 20 20 20 20  nges().         
65d0: 20 20 20 73 65 6c 66 2e 78 4e 75 6d 44 69 63 2e     self.xNumDic.
65e0: 4c 61 62 65 6c 20 3d 20 22 30 22 0a 20 20 20 20  Label = "0".    
65f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 61          self.xDa
6600: 74 65 44 69 63 2e 4c 61 62 65 6c 20 3d 20 73 65  teDic.Label = se
6610: 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 6f 69 64  lf.dUI.get("void
6620: 22 2c 20 22 23 65 72 72 22 29 0a 20 20 20 20 20  ", "#err").     
6630: 20 20 20 4d 65 73 73 61 67 65 42 6f 78 28 73 65     MessageBox(se
6640: 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20 73 65  lf.xDocument, se
6650: 6c 66 2e 64 55 49 2e 67 65 74 28 27 73 61 76 65  lf.dUI.get('save
6660: 5f 6d 65 73 73 61 67 65 27 2c 20 22 23 65 72 72  _message', "#err
6670: 22 29 2c 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  "), self.dUI.get
6680: 28 27 73 61 76 65 5f 74 69 74 6c 65 27 2c 20 22  ('save_title', "
6690: 23 65 72 72 22 29 29 0a 0a 20 20 20 20 64 65 66  #err"))..    def
66a0: 20 65 78 70 6f 72 74 44 69 63 74 69 6f 6e 61 72   exportDictionar
66b0: 79 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20  y (self):.      
66c0: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
66d0: 20 20 20 78 46 69 6c 65 50 69 63 6b 65 72 20 3d     xFilePicker =
66e0: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
66f0: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
6700: 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e  ontext('com.sun.
6710: 73 74 61 72 2e 75 69 2e 64 69 61 6c 6f 67 73 2e  star.ui.dialogs.
6720: 46 69 6c 65 50 69 63 6b 65 72 27 2c 20 73 65 6c  FilePicker', sel
6730: 66 2e 63 74 78 29 20 20 23 20 6f 74 68 65 72 20  f.ctx)  # other 
6740: 70 6f 73 73 69 62 69 6c 69 74 79 3a 20 63 6f 6d  possibility: com
6750: 2e 73 75 6e 2e 73 74 61 72 2e 75 69 2e 64 69 61  .sun.star.ui.dia
6760: 6c 6f 67 73 2e 53 79 73 74 65 6d 46 69 6c 65 50  logs.SystemFileP
6770: 69 63 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20  icker.          
6780: 20 20 78 46 69 6c 65 50 69 63 6b 65 72 2e 69 6e    xFilePicker.in
6790: 69 74 69 61 6c 69 7a 65 28 5b 75 6e 6f 2e 67 65  itialize([uno.ge
67a0: 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28  tConstantByName(
67b0: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 75 69  "com.sun.star.ui
67c0: 2e 64 69 61 6c 6f 67 73 2e 54 65 6d 70 6c 61 74  .dialogs.Templat
67d0: 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 46 49 4c  eDescription.FIL
67e0: 45 53 41 56 45 5f 53 49 4d 50 4c 45 22 29 5d 29  ESAVE_SIMPLE")])
67f0: 20 23 20 73 65 65 6d 73 20 75 73 65 6c 65 73 73   # seems useless
6800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69  .            xFi
6810: 6c 65 50 69 63 6b 65 72 2e 61 70 70 65 6e 64 46  lePicker.appendF
6820: 69 6c 74 65 72 28 22 53 75 70 70 6f 72 74 65 64  ilter("Supported
6830: 20 66 69 6c 65 73 22 2c 20 22 2a 2e 6a 73 6f 6e   files", "*.json
6840: 3b 20 2a 2e 62 64 69 63 22 29 0a 20 20 20 20 20  ; *.bdic").     
6850: 20 20 20 20 20 20 20 78 46 69 6c 65 50 69 63 6b         xFilePick
6860: 65 72 2e 73 65 74 44 65 66 61 75 6c 74 4e 61 6d  er.setDefaultNam
6870: 65 28 22 66 72 2e 5f 5f 70 65 72 73 6f 6e 61 6c  e("fr.__personal
6880: 5f 5f 2e 6a 73 6f 6e 22 29 20 23 20 75 73 65 6c  __.json") # usel
6890: 65 73 73 2c 20 64 6f 65 73 6e e2 80 99 74 20 77  ess, doesn...t w
68a0: 6f 72 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ork.            
68b0: 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 44  xFilePicker.setD
68c0: 69 73 70 6c 61 79 44 69 72 65 63 74 6f 72 79 28  isplayDirectory(
68d0: 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  "").            
68e0: 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 4d  xFilePicker.setM
68f0: 75 6c 74 69 53 65 6c 65 63 74 69 6f 6e 4d 6f 64  ultiSelectionMod
6900: 65 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20  e(False).       
6910: 20 20 20 20 20 6e 52 65 73 75 6c 74 20 3d 20 78       nResult = x
6920: 46 69 6c 65 50 69 63 6b 65 72 2e 65 78 65 63 75  FilePicker.execu
6930: 74 65 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  te().           
6940: 20 69 66 20 6e 52 65 73 75 6c 74 20 3d 3d 20 31   if nResult == 1
6950: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
6960: 20 20 23 20 6c 46 69 6c 65 20 3d 20 78 46 69 6c    # lFile = xFil
6970: 65 50 69 63 6b 65 72 2e 67 65 74 53 65 6c 65 63  ePicker.getSelec
6980: 74 65 64 46 69 6c 65 73 28 29 0a 20 20 20 20 20  tedFiles().     
6990: 20 20 20 20 20 20 20 20 20 20 20 6c 46 69 6c 65             lFile
69a0: 20 3d 20 78 46 69 6c 65 50 69 63 6b 65 72 2e 67   = xFilePicker.g
69b0: 65 74 46 69 6c 65 73 28 29 0a 20 20 20 20 20 20  etFiles().      
69c0: 20 20 20 20 20 20 20 20 20 20 73 70 66 45 78 70            spfExp
69d0: 6f 72 74 65 64 20 3d 20 6c 46 69 6c 65 5b 30 5d  orted = lFile[0]
69e0: 5b 35 3a 5d 2e 6c 73 74 72 69 70 28 22 2f 22 29  [5:].lstrip("/")
69f0: 20 23 20 72 65 6d 6f 76 65 20 66 69 6c 65 3a 2f   # remove file:/
6a00: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  /.              
6a10: 20 20 69 66 20 70 6c 61 74 66 6f 72 6d 2e 73 79    if platform.sy
6a20: 73 74 65 6d 28 29 20 21 3d 20 22 57 69 6e 64 6f  stem() != "Windo
6a30: 77 73 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ws":.           
6a40: 20 20 20 20 20 20 20 20 20 73 70 66 45 78 70 6f           spfExpo
6a50: 72 74 65 64 20 3d 20 22 2f 22 20 2b 20 73 70 66  rted = "/" + spf
6a60: 45 78 70 6f 72 74 65 64 0a 20 20 20 20 20 20 20  Exported.       
6a70: 20 20 20 20 20 20 20 20 20 23 73 70 66 45 78 70           #spfExp
6a80: 6f 72 74 65 64 20 3d 20 6f 73 2e 70 61 74 68 2e  orted = os.path.
6a90: 6a 6f 69 6e 28 6f 73 2e 70 61 74 68 2e 65 78 70  join(os.path.exp
6aa0: 61 6e 64 75 73 65 72 28 22 7e 22 29 2c 20 22 66  anduser("~"), "f
6ab0: 72 2e 70 65 72 73 6f 6e 61 6c 2e 6a 73 6f 6e 22  r.personal.json"
6ac0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
6ad0: 20 20 73 4a 53 4f 4e 20 3d 20 73 65 6c 66 2e 78    sJSON = self.x
6ae0: 4f 70 74 69 6f 6e 4e 6f 64 65 2e 67 65 74 50 72  OptionNode.getPr
6af0: 6f 70 65 72 74 79 56 61 6c 75 65 28 22 70 65 72  opertyValue("per
6b00: 73 6f 6e 61 6c 5f 64 69 63 22 29 0a 20 20 20 20  sonal_dic").    
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73              if s
6b20: 4a 53 4f 4e 3a 0a 20 20 20 20 20 20 20 20 20 20  JSON:.          
6b30: 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 6f            with o
6b40: 70 65 6e 28 73 70 66 45 78 70 6f 72 74 65 64 2c  pen(spfExported,
6b50: 20 22 77 22 2c 20 65 6e 63 6f 64 69 6e 67 3d 22   "w", encoding="
6b60: 75 74 66 2d 38 22 29 20 61 73 20 68 44 73 74 3a  utf-8") as hDst:
6b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b80: 20 20 20 20 20 20 20 20 20 68 44 73 74 2e 77 72           hDst.wr
6b90: 69 74 65 28 73 4a 53 4f 4e 29 0a 20 20 20 20 20  ite(sJSON).     
6ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6bb0: 4d 65 73 73 61 67 65 20 3d 20 73 65 6c 66 2e 64  Message = self.d
6bc0: 55 49 2e 67 65 74 28 27 65 78 70 6f 72 74 5f 6d  UI.get('export_m
6bd0: 65 73 73 61 67 65 27 2c 20 22 23 65 72 72 5f 6d  essage', "#err_m
6be0: 73 67 3a 20 25 73 22 29 20 25 20 73 70 66 45 78  sg: %s") % spfEx
6bf0: 70 6f 72 74 65 64 0a 20 20 20 20 20 20 20 20 20  ported.         
6c00: 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20         else:.   
6c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c20: 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65 6c 66   sMessage = self
6c30: 2e 64 55 49 2e 67 65 74 28 27 65 6d 70 74 79 5f  .dUI.get('empty_
6c40: 64 69 63 74 69 6f 6e 61 72 79 27 2c 20 22 23 65  dictionary', "#e
6c50: 72 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  rr").           
6c60: 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78 28       MessageBox(
6c70: 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c 20  self.xDocument, 
6c80: 73 4d 65 73 73 61 67 65 2c 20 73 65 6c 66 2e 64  sMessage, self.d
6c90: 55 49 2e 67 65 74 28 27 65 78 70 6f 72 74 5f 74  UI.get('export_t
6ca0: 69 74 6c 65 27 2c 20 22 23 65 72 72 22 29 29 0a  itle', "#err")).
6cb0: 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a          except:.
6cc0: 20 20 20 20 20 20 20 20 20 20 20 20 73 4d 65 73              sMes
6cd0: 73 61 67 65 20 3d 20 74 72 61 63 65 62 61 63 6b  sage = traceback
6ce0: 2e 66 6f 72 6d 61 74 5f 65 78 63 28 29 0a 20 20  .format_exc().  
6cf0: 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 67            Messag
6d00: 65 42 6f 78 28 73 65 6c 66 2e 78 44 6f 63 75 6d  eBox(self.xDocum
6d10: 65 6e 74 2c 20 73 4d 65 73 73 61 67 65 2c 20 73  ent, sMessage, s
6d20: 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 65 78 70  elf.dUI.get('exp
6d30: 6f 72 74 5f 74 69 74 6c 65 27 2c 20 22 23 65 72  ort_title', "#er
6d40: 72 22 29 2c 20 45 52 52 4f 52 42 4f 58 29 0a 0a  r"), ERRORBOX)..
6d50: 20 20 20 20 64 65 66 20 5f 67 65 74 52 61 64 69      def _getRadi
6d60: 6f 56 61 6c 75 65 20 28 73 65 6c 66 2c 20 2a 61  oValue (self, *a
6d70: 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 66 6f  rgs):.        fo
6d80: 72 20 78 20 69 6e 20 61 72 67 73 3a 0a 20 20 20  r x in args:.   
6d90: 20 20 20 20 20 20 20 20 20 69 66 20 78 2e 53 74           if x.St
6da0: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
6db0: 20 20 20 20 20 72 65 74 75 72 6e 20 78 2e 48 65       return x.He
6dc0: 6c 70 54 65 78 74 0a 20 20 20 20 20 20 20 20 72  lpText.        r
6dd0: 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20 20  eturn None..    
6de0: 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20 20  @_waitPointer.  
6df0: 20 20 64 65 66 20 75 70 64 61 74 65 47 65 6e 57    def updateGenW
6e00: 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a 20 20 20  ords (self):.   
6e10: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
6e20: 61 74 65 64 46 6c 65 78 20 3d 20 5b 5d 0a 20 20  atedFlex = [].  
6e30: 20 20 20 20 20 20 73 65 6c 66 2e 73 4c 65 6d 6d        self.sLemm
6e40: 61 20 3d 20 73 65 6c 66 2e 78 4c 65 6d 6d 61 2e  a = self.xLemma.
6e50: 54 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20  Text.strip().   
6e60: 20 20 20 20 20 69 66 20 73 65 6c 66 2e 73 4c 65       if self.sLe
6e70: 6d 6d 61 3a 0a 20 20 20 20 20 20 20 20 20 20 20  mma:.           
6e80: 20 69 66 20 73 65 6c 66 2e 5f 67 65 74 52 61 64   if self._getRad
6e90: 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4e 41  ioValue(self.xNA
6ea0: 2c 20 73 65 6c 66 2e 78 4e 2c 20 73 65 6c 66 2e  , self.xN, self.
6eb0: 78 41 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  xA):.           
6ec0: 20 20 20 20 20 23 20 53 75 62 73 74 61 6e 74 69       # Substanti
6ed0: 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  f.              
6ee0: 20 20 73 50 4f 53 20 3d 20 73 65 6c 66 2e 5f 67    sPOS = self._g
6ef0: 65 74 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c  etRadioValue(sel
6f00: 66 2e 78 4e 41 2c 20 73 65 6c 66 2e 78 4e 2c 20  f.xNA, self.xN, 
6f10: 73 65 6c 66 2e 78 41 29 0a 20 20 20 20 20 20 20  self.xA).       
6f20: 20 20 20 20 20 20 20 20 20 73 47 65 6e 64 65 72           sGender
6f30: 54 61 67 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52  Tag = self._getR
6f40: 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78  adioValue(self.x
6f50: 53 65 70 69 2c 20 73 65 6c 66 2e 78 53 6d 61 73  Sepi, self.xSmas
6f60: 2c 20 73 65 6c 66 2e 78 53 66 65 6d 29 0a 20 20  , self.xSfem).  
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6f80: 20 73 47 65 6e 64 65 72 54 61 67 3a 0a 20 20 20   sGenderTag:.   
6f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fa0: 20 69 66 20 73 65 6c 66 2e 78 53 73 2e 53 74 61   if self.xSs.Sta
6fb0: 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  te:.            
6fc0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
6fd0: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
6fe0: 61 70 70 65 6e 64 28 28 73 65 6c 66 2e 73 4c 65  append((self.sLe
6ff0: 6d 6d 61 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65  mma, sPOS+sGende
7000: 72 54 61 67 2b 22 3a 73 2f 2a 22 29 29 0a 20 20  rTag+":s/*")).  
7010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7020: 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65        self.lGene
7030: 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64  ratedFlex.append
7040: 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2b 22 73  ((self.sLemma+"s
7050: 22 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54  ", sPOS+sGenderT
7060: 61 67 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20  ag+":p/*")).    
7070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7080: 65 6c 69 66 20 73 65 6c 66 2e 78 53 78 2e 53 74  elif self.xSx.St
7090: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
70a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
70b0: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
70c0: 2e 61 70 70 65 6e 64 28 28 73 65 6c 66 2e 73 4c  .append((self.sL
70d0: 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47 65 6e 64  emma, sPOS+sGend
70e0: 65 72 54 61 67 2b 22 3a 73 2f 2a 22 29 29 0a 20  erTag+":s/*")). 
70f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7100: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e         self.lGen
7110: 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e  eratedFlex.appen
7120: 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2b 22  d((self.sLemma+"
7130: 78 22 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65 72  x", sPOS+sGender
7140: 54 61 67 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20  Tag+":p/*")).   
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7160: 20 65 6c 69 66 20 73 65 6c 66 2e 78 53 69 6e 76   elif self.xSinv
7170: 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20  .State:.        
7180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7190: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
71a0: 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66  lex.append((self
71b0: 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47  .sLemma, sPOS+sG
71c0: 65 6e 64 65 72 54 61 67 2b 22 3a 69 2f 2a 22 29  enderTag+":i/*")
71d0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
71e0: 20 20 20 20 20 20 73 4c 65 6d 6d 61 32 20 3d 20        sLemma2 = 
71f0: 73 65 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61 2e 54  self.xAltLemma.T
7200: 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20  ext.strip().    
7210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7220: 69 66 20 73 4c 65 6d 6d 61 32 20 61 6e 64 20 73  if sLemma2 and s
7230: 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c  elf._getRadioVal
7240: 75 65 28 73 65 6c 66 2e 78 4e 41 32 2c 20 73 65  ue(self.xNA2, se
7250: 6c 66 2e 78 4e 32 2c 20 73 65 6c 66 2e 78 41 32  lf.xN2, self.xA2
7260: 29 20 61 6e 64 20 73 65 6c 66 2e 5f 67 65 74 52  ) and self._getR
7270: 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78  adioValue(self.x
7280: 53 65 70 69 32 2c 20 73 65 6c 66 2e 78 53 6d 61  Sepi2, self.xSma
7290: 73 32 2c 20 73 65 6c 66 2e 78 53 66 65 6d 32 29  s2, self.xSfem2)
72a0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
72b0: 20 20 20 20 20 20 20 20 20 20 73 54 61 67 32 20            sTag2 
72c0: 3d 20 73 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f  = self._getRadio
72d0: 56 61 6c 75 65 28 73 65 6c 66 2e 78 4e 41 32 2c  Value(self.xNA2,
72e0: 20 73 65 6c 66 2e 78 4e 32 2c 20 73 65 6c 66 2e   self.xN2, self.
72f0: 78 41 32 29 20 2b 20 73 65 6c 66 2e 5f 67 65 74  xA2) + self._get
7300: 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e  RadioValue(self.
7310: 78 53 65 70 69 32 2c 20 73 65 6c 66 2e 78 53 6d  xSepi2, self.xSm
7320: 61 73 32 2c 20 73 65 6c 66 2e 78 53 66 65 6d 32  as2, self.xSfem2
7330: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7340: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c            if sel
7350: 66 2e 78 53 73 32 2e 53 74 61 74 65 3a 0a 20 20  f.xSs2.State:.  
7360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7370: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c            self.l
7380: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70  GeneratedFlex.ap
7390: 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2c 20 73  pend((sLemma2, s
73a0: 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29 0a 20 20  Tag2+":s/*")).  
73b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
73c0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c            self.l
73d0: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70  GeneratedFlex.ap
73e0: 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2b 22 73  pend((sLemma2+"s
73f0: 22 2c 20 73 54 61 67 32 2b 22 3a 70 2f 2a 22 29  ", sTag2+":p/*")
7400: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7410: 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73            elif s
7420: 65 6c 66 2e 78 53 78 32 2e 53 74 61 74 65 3a 0a  elf.xSx2.State:.
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7440: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
7450: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
7460: 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2c  append((sLemma2,
7470: 20 73 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29 0a   sTag2+":s/*")).
7480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7490: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
74a0: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
74b0: 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2b  append((sLemma2+
74c0: 22 78 22 2c 20 73 54 61 67 32 2b 22 3a 70 2f 2a  "x", sTag2+":p/*
74d0: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
74e0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66              elif
74f0: 20 73 65 6c 66 2e 78 53 69 6e 76 32 2e 53 74 61   self.xSinv2.Sta
7500: 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  te:.            
7510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7520: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
7530: 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c 65 6d  lex.append((sLem
7540: 6d 61 32 2c 20 73 54 61 67 32 2b 22 3a 69 2f 2a  ma2, sTag2+":i/*
7550: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
7560: 65 6c 69 66 20 73 65 6c 66 2e 5f 67 65 74 52 61  elif self._getRa
7570: 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4d  dioValue(self.xM
7580: 31 2c 20 73 65 6c 66 2e 78 4d 32 2c 20 73 65 6c  1, self.xM2, sel
7590: 66 2e 78 4d 50 29 3a 0a 20 20 20 20 20 20 20 20  f.xMP):.        
75a0: 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 20 70 72          # Nom pr
75b0: 6f 70 72 65 0a 20 20 20 20 20 20 20 20 20 20 20  opre.           
75c0: 20 20 20 20 20 73 50 4f 53 20 3d 20 73 65 6c 66       sPOS = self
75d0: 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28  ._getRadioValue(
75e0: 73 65 6c 66 2e 78 4d 31 2c 20 73 65 6c 66 2e 78  self.xM1, self.x
75f0: 4d 32 2c 20 73 65 6c 66 2e 78 4d 50 29 0a 20 20  M2, self.xMP).  
7600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
7610: 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c 66  lf.sLemma = self
7620: 2e 73 4c 65 6d 6d 61 5b 30 3a 31 5d 2e 75 70 70  .sLemma[0:1].upp
7630: 65 72 28 29 20 2b 20 73 65 6c 66 2e 73 4c 65 6d  er() + self.sLem
7640: 6d 61 5b 31 3a 5d 3b 0a 20 20 20 20 20 20 20 20  ma[1:];.        
7650: 20 20 20 20 20 20 20 20 73 47 65 6e 64 65 72 54          sGenderT
7660: 61 67 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52 61  ag = self._getRa
7670: 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4d  dioValue(self.xM
7680: 65 70 69 2c 20 73 65 6c 66 2e 78 4d 6d 61 73 2c  epi, self.xMmas,
7690: 20 73 65 6c 66 2e 78 4d 66 65 6d 29 0a 20 20 20   self.xMfem).   
76a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
76b0: 73 47 65 6e 64 65 72 54 61 67 3a 0a 20 20 20 20  sGenderTag:.    
76c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76d0: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
76e0: 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66  lex.append((self
76f0: 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47  .sLemma, sPOS+sG
7700: 65 6e 64 65 72 54 61 67 2b 22 3a 69 2f 2a 22 29  enderTag+":i/*")
7710: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ).            el
7720: 69 66 20 73 65 6c 66 2e 78 56 2e 53 74 61 74 65  if self.xV.State
7730: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
7740: 20 20 23 20 56 65 72 62 65 0a 20 20 20 20 20 20    # Verbe.      
7750: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c            if sel
7760: 66 2e 73 4c 65 6d 6d 61 2e 65 6e 64 73 77 69 74  f.sLemma.endswit
7770: 68 28 28 22 65 72 22 2c 20 22 69 72 22 2c 20 22  h(("er", "ir", "
7780: 72 65 22 29 29 3a 0a 20 20 20 20 20 20 20 20 20  re")):.         
7790: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
77a0: 73 4c 65 6d 6d 61 20 3d 20 73 65 6c 66 2e 73 4c  sLemma = self.sL
77b0: 65 6d 6d 61 2e 6c 6f 77 65 72 28 29 0a 20 20 20  emma.lower().   
77c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77d0: 20 63 5f 69 20 3d 20 22 69 22 20 20 69 66 20 73   c_i = "i"  if s
77e0: 65 6c 66 2e 78 56 5f 69 2e 53 74 61 74 65 20 20  elf.xV_i.State  
77f0: 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20 20  else "_".       
7800: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f 74               c_t
7810: 20 3d 20 22 74 22 20 20 69 66 20 73 65 6c 66 2e   = "t"  if self.
7820: 78 56 5f 74 2e 53 74 61 74 65 20 20 65 6c 73 65  xV_t.State  else
7830: 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20 20   "_".           
7840: 20 20 20 20 20 20 20 20 20 63 5f 6e 20 3d 20 22           c_n = "
7850: 6e 22 20 20 69 66 20 73 65 6c 66 2e 78 56 5f 6e  n"  if self.xV_n
7860: 2e 53 74 61 74 65 20 20 65 6c 73 65 20 22 5f 22  .State  else "_"
7870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7880: 20 20 20 20 20 63 5f 70 20 3d 20 22 70 22 20 20       c_p = "p"  
7890: 69 66 20 73 65 6c 66 2e 78 56 5f 70 2e 53 74 61  if self.xV_p.Sta
78a0: 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20 20  te  else "_".   
78b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78c0: 20 63 5f 6d 20 3d 20 22 6d 22 20 20 69 66 20 73   c_m = "m"  if s
78d0: 65 6c 66 2e 78 56 5f 6d 2e 53 74 61 74 65 20 20  elf.xV_m.State  
78e0: 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20 20  else "_".       
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f 61               c_a
7900: 65 20 3d 20 22 65 22 20 20 69 66 20 73 65 6c 66  e = "e"  if self
7910: 2e 78 56 5f 61 65 2e 53 74 61 74 65 20 20 65 6c  .xV_ae.State  el
7920: 73 65 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20  se "_".         
7930: 20 20 20 20 20 20 20 20 20 20 20 63 5f 61 61 20             c_aa 
7940: 3d 20 22 61 22 20 20 69 66 20 73 65 6c 66 2e 78  = "a"  if self.x
7950: 56 5f 61 61 2e 53 74 61 74 65 20 20 65 6c 73 65  V_aa.State  else
7960: 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20 20   "_".           
7970: 20 20 20 20 20 20 20 20 20 73 56 65 72 62 54 61           sVerbTa
7980: 67 20 3d 20 63 5f 69 20 2b 20 63 5f 74 20 2b 20  g = c_i + c_t + 
7990: 63 5f 6e 20 2b 20 63 5f 70 20 2b 20 63 5f 6d 20  c_n + c_p + c_m 
79a0: 2b 20 63 5f 61 65 20 2b 20 63 5f 61 61 0a 20 20  + c_ae + c_aa.  
79b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79c0: 20 20 69 66 20 22 70 22 20 69 6e 20 73 56 65 72    if "p" in sVer
79d0: 62 54 61 67 20 61 6e 64 20 6e 6f 74 20 73 56 65  bTag and not sVe
79e0: 72 62 54 61 67 2e 73 74 61 72 74 73 77 69 74 68  rbTag.startswith
79f0: 28 22 5f 5f 5f 70 5f 22 29 3a 0a 20 20 20 20 20  ("___p_"):.     
7a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a10: 20 20 20 73 56 65 72 62 54 61 67 20 3d 20 73 56     sVerbTag = sV
7a20: 65 72 62 54 61 67 2e 72 65 70 6c 61 63 65 28 22  erbTag.replace("
7a30: 70 22 2c 20 22 71 22 29 0a 20 20 20 20 20 20 20  p", "q").       
7a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7a50: 6e 6f 74 20 73 56 65 72 62 54 61 67 2e 65 6e 64  not sVerbTag.end
7a60: 73 77 69 74 68 28 22 5f 5f 22 29 20 61 6e 64 20  swith("__") and 
7a70: 6e 6f 74 20 73 56 65 72 62 54 61 67 2e 73 74 61  not sVerbTag.sta
7a80: 72 74 73 77 69 74 68 28 22 5f 5f 5f 5f 22 29 3a  rtswith("____"):
7a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7aa0: 20 20 20 20 20 20 20 20 20 73 56 65 72 62 50 61           sVerbPa
7ab0: 74 74 65 72 6e 20 3d 20 73 65 6c 66 2e 78 56 70  ttern = self.xVp
7ac0: 61 74 74 65 72 6e 2e 54 65 78 74 2e 73 74 72 69  attern.Text.stri
7ad0: 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  p().            
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e              if n
7af0: 6f 74 20 73 56 65 72 62 50 61 74 74 65 72 6e 3a  ot sVerbPattern:
7b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55               # U
7b20: 74 69 6c 69 73 61 74 69 6f 6e 20 64 75 20 67 c3  tilisation du g.
7b30: a9 6e c3 a9 72 61 74 65 75 72 20 64 65 20 63 6f  .n..rateur de co
7b40: 6e 6a 75 67 61 69 73 6f 6e 0a 20 20 20 20 20 20  njugaison.      
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b60: 20 20 20 20 20 20 66 6f 72 20 73 46 6c 65 78 69        for sFlexi
7b70: 6f 6e 2c 20 73 46 6c 65 78 54 61 67 73 20 69 6e  on, sFlexTags in
7b80: 20 63 6f 6e 6a 67 65 6e 2e 63 6f 6e 6a 75 67 61   conjgen.conjuga
7b90: 74 65 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c 20  te(self.sLemma, 
7ba0: 73 56 65 72 62 54 61 67 2c 20 6e 6f 74 20 62 6f  sVerbTag, not bo
7bb0: 6f 6c 28 73 65 6c 66 2e 78 56 5f 70 70 2e 53 74  ol(self.xV_pp.St
7bc0: 61 74 65 29 29 3a 0a 20 20 20 20 20 20 20 20 20  ate)):.         
7bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7be0: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e         self.lGen
7bf0: 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e  eratedFlex.appen
7c00: 64 28 28 73 46 6c 65 78 69 6f 6e 2c 20 73 46 6c  d((sFlexion, sFl
7c10: 65 78 54 61 67 73 29 29 0a 20 20 20 20 20 20 20  exTags)).       
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c30: 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20   else:.         
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 20 23 20 63 6f 70 69 65 20 64 75 20 6d 6f     # copie du mo
7c60: 74 69 66 20 64 e2 80 99 75 6e 20 61 75 74 72 65  tif d...un autre
7c70: 20 76 65 72 62 65 20 3a 20 75 74 69 6c 69 73 61   verbe : utilisa
7c80: 74 69 6f 6e 20 64 75 20 63 6f 6e 6a 75 67 75 65  tion du conjugue
7c90: 75 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ur.             
7ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7cb0: 66 20 63 6f 6e 6a 2e 69 73 56 65 72 62 28 73 56  f conj.isVerb(sV
7cc0: 65 72 62 50 61 74 74 65 72 6e 29 3a 0a 20 20 20  erbPattern):.   
7cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 56 65               oVe
7cf0: 72 62 20 3d 20 63 6f 6e 6a 2e 56 65 72 62 28 73  rb = conj.Verb(s
7d00: 65 6c 66 2e 73 4c 65 6d 6d 61 2c 20 73 56 65 72  elf.sLemma, sVer
7d10: 62 50 61 74 74 65 72 6e 29 0a 20 20 20 20 20 20  bPattern).      
7d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d30: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 54            for sT
7d40: 61 67 31 2c 20 64 46 6c 65 78 20 69 6e 20 6f 56  ag1, dFlex in oV
7d50: 65 72 62 2e 64 43 6f 6e 6a 2e 69 74 65 6d 73 28  erb.dConj.items(
7d60: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ):.             
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d80: 20 20 20 20 20 20 20 69 66 20 73 54 61 67 31 20         if sTag1 
7d90: 21 3d 20 22 3a 51 22 3a 0a 20 20 20 20 20 20 20  != ":Q":.       
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7dc0: 20 66 6f 72 20 73 54 61 67 32 2c 20 73 43 6f 6e   for sTag2, sCon
7dd0: 6a 20 69 6e 20 64 46 6c 65 78 2e 69 74 65 6d 73  j in dFlex.items
7de0: 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ():.            
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e10: 69 66 20 73 54 61 67 32 2e 73 74 61 72 74 73 77  if sTag2.startsw
7e20: 69 74 68 28 22 3a 22 29 20 61 6e 64 20 73 43 6f  ith(":") and sCo
7e30: 6e 6a 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  nj:.            
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e60: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
7e70: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
7e80: 73 43 6f 6e 6a 2c 20 22 3a 56 22 20 2b 20 6f 56  sConj, ":V" + oV
7e90: 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22  erb.cGroup + "_"
7ea0: 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20 73 54   + sVerbTag + sT
7eb0: 61 67 31 20 2b 20 73 54 61 67 32 29 29 0a 20 20  ag1 + sTag2)).  
7ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ee0: 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20    else:.        
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f10: 23 20 70 61 72 74 69 63 69 70 65 73 20 70 61 73  # participes pas
7f20: 73 c3 a9 73 0a 20 20 20 20 20 20 20 20 20 20 20  s..s.           
7f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7f50: 64 46 6c 65 78 5b 22 3a 51 33 22 5d 3a 0a 20 20  dFlex[":Q3"]:.  
7f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f80: 20 20 20 20 20 20 20 20 20 20 69 66 20 64 46 6c            if dFl
7f90: 65 78 5b 22 3a 51 32 22 5d 3a 0a 20 20 20 20 20  ex[":Q2"]:.     
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fc0: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
7fd0: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
7fe0: 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51  ppend((dFlex[":Q
7ff0: 31 22 5d 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  1"], ":V" + oVer
8000: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
8010: 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a   sVerbTag + ":Q:
8020: 41 3a 6d 3a 73 2f 2a 22 29 29 0a 20 20 20 20 20  A:m:s/*")).     
8030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8050: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
8060: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
8070: 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51  ppend((dFlex[":Q
8080: 32 22 5d 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  2"], ":V" + oVer
8090: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
80a0: 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a   sVerbTag + ":Q:
80b0: 41 3a 6d 3a 70 2f 2a 22 29 29 0a 20 20 20 20 20  A:m:p/*")).     
80c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80e0: 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20         else:.   
80f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
8120: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
8130: 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22  .append((dFlex["
8140: 3a 51 31 22 5d 2c 20 22 3a 56 22 20 2b 20 6f 56  :Q1"], ":V" + oV
8150: 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22  erb.cGroup + "_"
8160: 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a   + sVerbTag + ":
8170: 51 3a 41 3a 6d 3a 69 2f 2a 22 29 29 0a 20 20 20  Q:A:m:i/*")).   
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81a0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47           self.lG
81b0: 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70  eneratedFlex.app
81c0: 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51 33 22  end((dFlex[":Q3"
81d0: 5d 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72 62 2e  ], ":V" + oVerb.
81e0: 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b 20 73  cGroup + "_" + s
81f0: 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a 41 3a  VerbTag + ":Q:A:
8200: 66 3a 73 2f 2a 22 29 29 0a 20 20 20 20 20 20 20  f:s/*")).       
8210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8230: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
8240: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
8250: 28 64 46 6c 65 78 5b 22 3a 51 34 22 5d 2c 20 22  (dFlex[":Q4"], "
8260: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
8270: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
8280: 54 61 67 20 2b 20 22 3a 51 3a 41 3a 66 3a 70 2f  Tag + ":Q:A:f:p/
8290: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
82c0: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e:.             
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
82f0: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
8300: 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78  ex.append((dFlex
8310: 5b 22 3a 51 31 22 5d 2c 20 22 3a 56 22 20 2b 20  [":Q1"], ":V" + 
8320: 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22  oVerb.cGroup + "
8330: 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20  _" + sVerbTag + 
8340: 22 3a 51 3a 65 3a 69 2f 2a 22 29 29 0a 20 20 20  ":Q:e:i/*")).   
8350: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65           elif se
8360: 6c 66 2e 78 57 2e 53 74 61 74 65 3a 0a 20 20 20  lf.xW.State:.   
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41               # A
8380: 64 76 65 72 62 65 0a 20 20 20 20 20 20 20 20 20  dverbe.         
8390: 20 20 20 20 20 20 20 73 65 6c 66 2e 73 4c 65 6d         self.sLem
83a0: 6d 61 20 3d 20 73 65 6c 66 2e 73 4c 65 6d 6d 61  ma = self.sLemma
83b0: 2e 6c 6f 77 65 72 28 29 3b 0a 20 20 20 20 20 20  .lower();.      
83c0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c            self.l
83d0: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70  GeneratedFlex.ap
83e0: 70 65 6e 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d  pend((self.sLemm
83f0: 61 2c 20 22 3a 57 2f 2a 22 29 29 0a 20 20 20 20  a, ":W/*")).    
8400: 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c          elif sel
8410: 66 2e 78 58 2e 53 74 61 74 65 3a 0a 20 20 20 20  f.xX.State:.    
8420: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41 75              # Au
8430: 74 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  tre.            
8440: 20 20 20 20 73 46 6c 65 78 69 6f 6e 20 3d 20 73      sFlexion = s
8450: 65 6c 66 2e 78 46 6c 65 78 69 6f 6e 2e 54 65 78  elf.xFlexion.Tex
8460: 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20  t.strip().      
8470: 20 20 20 20 20 20 20 20 20 20 73 54 61 67 73 20            sTags 
8480: 3d 20 73 65 6c 66 2e 78 54 61 67 73 2e 54 65 78  = self.xTags.Tex
8490: 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20  t.strip().      
84a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 46 6c            if sFl
84b0: 65 78 69 6f 6e 20 61 6e 64 20 73 54 61 67 73 2e  exion and sTags.
84c0: 73 74 61 72 74 73 77 69 74 68 28 22 3a 22 29 3a  startswith(":"):
84d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84e0: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
84f0: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
8500: 28 73 46 6c 65 78 69 6f 6e 2c 20 73 54 61 67 73  (sFlexion, sTags
8510: 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  )).        self.
8520: 5f 73 68 6f 77 47 65 6e 57 6f 72 64 73 28 29 0a  _showGenWords().
8530: 0a 20 20 20 20 64 65 66 20 5f 73 68 6f 77 47 65  .    def _showGe
8540: 6e 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a 20  nWords (self):. 
8550: 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74 61         xGridData
8560: 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78 47 72  Model = self.xGr
8570: 69 64 4d 6f 64 65 6c 4e 65 77 2e 47 72 69 64 44  idModelNew.GridD
8580: 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20 20 20  ataModel.       
8590: 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e   xGridDataModel.
85a0: 72 65 6d 6f 76 65 41 6c 6c 52 6f 77 73 28 29 0a  removeAllRows().
85b0: 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73          if not s
85c0: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
85d0: 65 78 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex:.            
85e0: 73 65 6c 66 2e 78 41 64 64 2e 45 6e 61 62 6c 65  self.xAdd.Enable
85f0: 64 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  d = False.      
8600: 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20        return.   
8610: 20 20 20 20 20 66 6f 72 20 69 2c 20 28 73 46 6c       for i, (sFl
8620: 65 78 69 6f 6e 2c 20 73 54 61 67 29 20 69 6e 20  exion, sTag) in 
8630: 65 6e 75 6d 65 72 61 74 65 28 73 65 6c 66 2e 6c  enumerate(self.l
8640: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 29 3a 0a  GeneratedFlex):.
8650: 20 20 20 20 20 20 20 20 20 20 20 20 78 47 72 69              xGri
8660: 64 44 61 74 61 4d 6f 64 65 6c 2e 61 64 64 52 6f  dDataModel.addRo
8670: 77 28 69 2c 20 28 73 46 6c 65 78 69 6f 6e 2c 20  w(i, (sFlexion, 
8680: 73 54 61 67 29 29 0a 20 20 20 20 20 20 20 20 73  sTag)).        s
8690: 65 6c 66 2e 78 41 64 64 2e 45 6e 61 62 6c 65 64  elf.xAdd.Enabled
86a0: 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 64 65 66   = True..    def
86b0: 20 5f 72 65 73 65 74 57 69 64 67 65 74 73 20 28   _resetWidgets (
86c0: 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73  self):.        s
86d0: 65 6c 66 2e 78 4c 65 6d 6d 61 2e 54 65 78 74 20  elf.xLemma.Text 
86e0: 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c  = "".        sel
86f0: 66 2e 78 4e 41 2e 53 74 61 74 65 20 3d 20 46 61  f.xNA.State = Fa
8700: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
8710: 2e 78 4e 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  .xN.State = Fals
8720: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
8730: 41 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  A.State = False.
8740: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 31          self.xM1
8750: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
8760: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 32 2e         self.xM2.
8770: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
8780: 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 50 2e 53        self.xMP.S
8790: 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20  tate = False.   
87a0: 20 20 20 20 20 73 65 6c 66 2e 78 56 2e 53 74 61       self.xV.Sta
87b0: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
87c0: 20 20 20 73 65 6c 66 2e 78 57 2e 53 74 61 74 65     self.xW.State
87d0: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
87e0: 20 73 65 6c 66 2e 78 58 2e 53 74 61 74 65 20 3d   self.xX.State =
87f0: 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73   False.        s
8800: 65 6c 66 2e 78 53 65 70 69 2e 53 74 61 74 65 20  elf.xSepi.State 
8810: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
8820: 73 65 6c 66 2e 78 53 6d 61 73 2e 53 74 61 74 65  self.xSmas.State
8830: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
8840: 20 73 65 6c 66 2e 78 53 66 65 6d 2e 53 74 61 74   self.xSfem.Stat
8850: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
8860: 20 20 73 65 6c 66 2e 78 53 73 2e 53 74 61 74 65    self.xSs.State
8870: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
8880: 20 73 65 6c 66 2e 78 53 78 2e 53 74 61 74 65 20   self.xSx.State 
8890: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
88a0: 73 65 6c 66 2e 78 53 69 6e 76 2e 53 74 61 74 65  self.xSinv.State
88b0: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
88c0: 20 73 65 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61 2e   self.xAltLemma.
88d0: 54 65 78 74 20 3d 20 22 22 0a 20 20 20 20 20 20  Text = "".      
88e0: 20 20 73 65 6c 66 2e 78 4e 41 32 2e 53 74 61 74    self.xNA2.Stat
88f0: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
8900: 20 20 73 65 6c 66 2e 78 4e 32 2e 53 74 61 74 65    self.xN2.State
8910: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
8920: 20 73 65 6c 66 2e 78 41 32 2e 53 74 61 74 65 20   self.xA2.State 
8930: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
8940: 73 65 6c 66 2e 78 53 65 70 69 32 2e 53 74 61 74  self.xSepi2.Stat
8950: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
8960: 20 20 73 65 6c 66 2e 78 53 6d 61 73 32 2e 53 74    self.xSmas2.St
8970: 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20  ate = False.    
8980: 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d 32 2e      self.xSfem2.
8990: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
89a0: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 73 32 2e        self.xSs2.
89b0: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
89c0: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 78 32 2e        self.xSx2.
89d0: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
89e0: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69 6e 76        self.xSinv
89f0: 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  2.State = False.
8a00: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 65          self.xMe
8a10: 70 69 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  pi.State = False
8a20: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d  .        self.xM
8a30: 6d 61 73 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  mas.State = Fals
8a40: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
8a50: 4d 66 65 6d 2e 53 74 61 74 65 20 3d 20 46 61 6c  Mfem.State = Fal
8a60: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8a70: 78 56 5f 69 2e 53 74 61 74 65 20 3d 20 46 61 6c  xV_i.State = Fal
8a80: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8a90: 78 56 5f 74 2e 53 74 61 74 65 20 3d 20 46 61 6c  xV_t.State = Fal
8aa0: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8ab0: 78 56 5f 6e 2e 53 74 61 74 65 20 3d 20 46 61 6c  xV_n.State = Fal
8ac0: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8ad0: 78 56 5f 70 2e 53 74 61 74 65 20 3d 20 46 61 6c  xV_p.State = Fal
8ae0: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8af0: 78 56 5f 6d 2e 53 74 61 74 65 20 3d 20 46 61 6c  xV_m.State = Fal
8b00: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
8b10: 78 56 5f 61 65 2e 53 74 61 74 65 20 3d 20 46 61  xV_ae.State = Fa
8b20: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
8b30: 2e 78 56 5f 61 61 2e 53 74 61 74 65 20 3d 20 46  .xV_aa.State = F
8b40: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c  alse.        sel
8b50: 66 2e 78 56 5f 70 70 2e 53 74 61 74 65 20 3d 20  f.xV_pp.State = 
8b60: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
8b70: 6c 66 2e 78 56 70 61 74 74 65 72 6e 2e 54 65 78  lf.xVpattern.Tex
8b80: 74 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73  t = "".        s
8b90: 65 6c 66 2e 78 46 6c 65 78 69 6f 6e 2e 54 65 78  elf.xFlexion.Tex
8ba0: 74 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73  t = "".        s
8bb0: 65 6c 66 2e 78 54 61 67 73 2e 54 65 78 74 20 3d  elf.xTags.Text =
8bc0: 20 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66   "".        self
8bd0: 2e 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77 2e 47  .xGridModelNew.G
8be0: 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 72 65 6d  ridDataModel.rem
8bf0: 6f 76 65 41 6c 6c 52 6f 77 73 28 29 0a 0a 20 20  oveAllRows()..  
8c00: 20 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a    @_waitPointer.
8c10: 20 20 20 20 64 65 66 20 61 64 64 54 6f 4c 65 78      def addToLex
8c20: 69 63 6f 6e 20 28 73 65 6c 66 29 3a 0a 20 20 20  icon (self):.   
8c30: 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64 2e 45       self.xAdd.E
8c40: 6e 61 62 6c 65 64 20 3d 20 46 61 6c 73 65 0a 20  nabled = False. 
8c50: 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74 61         xGridData
8c60: 4d 6f 64 65 6c 4e 65 77 20 3d 20 73 65 6c 66 2e  ModelNew = self.
8c70: 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77 2e 47 72  xGridModelNew.Gr
8c80: 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20  idDataModel.    
8c90: 20 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64      xGridDataMod
8ca0: 65 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 78 47 72  elLex = self.xGr
8cb0: 69 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69 64 44  idModelLex.GridD
8cc0: 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20 20 20  ataModel.       
8cd0: 20 6e 53 74 61 72 74 20 3d 20 78 47 72 69 64 44   nStart = xGridD
8ce0: 61 74 61 4d 6f 64 65 6c 4c 65 78 2e 52 6f 77 43  ataModelLex.RowC
8cf0: 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 66 6f 72  ount.        for
8d00: 20 69 20 69 6e 20 72 61 6e 67 65 28 78 47 72 69   i in range(xGri
8d10: 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77 2e 52 6f  dDataModelNew.Ro
8d20: 77 43 6f 75 6e 74 29 3a 0a 20 20 20 20 20 20 20  wCount):.       
8d30: 20 20 20 20 20 73 46 6c 65 78 69 6f 6e 2c 20 73       sFlexion, s
8d40: 54 61 67 20 3d 20 78 47 72 69 64 44 61 74 61 4d  Tag = xGridDataM
8d50: 6f 64 65 6c 4e 65 77 2e 67 65 74 52 6f 77 44 61  odelNew.getRowDa
8d60: 74 61 28 69 29 0a 20 20 20 20 20 20 20 20 20 20  ta(i).          
8d70: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
8d80: 4c 65 78 2e 61 64 64 52 6f 77 28 6e 53 74 61 72  Lex.addRow(nStar
8d90: 74 20 2b 20 69 2c 20 28 73 46 6c 65 78 69 6f 6e  t + i, (sFlexion
8da0: 2c 20 73 65 6c 66 2e 73 4c 65 6d 6d 61 2c 20 73  , self.sLemma, s
8db0: 54 61 67 29 29 0a 20 20 20 20 20 20 20 20 73 65  Tag)).        se
8dc0: 6c 66 2e 78 53 61 76 65 2e 45 6e 61 62 6c 65 64  lf.xSave.Enabled
8dd0: 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20   = True.        
8de0: 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e 4c 61 62  self.xNumLex.Lab
8df0: 65 6c 20 3d 20 73 74 72 28 69 6e 74 28 73 65 6c  el = str(int(sel
8e00: 66 2e 78 4e 75 6d 4c 65 78 2e 4c 61 62 65 6c 29  f.xNumLex.Label)
8e10: 20 2b 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65   + xGridDataMode
8e20: 6c 4e 65 77 2e 52 6f 77 43 6f 75 6e 74 29 0a 20  lNew.RowCount). 
8e30: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 65 73         self._res
8e40: 65 74 57 69 64 67 65 74 73 28 29 0a 0a 20 20 20  etWidgets()..   
8e50: 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20   @_waitPointer. 
8e60: 20 20 20 64 65 66 20 64 65 6c 65 74 65 53 65 6c     def deleteSel
8e70: 65 63 74 65 64 45 6e 74 72 69 65 73 20 28 73 65  ectedEntries (se
8e80: 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 67  lf):.        # g
8e90: 65 6e 65 72 61 74 65 64 20 65 6e 74 72 69 65 73  enerated entries
8ea0: 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61  .        xGridDa
8eb0: 74 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78  taModel = self.x
8ec0: 47 72 69 64 4d 6f 64 65 6c 4e 65 77 2e 47 72 69  GridModelNew.Gri
8ed0: 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20  dDataModel.     
8ee0: 20 20 20 23 68 65 6c 70 65 72 73 2e 78 72 61 79     #helpers.xray
8ef0: 28 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 29  (xGridDataModel)
8f00: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69  .        for i i
8f10: 6e 20 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74  n self.xGridCont
8f20: 72 6f 6c 4e 65 77 2e 67 65 74 53 65 6c 65 63 74  rolNew.getSelect
8f30: 65 64 52 6f 77 73 28 29 3a 0a 20 20 20 20 20 20  edRows():.      
8f40: 20 20 20 20 20 20 69 66 20 69 20 3c 20 78 47 72        if i < xGr
8f50: 69 64 44 61 74 61 4d 6f 64 65 6c 2e 52 6f 77 43  idDataModel.RowC
8f60: 6f 75 6e 74 3a 0a 20 20 20 20 20 20 20 20 20 20  ount:.          
8f70: 20 20 20 20 20 20 78 47 72 69 64 44 61 74 61 4d        xGridDataM
8f80: 6f 64 65 6c 2e 72 65 6d 6f 76 65 52 6f 77 28 69  odel.removeRow(i
8f90: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
8fa0: 47 72 69 64 43 6f 6e 74 72 6f 6c 4e 65 77 2e 64  GridControlNew.d
8fb0: 65 73 65 6c 65 63 74 41 6c 6c 52 6f 77 73 28 29  eselectAllRows()
8fc0: 0a 20 20 20 20 20 20 20 20 23 20 6c 65 78 69 63  .        # lexic
8fd0: 6f 6e 0a 20 20 20 20 20 20 20 20 78 47 72 69 64  on.        xGrid
8fe0: 44 61 74 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66  DataModel = self
8ff0: 2e 78 47 72 69 64 4d 6f 64 65 6c 4c 65 78 2e 47  .xGridModelLex.G
9000: 72 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20  ridDataModel.   
9010: 20 20 20 20 20 6e 53 65 6c 65 63 74 65 64 45 6e       nSelectedEn
9020: 74 72 69 65 73 20 3d 20 6c 65 6e 28 73 65 6c 66  tries = len(self
9030: 2e 78 47 72 69 64 43 6f 6e 74 72 6f 6c 4c 65 78  .xGridControlLex
9040: 2e 67 65 74 53 65 6c 65 63 74 65 64 52 6f 77 73  .getSelectedRows
9050: 28 29 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20  ()).        for 
9060: 69 20 69 6e 20 73 65 6c 66 2e 78 47 72 69 64 43  i in self.xGridC
9070: 6f 6e 74 72 6f 6c 4c 65 78 2e 67 65 74 53 65 6c  ontrolLex.getSel
9080: 65 63 74 65 64 52 6f 77 73 28 29 3a 0a 20 20 20  ectedRows():.   
9090: 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3c 20           if i < 
90a0: 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 52  xGridDataModel.R
90b0: 6f 77 43 6f 75 6e 74 3a 0a 20 20 20 20 20 20 20  owCount:.       
90c0: 20 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61           xGridDa
90d0: 74 61 4d 6f 64 65 6c 2e 72 65 6d 6f 76 65 52 6f  taModel.removeRo
90e0: 77 28 69 29 0a 20 20 20 20 20 20 20 20 73 65 6c  w(i).        sel
90f0: 66 2e 78 47 72 69 64 43 6f 6e 74 72 6f 6c 4c 65  f.xGridControlLe
9100: 78 2e 64 65 73 65 6c 65 63 74 41 6c 6c 52 6f 77  x.deselectAllRow
9110: 73 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  s().        self
9120: 2e 78 4e 75 6d 4c 65 78 2e 4c 61 62 65 6c 20 3d  .xNumLex.Label =
9130: 20 73 74 72 28 78 47 72 69 64 44 61 74 61 4d 6f   str(xGridDataMo
9140: 64 65 6c 2e 52 6f 77 43 6f 75 6e 74 29 0a 0a 0a  del.RowCount)...
9150: 23 67 5f 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  #g_Implementatio
9160: 6e 48 65 6c 70 65 72 20 3d 20 75 6e 6f 68 65 6c  nHelper = unohel
9170: 70 65 72 2e 49 6d 70 6c 65 6d 65 6e 74 61 74 69  per.Implementati
9180: 6f 6e 48 65 6c 70 65 72 28 29 0a 23 67 5f 49 6d  onHelper().#g_Im
9190: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70  plementationHelp
91a0: 65 72 2e 61 64 64 49 6d 70 6c 65 6d 65 6e 74 61  er.addImplementa
91b0: 74 69 6f 6e 28 4c 65 78 69 63 6f 6e 45 64 69 74  tion(LexiconEdit
91c0: 6f 72 2c 20 27 6e 65 74 2e 67 72 61 6d 6d 61 6c  or, 'net.grammal
91d0: 65 63 74 65 2e 4c 65 78 69 63 6f 6e 45 64 69 74  ecte.LexiconEdit
91e0: 6f 72 27 2c 20 28 27 63 6f 6d 2e 73 75 6e 2e 73  or', ('com.sun.s
91f0: 74 61 72 2e 74 61 73 6b 2e 4a 6f 62 27 2c 29 29  tar.task.Job',))
9200: 0a                                               .