Grammalecte  Hex Artifact Content

Artifact b0ac6192f3aaf349d387ffd2185afc016e48e083b612f462074496f0e2958f84:


0000: 23 20 4c 65 78 69 63 6f 6e 20 45 64 69 74 6f 72  # Lexicon Editor
0010: 0a 23 20 62 79 20 4f 6c 69 76 69 65 72 20 52 2e  .# by Olivier R.
0020: 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 50 4c 20  .# License: MPL 
0030: 32 0a 0a 69 6d 70 6f 72 74 20 75 6e 6f 68 65 6c  2..import unohel
0040: 70 65 72 0a 69 6d 70 6f 72 74 20 75 6e 6f 0a 69  per.import uno.i
0050: 6d 70 6f 72 74 20 6a 73 6f 6e 0a 69 6d 70 6f 72  mport json.impor
0060: 74 20 72 65 0a 69 6d 70 6f 72 74 20 6f 73 0a 69  t re.import os.i
0070: 6d 70 6f 72 74 20 74 72 61 63 65 62 61 63 6b 0a  mport traceback.
0080: 0a 69 6d 70 6f 72 74 20 68 65 6c 70 65 72 73 0a  .import helpers.
0090: 69 6d 70 6f 72 74 20 6c 78 65 5f 73 74 72 69 6e  import lxe_strin
00a0: 67 73 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61  gs.import gramma
00b0: 6c 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c  lecte.graphspell
00c0: 20 61 73 20 73 63 0a 69 6d 70 6f 72 74 20 67 72   as sc.import gr
00d0: 61 6d 6d 61 6c 65 63 74 65 2e 67 72 61 70 68 73  ammalecte.graphs
00e0: 70 65 6c 6c 2e 64 61 77 67 20 61 73 20 64 61 77  pell.dawg as daw
00f0: 67 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c  g.import grammal
0100: 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c 2e  ecte.graphspell.
0110: 69 62 64 61 77 67 20 61 73 20 69 62 64 61 77 67  ibdawg as ibdawg
0120: 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c 65  .import grammale
0130: 63 74 65 2e 66 72 2e 63 6f 6e 6a 20 61 73 20 63  cte.fr.conj as c
0140: 6f 6e 6a 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d  onj.import gramm
0150: 61 6c 65 63 74 65 2e 66 72 2e 63 6f 6e 6a 5f 67  alecte.fr.conj_g
0160: 65 6e 65 72 61 74 6f 72 20 61 73 20 63 6f 6e 6a  enerator as conj
0170: 67 65 6e 0a 0a 69 6d 70 6f 72 74 20 53 65 61 72  gen..import Sear
0180: 63 68 57 6f 72 64 73 0a 69 6d 70 6f 72 74 20 54  chWords.import T
0190: 61 67 73 49 6e 66 6f 0a 0a 66 72 6f 6d 20 63 6f  agsInfo..from co
01a0: 6d 2e 73 75 6e 2e 73 74 61 72 2e 74 61 73 6b 20  m.sun.star.task 
01b0: 69 6d 70 6f 72 74 20 58 4a 6f 62 45 78 65 63 75  import XJobExecu
01c0: 74 6f 72 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e  tor.from com.sun
01d0: 2e 73 74 61 72 2e 61 77 74 20 69 6d 70 6f 72 74  .star.awt import
01e0: 20 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72   XActionListener
01f0: 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74  .from com.sun.st
0200: 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58 4b  ar.awt import XK
0210: 65 79 4c 69 73 74 65 6e 65 72 0a 0a 66 72 6f 6d  eyListener..from
0220: 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77   com.sun.star.aw
0230: 74 2e 4d 65 73 73 61 67 65 42 6f 78 42 75 74 74  t.MessageBoxButt
0240: 6f 6e 73 20 69 6d 70 6f 72 74 20 42 55 54 54 4f  ons import BUTTO
0250: 4e 53 5f 4f 4b 0a 23 20 42 55 54 54 4f 4e 53 5f  NS_OK.# BUTTONS_
0260: 4f 4b 2c 20 42 55 54 54 4f 4e 53 5f 4f 4b 5f 43  OK, BUTTONS_OK_C
0270: 41 4e 43 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 59  ANCEL, BUTTONS_Y
0280: 45 53 5f 4e 4f 2c 20 42 55 54 54 4f 4e 53 5f 59  ES_NO, BUTTONS_Y
0290: 45 53 5f 4e 4f 5f 43 41 4e 43 45 4c 2c 20 42 55  ES_NO_CANCEL, BU
02a0: 54 54 4f 4e 53 5f 52 45 54 52 59 5f 43 41 4e 43  TTONS_RETRY_CANC
02b0: 45 4c 2c 20 42 55 54 54 4f 4e 53 5f 41 42 4f 52  EL, BUTTONS_ABOR
02c0: 54 5f 49 47 4e 4f 52 45 5f 52 45 54 52 59 0a 23  T_IGNORE_RETRY.#
02d0: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
02e0: 4f 4b 2c 20 44 45 46 41 55 4c 54 5f 42 55 54 54  OK, DEFAULT_BUTT
02f0: 4f 4e 5f 43 41 4e 43 45 4c 2c 20 44 45 46 41 55  ON_CANCEL, DEFAU
0300: 4c 54 5f 42 55 54 54 4f 4e 5f 52 45 54 52 59 2c  LT_BUTTON_RETRY,
0310: 20 44 45 46 41 55 4c 54 5f 42 55 54 54 4f 4e 5f   DEFAULT_BUTTON_
0320: 59 45 53 2c 20 44 45 46 41 55 4c 54 5f 42 55 54  YES, DEFAULT_BUT
0330: 54 4f 4e 5f 4e 4f 2c 20 44 45 46 41 55 4c 54 5f  TON_NO, DEFAULT_
0340: 42 55 54 54 4f 4e 5f 49 47 4e 4f 52 45 0a 66 72  BUTTON_IGNORE.fr
0350: 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  om com.sun.star.
0360: 61 77 74 2e 4d 65 73 73 61 67 65 42 6f 78 54 79  awt.MessageBoxTy
0370: 70 65 20 69 6d 70 6f 72 74 20 49 4e 46 4f 42 4f  pe import INFOBO
0380: 58 20 23 20 4d 45 53 53 41 47 45 42 4f 58 2c 20  X # MESSAGEBOX, 
0390: 49 4e 46 4f 42 4f 58 2c 20 57 41 52 4e 49 4e 47  INFOBOX, WARNING
03a0: 42 4f 58 2c 20 45 52 52 4f 52 42 4f 58 2c 20 51  BOX, ERRORBOX, Q
03b0: 55 45 52 59 42 4f 58 0a 0a 64 65 66 20 4d 65 73  UERYBOX..def Mes
03c0: 73 61 67 65 42 6f 78 20 28 78 44 6f 63 75 6d 65  sageBox (xDocume
03d0: 6e 74 2c 20 73 4d 73 67 2c 20 73 54 69 74 6c 65  nt, sMsg, sTitle
03e0: 2c 20 6e 42 6f 78 54 79 70 65 3d 49 4e 46 4f 42  , nBoxType=INFOB
03f0: 4f 58 2c 20 6e 42 6f 78 42 75 74 74 6f 6e 73 3d  OX, nBoxButtons=
0400: 42 55 54 54 4f 4e 53 5f 4f 4b 29 3a 0a 20 20 20  BUTTONS_OK):.   
0410: 20 78 50 61 72 65 6e 74 57 69 6e 20 3d 20 78 44   xParentWin = xD
0420: 6f 63 75 6d 65 6e 74 2e 43 75 72 72 65 6e 74 43  ocument.CurrentC
0430: 6f 6e 74 72 6f 6c 6c 65 72 2e 46 72 61 6d 65 2e  ontroller.Frame.
0440: 43 6f 6e 74 61 69 6e 65 72 57 69 6e 64 6f 77 0a  ContainerWindow.
0450: 20 20 20 20 63 74 78 20 3d 20 75 6e 6f 2e 67 65      ctx = uno.ge
0460: 74 43 6f 6d 70 6f 6e 65 6e 74 43 6f 6e 74 65 78  tComponentContex
0470: 74 28 29 0a 20 20 20 20 78 54 6f 6f 6c 6b 69 74  t().    xToolkit
0480: 20 3d 20 63 74 78 2e 53 65 72 76 69 63 65 4d 61   = ctx.ServiceMa
0490: 6e 61 67 65 72 2e 63 72 65 61 74 65 49 6e 73 74  nager.createInst
04a0: 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74 28  anceWithContext(
04b0: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
04c0: 74 2e 54 6f 6f 6c 6b 69 74 22 2c 20 63 74 78 29  t.Toolkit", ctx)
04d0: 20 0a 20 20 20 20 78 4d 73 67 42 6f 78 20 3d 20   .    xMsgBox = 
04e0: 78 54 6f 6f 6c 6b 69 74 2e 63 72 65 61 74 65 4d  xToolkit.createM
04f0: 65 73 73 61 67 65 42 6f 78 28 78 50 61 72 65 6e  essageBox(xParen
0500: 74 57 69 6e 2c 20 6e 42 6f 78 54 79 70 65 2c 20  tWin, nBoxType, 
0510: 6e 42 6f 78 42 75 74 74 6f 6e 73 2c 20 73 54 69  nBoxButtons, sTi
0520: 74 6c 65 2c 20 73 4d 73 67 29 0a 20 20 20 20 72  tle, sMsg).    r
0530: 65 74 75 72 6e 20 78 4d 73 67 42 6f 78 2e 65 78  eturn xMsgBox.ex
0540: 65 63 75 74 65 28 29 0a 0a 0a 64 65 66 20 5f 77  ecute()...def _w
0550: 61 69 74 50 6f 69 6e 74 65 72 20 28 66 75 6e 63  aitPointer (func
0560: 44 65 63 6f 72 61 74 65 64 29 3a 0a 20 20 20 20  Decorated):.    
0570: 64 65 66 20 77 72 61 70 70 65 72 20 28 2a 61 72  def wrapper (*ar
0580: 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20  gs, **kwargs):. 
0590: 20 20 20 20 20 20 20 23 20 73 65 6c 66 20 69 73         # self is
05a0: 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   the first param
05b0: 65 74 65 72 20 69 66 20 74 68 65 20 64 65 63 6f  eter if the deco
05c0: 72 61 74 6f 72 20 69 73 20 61 70 70 6c 69 65 64  rator is applied
05d0: 20 6f 6e 20 61 20 6f 62 6a 65 63 74 0a 20 20 20   on a object.   
05e0: 20 20 20 20 20 73 65 6c 66 20 3d 20 61 72 67 73       self = args
05f0: 5b 30 5d 0a 20 20 20 20 20 20 20 20 23 20 62 65  [0].        # be
0600: 66 6f 72 65 0a 20 20 20 20 20 20 20 20 78 50 6f  fore.        xPo
0610: 69 6e 74 65 72 20 3d 20 73 65 6c 66 2e 78 53 76  inter = self.xSv
0620: 4d 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e  Mgr.createInstan
0630: 63 65 57 69 74 68 43 6f 6e 74 65 78 74 28 22 63  ceWithContext("c
0640: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e  om.sun.star.awt.
0650: 50 6f 69 6e 74 65 72 22 2c 20 73 65 6c 66 2e 63  Pointer", self.c
0660: 74 78 29 0a 20 20 20 20 20 20 20 20 78 50 6f 69  tx).        xPoi
0670: 6e 74 65 72 2e 73 65 74 54 79 70 65 28 75 6e 6f  nter.setType(uno
0680: 2e 67 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61  .getConstantByNa
0690: 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72  me("com.sun.star
06a0: 2e 61 77 74 2e 53 79 73 74 65 6d 50 6f 69 6e 74  .awt.SystemPoint
06b0: 65 72 2e 57 41 49 54 22 29 29 0a 20 20 20 20 20  er.WAIT")).     
06c0: 20 20 20 78 57 69 6e 64 6f 77 50 65 65 72 20 3d     xWindowPeer =
06d0: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
06e0: 2e 67 65 74 50 65 65 72 28 29 0a 20 20 20 20 20  .getPeer().     
06f0: 20 20 20 78 57 69 6e 64 6f 77 50 65 65 72 2e 73     xWindowPeer.s
0700: 65 74 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e 74  etPointer(xPoint
0710: 65 72 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20  er).        for 
0720: 78 20 69 6e 20 78 57 69 6e 64 6f 77 50 65 65 72  x in xWindowPeer
0730: 2e 57 69 6e 64 6f 77 73 3a 0a 20 20 20 20 20 20  .Windows:.      
0740: 20 20 20 20 20 20 78 2e 73 65 74 50 6f 69 6e 74        x.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 23 20 70 72 6f 63 65 73 73 69 6e       # processin
0770: 67 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74  g.        result
0780: 20 3d 20 66 75 6e 63 44 65 63 6f 72 61 74 65 64   = funcDecorated
0790: 28 2a 61 72 67 73 2c 20 2a 2a 6b 77 61 72 67 73  (*args, **kwargs
07a0: 29 0a 20 20 20 20 20 20 20 20 23 20 61 66 74 65  ).        # afte
07b0: 72 0a 20 20 20 20 20 20 20 20 78 50 6f 69 6e 74  r.        xPoint
07c0: 65 72 2e 73 65 74 54 79 70 65 28 75 6e 6f 2e 67  er.setType(uno.g
07d0: 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65  etConstantByName
07e0: 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  ("com.sun.star.a
07f0: 77 74 2e 53 79 73 74 65 6d 50 6f 69 6e 74 65 72  wt.SystemPointer
0800: 2e 41 52 52 4f 57 22 29 29 0a 20 20 20 20 20 20  .ARROW")).      
0810: 20 20 78 57 69 6e 64 6f 77 50 65 65 72 2e 73 65    xWindowPeer.se
0820: 74 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e 74 65  tPointer(xPointe
0830: 72 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 78  r).        for x
0840: 20 69 6e 20 78 57 69 6e 64 6f 77 50 65 65 72 2e   in xWindowPeer.
0850: 57 69 6e 64 6f 77 73 3a 0a 20 20 20 20 20 20 20  Windows:.       
0860: 20 20 20 20 20 78 2e 73 65 74 50 6f 69 6e 74 65       x.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 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
0890: 6e 65 72 2e 73 65 74 56 69 73 69 62 6c 65 28 54  ner.setVisible(T
08a0: 72 75 65 29 20 23 20 73 65 65 6d 73 20 6e 65 63  rue) # seems nec
08b0: 65 73 73 61 72 79 20 74 6f 20 72 65 66 72 65 73  essary to refres
08c0: 68 20 74 68 65 20 64 69 61 6c 6f 67 20 62 6f 78  h the dialog box
08d0: 20 61 6e 64 20 74 65 78 74 20 77 69 64 67 65 74   and text widget
08e0: 73 20 28 77 68 79 3f 29 0a 20 20 20 20 20 20 20  s (why?).       
08f0: 20 23 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20   # return.      
0900: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a    return result.
0910: 20 20 20 20 72 65 74 75 72 6e 20 77 72 61 70 70      return wrapp
0920: 65 72 0a 0a 0a 63 6c 61 73 73 20 4c 65 78 69 63  er...class Lexic
0930: 6f 6e 45 64 69 74 6f 72 20 28 75 6e 6f 68 65 6c  onEditor (unohel
0940: 70 65 72 2e 42 61 73 65 2c 20 58 41 63 74 69 6f  per.Base, XActio
0950: 6e 4c 69 73 74 65 6e 65 72 2c 20 58 4b 65 79 4c  nListener, XKeyL
0960: 69 73 74 65 6e 65 72 2c 20 58 4a 6f 62 45 78 65  istener, XJobExe
0970: 63 75 74 6f 72 29 3a 0a 0a 20 20 20 20 64 65 66  cutor):..    def
0980: 20 5f 5f 69 6e 69 74 5f 5f 20 28 73 65 6c 66 2c   __init__ (self,
0990: 20 63 74 78 29 3a 0a 20 20 20 20 20 20 20 20 73   ctx):.        s
09a0: 65 6c 66 2e 63 74 78 20 3d 20 63 74 78 0a 20 20  elf.ctx = ctx.  
09b0: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 76 4d 67        self.xSvMg
09c0: 72 20 3d 20 73 65 6c 66 2e 63 74 78 2e 53 65 72  r = self.ctx.Ser
09d0: 76 69 63 65 4d 61 6e 61 67 65 72 0a 20 20 20 20  viceManager.    
09e0: 20 20 20 20 73 65 6c 66 2e 78 44 65 73 6b 74 6f      self.xDeskto
09f0: 70 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e  p = self.xSvMgr.
0a00: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69  createInstanceWi
0a10: 74 68 43 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73  thContext("com.s
0a20: 75 6e 2e 73 74 61 72 2e 66 72 61 6d 65 2e 44 65  un.star.frame.De
0a30: 73 6b 74 6f 70 22 2c 20 73 65 6c 66 2e 63 74 78  sktop", self.ctx
0a40: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
0a50: 44 6f 63 75 6d 65 6e 74 20 3d 20 73 65 6c 66 2e  Document = self.
0a60: 78 44 65 73 6b 74 6f 70 2e 67 65 74 43 75 72 72  xDesktop.getCurr
0a70: 65 6e 74 43 6f 6d 70 6f 6e 65 6e 74 28 29 0a 20  entComponent(). 
0a80: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e         self.xCon
0a90: 74 61 69 6e 65 72 20 3d 20 4e 6f 6e 65 0a 20 20  tainer = None.  
0aa0: 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c        self.xDial
0ab0: 6f 67 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20  og = None.      
0ac0: 20 20 73 65 6c 66 2e 6f 53 70 65 6c 6c 43 68 65    self.oSpellChe
0ad0: 63 6b 65 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 20  cker = None.    
0ae0: 20 20 20 20 23 20 64 61 74 61 0a 20 20 20 20 20      # data.     
0af0: 20 20 20 73 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d     self.sLemma =
0b00: 20 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c 66   "".        self
0b10: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 20  .lGeneratedFlex 
0b20: 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 23 20 6f  = [].        # o
0b30: 70 74 69 6f 6e 73 20 6e 6f 64 65 0a 20 20 20 20  ptions node.    
0b40: 20 20 20 20 73 65 6c 66 2e 78 53 65 74 74 69 6e      self.xSettin
0b50: 67 4e 6f 64 65 20 3d 20 68 65 6c 70 65 72 73 2e  gNode = helpers.
0b60: 67 65 74 43 6f 6e 66 69 67 53 65 74 74 69 6e 67  getConfigSetting
0b70: 28 22 2f 6f 72 67 2e 6f 70 65 6e 6f 66 66 69 63  ("/org.openoffic
0b80: 65 2e 4c 69 67 68 74 70 72 6f 6f 66 5f 67 72 61  e.Lightproof_gra
0b90: 6d 6d 61 6c 65 63 74 65 2f 4f 74 68 65 72 2f 22  mmalecte/Other/"
0ba0: 2c 20 54 72 75 65 29 0a 0a 20 20 20 20 64 65 66  , True)..    def
0bb0: 20 5f 61 64 64 57 69 64 67 65 74 20 28 73 65 6c   _addWidget (sel
0bc0: 66 2c 20 6e 61 6d 65 2c 20 77 74 79 70 65 2c 20  f, name, wtype, 
0bd0: 78 2c 20 79 2c 20 77 2c 20 68 2c 20 2a 2a 6b 77  x, y, w, h, **kw
0be0: 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 78  args):.        x
0bf0: 57 69 64 67 65 74 20 3d 20 73 65 6c 66 2e 78 44  Widget = self.xD
0c00: 69 61 6c 6f 67 2e 63 72 65 61 74 65 49 6e 73 74  ialog.createInst
0c10: 61 6e 63 65 28 27 63 6f 6d 2e 73 75 6e 2e 73 74  ance('com.sun.st
0c20: 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f  ar.awt.UnoContro
0c30: 6c 25 73 4d 6f 64 65 6c 27 20 25 20 77 74 79 70  l%sModel' % wtyp
0c40: 65 29 0a 20 20 20 20 20 20 20 20 78 57 69 64 67  e).        xWidg
0c50: 65 74 2e 4e 61 6d 65 20 3d 20 6e 61 6d 65 0a 20  et.Name = name. 
0c60: 20 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 50         xWidget.P
0c70: 6f 73 69 74 69 6f 6e 58 20 3d 20 78 0a 20 20 20  ositionX = x.   
0c80: 20 20 20 20 20 78 57 69 64 67 65 74 2e 50 6f 73       xWidget.Pos
0c90: 69 74 69 6f 6e 59 20 3d 20 79 0a 20 20 20 20 20  itionY = y.     
0ca0: 20 20 20 78 57 69 64 67 65 74 2e 57 69 64 74 68     xWidget.Width
0cb0: 20 3d 20 77 0a 20 20 20 20 20 20 20 20 78 57 69   = w.        xWi
0cc0: 64 67 65 74 2e 48 65 69 67 68 74 20 3d 20 68 0a  dget.Height = h.
0cd0: 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77          for k, w
0ce0: 20 69 6e 20 6b 77 61 72 67 73 2e 69 74 65 6d 73   in kwargs.items
0cf0: 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ():.            
0d00: 73 65 74 61 74 74 72 28 78 57 69 64 67 65 74 2c  setattr(xWidget,
0d10: 20 6b 2c 20 77 29 0a 20 20 20 20 20 20 20 20 73   k, w).        s
0d20: 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 69 6e 73 65  elf.xDialog.inse
0d30: 72 74 42 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 78  rtByName(name, x
0d40: 57 69 64 67 65 74 29 0a 20 20 20 20 20 20 20 20  Widget).        
0d50: 72 65 74 75 72 6e 20 78 57 69 64 67 65 74 0a 0a  return xWidget..
0d60: 20 20 20 20 64 65 66 20 5f 61 64 64 47 72 69 64      def _addGrid
0d70: 20 28 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 78 2c   (self, name, x,
0d80: 20 79 2c 20 77 2c 20 68 2c 20 63 6f 6c 75 6d 6e   y, w, h, column
0d90: 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20 20  s, **kwargs):.  
0da0: 20 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c        xGridModel
0db0: 20 3d 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e   = self.xDialog.
0dc0: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28 27  createInstance('
0dd0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74  com.sun.star.awt
0de0: 2e 67 72 69 64 2e 55 6e 6f 43 6f 6e 74 72 6f 6c  .grid.UnoControl
0df0: 47 72 69 64 4d 6f 64 65 6c 27 29 0a 20 20 20 20  GridModel').    
0e00: 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e 4e      xGridModel.N
0e10: 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20 20 20 20  ame = name.     
0e20: 20 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e 50 6f     xGridModel.Po
0e30: 73 69 74 69 6f 6e 58 20 3d 20 78 0a 20 20 20 20  sitionX = x.    
0e40: 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e 50      xGridModel.P
0e50: 6f 73 69 74 69 6f 6e 59 20 3d 20 79 0a 20 20 20  ositionY = y.   
0e60: 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e       xGridModel.
0e70: 57 69 64 74 68 20 3d 20 77 0a 20 20 20 20 20 20  Width = w.      
0e80: 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e 48 65 69    xGridModel.Hei
0e90: 67 68 74 20 3d 20 68 0a 20 20 20 20 20 20 20 20  ght = h.        
0ea0: 78 43 6f 6c 75 6d 6e 4d 6f 64 65 6c 20 3d 20 78  xColumnModel = x
0eb0: 47 72 69 64 4d 6f 64 65 6c 2e 43 6f 6c 75 6d 6e  GridModel.Column
0ec0: 4d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 66 6f  Model.        fo
0ed0: 72 20 65 20 69 6e 20 63 6f 6c 75 6d 6e 73 3a 0a  r e in columns:.
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6c              xCol
0ef0: 20 3d 20 78 43 6f 6c 75 6d 6e 4d 6f 64 65 6c 2e   = xColumnModel.
0f00: 63 72 65 61 74 65 43 6f 6c 75 6d 6e 28 29 0a 20  createColumn(). 
0f10: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b             for k
0f20: 2c 20 77 20 69 6e 20 65 2e 69 74 65 6d 73 28 29  , w in e.items()
0f30: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
0f40: 20 20 73 65 74 61 74 74 72 28 78 43 6f 6c 2c 20    setattr(xCol, 
0f50: 6b 2c 20 77 29 0a 20 20 20 20 20 20 20 20 20 20  k, w).          
0f60: 20 20 78 43 6f 6c 75 6d 6e 4d 6f 64 65 6c 2e 61    xColumnModel.a
0f70: 64 64 43 6f 6c 75 6d 6e 28 78 43 6f 6c 29 0a 20  ddColumn(xCol). 
0f80: 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77 20         for k, w 
0f90: 69 6e 20 6b 77 61 72 67 73 2e 69 74 65 6d 73 28  in kwargs.items(
0fa0: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ):.            s
0fb0: 65 74 61 74 74 72 28 78 47 72 69 64 4d 6f 64 65  etattr(xGridMode
0fc0: 6c 2c 20 6b 2c 20 77 29 0a 20 20 20 20 20 20 20  l, k, w).       
0fd0: 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 69 6e   self.xDialog.in
0fe0: 73 65 72 74 42 79 4e 61 6d 65 28 6e 61 6d 65 2c  sertByName(name,
0ff0: 20 78 47 72 69 64 4d 6f 64 65 6c 29 0a 20 20 20   xGridModel).   
1000: 20 20 20 20 20 72 65 74 75 72 6e 20 78 47 72 69       return xGri
1010: 64 4d 6f 64 65 6c 0a 0a 20 20 20 20 64 65 66 20  dModel..    def 
1020: 72 75 6e 20 28 73 65 6c 66 2c 20 73 4c 61 6e 67  run (self, sLang
1030: 29 3a 0a 20 20 20 20 20 20 20 20 23 20 75 69 20  ):.        # ui 
1040: 6c 61 6e 67 0a 20 20 20 20 20 20 20 20 73 65 6c  lang.        sel
1050: 66 2e 73 4c 61 6e 67 20 3d 20 73 4c 61 6e 67 0a  f.sLang = sLang.
1060: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 55 49          self.dUI
1070: 20 3d 20 6c 78 65 5f 73 74 72 69 6e 67 73 2e 67   = lxe_strings.g
1080: 65 74 55 49 28 73 4c 61 6e 67 29 0a 0a 20 20 20  etUI(sLang)..   
1090: 20 20 20 20 20 23 20 64 69 61 6c 6f 67 0a 20 20       # dialog.  
10a0: 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c        self.xDial
10b0: 6f 67 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72  og = self.xSvMgr
10c0: 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57  .createInstanceW
10d0: 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d 2e  ithContext('com.
10e0: 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 55 6e 6f  sun.star.awt.Uno
10f0: 43 6f 6e 74 72 6f 6c 44 69 61 6c 6f 67 4d 6f 64  ControlDialogMod
1100: 65 6c 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20  el', self.ctx). 
1110: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61         self.xDia
1120: 6c 6f 67 2e 57 69 64 74 68 20 3d 20 35 37 30 0a  log.Width = 570.
1130: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69          self.xDi
1140: 61 6c 6f 67 2e 48 65 69 67 68 74 20 3d 20 33 30  alog.Height = 30
1150: 35 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  5.        self.x
1160: 44 69 61 6c 6f 67 2e 54 69 74 6c 65 20 3d 20 73  Dialog.Title = s
1170: 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 74 69 74  elf.dUI.get('tit
1180: 6c 65 27 2c 20 22 23 74 69 74 6c 65 23 22 29 0a  le', "#title#").
1190: 20 20 20 20 20 20 20 20 78 57 69 6e 64 6f 77 53          xWindowS
11a0: 69 7a 65 20 3d 20 68 65 6c 70 65 72 73 2e 67 65  ize = helpers.ge
11b0: 74 57 69 6e 64 6f 77 53 69 7a 65 28 29 0a 20 20  tWindowSize().  
11c0: 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c        self.xDial
11d0: 6f 67 2e 50 6f 73 69 74 69 6f 6e 58 20 3d 20 69  og.PositionX = i
11e0: 6e 74 28 28 78 57 69 6e 64 6f 77 53 69 7a 65 2e  nt((xWindowSize.
11f0: 57 69 64 74 68 20 2f 20 32 29 20 2d 20 28 73 65  Width / 2) - (se
1200: 6c 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74 68  lf.xDialog.Width
1210: 20 2f 20 32 29 29 0a 20 20 20 20 20 20 20 20 73   / 2)).        s
1220: 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 50 6f 73 69  elf.xDialog.Posi
1230: 74 69 6f 6e 59 20 3d 20 69 6e 74 28 28 78 57 69  tionY = int((xWi
1240: 6e 64 6f 77 53 69 7a 65 2e 48 65 69 67 68 74 20  ndowSize.Height 
1250: 2f 20 32 29 20 2d 20 28 73 65 6c 66 2e 78 44 69  / 2) - (self.xDi
1260: 61 6c 6f 67 2e 48 65 69 67 68 74 20 2f 20 32 29  alog.Height / 2)
1270: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 66 6f 6e  )..        # fon
1280: 74 73 0a 20 20 20 20 20 20 20 20 78 46 44 54 69  ts.        xFDTi
1290: 74 6c 65 20 3d 20 75 6e 6f 2e 63 72 65 61 74 65  tle = uno.create
12a0: 55 6e 6f 53 74 72 75 63 74 28 22 63 6f 6d 2e 73  UnoStruct("com.s
12b0: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74  un.star.awt.Font
12c0: 44 65 73 63 72 69 70 74 6f 72 22 29 0a 20 20 20  Descriptor").   
12d0: 20 20 20 20 20 78 46 44 54 69 74 6c 65 2e 48 65       xFDTitle.He
12e0: 69 67 68 74 20 3d 20 39 0a 20 20 20 20 20 20 20  ight = 9.       
12f0: 20 78 46 44 54 69 74 6c 65 2e 57 65 69 67 68 74   xFDTitle.Weight
1300: 20 3d 20 75 6e 6f 2e 67 65 74 43 6f 6e 73 74 61   = uno.getConsta
1310: 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73 75  ntByName("com.su
1320: 6e 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74 57  n.star.awt.FontW
1330: 65 69 67 68 74 2e 42 4f 4c 44 22 29 0a 20 20 20  eight.BOLD").   
1340: 20 20 20 20 20 78 46 44 54 69 74 6c 65 2e 4e 61       xFDTitle.Na
1350: 6d 65 20 3d 20 22 56 65 72 64 61 6e 61 22 0a 20  me = "Verdana". 
1360: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20         .        
1370: 78 46 44 53 75 62 54 69 74 6c 65 20 3d 20 75 6e  xFDSubTitle = un
1380: 6f 2e 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63  o.createUnoStruc
1390: 74 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  t("com.sun.star.
13a0: 61 77 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74  awt.FontDescript
13b0: 6f 72 22 29 0a 20 20 20 20 20 20 20 20 78 46 44  or").        xFD
13c0: 53 75 62 54 69 74 6c 65 2e 48 65 69 67 68 74 20  SubTitle.Height 
13d0: 3d 20 38 0a 20 20 20 20 20 20 20 20 78 46 44 53  = 8.        xFDS
13e0: 75 62 54 69 74 6c 65 2e 57 65 69 67 68 74 20 3d  ubTitle.Weight =
13f0: 20 75 6e 6f 2e 67 65 74 43 6f 6e 73 74 61 6e 74   uno.getConstant
1400: 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73 75 6e 2e  ByName("com.sun.
1410: 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74 57 65 69  star.awt.FontWei
1420: 67 68 74 2e 42 4f 4c 44 22 29 0a 20 20 20 20 20  ght.BOLD").     
1430: 20 20 20 78 46 44 53 75 62 54 69 74 6c 65 2e 4e     xFDSubTitle.N
1440: 61 6d 65 20 3d 20 22 56 65 72 64 61 6e 61 22 0a  ame = "Verdana".
1450: 0a 20 20 20 20 20 20 20 20 23 20 77 69 64 67 65  .        # widge
1460: 74 0a 20 20 20 20 20 20 20 20 6e 58 31 20 3d 20  t.        nX1 = 
1470: 31 30 0a 20 20 20 20 20 20 20 20 6e 58 32 20 3d  10.        nX2 =
1480: 20 32 30 0a 0a 20 20 20 20 20 20 20 20 6e 59 30   20..        nY0
1490: 20 3d 20 35 0a 20 20 20 20 20 20 20 20 6e 59 31   = 5.        nY1
14a0: 20 3d 20 6e 59 30 20 2b 20 31 33 0a 20 20 20 20   = nY0 + 13.    
14b0: 20 20 20 20 6e 59 32 20 3d 20 6e 59 31 20 2b 20      nY2 = nY1 + 
14c0: 32 35 20 23 20 6e 6f 6d 20 63 6f 6d 6d 75 6e 0a  25 # nom commun.
14d0: 20 20 20 20 20 20 20 20 6e 59 33 20 3d 20 6e 59          nY3 = nY
14e0: 32 20 2b 20 39 35 20 23 20 6e 6f 6d 20 70 72 6f  2 + 95 # nom pro
14f0: 70 72 65 0a 20 20 20 20 20 20 20 20 6e 59 34 20  pre.        nY4 
1500: 3d 20 6e 59 33 20 2b 20 34 35 20 23 20 76 65 72  = nY3 + 45 # ver
1510: 62 65 0a 20 20 20 20 20 20 20 20 6e 59 35 20 3d  be.        nY5 =
1520: 20 6e 59 34 20 2b 20 36 38 20 23 20 61 64 76 65   nY4 + 68 # adve
1530: 72 62 65 0a 20 20 20 20 20 20 20 20 6e 59 36 20  rbe.        nY6 
1540: 3d 20 6e 59 35 20 2b 20 31 33 20 23 20 61 75 74  = nY5 + 13 # aut
1550: 72 65 0a 0a 20 20 20 20 20 20 20 20 6e 58 42 20  re..        nXB 
1560: 3d 20 6e 58 31 20 2b 20 31 38 35 0a 20 20 20 20  = nX1 + 185.    
1570: 20 20 20 20 6e 58 43 20 3d 20 6e 58 42 20 2b 20      nXC = nXB + 
1580: 31 36 35 0a 0a 20 20 20 20 20 20 20 20 6e 48 65  165..        nHe
1590: 69 67 68 74 20 3d 20 31 30 0a 0a 20 20 20 20 20  ight = 10..     
15a0: 20 20 20 23 23 23 23 20 44 69 63 74 69 6f 6e 61     #### Dictiona
15b0: 72 79 20 73 65 63 74 69 6f 6e 0a 20 20 20 20 20  ry section.     
15c0: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
15d0: 65 74 28 22 64 69 63 74 69 6f 6e 61 72 79 5f 73  et("dictionary_s
15e0: 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c  ection", 'FixedL
15f0: 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 30 2c 20  ine', nX1, nY0, 
1600: 31 38 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61  180, nHeight, La
1610: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1620: 65 74 28 22 64 69 63 74 69 6f 6e 61 72 79 5f 73  et("dictionary_s
1630: 65 63 74 69 6f 6e 22 2c 20 22 23 65 72 72 22 29  ection", "#err")
1640: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
1650: 20 3d 20 78 46 44 54 69 74 6c 65 2c 20 54 65 78   = xFDTitle, Tex
1660: 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30 38  tColor = 0x00008
1670: 38 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  8).        self.
1680: 5f 61 64 64 57 69 64 67 65 74 28 22 73 61 76 65  _addWidget("save
1690: 5f 64 61 74 65 5f 6c 61 62 65 6c 22 2c 20 27 46  _date_label", 'F
16a0: 69 78 65 64 54 65 78 74 27 2c 20 6e 58 42 2c 20  ixedText', nXB, 
16b0: 6e 59 30 2b 32 2c 20 38 30 2c 20 6e 48 65 69 67  nY0+2, 80, nHeig
16c0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
16d0: 2e 64 55 49 2e 67 65 74 28 22 73 61 76 65 5f 64  .dUI.get("save_d
16e0: 61 74 65 5f 6c 61 62 65 6c 22 2c 20 22 23 65 72  ate_label", "#er
16f0: 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  r"), FontDescrip
1700: 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c  tor = xFDSubTitl
1710: 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30  e, TextColor = 0
1720: 78 30 30 30 30 38 38 29 0a 20 20 20 20 20 20 20  x000088).       
1730: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
1740: 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73  ("num_of_entries
1750: 5f 6c 61 62 65 6c 32 22 2c 20 27 46 69 78 65 64  _label2", 'Fixed
1760: 54 65 78 74 27 2c 20 6e 58 43 2c 20 6e 59 30 2b  Text', nXC, nY0+
1770: 32 2c 20 36 35 2c 20 6e 48 65 69 67 68 74 2c 20  2, 65, nHeight, 
1780: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
1790: 2e 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74  .get("num_of_ent
17a0: 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22 23 65  ries_label", "#e
17b0: 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69  rr"), FontDescri
17c0: 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74  ptor = xFDSubTit
17d0: 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20  le, TextColor = 
17e0: 30 78 30 30 30 30 38 38 29 0a 20 20 20 20 20 20  0x000088).      
17f0: 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69 63 20    self.xDateDic 
1800: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
1810: 74 28 22 73 61 76 65 5f 64 61 74 65 22 2c 20 27  t("save_date", '
1820: 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58 42 2b  FixedText', nXB+
1830: 38 35 2c 20 6e 59 30 2b 32 2c 20 37 35 2c 20 6e  85, nY0+2, 75, n
1840: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
1850: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 6f  self.dUI.get("vo
1860: 69 64 22 2c 20 22 23 65 72 72 22 29 2c 20 46 6f  id", "#err"), Fo
1870: 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78  ntDescriptor = x
1880: 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74  FDSubTitle, Text
1890: 43 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30 38 38  Color = 0x000088
18a0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
18b0: 4e 75 6d 44 69 63 20 3d 20 73 65 6c 66 2e 5f 61  NumDic = self._a
18c0: 64 64 57 69 64 67 65 74 28 22 6e 75 6d 5f 6f 66  ddWidget("num_of
18d0: 5f 65 6e 74 72 69 65 73 32 22 2c 20 27 46 69 78  _entries2", 'Fix
18e0: 65 64 54 65 78 74 27 2c 20 6e 58 43 2b 37 30 2c  edText', nXC+70,
18f0: 20 6e 59 30 2b 32 2c 20 34 35 2c 20 6e 48 65 69   nY0+2, 45, nHei
1900: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 22 30 22  ght, Label = "0"
1910: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
1920: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20   = xFDSubTitle, 
1930: 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30  TextColor = 0x00
1940: 30 30 38 38 29 0a 20 20 20 20 20 20 20 20 73 65  0088).        se
1950: 6c 66 2e 78 45 78 70 6f 72 74 20 3d 20 73 65 6c  lf.xExport = sel
1960: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 65 78  f._addWidget('ex
1970: 70 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 27 42  port_button', 'B
1980: 75 74 74 6f 6e 27 2c 20 6e 58 43 2b 31 35 30 2c  utton', nXC+150,
1990: 20 6e 59 30 2c 20 35 30 2c 20 31 32 2c 20 4c 61   nY0, 50, 12, La
19a0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
19b0: 65 74 28 27 65 78 70 6f 72 74 5f 62 75 74 74 6f  et('export_butto
19c0: 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n', "#err"), Fon
19d0: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
19e0: 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43  DSubTitle, TextC
19f0: 6f 6c 6f 72 20 3d 20 30 78 30 30 30 30 35 35 29  olor = 0x000055)
1a00: 0a 0a 20 20 20 20 20 20 20 20 23 23 23 23 20 41  ..        #### A
1a10: 64 64 20 77 6f 72 64 0a 20 20 20 20 20 20 20 20  dd word.        
1a20: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
1a30: 22 61 64 64 5f 73 65 63 74 69 6f 6e 22 2c 20 27  "add_section", '
1a40: 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c  FixedLine', nX1,
1a50: 20 6e 59 31 2c 20 31 38 30 2c 20 6e 48 65 69 67   nY1, 180, nHeig
1a60: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
1a70: 2e 64 55 49 2e 67 65 74 28 22 61 64 64 5f 73 65  .dUI.get("add_se
1a80: 63 74 69 6f 6e 22 2c 20 22 23 65 72 72 22 29 2c  ction", "#err"),
1a90: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1aa0: 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20 20  = xFDTitle).    
1ab0: 20 20 20 20 73 65 6c 66 2e 78 4c 65 6d 6d 61 20      self.xLemma 
1ac0: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
1ad0: 74 28 27 6c 65 6d 6d 61 27 2c 20 27 45 64 69 74  t('lemma', 'Edit
1ae0: 27 2c 20 6e 58 31 2c 20 6e 59 31 2b 31 30 2c 20  ', nX1, nY1+10, 
1af0: 31 31 30 2c 20 31 34 2c 20 46 6f 6e 74 44 65 73  110, 14, FontDes
1b00: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54 69 74  criptor = xFDTit
1b10: 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  le).        self
1b20: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 73 65 61  ._addWidget('sea
1b30: 72 63 68 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75  rch_button', 'Bu
1b40: 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 31 35 2c 20  tton', nX1+115, 
1b50: 6e 59 31 2b 31 31 2c 20 34 35 2c 20 31 32 2c 20  nY1+11, 45, 12, 
1b60: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
1b70: 2e 67 65 74 28 27 73 65 61 72 63 68 5f 62 75 74  .get('search_but
1b80: 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46  ton', "#err"), F
1b90: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
1ba0: 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78  xFDSubTitle, Tex
1bb0: 74 43 6f 6c 6f 72 20 3d 20 30 78 35 35 35 35 30  tColor = 0x55550
1bc0: 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  0).        self.
1bd0: 5f 61 64 64 57 69 64 67 65 74 28 27 69 6e 66 6f  _addWidget('info
1be0: 72 6d 61 74 69 6f 6e 5f 62 75 74 74 6f 6e 27 2c  rmation_button',
1bf0: 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31   'Button', nX1+1
1c00: 36 35 2c 20 6e 59 31 2b 31 31 2c 20 31 35 2c 20  65, nY1+11, 15, 
1c10: 31 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  12, Label = self
1c20: 2e 64 55 49 2e 67 65 74 28 27 69 6e 66 6f 72 6d  .dUI.get('inform
1c30: 61 74 69 6f 6e 5f 62 75 74 74 6f 6e 27 2c 20 22  ation_button', "
1c40: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
1c50: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
1c60: 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20  itle, TextColor 
1c70: 3d 20 30 78 35 35 35 35 30 30 29 0a 0a 20 20 20  = 0x555500)..   
1c80: 20 20 20 20 20 23 20 52 61 64 69 6f 20 62 75 74       # Radio but
1c90: 74 6f 6e 73 3a 20 6d 61 69 6e 20 50 4f 53 20 74  tons: main POS t
1ca0: 61 67 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 74  ag.        # Not
1cb0: 65 3a 20 74 68 65 20 6f 6e 6c 79 20 77 61 79 20  e: the only way 
1cc0: 74 6f 20 67 72 6f 75 70 20 52 61 64 69 6f 42 75  to group RadioBu
1cd0: 74 74 6f 6e 73 20 69 73 20 74 6f 20 63 72 65 61  ttons is to crea
1ce0: 74 65 20 74 68 65 6d 20 73 75 63 63 65 73 73 69  te them successi
1cf0: 76 65 6c 79 0a 20 20 20 20 20 20 20 20 73 65 6c  vely.        sel
1d00: 66 2e 78 4e 41 20 3d 20 73 65 6c 66 2e 5f 61 64  f.xNA = self._ad
1d10: 64 57 69 64 67 65 74 28 27 6e 6f 6d 5f 61 64 6a  dWidget('nom_adj
1d20: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
1d30: 2c 20 6e 58 31 2c 20 6e 59 32 2b 31 32 2c 20 36  , nX1, nY2+12, 6
1d40: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
1d50: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
1d60: 28 22 6e 6f 6d 5f 61 64 6a 22 2c 20 22 23 65 72  ("nom_adj", "#er
1d70: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
1d80: 22 3a 4e 3a 41 22 29 0a 20 20 20 20 20 20 20 20  ":N:A").        
1d90: 73 65 6c 66 2e 78 4e 20 3d 20 73 65 6c 66 2e 5f  self.xN = self._
1da0: 61 64 64 57 69 64 67 65 74 28 27 6e 6f 6d 27 2c  addWidget('nom',
1db0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
1dc0: 6e 58 31 2c 20 6e 59 32 2b 32 32 2c 20 36 30 2c  nX1, nY2+22, 60,
1dd0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
1de0: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
1df0: 6e 6f 6d 22 2c 20 22 23 65 72 72 22 29 2c 20 48  nom", "#err"), H
1e00: 65 6c 70 54 65 78 74 20 3d 20 22 3a 4e 22 29 0a  elpText = ":N").
1e10: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 20          self.xA 
1e20: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
1e30: 74 28 27 61 64 6a 27 2c 20 27 52 61 64 69 6f 42  t('adj', 'RadioB
1e40: 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59 32  utton', nX1, nY2
1e50: 2b 33 32 2c 20 36 30 2c 20 6e 48 65 69 67 68 74  +32, 60, nHeight
1e60: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1e70: 55 49 2e 67 65 74 28 22 61 64 6a 22 2c 20 22 23  UI.get("adj", "#
1e80: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
1e90: 3d 20 22 3a 41 22 29 0a 20 20 20 20 20 20 20 20  = ":A").        
1ea0: 73 65 6c 66 2e 78 4d 31 20 3d 20 73 65 6c 66 2e  self.xM1 = self.
1eb0: 5f 61 64 64 57 69 64 67 65 74 28 27 4d 31 27 2c  _addWidget('M1',
1ec0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
1ed0: 6e 58 31 2c 20 6e 59 33 2b 31 32 2c 20 36 30 2c  nX1, nY3+12, 60,
1ee0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
1ef0: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
1f00: 4d 31 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65  M1", "#err"), He
1f10: 6c 70 54 65 78 74 20 3d 20 22 3a 4d 31 22 29 0a  lpText = ":M1").
1f20: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 32          self.xM2
1f30: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
1f40: 65 74 28 27 4d 32 27 2c 20 27 52 61 64 69 6f 42  et('M2', 'RadioB
1f50: 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59 33  utton', nX1, nY3
1f60: 2b 32 32 2c 20 36 30 2c 20 6e 48 65 69 67 68 74  +22, 60, nHeight
1f70: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1f80: 55 49 2e 67 65 74 28 22 4d 32 22 2c 20 22 23 65  UI.get("M2", "#e
1f90: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
1fa0: 20 22 3a 4d 32 22 29 0a 20 20 20 20 20 20 20 20   ":M2").        
1fb0: 73 65 6c 66 2e 78 4d 50 20 3d 20 73 65 6c 66 2e  self.xMP = self.
1fc0: 5f 61 64 64 57 69 64 67 65 74 28 27 4d 50 27 2c  _addWidget('MP',
1fd0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
1fe0: 6e 58 31 2c 20 6e 59 33 2b 33 32 2c 20 36 30 2c  nX1, nY3+32, 60,
1ff0: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
2000: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
2010: 4d 50 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65  MP", "#err"), He
2020: 6c 70 54 65 78 74 20 3d 20 22 3a 4d 50 22 29 0a  lpText = ":MP").
2030: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56 20          self.xV 
2040: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2050: 74 28 27 76 65 72 62 27 2c 20 27 52 61 64 69 6f  t('verb', 'Radio
2060: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
2070: 34 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67 68 74  4+2, 35, nHeight
2080: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
2090: 55 49 2e 67 65 74 28 22 76 65 72 62 22 2c 20 22  UI.get("verb", "
20a0: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
20b0: 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54  riptor = xFDSubT
20c0: 69 74 6c 65 2c 20 48 65 6c 70 54 65 78 74 20 3d  itle, HelpText =
20d0: 20 22 3a 56 22 29 0a 20 20 20 20 20 20 20 20 73   ":V").        s
20e0: 65 6c 66 2e 78 57 20 3d 20 73 65 6c 66 2e 5f 61  elf.xW = self._a
20f0: 64 64 57 69 64 67 65 74 28 27 61 64 76 27 2c 20  ddWidget('adv', 
2100: 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e  'RadioButton', n
2110: 58 31 2c 20 6e 59 35 2b 32 2c 20 33 35 2c 20 6e  X1, nY5+2, 35, n
2120: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
2130: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 61 64  self.dUI.get("ad
2140: 76 65 72 62 22 2c 20 22 23 65 72 72 22 29 2c 20  verb", "#err"), 
2150: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
2160: 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 48 65   xFDSubTitle, He
2170: 6c 70 54 65 78 74 20 3d 20 22 3a 57 22 29 0a 20  lpText = ":W"). 
2180: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 58 20 3d         self.xX =
2190: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
21a0: 28 27 6f 74 68 65 72 27 2c 20 27 52 61 64 69 6f  ('other', 'Radio
21b0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
21c0: 36 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67 68 74  6+2, 35, nHeight
21d0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
21e0: 55 49 2e 67 65 74 28 22 6f 74 68 65 72 22 2c 20  UI.get("other", 
21f0: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
2200: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
2210: 54 69 74 6c 65 2c 20 48 65 6c 70 54 65 78 74 20  Title, HelpText 
2220: 3d 20 22 3a 58 22 29 0a 20 20 20 20 20 20 20 20  = ":X").        
2230: 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 2c 20  .        # Nom, 
2240: 61 64 6a 65 63 74 69 66 0a 20 20 20 20 20 20 20  adjectif.       
2250: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2260: 28 22 66 6c 5f 6e 6f 6d 5f 61 64 6a 22 2c 20 27  ("fl_nom_adj", '
2270: 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c  FixedLine', nX1,
2280: 20 6e 59 32 2c 20 31 38 30 2c 20 6e 48 65 69 67   nY2, 180, nHeig
2290: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
22a0: 2e 64 55 49 2e 67 65 74 28 22 63 6f 6d 6d 6f 6e  .dUI.get("common
22b0: 5f 6e 61 6d 65 22 2c 20 22 23 65 72 72 22 29 2c  _name", "#err"),
22c0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
22d0: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20  = xFDSubTitle). 
22e0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65 70         self.xSep
22f0: 69 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  i = self._addWid
2300: 67 65 74 28 27 53 65 70 69 27 2c 20 27 52 61 64  get('Sepi', 'Rad
2310: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36  ioButton', nX1+6
2320: 35 2c 20 6e 59 32 2b 31 32 2c 20 35 30 2c 20 6e  5, nY2+12, 50, n
2330: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
2340: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 65 70  self.dUI.get("ep
2350: 69 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  i", "#err"), Hel
2360: 70 54 65 78 74 20 3d 20 22 3a 65 22 29 0a 20 20  pText = ":e").  
2370: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 6d 61 73        self.xSmas
2380: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2390: 65 74 28 27 53 6d 61 73 27 2c 20 27 52 61 64 69  et('Smas', 'Radi
23a0: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35  oButton', nX1+65
23b0: 2c 20 6e 59 32 2b 32 32 2c 20 35 30 2c 20 6e 48  , nY2+22, 50, nH
23c0: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
23d0: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6d 61 73  elf.dUI.get("mas
23e0: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
23f0: 54 65 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20 20  Text = ":m").   
2400: 20 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d 20       self.xSfem 
2410: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2420: 74 28 27 53 66 65 6d 27 2c 20 27 52 61 64 69 6f  t('Sfem', 'Radio
2430: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c  Button', nX1+65,
2440: 20 6e 59 32 2b 33 32 2c 20 35 30 2c 20 6e 48 65   nY2+32, 50, nHe
2450: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2460: 6c 66 2e 64 55 49 2e 67 65 74 28 22 66 65 6d 22  lf.dUI.get("fem"
2470: 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54  , "#err"), HelpT
2480: 65 78 74 20 3d 20 22 3a 66 22 29 0a 20 20 20 20  ext = ":f").    
2490: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
24a0: 67 65 74 28 22 66 6c 5f 73 65 70 31 22 2c 20 27  get("fl_sep1", '
24b0: 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c  FixedLine', nX1,
24c0: 20 6e 59 32 2c 20 31 2c 20 6e 48 65 69 67 68 74   nY2, 1, nHeight
24d0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
24e0: 53 73 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  Ss = self._addWi
24f0: 64 67 65 74 28 27 53 73 27 2c 20 27 52 61 64 69  dget('Ss', 'Radi
2500: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 32  oButton', nX1+12
2510: 30 2c 20 6e 59 32 2b 31 32 2c 20 35 30 2c 20 6e  0, nY2+12, 50, n
2520: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
2530: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 2d 73  self.dUI.get("-s
2540: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2550: 54 65 78 74 20 3d 20 22 c2 b7 73 22 29 0a 20 20  Text = "..s").  
2560: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 78 20 3d        self.xSx =
2570: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2580: 28 27 53 78 27 2c 20 27 52 61 64 69 6f 42 75 74  ('Sx', 'RadioBut
2590: 74 6f 6e 27 2c 20 6e 58 31 2b 31 32 30 2c 20 6e  ton', nX1+120, n
25a0: 59 32 2b 32 32 2c 20 35 30 2c 20 6e 48 65 69 67  Y2+22, 50, nHeig
25b0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
25c0: 2e 64 55 49 2e 67 65 74 28 22 2d 78 22 2c 20 22  .dUI.get("-x", "
25d0: 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74  #err"), HelpText
25e0: 20 3d 20 22 c2 b7 78 22 29 0a 20 20 20 20 20 20   = "..x").      
25f0: 20 20 73 65 6c 66 2e 78 53 69 6e 76 20 3d 20 73    self.xSinv = s
2600: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
2610: 53 69 6e 76 27 2c 20 27 52 61 64 69 6f 42 75 74  Sinv', 'RadioBut
2620: 74 6f 6e 27 2c 20 6e 58 31 2b 31 32 30 2c 20 6e  ton', nX1+120, n
2630: 59 32 2b 33 32 2c 20 35 30 2c 20 6e 48 65 69 67  Y2+32, 50, nHeig
2640: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2650: 2e 64 55 49 2e 67 65 74 28 22 69 6e 76 22 2c 20  .dUI.get("inv", 
2660: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
2670: 74 20 3d 20 22 3a 69 22 29 0a 0a 20 20 20 20 20  t = ":i")..     
2680: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
2690: 65 74 28 22 61 6c 74 5f 6c 65 6d 6d 61 5f 6c 61  et("alt_lemma_la
26a0: 62 65 6c 22 2c 20 27 46 69 78 65 64 4c 69 6e 65  bel", 'FixedLine
26b0: 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b 34  ', nX1+10, nY2+4
26c0: 32 2c 20 31 37 30 2c 20 6e 48 65 69 67 68 74 2c  2, 170, nHeight,
26d0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
26e0: 49 2e 67 65 74 28 22 61 6c 74 5f 6c 65 6d 6d 61  I.get("alt_lemma
26f0: 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20  ", "#err")).    
2700: 20 20 20 20 73 65 6c 66 2e 78 41 6c 74 4c 65 6d      self.xAltLem
2710: 6d 61 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  ma = self._addWi
2720: 64 67 65 74 28 27 61 6c 74 5f 6c 65 6d 6d 61 27  dget('alt_lemma'
2730: 2c 20 27 45 64 69 74 27 2c 20 6e 58 31 2b 31 30  , 'Edit', nX1+10
2740: 2c 20 6e 59 32 2b 35 32 2c 20 31 31 30 2c 20 6e  , nY2+52, 110, n
2750: 48 65 69 67 68 74 29 0a 20 20 20 20 20 20 20 20  Height).        
2760: 73 65 6c 66 2e 78 4e 41 32 20 3d 20 73 65 6c 66  self.xNA2 = self
2770: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6e 6f 6d  ._addWidget('nom
2780: 5f 61 64 6a 32 27 2c 20 27 52 61 64 69 6f 42 75  _adj2', 'RadioBu
2790: 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30 2c 20 6e  tton', nX1+10, n
27a0: 59 32 2b 36 35 2c 20 36 30 2c 20 6e 48 65 69 67  Y2+65, 60, nHeig
27b0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
27c0: 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d 5f 61 64  .dUI.get("nom_ad
27d0: 6a 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  j", "#err"), Hel
27e0: 70 54 65 78 74 20 3d 20 22 3a 4e 3a 41 22 29 0a  pText = ":N:A").
27f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 32          self.xN2
2800: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2810: 65 74 28 27 6e 6f 6d 32 27 2c 20 27 52 61 64 69  et('nom2', 'Radi
2820: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30  oButton', nX1+10
2830: 2c 20 6e 59 32 2b 37 35 2c 20 36 30 2c 20 6e 48  , nY2+75, 60, nH
2840: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2850: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d  elf.dUI.get("nom
2860: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2870: 54 65 78 74 20 3d 20 22 3a 4e 22 29 0a 20 20 20  Text = ":N").   
2880: 20 20 20 20 20 73 65 6c 66 2e 78 41 32 20 3d 20       self.xA2 = 
2890: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
28a0: 27 61 64 6a 32 27 2c 20 27 52 61 64 69 6f 42 75  'adj2', 'RadioBu
28b0: 74 74 6f 6e 27 2c 20 6e 58 31 2b 31 30 2c 20 6e  tton', nX1+10, n
28c0: 59 32 2b 38 35 2c 20 36 30 2c 20 6e 48 65 69 67  Y2+85, 60, nHeig
28d0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
28e0: 2e 64 55 49 2e 67 65 74 28 22 61 64 6a 22 2c 20  .dUI.get("adj", 
28f0: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
2900: 74 20 3d 20 22 3a 41 22 29 0a 20 20 20 20 20 20  t = ":A").      
2910: 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65    self._addWidge
2920: 74 28 22 66 6c 5f 73 65 70 32 22 2c 20 27 46 69  t("fl_sep2", 'Fi
2930: 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c 20 6e  xedLine', nX1, n
2940: 59 32 2c 20 31 2c 20 6e 48 65 69 67 68 74 29 0a  Y2, 1, nHeight).
2950: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65          self.xSe
2960: 70 69 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  pi2 = self._addW
2970: 69 64 67 65 74 28 27 53 65 70 69 32 27 2c 20 27  idget('Sepi2', '
2980: 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58  RadioButton', nX
2990: 31 2b 37 35 2c 20 6e 59 32 2b 36 35 2c 20 35 30  1+75, nY2+65, 50
29a0: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
29b0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
29c0: 22 65 70 69 22 2c 20 22 23 65 72 72 22 29 2c 20  "epi", "#err"), 
29d0: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 65 22 29  HelpText = ":e")
29e0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
29f0: 6d 61 73 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64  mas2 = self._add
2a00: 57 69 64 67 65 74 28 27 53 6d 61 73 32 27 2c 20  Widget('Smas2', 
2a10: 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e  'RadioButton', n
2a20: 58 31 2b 37 35 2c 20 6e 59 32 2b 37 35 2c 20 35  X1+75, nY2+75, 5
2a30: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
2a40: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
2a50: 28 22 6d 61 73 22 2c 20 22 23 65 72 72 22 29 2c  ("mas", "#err"),
2a60: 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 6d 22   HelpText = ":m"
2a70: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
2a80: 53 66 65 6d 32 20 3d 20 73 65 6c 66 2e 5f 61 64  Sfem2 = self._ad
2a90: 64 57 69 64 67 65 74 28 27 53 66 65 6d 32 27 2c  dWidget('Sfem2',
2aa0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
2ab0: 6e 58 31 2b 37 35 2c 20 6e 59 32 2b 38 35 2c 20  nX1+75, nY2+85, 
2ac0: 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  50, nHeight, Lab
2ad0: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
2ae0: 74 28 22 66 65 6d 22 2c 20 22 23 65 72 72 22 29  t("fem", "#err")
2af0: 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 66  , HelpText = ":f
2b00: 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ").        self.
2b10: 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f 73  _addWidget("fl_s
2b20: 65 70 33 22 2c 20 27 46 69 78 65 64 4c 69 6e 65  ep3", 'FixedLine
2b30: 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20 31 2c 20  ', nX1, nY2, 1, 
2b40: 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20 20 20  nHeight).       
2b50: 20 73 65 6c 66 2e 78 53 73 32 20 3d 20 73 65 6c   self.xSs2 = sel
2b60: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 73  f._addWidget('Ss
2b70: 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  2', 'RadioButton
2b80: 27 2c 20 6e 58 31 2b 31 33 30 2c 20 6e 59 32 2b  ', nX1+130, nY2+
2b90: 36 35 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c  65, 50, nHeight,
2ba0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
2bb0: 49 2e 67 65 74 28 22 2d 73 22 2c 20 22 23 65 72  I.get("-s", "#er
2bc0: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
2bd0: 22 c2 b7 73 22 29 0a 20 20 20 20 20 20 20 20 73  "..s").        s
2be0: 65 6c 66 2e 78 53 78 32 20 3d 20 73 65 6c 66 2e  elf.xSx2 = self.
2bf0: 5f 61 64 64 57 69 64 67 65 74 28 27 53 78 32 27  _addWidget('Sx2'
2c00: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2c10: 20 6e 58 31 2b 31 33 30 2c 20 6e 59 32 2b 37 35   nX1+130, nY2+75
2c20: 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c  , 50, nHeight, L
2c30: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
2c40: 67 65 74 28 22 2d 78 22 2c 20 22 23 65 72 72 22  get("-x", "#err"
2c50: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 c2  ), HelpText = ".
2c60: b7 78 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c  .x").        sel
2c70: 66 2e 78 53 69 6e 76 32 20 3d 20 73 65 6c 66 2e  f.xSinv2 = self.
2c80: 5f 61 64 64 57 69 64 67 65 74 28 27 53 69 6e 76  _addWidget('Sinv
2c90: 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  2', 'RadioButton
2ca0: 27 2c 20 6e 58 31 2b 31 33 30 2c 20 6e 59 32 2b  ', nX1+130, nY2+
2cb0: 38 35 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c  85, 50, nHeight,
2cc0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
2cd0: 49 2e 67 65 74 28 22 69 6e 76 22 2c 20 22 23 65  I.get("inv", "#e
2ce0: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
2cf0: 20 22 3a 69 22 29 0a 0a 20 20 20 20 20 20 20 20   ":i")..        
2d00: 23 20 4e 6f 6d 20 70 72 6f 70 72 65 0a 20 20 20  # Nom propre.   
2d10: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
2d20: 64 67 65 74 28 22 66 6c 5f 4d 22 2c 20 27 46 69  dget("fl_M", 'Fi
2d30: 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31 2c 20 6e  xedLine', nX1, n
2d40: 59 33 2c 20 31 38 30 2c 20 6e 48 65 69 67 68 74  Y3, 180, nHeight
2d50: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
2d60: 55 49 2e 67 65 74 28 22 70 72 6f 70 65 72 5f 6e  UI.get("proper_n
2d70: 61 6d 65 22 2c 20 22 23 65 72 72 22 29 2c 20 46  ame", "#err"), F
2d80: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
2d90: 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20 20  xFDSubTitle).   
2da0: 20 20 20 20 20 73 65 6c 66 2e 78 4d 65 70 69 20       self.xMepi 
2db0: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2dc0: 74 28 27 4d 65 70 69 27 2c 20 27 52 61 64 69 6f  t('Mepi', 'Radio
2dd0: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c  Button', nX1+65,
2de0: 20 6e 59 33 2b 31 32 2c 20 35 30 2c 20 6e 48 65   nY3+12, 50, nHe
2df0: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2e00: 6c 66 2e 64 55 49 2e 67 65 74 28 22 65 70 69 22  lf.dUI.get("epi"
2e10: 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54  , "#err"), HelpT
2e20: 65 78 74 20 3d 20 22 3a 65 22 29 0a 20 20 20 20  ext = ":e").    
2e30: 20 20 20 20 73 65 6c 66 2e 78 4d 6d 61 73 20 3d      self.xMmas =
2e40: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2e50: 28 27 4d 6d 61 73 27 2c 20 27 52 61 64 69 6f 42  ('Mmas', 'RadioB
2e60: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c 20  utton', nX1+65, 
2e70: 6e 59 33 2b 32 32 2c 20 35 30 2c 20 6e 48 65 69  nY3+22, 50, nHei
2e80: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
2e90: 66 2e 64 55 49 2e 67 65 74 28 22 6d 61 73 22 2c  f.dUI.get("mas",
2ea0: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
2eb0: 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20 20 20 20  xt = ":m").     
2ec0: 20 20 20 73 65 6c 66 2e 78 4d 66 65 6d 20 3d 20     self.xMfem = 
2ed0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
2ee0: 27 4d 66 65 6d 27 2c 20 27 52 61 64 69 6f 42 75  'Mfem', 'RadioBu
2ef0: 74 74 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c 20 6e  tton', nX1+65, n
2f00: 59 33 2b 33 32 2c 20 35 30 2c 20 6e 48 65 69 67  Y3+32, 50, nHeig
2f10: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
2f20: 2e 64 55 49 2e 67 65 74 28 22 66 65 6d 22 2c 20  .dUI.get("fem", 
2f30: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
2f40: 74 20 3d 20 22 3a 66 22 29 0a 0a 20 20 20 20 20  t = ":f")..     
2f50: 20 20 20 23 20 56 65 72 62 65 0a 20 20 20 20 20     # Verbe.     
2f60: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
2f70: 65 74 28 22 66 6c 5f 76 65 72 62 22 2c 20 27 46  et("fl_verb", 'F
2f80: 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 32 2b 33  ixedLine', nX2+3
2f90: 30 2c 20 6e 59 34 2c 20 31 34 30 2c 20 6e 48 65  0, nY4, 140, nHe
2fa0: 69 67 68 74 2c 20 46 6f 6e 74 44 65 73 63 72 69  ight, FontDescri
2fb0: 70 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74  ptor = xFDSubTit
2fc0: 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  le).        self
2fd0: 2e 78 56 5f 69 20 3d 20 73 65 6c 66 2e 5f 61 64  .xV_i = self._ad
2fe0: 64 57 69 64 67 65 74 28 27 76 5f 69 27 2c 20 27  dWidget('v_i', '
2ff0: 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2c 20  CheckBox', nX2, 
3000: 6e 59 34 2b 31 32 2c 20 36 30 2c 20 6e 48 65 69  nY4+12, 60, nHei
3010: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
3020: 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 69 22 2c  f.dUI.get("v_i",
3030: 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20 20   "#err")).      
3040: 20 20 73 65 6c 66 2e 78 56 5f 74 20 3d 20 73 65    self.xV_t = se
3050: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76  lf._addWidget('v
3060: 5f 74 27 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c  _t', 'CheckBox',
3070: 20 6e 58 32 2c 20 6e 59 34 2b 32 30 2c 20 36 30   nX2, nY4+20, 60
3080: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
3090: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
30a0: 22 76 5f 74 22 2c 20 22 23 65 72 72 22 29 29 0a  "v_t", "#err")).
30b0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f          self.xV_
30c0: 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  n = self._addWid
30d0: 67 65 74 28 27 76 5f 6e 27 2c 20 27 43 68 65 63  get('v_n', 'Chec
30e0: 6b 42 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b  kBox', nX2, nY4+
30f0: 32 38 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c  28, 60, nHeight,
3100: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3110: 49 2e 67 65 74 28 22 76 5f 6e 22 2c 20 22 23 65  I.get("v_n", "#e
3120: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
3130: 6c 66 2e 78 56 5f 70 20 3d 20 73 65 6c 66 2e 5f  lf.xV_p = self._
3140: 61 64 64 57 69 64 67 65 74 28 27 76 5f 70 27 2c  addWidget('v_p',
3150: 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32   'CheckBox', nX2
3160: 2c 20 6e 59 34 2b 33 36 2c 20 36 30 2c 20 6e 48  , nY4+36, 60, nH
3170: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
3180: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 70  elf.dUI.get("v_p
3190: 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20  ", "#err")).    
31a0: 20 20 20 20 73 65 6c 66 2e 78 56 5f 6d 20 3d 20      self.xV_m = 
31b0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
31c0: 27 76 5f 6d 27 2c 20 27 43 68 65 63 6b 42 6f 78  'v_m', 'CheckBox
31d0: 27 2c 20 6e 58 32 2c 20 6e 59 34 2b 34 34 2c 20  ', nX2, nY4+44, 
31e0: 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  60, nHeight, Lab
31f0: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
3200: 74 28 22 76 5f 6d 22 2c 20 22 23 65 72 72 22 29  t("v_m", "#err")
3210: 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  )..        self.
3220: 5f 61 64 64 57 69 64 67 65 74 28 27 61 75 78 27  _addWidget('aux'
3230: 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e  , 'FixedText', n
3240: 58 32 2b 37 35 2c 20 6e 59 34 2b 31 30 2c 20 39  X2+75, nY4+10, 9
3250: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
3260: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
3270: 28 22 61 75 78 22 2c 20 22 23 65 72 72 22 29 29  ("aux", "#err"))
3280: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56  .        self.xV
3290: 5f 61 65 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  _ae = self._addW
32a0: 69 64 67 65 74 28 27 76 5f 61 65 27 2c 20 27 43  idget('v_ae', 'C
32b0: 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2b 37 35  heckBox', nX2+75
32c0: 2c 20 6e 59 34 2b 32 30 2c 20 39 30 2c 20 6e 48  , nY4+20, 90, nH
32d0: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
32e0: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 61  elf.dUI.get("v_a
32f0: 65 22 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20  e", "#err")).   
3300: 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 61 61 20       self.xV_aa 
3310: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
3320: 74 28 27 76 5f 61 61 27 2c 20 27 43 68 65 63 6b  t('v_aa', 'Check
3330: 42 6f 78 27 2c 20 6e 58 32 2b 37 35 2c 20 6e 59  Box', nX2+75, nY
3340: 34 2b 32 38 2c 20 39 30 2c 20 6e 48 65 69 67 68  4+28, 90, nHeigh
3350: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
3360: 64 55 49 2e 67 65 74 28 22 76 5f 61 61 22 2c 20  dUI.get("v_aa", 
3370: 22 23 65 72 72 22 29 29 0a 0a 20 20 20 20 20 20  "#err"))..      
3380: 20 20 73 65 6c 66 2e 78 56 5f 70 70 20 3d 20 73    self.xV_pp = s
3390: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
33a0: 76 5f 70 70 27 2c 20 27 43 68 65 63 6b 42 6f 78  v_pp', 'CheckBox
33b0: 27 2c 20 6e 58 32 2b 37 35 2c 20 6e 59 34 2b 34  ', nX2+75, nY4+4
33c0: 34 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c 20  4, 90, nHeight, 
33d0: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
33e0: 2e 67 65 74 28 22 76 5f 70 70 22 2c 20 22 23 65  .get("v_pp", "#e
33f0: 72 72 22 29 29 0a 0a 20 20 20 20 20 20 20 20 73  rr"))..        s
3400: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
3410: 76 5f 70 61 74 74 65 72 6e 5f 6c 61 62 65 6c 27  v_pattern_label'
3420: 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e  , 'FixedText', n
3430: 58 32 2b 31 30 2c 20 6e 59 34 2b 35 36 2c 20 37  X2+10, nY4+56, 7
3440: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
3450: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
3460: 28 27 76 5f 70 61 74 74 65 72 6e 27 2c 20 22 23  ('v_pattern', "#
3470: 65 72 72 22 29 2c 20 41 6c 69 67 6e 20 3d 20 32  err"), Align = 2
3480: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
3490: 56 70 61 74 74 65 72 6e 20 3d 20 73 65 6c 66 2e  Vpattern = self.
34a0: 5f 61 64 64 57 69 64 67 65 74 28 27 76 5f 70 61  _addWidget('v_pa
34b0: 74 74 65 72 6e 27 2c 20 27 45 64 69 74 27 2c 20  ttern', 'Edit', 
34c0: 6e 58 32 2b 38 35 2c 20 6e 59 34 2b 35 36 2c 20  nX2+85, nY4+56, 
34d0: 38 30 2c 20 6e 48 65 69 67 68 74 29 0a 0a 20 20  80, nHeight)..  
34e0: 20 20 20 20 20 20 23 20 41 64 76 65 72 62 65 0a        # Adverbe.
34f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
3500: 64 57 69 64 67 65 74 28 22 66 6c 5f 61 64 76 22  dWidget("fl_adv"
3510: 2c 20 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e  , 'FixedLine', n
3520: 58 32 2b 33 30 2c 20 6e 59 35 2c 20 31 34 30 2c  X2+30, nY5, 140,
3530: 20 6e 48 65 69 67 68 74 2c 20 46 6f 6e 74 44 65   nHeight, FontDe
3540: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
3550: 62 54 69 74 6c 65 29 0a 0a 20 20 20 20 20 20 20  bTitle)..       
3560: 20 23 20 41 75 74 72 65 0a 20 20 20 20 20 20 20   # Autre.       
3570: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
3580: 28 22 66 6c 5f 6f 74 68 65 72 22 2c 20 27 46 69  ("fl_other", 'Fi
3590: 78 65 64 4c 69 6e 65 27 2c 20 6e 58 32 2b 33 30  xedLine', nX2+30
35a0: 2c 20 6e 59 36 2c 20 31 34 30 2c 20 6e 48 65 69  , nY6, 140, nHei
35b0: 67 68 74 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  ght, FontDescrip
35c0: 74 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c  tor = xFDSubTitl
35d0: 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  e).        self.
35e0: 5f 61 64 64 57 69 64 67 65 74 28 27 66 6c 65 78  _addWidget('flex
35f0: 69 6f 6e 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78  ion_label', 'Fix
3600: 65 64 54 65 78 74 27 2c 20 6e 58 32 2c 20 6e 59  edText', nX2, nY
3610: 36 2b 31 31 2c 20 33 35 2c 20 6e 48 65 69 67 68  6+11, 35, nHeigh
3620: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
3630: 64 55 49 2e 67 65 74 28 27 66 6c 65 78 69 6f 6e  dUI.get('flexion
3640: 27 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20  ', "#err")).    
3650: 20 20 20 20 73 65 6c 66 2e 78 46 6c 65 78 69 6f      self.xFlexio
3660: 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  n = self._addWid
3670: 67 65 74 28 27 66 6c 65 78 69 6f 6e 27 2c 20 27  get('flexion', '
3680: 45 64 69 74 27 2c 20 6e 58 32 2b 34 30 2c 20 6e  Edit', nX2+40, n
3690: 59 36 2b 31 30 2c 20 31 30 30 2c 20 6e 48 65 69  Y6+10, 100, nHei
36a0: 67 68 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ght).        sel
36b0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 74 61  f._addWidget('ta
36c0: 67 73 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78 65  gs_label', 'Fixe
36d0: 64 54 65 78 74 27 2c 20 6e 58 32 2c 20 6e 59 36  dText', nX2, nY6
36e0: 2b 32 33 2c 20 33 35 2c 20 6e 48 65 69 67 68 74  +23, 35, nHeight
36f0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
3700: 55 49 2e 67 65 74 28 27 74 61 67 73 27 2c 20 22  UI.get('tags', "
3710: 23 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20  #err")).        
3720: 73 65 6c 66 2e 78 54 61 67 73 20 3d 20 73 65 6c  self.xTags = sel
3730: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 74 61  f._addWidget('ta
3740: 67 73 27 2c 20 27 45 64 69 74 27 2c 20 6e 58 32  gs', 'Edit', nX2
3750: 2b 34 30 2c 20 6e 59 36 2b 32 32 2c 20 31 30 30  +40, nY6+22, 100
3760: 2c 20 6e 48 65 69 67 68 74 29 0a 0a 20 20 20 20  , nHeight)..    
3770: 20 20 20 20 23 23 23 23 20 47 65 6e 65 72 61 74      #### Generat
3780: 65 64 20 77 6f 72 64 73 0a 20 20 20 20 20 20 20  ed words.       
3790: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
37a0: 28 22 67 77 6f 72 64 73 5f 73 65 63 74 69 6f 6e  ("gwords_section
37b0: 22 2c 20 27 46 69 78 65 64 4c 69 6e 65 27 2c 20  ", 'FixedLine', 
37c0: 6e 58 42 2c 20 6e 59 31 2c 20 31 36 30 2c 20 6e  nXB, nY1, 160, n
37d0: 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20  Height, Label = 
37e0: 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6e 65  self.dUI.get("ne
37f0: 77 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72  w_section", "#er
3800: 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  r"), FontDescrip
3810: 74 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 29 0a  tor = xFDTitle).
3820: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 47 72          self.xGr
3830: 69 64 4d 6f 64 65 6c 4e 65 77 20 3d 20 73 65 6c  idModelNew = sel
3840: 66 2e 5f 61 64 64 47 72 69 64 28 22 6c 69 73 74  f._addGrid("list
3850: 5f 67 72 69 64 5f 67 77 6f 72 64 73 22 2c 20 6e  _grid_gwords", n
3860: 58 42 2c 20 6e 59 31 2b 31 30 2c 20 31 36 30 2c  XB, nY1+10, 160,
3870: 20 32 35 35 2c 20 5b 0a 20 20 20 20 20 20 20 20   255, [.        
3880: 20 20 20 20 7b 22 54 69 74 6c 65 22 3a 20 73 65      {"Title": se
3890: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78 5f  lf.dUI.get("lex_
38a0: 66 6c 65 78 22 2c 20 22 23 65 72 72 22 29 2c 20  flex", "#err"), 
38b0: 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a 20 38  "ColumnWidth": 8
38c0: 30 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  0},.            
38d0: 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64  {"Title": self.d
38e0: 55 49 2e 67 65 74 28 22 6c 65 78 5f 74 61 67 73  UI.get("lex_tags
38f0: 22 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f 6c  ", "#err"), "Col
3900: 75 6d 6e 57 69 64 74 68 22 3a 20 38 30 7d 0a 20  umnWidth": 80}. 
3910: 20 20 20 20 20 20 20 5d 2c 20 53 65 6c 65 63 74         ], Select
3920: 69 6f 6e 4d 6f 64 65 6c 20 3d 20 75 6e 6f 2e 45  ionModel = uno.E
3930: 6e 75 6d 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61  num("com.sun.sta
3940: 72 2e 76 69 65 77 2e 53 65 6c 65 63 74 69 6f 6e  r.view.Selection
3950: 54 79 70 65 22 2c 20 22 4d 55 4c 54 49 22 29 29  Type", "MULTI"))
3960: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41  .        self.xA
3970: 64 64 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  dd = self._addWi
3980: 64 67 65 74 28 27 61 64 64 5f 62 75 74 74 6f 6e  dget('add_button
3990: 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 42  ', 'Button', nXB
39a0: 2c 20 6e 59 31 2b 32 37 30 2c 20 37 35 2c 20 31  , nY1+270, 75, 1
39b0: 32 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  2, Label = self.
39c0: 64 55 49 2e 67 65 74 28 27 61 64 64 5f 62 75 74  dUI.get('add_but
39d0: 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46  ton', "#err"), F
39e0: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
39f0: 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78  xFDSubTitle, Tex
3a00: 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 35 35 30  tColor = 0x00550
3a10: 30 2c 20 45 6e 61 62 6c 65 64 20 3d 20 46 61 6c  0, Enabled = Fal
3a20: 73 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  se).        self
3a30: 2e 78 44 65 6c 65 74 65 20 3d 20 73 65 6c 66 2e  .xDelete = self.
3a40: 5f 61 64 64 57 69 64 67 65 74 28 27 64 65 6c 65  _addWidget('dele
3a50: 74 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74  te_button', 'But
3a60: 74 6f 6e 27 2c 20 6e 58 42 2b 38 30 2c 20 6e 59  ton', nXB+80, nY
3a70: 31 2b 32 37 30 2c 20 38 30 2c 20 31 32 2c 20 4c  1+270, 80, 12, L
3a80: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
3a90: 67 65 74 28 27 64 65 6c 65 74 65 5f 62 75 74 74  get('delete_butt
3aa0: 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f  on', "#err"), Fo
3ab0: 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78  ntDescriptor = x
3ac0: 46 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74  FDSubTitle, Text
3ad0: 43 6f 6c 6f 72 20 3d 20 30 78 35 35 30 30 30 30  Color = 0x550000
3ae0: 29 0a 0a 20 20 20 20 20 20 20 20 23 23 23 23 20  )..        #### 
3af0: 4c 65 78 69 63 6f 6e 20 73 65 63 74 69 6f 6e 0a  Lexicon section.
3b00: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
3b10: 64 57 69 64 67 65 74 28 22 6c 65 78 69 63 6f 6e  dWidget("lexicon
3b20: 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65  _section", 'Fixe
3b30: 64 4c 69 6e 65 27 2c 20 6e 58 43 2c 20 6e 59 31  dLine', nXC, nY1
3b40: 2c 20 32 30 30 2c 20 6e 48 65 69 67 68 74 2c 20  , 200, nHeight, 
3b50: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
3b60: 2e 67 65 74 28 22 6c 65 78 69 63 6f 6e 5f 73 65  .get("lexicon_se
3b70: 63 74 69 6f 6e 22 2c 20 22 23 65 72 72 22 29 2c  ction", "#err"),
3b80: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
3b90: 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20 20  = xFDTitle).    
3ba0: 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f      self.xGridMo
3bb0: 64 65 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 5f 61  delLex = self._a
3bc0: 64 64 47 72 69 64 28 22 6c 69 73 74 5f 67 72 69  ddGrid("list_gri
3bd0: 64 5f 6c 65 78 69 63 6f 6e 22 2c 20 6e 58 43 2c  d_lexicon", nXC,
3be0: 20 6e 59 31 2b 31 30 2c 20 32 30 30 2c 20 32 35   nY1+10, 200, 25
3bf0: 35 2c 20 5b 0a 20 20 20 20 20 20 20 20 20 20 20  5, [.           
3c00: 20 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e   {"Title": self.
3c10: 64 55 49 2e 67 65 74 28 22 6c 65 78 5f 66 6c 65  dUI.get("lex_fle
3c20: 78 22 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f  x", "#err"), "Co
3c30: 6c 75 6d 6e 57 69 64 74 68 22 3a 20 36 35 7d 2c  lumnWidth": 65},
3c40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 22 54  .            {"T
3c50: 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e  itle": self.dUI.
3c60: 67 65 74 28 22 6c 65 78 5f 6c 65 6d 6d 61 22 2c  get("lex_lemma",
3c70: 20 22 23 65 72 72 22 29 2c 20 22 43 6f 6c 75 6d   "#err"), "Colum
3c80: 6e 57 69 64 74 68 22 3a 20 35 30 7d 2c 0a 20 20  nWidth": 50},.  
3c90: 20 20 20 20 20 20 20 20 20 20 7b 22 54 69 74 6c            {"Titl
3ca0: 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  e": self.dUI.get
3cb0: 28 22 6c 65 78 5f 74 61 67 73 22 2c 20 22 23 65  ("lex_tags", "#e
3cc0: 72 72 22 29 2c 20 22 43 6f 6c 75 6d 6e 57 69 64  rr"), "ColumnWid
3cd0: 74 68 22 3a 20 36 35 7d 0a 20 20 20 20 20 20 20  th": 65}.       
3ce0: 20 5d 2c 20 53 65 6c 65 63 74 69 6f 6e 4d 6f 64   ], SelectionMod
3cf0: 65 6c 20 3d 20 75 6e 6f 2e 45 6e 75 6d 28 22 63  el = uno.Enum("c
3d00: 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 76 69 65 77  om.sun.star.view
3d10: 2e 53 65 6c 65 63 74 69 6f 6e 54 79 70 65 22 2c  .SelectionType",
3d20: 20 22 4d 55 4c 54 49 22 29 29 0a 20 20 20 20 20   "MULTI")).     
3d30: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
3d40: 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69  et("num_of_entri
3d50: 65 73 5f 6c 61 62 65 6c 31 22 2c 20 27 46 69 78  es_label1", 'Fix
3d60: 65 64 54 65 78 74 27 2c 20 6e 58 43 2c 20 6e 59  edText', nXC, nY
3d70: 31 2b 32 37 32 2c 20 36 30 2c 20 6e 48 65 69 67  1+272, 60, nHeig
3d80: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
3d90: 2e 64 55 49 2e 67 65 74 28 22 6e 75 6d 5f 6f 66  .dUI.get("num_of
3da0: 5f 65 6e 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c  _entries_label",
3db0: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
3dc0: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
3dd0: 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20  bTitle).        
3de0: 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 20 3d 20 73  self.xNumLex = s
3df0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
3e00: 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 31 22  num_of_entries1"
3e10: 2c 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e  , 'FixedText', n
3e20: 58 43 2b 36 35 2c 20 6e 59 31 2b 32 37 32 2c 20  XC+65, nY1+272, 
3e30: 34 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  40, nHeight, Lab
3e40: 65 6c 20 3d 20 22 30 22 2c 20 46 6f 6e 74 44 65  el = "0", FontDe
3e50: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
3e60: 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20  bTitle).        
3e70: 73 65 6c 66 2e 78 53 61 76 65 20 3d 20 73 65 6c  self.xSave = sel
3e80: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 73 61  f._addWidget('sa
3e90: 76 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74  ve_button', 'But
3ea0: 74 6f 6e 27 2c 20 6e 58 43 2b 31 31 30 2c 20 6e  ton', nXC+110, n
3eb0: 59 31 2b 32 37 30 2c 20 34 35 2c 20 31 32 2c 20  Y1+270, 45, 12, 
3ec0: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
3ed0: 2e 67 65 74 28 27 73 61 76 65 5f 62 75 74 74 6f  .get('save_butto
3ee0: 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n', "#err"), Fon
3ef0: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
3f00: 44 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43  DSubTitle, TextC
3f10: 6f 6c 6f 72 20 3d 20 30 78 30 30 35 35 30 30 29  olor = 0x005500)
3f20: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
3f30: 64 64 57 69 64 67 65 74 28 27 63 6c 6f 73 65 5f  ddWidget('close_
3f40: 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e  button', 'Button
3f50: 27 2c 20 6e 58 43 2b 31 36 30 2c 20 6e 59 31 2b  ', nXC+160, nY1+
3f60: 32 37 30 2c 20 34 30 2c 20 31 32 2c 20 4c 61 62  270, 40, 12, Lab
3f70: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
3f80: 74 28 27 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27  t('close_button'
3f90: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
3fa0: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53  escriptor = xFDS
3fb0: 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c  ubTitle, TextCol
3fc0: 6f 72 20 3d 20 30 78 35 35 30 30 30 30 29 0a 0a  or = 0x550000)..
3fd0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 6f 61          self.loa
3fe0: 64 4c 65 78 69 63 6f 6e 28 29 0a 0a 20 20 20 20  dLexicon()..    
3ff0: 20 20 20 20 23 20 63 6f 6e 74 61 69 6e 65 72 0a      # container.
4000: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
4010: 6e 74 61 69 6e 65 72 20 3d 20 73 65 6c 66 2e 78  ntainer = self.x
4020: 53 76 4d 67 72 2e 63 72 65 61 74 65 49 6e 73 74  SvMgr.createInst
4030: 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74 28  anceWithContext(
4040: 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  'com.sun.star.aw
4050: 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 44 69 61 6c  t.UnoControlDial
4060: 6f 67 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20  og', self.ctx). 
4070: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e         self.xCon
4080: 74 61 69 6e 65 72 2e 73 65 74 4d 6f 64 65 6c 28  tainer.setModel(
4090: 73 65 6c 66 2e 78 44 69 61 6c 6f 67 29 0a 20 20  self.xDialog).  
40a0: 20 20 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64        self.xGrid
40b0: 43 6f 6e 74 72 6f 6c 4e 65 77 20 3d 20 73 65 6c  ControlNew = sel
40c0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
40d0: 43 6f 6e 74 72 6f 6c 28 27 6c 69 73 74 5f 67 72  Control('list_gr
40e0: 69 64 5f 67 77 6f 72 64 73 27 29 0a 20 20 20 20  id_gwords').    
40f0: 20 20 20 20 73 65 6c 66 2e 78 47 72 69 64 43 6f      self.xGridCo
4100: 6e 74 72 6f 6c 4c 65 78 20 3d 20 73 65 6c 66 2e  ntrolLex = self.
4110: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
4120: 6e 74 72 6f 6c 28 27 6c 69 73 74 5f 67 72 69 64  ntrol('list_grid
4130: 5f 6c 65 78 69 63 6f 6e 27 29 0a 20 20 20 20 20  _lexicon').     
4140: 20 20 20 23 68 65 6c 70 65 72 73 2e 78 72 61 79     #helpers.xray
4150: 28 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72  (self.xContainer
4160: 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 6c 65 6d  .getControl('lem
4170: 6d 61 27 29 29 0a 20 20 20 20 20 20 20 20 73 65  ma')).        se
4180: 6c 66 2e 5f 63 72 65 61 74 65 4b 65 79 4c 69 73  lf._createKeyLis
4190: 74 65 6e 65 72 73 28 5b 27 6c 65 6d 6d 61 27 2c  teners(['lemma',
41a0: 20 27 61 6c 74 5f 6c 65 6d 6d 61 27 2c 20 22 76   'alt_lemma', "v
41b0: 5f 70 61 74 74 65 72 6e 22 2c 20 27 66 6c 65 78  _pattern", 'flex
41c0: 69 6f 6e 27 2c 20 27 74 61 67 73 27 5d 2c 20 22  ion', 'tags'], "
41d0: 55 70 64 61 74 65 22 29 0a 20 20 20 20 20 20 20  Update").       
41e0: 20 73 65 6c 66 2e 5f 63 72 65 61 74 65 41 63 74   self._createAct
41f0: 69 6f 6e 4c 69 73 74 65 6e 65 72 73 28 5b 27 6e  ionListeners(['n
4200: 6f 6d 5f 61 64 6a 27 2c 20 27 6e 6f 6d 27 2c 20  om_adj', 'nom', 
4210: 27 61 64 6a 27 2c 20 27 4d 31 27 2c 20 27 4d 32  'adj', 'M1', 'M2
4220: 27 2c 20 27 4d 50 27 2c 20 27 76 65 72 62 27 2c  ', 'MP', 'verb',
4230: 20 27 61 64 76 27 2c 20 27 6f 74 68 65 72 27 2c   'adv', 'other',
4240: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
4250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4260: 20 20 20 20 20 20 20 20 27 53 65 70 69 27 2c 20          'Sepi', 
4270: 27 53 6d 61 73 27 2c 20 27 53 66 65 6d 27 2c 20  'Smas', 'Sfem', 
4280: 27 53 73 27 2c 20 27 53 78 27 2c 20 27 53 69 6e  'Ss', 'Sx', 'Sin
4290: 76 27 2c 20 27 6e 6f 6d 5f 61 64 6a 32 27 2c 20  v', 'nom_adj2', 
42a0: 27 6e 6f 6d 32 27 2c 20 27 61 64 6a 32 27 2c 20  'nom2', 'adj2', 
42b0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
42c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42d0: 20 20 20 20 20 20 20 27 53 65 70 69 32 27 2c 20         'Sepi2', 
42e0: 27 53 6d 61 73 32 27 2c 20 27 53 66 65 6d 32 27  'Smas2', 'Sfem2'
42f0: 2c 20 27 53 73 32 27 2c 20 27 53 78 32 27 2c 20  , 'Ss2', 'Sx2', 
4300: 27 53 69 6e 76 32 27 2c 20 27 4d 65 70 69 27 2c  'Sinv2', 'Mepi',
4310: 20 27 4d 6d 61 73 27 2c 20 27 4d 66 65 6d 27 2c   'Mmas', 'Mfem',
4320: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
4330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4340: 20 20 20 20 20 20 20 20 27 76 5f 69 27 2c 20 27          'v_i', '
4350: 76 5f 74 27 2c 20 27 76 5f 6e 27 2c 20 27 76 5f  v_t', 'v_n', 'v_
4360: 70 27 2c 20 27 76 5f 6d 27 2c 20 27 76 5f 61 65  p', 'v_m', 'v_ae
4370: 27 2c 20 27 76 5f 61 61 27 2c 20 27 76 5f 70 70  ', 'v_aa', 'v_pp
4380: 27 5d 2c 20 22 55 70 64 61 74 65 22 29 0a 20 20  '], "Update").  
4390: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
43a0: 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c  ainer.getControl
43b0: 28 27 73 65 61 72 63 68 5f 62 75 74 74 6f 6e 27  ('search_button'
43c0: 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65  ).addActionListe
43d0: 6e 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20  ner(self).      
43e0: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
43f0: 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 73 65  r.getControl('se
4400: 61 72 63 68 5f 62 75 74 74 6f 6e 27 29 2e 73 65  arch_button').se
4410: 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27  tActionCommand('
4420: 53 65 61 72 63 68 57 6f 72 64 73 27 29 0a 20 20  SearchWords').  
4430: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
4440: 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c  ainer.getControl
4450: 28 27 69 6e 66 6f 72 6d 61 74 69 6f 6e 5f 62 75  ('information_bu
4460: 74 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e  tton').addAction
4470: 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20  Listener(self). 
4480: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e         self.xCon
4490: 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f  tainer.getContro
44a0: 6c 28 27 69 6e 66 6f 72 6d 61 74 69 6f 6e 5f 62  l('information_b
44b0: 75 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f  utton').setActio
44c0: 6e 43 6f 6d 6d 61 6e 64 28 27 54 61 67 73 49 6e  nCommand('TagsIn
44d0: 66 6f 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c  fo').        sel
44e0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
44f0: 43 6f 6e 74 72 6f 6c 28 27 61 64 64 5f 62 75 74  Control('add_but
4500: 74 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c  ton').addActionL
4510: 69 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20  istener(self).  
4520: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
4530: 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c  ainer.getControl
4540: 28 27 61 64 64 5f 62 75 74 74 6f 6e 27 29 2e 73  ('add_button').s
4550: 65 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28  etActionCommand(
4560: 27 41 64 64 27 29 0a 20 20 20 20 20 20 20 20 73  'Add').        s
4570: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67  elf.xContainer.g
4580: 65 74 43 6f 6e 74 72 6f 6c 28 27 64 65 6c 65 74  etControl('delet
4590: 65 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63  e_button').addAc
45a0: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c  tionListener(sel
45b0: 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  f).        self.
45c0: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
45d0: 6e 74 72 6f 6c 28 27 64 65 6c 65 74 65 5f 62 75  ntrol('delete_bu
45e0: 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e  tton').setAction
45f0: 43 6f 6d 6d 61 6e 64 28 27 44 65 6c 65 74 65 27  Command('Delete'
4600: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
4610: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4620: 74 72 6f 6c 28 27 73 61 76 65 5f 62 75 74 74 6f  trol('save_butto
4630: 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69 73  n').addActionLis
4640: 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20 20  tener(self).    
4650: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
4660: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27  ner.getControl('
4670: 73 61 76 65 5f 62 75 74 74 6f 6e 27 29 2e 73 65  save_button').se
4680: 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27  tActionCommand('
4690: 53 61 76 65 27 29 0a 20 20 20 20 20 20 20 20 73  Save').        s
46a0: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67  elf.xContainer.g
46b0: 65 74 43 6f 6e 74 72 6f 6c 28 27 65 78 70 6f 72  etControl('expor
46c0: 74 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63  t_button').addAc
46d0: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c  tionListener(sel
46e0: 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  f).        self.
46f0: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
4700: 6e 74 72 6f 6c 28 27 65 78 70 6f 72 74 5f 62 75  ntrol('export_bu
4710: 74 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e  tton').setAction
4720: 43 6f 6d 6d 61 6e 64 28 27 45 78 70 6f 72 74 27  Command('Export'
4730: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
4740: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4750: 74 72 6f 6c 28 27 63 6c 6f 73 65 5f 62 75 74 74  trol('close_butt
4760: 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69  on').addActionLi
4770: 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20  stener(self).   
4780: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
4790: 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28  iner.getControl(
47a0: 27 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 29 2e  'close_button').
47b0: 73 65 74 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  setActionCommand
47c0: 28 27 43 6c 6f 73 65 27 29 0a 20 20 20 20 20 20  ('Close').      
47d0: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
47e0: 72 2e 73 65 74 56 69 73 69 62 6c 65 28 46 61 6c  r.setVisible(Fal
47f0: 73 65 29 0a 20 20 20 20 20 20 20 20 78 54 6f 6f  se).        xToo
4800: 6c 6b 69 74 20 3d 20 73 65 6c 66 2e 78 53 76 4d  lkit = self.xSvM
4810: 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63  gr.createInstanc
4820: 65 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f  eWithContext('co
4830: 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 45  m.sun.star.awt.E
4840: 78 74 54 6f 6f 6c 6b 69 74 27 2c 20 73 65 6c 66  xtToolkit', self
4850: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 73 65  .ctx).        se
4860: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 63 72  lf.xContainer.cr
4870: 65 61 74 65 50 65 65 72 28 78 54 6f 6f 6c 6b 69  eatePeer(xToolki
4880: 74 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20  t, None).       
4890: 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72   self.xContainer
48a0: 2e 65 78 65 63 75 74 65 28 29 0a 0a 20 20 20 20  .execute()..    
48b0: 64 65 66 20 5f 63 72 65 61 74 65 4b 65 79 4c 69  def _createKeyLi
48c0: 73 74 65 6e 65 72 73 20 28 73 65 6c 66 2c 20 6c  steners (self, l
48d0: 4e 61 6d 65 73 2c 20 73 41 63 74 69 6f 6e 29 3a  Names, sAction):
48e0: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 73 4e 61  .        for sNa
48f0: 6d 65 20 69 6e 20 6c 4e 61 6d 65 73 3a 0a 20 20  me in lNames:.  
4900: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78            self.x
4910: 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e  Container.getCon
4920: 74 72 6f 6c 28 73 4e 61 6d 65 29 2e 61 64 64 4b  trol(sName).addK
4930: 65 79 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29  eyListener(self)
4940: 0a 0a 20 20 20 20 64 65 66 20 5f 63 72 65 61 74  ..    def _creat
4950: 65 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 73  eActionListeners
4960: 20 28 73 65 6c 66 2c 20 6c 4e 61 6d 65 73 2c 20   (self, lNames, 
4970: 73 41 63 74 69 6f 6e 29 3a 0a 20 20 20 20 20 20  sAction):.      
4980: 20 20 66 6f 72 20 73 4e 61 6d 65 20 69 6e 20 6c    for sName in l
4990: 4e 61 6d 65 73 3a 0a 20 20 20 20 20 20 20 20 20  Names:.         
49a0: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
49b0: 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 73 4e  er.getControl(sN
49c0: 61 6d 65 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69  ame).addActionLi
49d0: 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20  stener(self).   
49e0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43           self.xC
49f0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
4a00: 72 6f 6c 28 73 4e 61 6d 65 29 2e 73 65 74 41 63  rol(sName).setAc
4a10: 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 73 41 63 74  tionCommand(sAct
4a20: 69 6f 6e 29 0a 0a 20 20 20 20 23 20 58 41 63 74  ion)..    # XAct
4a30: 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 20 20 20 20  ionListener.    
4a40: 64 65 66 20 61 63 74 69 6f 6e 50 65 72 66 6f 72  def actionPerfor
4a50: 6d 65 64 20 28 73 65 6c 66 2c 20 78 41 63 74 69  med (self, xActi
4a60: 6f 6e 45 76 65 6e 74 29 3a 0a 20 20 20 20 20 20  onEvent):.      
4a70: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
4a80: 20 20 20 69 66 20 78 41 63 74 69 6f 6e 45 76 65     if xActionEve
4a90: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
4aa0: 20 3d 3d 20 22 55 70 64 61 74 65 22 3a 0a 20 20   == "Update":.  
4ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
4ac0: 6c 66 2e 75 70 64 61 74 65 47 65 6e 57 6f 72 64  lf.updateGenWord
4ad0: 73 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  s().            
4ae0: 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65 6e  elif xActionEven
4af0: 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20  t.ActionCommand 
4b00: 3d 3d 20 22 53 65 61 72 63 68 57 6f 72 64 73 22  == "SearchWords"
4b10: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
4b20: 20 20 73 65 6c 66 2e 6c 61 75 6e 63 68 53 65 61    self.launchSea
4b30: 72 63 68 57 6f 72 64 73 28 29 0a 20 20 20 20 20  rchWords().     
4b40: 20 20 20 20 20 20 20 65 6c 69 66 20 78 41 63 74         elif xAct
4b50: 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43  ionEvent.ActionC
4b60: 6f 6d 6d 61 6e 64 20 3d 3d 20 22 54 61 67 73 49  ommand == "TagsI
4b70: 6e 66 6f 22 3a 0a 20 20 20 20 20 20 20 20 20 20  nfo":.          
4b80: 20 20 20 20 20 20 73 65 6c 66 2e 6c 61 75 6e 63        self.launc
4b90: 68 54 61 67 73 49 6e 66 6f 28 29 0a 20 20 20 20  hTagsInfo().    
4ba0: 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41 63          elif xAc
4bb0: 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e  tionEvent.Action
4bc0: 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 41 64 64 22  Command == "Add"
4bd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
4be0: 20 20 73 65 6c 66 2e 61 64 64 54 6f 4c 65 78 69    self.addToLexi
4bf0: 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20  con().          
4c00: 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76    elif xActionEv
4c10: 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  ent.ActionComman
4c20: 64 20 3d 3d 20 22 44 65 6c 65 74 65 22 3a 0a 20  d == "Delete":. 
4c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4c40: 65 6c 66 2e 64 65 6c 65 74 65 53 65 6c 65 63 74  elf.deleteSelect
4c50: 65 64 45 6e 74 72 69 65 73 28 29 0a 20 20 20 20  edEntries().    
4c60: 20 20 20 20 20 20 20 20 65 6c 69 66 20 78 41 63          elif xAc
4c70: 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e  tionEvent.Action
4c80: 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 53 61 76 65  Command == "Save
4c90: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ":.             
4ca0: 20 20 20 73 65 6c 66 2e 73 61 76 65 4c 65 78 69     self.saveLexi
4cb0: 63 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20  con().          
4cc0: 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76    elif xActionEv
4cd0: 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e  ent.ActionComman
4ce0: 64 20 3d 3d 20 22 49 6d 70 6f 72 74 22 3a 0a 20  d == "Import":. 
4cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4d00: 65 6c 66 2e 69 6d 70 6f 72 74 44 69 63 74 69 6f  elf.importDictio
4d10: 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20 20 20  nary().         
4d20: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4d30: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
4d40: 6e 64 20 3d 3d 20 22 45 78 70 6f 72 74 22 3a 0a  nd == "Export":.
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d60: 73 65 6c 66 2e 65 78 70 6f 72 74 44 69 63 74 69  self.exportDicti
4d70: 6f 6e 61 72 79 28 29 0a 20 20 20 20 20 20 20 20  onary().        
4d80: 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e      elif xAction
4d90: 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d  Event.ActionComm
4da0: 61 6e 64 20 3d 3d 20 27 49 6e 66 6f 27 3a 0a 20  and == 'Info':. 
4db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4dc0: 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  ass.            
4dd0: 65 6c 69 66 20 78 41 63 74 69 6f 6e 45 76 65 6e  elif xActionEven
4de0: 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20  t.ActionCommand 
4df0: 3d 3d 20 22 43 6c 6f 73 65 22 3a 0a 20 20 20 20  == "Close":.    
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
4e10: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 65 6e 64 45  .xContainer.endE
4e20: 78 65 63 75 74 65 28 29 0a 20 20 20 20 20 20 20  xecute().       
4e30: 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20   except:.       
4e40: 20 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70       traceback.p
4e50: 72 69 6e 74 5f 65 78 63 28 29 0a 20 20 20 20 0a  rint_exc().    .
4e60: 20 20 20 20 23 20 58 4b 65 79 4c 69 73 74 65 6e      # XKeyListen
4e70: 65 72 0a 20 20 20 20 64 65 66 20 6b 65 79 50 72  er.    def keyPr
4e80: 65 73 73 65 64 20 28 73 65 6c 66 2c 20 78 4b 65  essed (self, xKe
4e90: 79 45 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20  yEvent):.       
4ea0: 20 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 6b   pass..    def k
4eb0: 65 79 52 65 6c 65 61 73 65 64 20 28 73 65 6c 66  eyReleased (self
4ec0: 2c 20 78 4b 65 79 45 76 65 6e 74 29 3a 0a 20 20  , xKeyEvent):.  
4ed0: 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74        self.updat
4ee0: 65 47 65 6e 57 6f 72 64 73 28 29 0a 0a 20 20 20  eGenWords()..   
4ef0: 20 23 20 58 4a 6f 62 45 78 65 63 75 74 6f 72 0a   # XJobExecutor.
4f00: 20 20 20 20 64 65 66 20 74 72 69 67 67 65 72 20      def trigger 
4f10: 28 73 65 6c 66 2c 20 61 72 67 73 29 3a 0a 20 20  (self, args):.  
4f20: 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20        try:.     
4f30: 20 20 20 20 20 20 20 78 44 69 61 6c 6f 67 20 3d         xDialog =
4f40: 20 4c 65 78 69 63 6f 6e 45 64 69 74 6f 72 28 73   LexiconEditor(s
4f50: 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20  elf.ctx).       
4f60: 20 20 20 20 20 78 44 69 61 6c 6f 67 2e 72 75 6e       xDialog.run
4f70: 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70  ().        excep
4f80: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  t:.            t
4f90: 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65  raceback.print_e
4fa0: 78 63 28 29 0a 0a 20 20 20 20 23 20 43 6f 64 65  xc()..    # Code
4fb0: 0a 20 20 20 20 64 65 66 20 6c 61 75 6e 63 68 53  .    def launchS
4fc0: 65 61 72 63 68 57 6f 72 64 73 20 28 73 65 6c 66  earchWords (self
4fd0: 29 3a 0a 20 20 20 20 20 20 20 20 78 44 69 61 6c  ):.        xDial
4fe0: 6f 67 20 3d 20 53 65 61 72 63 68 57 6f 72 64 73  og = SearchWords
4ff0: 2e 53 65 61 72 63 68 57 6f 72 64 73 28 73 65 6c  .SearchWords(sel
5000: 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 78  f.ctx).        x
5010: 44 69 61 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e  Dialog.run(self.
5020: 73 4c 61 6e 67 29 0a 0a 20 20 20 20 64 65 66 20  sLang)..    def 
5030: 6c 61 75 6e 63 68 54 61 67 73 49 6e 66 6f 20 28  launchTagsInfo (
5040: 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 78  self):.        x
5050: 44 69 61 6c 6f 67 20 3d 20 54 61 67 73 49 6e 66  Dialog = TagsInf
5060: 6f 2e 54 61 67 73 49 6e 66 6f 28 73 65 6c 66 2e  o.TagsInfo(self.
5070: 63 74 78 29 0a 20 20 20 20 20 20 20 20 78 44 69  ctx).        xDi
5080: 61 6c 6f 67 2e 72 75 6e 28 73 65 6c 66 2e 73 4c  alog.run(self.sL
5090: 61 6e 67 29 0a 0a 20 20 20 20 23 40 5f 77 61 69  ang)..    #@_wai
50a0: 74 50 6f 69 6e 74 65 72 20 28 64 6f 6e e2 80 99  tPointer (don...
50b0: 74 3a 20 73 74 72 61 6e 67 65 20 62 65 68 61 76  t: strange behav
50c0: 69 6f 72 29 0a 20 20 20 20 64 65 66 20 6c 6f 61  ior).    def loa
50d0: 64 4c 65 78 69 63 6f 6e 20 28 73 65 6c 66 29 3a  dLexicon (self):
50e0: 0a 20 20 20 20 20 20 20 20 78 43 68 69 6c 64 20  .        xChild 
50f0: 3d 20 73 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e  = self.xSettingN
5100: 6f 64 65 2e 67 65 74 42 79 4e 61 6d 65 28 22 6f  ode.getByName("o
5110: 5f 66 72 22 29 0a 20 20 20 20 20 20 20 20 73 4a  _fr").        sJ
5120: 53 4f 4e 20 3d 20 78 43 68 69 6c 64 2e 67 65 74  SON = xChild.get
5130: 50 72 6f 70 65 72 74 79 56 61 6c 75 65 28 22 70  PropertyValue("p
5140: 65 72 73 6f 6e 61 6c 5f 64 69 63 22 29 0a 20 20  ersonal_dic").  
5150: 20 20 20 20 20 20 69 66 20 73 4a 53 4f 4e 20 21        if sJSON !
5160: 3d 20 22 22 3a 0a 20 20 20 20 20 20 20 20 20 20  = "":.          
5170: 20 20 6f 49 42 44 41 57 47 20 3d 20 69 62 64 61    oIBDAWG = ibda
5180: 77 67 2e 49 42 44 41 57 47 28 6a 73 6f 6e 2e 6c  wg.IBDAWG(json.l
5190: 6f 61 64 73 28 73 4a 53 4f 4e 29 29 0a 20 20 20  oads(sJSON)).   
51a0: 20 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61           xGridDa
51b0: 74 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78  taModel = self.x
51c0: 47 72 69 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69  GridModelLex.Gri
51d0: 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20  dDataModel.     
51e0: 20 20 20 20 20 20 20 66 6f 72 20 69 2c 20 61 45         for i, aE
51f0: 6e 74 72 79 20 69 6e 20 65 6e 75 6d 65 72 61 74  ntry in enumerat
5200: 65 28 6f 49 42 44 41 57 47 2e 73 65 6c 65 63 74  e(oIBDAWG.select
5210: 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ()):.           
5220: 20 20 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f       xGridDataMo
5230: 64 65 6c 2e 61 64 64 52 6f 77 28 69 2c 20 61 45  del.addRow(i, aE
5240: 6e 74 72 79 29 0a 20 20 20 20 20 20 20 20 20 20  ntry).          
5250: 20 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e 4c    self.xNumLex.L
5260: 61 62 65 6c 20 3d 20 73 74 72 28 69 29 0a 20 20  abel = str(i).  
5270: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78            self.x
5280: 4e 75 6d 44 69 63 2e 4c 61 62 65 6c 20 3d 20 73  NumDic.Label = s
5290: 74 72 28 69 29 0a 20 20 20 20 20 20 20 20 20 20  tr(i).          
52a0: 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69 63 2e    self.xDateDic.
52b0: 4c 61 62 65 6c 20 3d 20 6f 49 42 44 41 57 47 2e  Label = oIBDAWG.
52c0: 73 44 61 74 65 0a 0a 20 20 20 20 40 5f 77 61 69  sDate..    @_wai
52d0: 74 50 6f 69 6e 74 65 72 0a 20 20 20 20 64 65 66  tPointer.    def
52e0: 20 73 61 76 65 4c 65 78 69 63 6f 6e 20 28 73 65   saveLexicon (se
52f0: 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 78 47 72  lf):.        xGr
5300: 69 64 44 61 74 61 4d 6f 64 65 6c 20 3d 20 73 65  idDataModel = se
5310: 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4c 65 78  lf.xGridModelLex
5320: 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20  .GridDataModel. 
5330: 20 20 20 20 20 20 20 6c 45 6e 74 72 79 20 3d 20         lEntry = 
5340: 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69  [].        for i
5350: 20 69 6e 20 72 61 6e 67 65 28 78 47 72 69 64 44   in range(xGridD
5360: 61 74 61 4d 6f 64 65 6c 2e 52 6f 77 43 6f 75 6e  ataModel.RowCoun
5370: 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  t):.            
5380: 6c 45 6e 74 72 79 2e 61 70 70 65 6e 64 28 78 47  lEntry.append(xG
5390: 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 67 65 74  ridDataModel.get
53a0: 52 6f 77 44 61 74 61 28 69 29 29 0a 20 20 20 20  RowData(i)).    
53b0: 20 20 20 20 78 43 68 69 6c 64 20 3d 20 73 65 6c      xChild = sel
53c0: 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64 65 2e 67  f.xSettingNode.g
53d0: 65 74 42 79 4e 61 6d 65 28 22 6f 5f 66 72 22 29  etByName("o_fr")
53e0: 0a 20 20 20 20 20 20 20 20 69 66 20 6c 45 6e 74  .        if lEnt
53f0: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
5400: 6f 44 41 57 47 20 3d 20 64 61 77 67 2e 44 41 57  oDAWG = dawg.DAW
5410: 47 28 6c 45 6e 74 72 79 2c 20 22 53 22 2c 20 22  G(lEntry, "S", "
5420: 66 72 22 2c 20 22 46 72 61 6e c3 a7 61 69 73 22  fr", "Fran..ais"
5430: 2c 20 22 44 69 63 74 69 6f 6e 6e 61 69 72 65 20  , "Dictionnaire 
5440: 70 65 72 73 6f 6e 6e 65 6c 22 29 0a 20 20 20 20  personnel").    
5450: 20 20 20 20 20 20 20 20 6f 4a 53 4f 4e 20 3d 20          oJSON = 
5460: 6f 44 41 57 47 2e 67 65 74 42 69 6e 61 72 79 41  oDAWG.getBinaryA
5470: 73 4a 53 4f 4e 28 29 0a 20 20 20 20 20 20 20 20  sJSON().        
5480: 20 20 20 20 78 43 68 69 6c 64 2e 73 65 74 50 72      xChild.setPr
5490: 6f 70 65 72 74 79 56 61 6c 75 65 28 22 70 65 72  opertyValue("per
54a0: 73 6f 6e 61 6c 5f 64 69 63 22 2c 20 6a 73 6f 6e  sonal_dic", json
54b0: 2e 64 75 6d 70 73 28 6f 4a 53 4f 4e 2c 20 65 6e  .dumps(oJSON, en
54c0: 73 75 72 65 5f 61 73 63 69 69 3d 46 61 6c 73 65  sure_ascii=False
54d0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  )).            s
54e0: 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64 65  elf.xSettingNode
54f0: 2e 63 6f 6d 6d 69 74 43 68 61 6e 67 65 73 28 29  .commitChanges()
5500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c  .            sel
5510: 66 2e 78 4e 75 6d 44 69 63 2e 4c 61 62 65 6c 20  f.xNumDic.Label 
5520: 3d 20 73 74 72 28 6f 4a 53 4f 4e 5b 22 6e 45 6e  = str(oJSON["nEn
5530: 74 72 79 22 5d 29 0a 20 20 20 20 20 20 20 20 20  try"]).         
5540: 20 20 20 73 65 6c 66 2e 78 44 61 74 65 44 69 63     self.xDateDic
5550: 2e 4c 61 62 65 6c 20 3d 20 6f 4a 53 4f 4e 5b 22  .Label = oJSON["
5560: 73 44 61 74 65 22 5d 0a 20 20 20 20 20 20 20 20  sDate"].        
5570: 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20  else:.          
5580: 20 20 78 43 68 69 6c 64 2e 73 65 74 50 72 6f 70    xChild.setProp
5590: 65 72 74 79 56 61 6c 75 65 28 22 70 65 72 73 6f  ertyValue("perso
55a0: 6e 61 6c 5f 64 69 63 22 2c 20 22 22 29 0a 20 20  nal_dic", "").  
55b0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78            self.x
55c0: 53 65 74 74 69 6e 67 4e 6f 64 65 2e 63 6f 6d 6d  SettingNode.comm
55d0: 69 74 43 68 61 6e 67 65 73 28 29 0a 20 20 20 20  itChanges().    
55e0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 75          self.xNu
55f0: 6d 44 69 63 2e 4c 61 62 65 6c 20 3d 20 22 30 22  mDic.Label = "0"
5600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c  .            sel
5610: 66 2e 78 44 61 74 65 44 69 63 2e 4c 61 62 65 6c  f.xDateDic.Label
5620: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
5630: 22 76 6f 69 64 22 2c 20 22 23 65 72 72 22 29 0a  "void", "#err").
5640: 0a 20 20 20 20 64 65 66 20 5f 67 65 74 52 61 64  .    def _getRad
5650: 69 6f 56 61 6c 75 65 20 28 73 65 6c 66 2c 20 2a  ioValue (self, *
5660: 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 66  args):.        f
5670: 6f 72 20 78 20 69 6e 20 61 72 67 73 3a 0a 20 20  or x in args:.  
5680: 20 20 20 20 20 20 20 20 20 20 69 66 20 78 2e 53            if x.S
5690: 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20  tate:.          
56a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 2e 48        return x.H
56b0: 65 6c 70 54 65 78 74 0a 20 20 20 20 20 20 20 20  elpText.        
56c0: 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20 20 20  return None..   
56d0: 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20   @_waitPointer. 
56e0: 20 20 20 64 65 66 20 75 70 64 61 74 65 47 65 6e     def updateGen
56f0: 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a 20 20  Words (self):.  
5700: 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65        self.lGene
5710: 72 61 74 65 64 46 6c 65 78 20 3d 20 5b 5d 0a 20  ratedFlex = []. 
5720: 20 20 20 20 20 20 20 73 65 6c 66 2e 73 4c 65 6d         self.sLem
5730: 6d 61 20 3d 20 73 65 6c 66 2e 78 4c 65 6d 6d 61  ma = self.xLemma
5740: 2e 54 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20  .Text.strip().  
5750: 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 73 4c        if self.sL
5760: 65 6d 6d 61 3a 0a 20 20 20 20 20 20 20 20 20 20  emma:.          
5770: 20 20 69 66 20 73 65 6c 66 2e 5f 67 65 74 52 61    if self._getRa
5780: 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4e  dioValue(self.xN
5790: 41 2c 20 73 65 6c 66 2e 78 4e 2c 20 73 65 6c 66  A, self.xN, self
57a0: 2e 78 41 29 3a 0a 20 20 20 20 20 20 20 20 20 20  .xA):.          
57b0: 20 20 20 20 20 20 23 20 53 75 62 73 74 61 6e 74        # Substant
57c0: 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  if.             
57d0: 20 20 20 73 50 4f 53 20 3d 20 73 65 6c 66 2e 5f     sPOS = self._
57e0: 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28 73 65  getRadioValue(se
57f0: 6c 66 2e 78 4e 41 2c 20 73 65 6c 66 2e 78 4e 2c  lf.xNA, self.xN,
5800: 20 73 65 6c 66 2e 78 41 29 0a 20 20 20 20 20 20   self.xA).      
5810: 20 20 20 20 20 20 20 20 20 20 73 47 65 6e 64 65            sGende
5820: 72 54 61 67 20 3d 20 73 65 6c 66 2e 5f 67 65 74  rTag = self._get
5830: 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e  RadioValue(self.
5840: 78 53 65 70 69 2c 20 73 65 6c 66 2e 78 53 6d 61  xSepi, self.xSma
5850: 73 2c 20 73 65 6c 66 2e 78 53 66 65 6d 29 0a 20  s, self.xSfem). 
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5870: 66 20 73 47 65 6e 64 65 72 54 61 67 3a 0a 20 20  f sGenderTag:.  
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 20 69 66 20 73 65 6c 66 2e 78 53 73 2e 53 74    if self.xSs.St
58a0: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
58b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
58c0: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
58d0: 2e 61 70 70 65 6e 64 28 28 73 65 6c 66 2e 73 4c  .append((self.sL
58e0: 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47 65 6e 64  emma, sPOS+sGend
58f0: 65 72 54 61 67 2b 22 3a 73 2f 2a 22 29 29 0a 20  erTag+":s/*")). 
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e         self.lGen
5920: 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e  eratedFlex.appen
5930: 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2b 22  d((self.sLemma+"
5940: 73 22 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65 72  s", sPOS+sGender
5950: 54 61 67 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20  Tag+":p/*")).   
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5970: 20 65 6c 69 66 20 73 65 6c 66 2e 78 53 78 2e 53   elif self.xSx.S
5980: 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20  tate:.          
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
59a0: 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65  lf.lGeneratedFle
59b0: 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66 2e 73  x.append((self.s
59c0: 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47 65 6e  Lemma, sPOS+sGen
59d0: 64 65 72 54 61 67 2b 22 3a 73 2f 2a 22 29 29 0a  derTag+":s/*")).
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59f0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
5a00: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
5a10: 6e 64 28 28 73 65 6c 66 2e 73 4c 65 6d 6d 61 2b  nd((self.sLemma+
5a20: 22 78 22 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65  "x", sPOS+sGende
5a30: 72 54 61 67 2b 22 3a 70 2f 2a 22 29 29 0a 20 20  rTag+":p/*")).  
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 53 69 6e    elif self.xSin
5a60: 76 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20 20  v.State:.       
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a80: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
5a90: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c  Flex.append((sel
5aa0: 66 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73  f.sLemma, sPOS+s
5ab0: 47 65 6e 64 65 72 54 61 67 2b 22 3a 69 2f 2a 22  GenderTag+":i/*"
5ac0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
5ad0: 20 20 20 20 20 20 20 73 4c 65 6d 6d 61 32 20 3d         sLemma2 =
5ae0: 20 73 65 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61 2e   self.xAltLemma.
5af0: 54 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20  Text.strip().   
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b10: 20 69 66 20 73 4c 65 6d 6d 61 32 20 61 6e 64 20   if sLemma2 and 
5b20: 73 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61  self._getRadioVa
5b30: 6c 75 65 28 73 65 6c 66 2e 78 4e 41 32 2c 20 73  lue(self.xNA2, s
5b40: 65 6c 66 2e 78 4e 32 2c 20 73 65 6c 66 2e 78 41  elf.xN2, self.xA
5b50: 32 29 20 61 6e 64 20 73 65 6c 66 2e 5f 67 65 74  2) and self._get
5b60: 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e  RadioValue(self.
5b70: 78 53 65 70 69 32 2c 20 73 65 6c 66 2e 78 53 6d  xSepi2, self.xSm
5b80: 61 73 32 2c 20 73 65 6c 66 2e 78 53 66 65 6d 32  as2, self.xSfem2
5b90: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ):.             
5ba0: 20 20 20 20 20 20 20 20 20 20 20 73 54 61 67 32             sTag2
5bb0: 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52 61 64 69   = self._getRadi
5bc0: 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4e 41 32  oValue(self.xNA2
5bd0: 2c 20 73 65 6c 66 2e 78 4e 32 2c 20 73 65 6c 66  , self.xN2, self
5be0: 2e 78 41 32 29 20 2b 20 73 65 6c 66 2e 5f 67 65  .xA2) + self._ge
5bf0: 74 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66  tRadioValue(self
5c00: 2e 78 53 65 70 69 32 2c 20 73 65 6c 66 2e 78 53  .xSepi2, self.xS
5c10: 6d 61 73 32 2c 20 73 65 6c 66 2e 78 53 66 65 6d  mas2, self.xSfem
5c20: 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  2).             
5c30: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65             if se
5c40: 6c 66 2e 78 53 73 32 2e 53 74 61 74 65 3a 0a 20  lf.xSs2.State:. 
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
5c70: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
5c80: 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2c 20  ppend((sLemma2, 
5c90: 73 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29 0a 20  sTag2+":s/*")). 
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cb0: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
5cc0: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
5cd0: 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2b 22  ppend((sLemma2+"
5ce0: 73 22 2c 20 73 54 61 67 32 2b 22 3a 70 2f 2a 22  s", sTag2+":p/*"
5cf0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
5d00: 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20             elif 
5d10: 73 65 6c 66 2e 78 53 78 32 2e 53 74 61 74 65 3a  self.xSx2.State:
5d20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
5d40: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
5d50: 2e 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32  .append((sLemma2
5d60: 2c 20 73 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29  , sTag2+":s/*"))
5d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
5d90: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
5da0: 2e 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32  .append((sLemma2
5db0: 2b 22 78 22 2c 20 73 54 61 67 32 2b 22 3a 70 2f  +"x", sTag2+":p/
5dc0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69               eli
5de0: 66 20 73 65 6c 66 2e 78 53 69 6e 76 32 2e 53 74  f self.xSinv2.St
5df0: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
5e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e10: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
5e20: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c 65  Flex.append((sLe
5e30: 6d 6d 61 32 2c 20 73 54 61 67 32 2b 22 3a 69 2f  mma2, sTag2+":i/
5e40: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
5e50: 20 65 6c 69 66 20 73 65 6c 66 2e 5f 67 65 74 52   elif self._getR
5e60: 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78  adioValue(self.x
5e70: 4d 31 2c 20 73 65 6c 66 2e 78 4d 32 2c 20 73 65  M1, self.xM2, se
5e80: 6c 66 2e 78 4d 50 29 3a 0a 20 20 20 20 20 20 20  lf.xMP):.       
5e90: 20 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 20 70           # Nom p
5ea0: 72 6f 70 72 65 0a 20 20 20 20 20 20 20 20 20 20  ropre.          
5eb0: 20 20 20 20 20 20 73 50 4f 53 20 3d 20 73 65 6c        sPOS = sel
5ec0: 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65  f._getRadioValue
5ed0: 28 73 65 6c 66 2e 78 4d 31 2c 20 73 65 6c 66 2e  (self.xM1, self.
5ee0: 78 4d 32 2c 20 73 65 6c 66 2e 78 4d 50 29 0a 20  xM2, self.xMP). 
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5f00: 65 6c 66 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c  elf.sLemma = sel
5f10: 66 2e 73 4c 65 6d 6d 61 5b 30 3a 31 5d 2e 75 70  f.sLemma[0:1].up
5f20: 70 65 72 28 29 20 2b 20 73 65 6c 66 2e 73 4c 65  per() + self.sLe
5f30: 6d 6d 61 5b 31 3a 5d 3b 0a 20 20 20 20 20 20 20  mma[1:];.       
5f40: 20 20 20 20 20 20 20 20 20 73 47 65 6e 64 65 72           sGender
5f50: 54 61 67 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52  Tag = self._getR
5f60: 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78  adioValue(self.x
5f70: 4d 65 70 69 2c 20 73 65 6c 66 2e 78 4d 6d 61 73  Mepi, self.xMmas
5f80: 2c 20 73 65 6c 66 2e 78 4d 66 65 6d 29 0a 20 20  , self.xMfem).  
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5fa0: 20 73 47 65 6e 64 65 72 54 61 67 3a 0a 20 20 20   sGenderTag:.   
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fc0: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
5fd0: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c  Flex.append((sel
5fe0: 66 2e 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73  f.sLemma, sPOS+s
5ff0: 47 65 6e 64 65 72 54 61 67 2b 22 3a 69 2f 2a 22  GenderTag+":i/*"
6000: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  )).            e
6010: 6c 69 66 20 73 65 6c 66 2e 78 56 2e 53 74 61 74  lif self.xV.Stat
6020: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e:.             
6030: 20 20 20 23 20 56 65 72 62 65 0a 20 20 20 20 20     # Verbe.     
6040: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65             if se
6050: 6c 66 2e 73 4c 65 6d 6d 61 2e 65 6e 64 73 77 69  lf.sLemma.endswi
6060: 74 68 28 28 22 65 72 22 2c 20 22 69 72 22 2c 20  th(("er", "ir", 
6070: 22 72 65 22 29 29 3a 0a 20 20 20 20 20 20 20 20  "re")):.        
6080: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
6090: 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c 66 2e 73  .sLemma = self.s
60a0: 4c 65 6d 6d 61 2e 6c 6f 77 65 72 28 29 0a 20 20  Lemma.lower().  
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 63 5f 69 20 3d 20 22 69 22 20 20 69 66 20    c_i = "i"  if 
60d0: 73 65 6c 66 2e 78 56 5f 69 2e 53 74 61 74 65 20  self.xV_i.State 
60e0: 20 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20   else "_".      
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f                c_
6100: 74 20 3d 20 22 74 22 20 20 69 66 20 73 65 6c 66  t = "t"  if self
6110: 2e 78 56 5f 74 2e 53 74 61 74 65 20 20 65 6c 73  .xV_t.State  els
6120: 65 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20  e "_".          
6130: 20 20 20 20 20 20 20 20 20 20 63 5f 6e 20 3d 20            c_n = 
6140: 22 6e 22 20 20 69 66 20 73 65 6c 66 2e 78 56 5f  "n"  if self.xV_
6150: 6e 2e 53 74 61 74 65 20 20 65 6c 73 65 20 22 5f  n.State  else "_
6160: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
6170: 20 20 20 20 20 20 63 5f 70 20 3d 20 22 70 22 20        c_p = "p" 
6180: 20 69 66 20 73 65 6c 66 2e 78 56 5f 70 2e 53 74   if self.xV_p.St
6190: 61 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20  ate  else "_".  
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61b0: 20 20 63 5f 6d 20 3d 20 22 6d 22 20 20 69 66 20    c_m = "m"  if 
61c0: 73 65 6c 66 2e 78 56 5f 6d 2e 53 74 61 74 65 20  self.xV_m.State 
61d0: 20 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20   else "_".      
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f                c_
61f0: 61 65 20 3d 20 22 65 22 20 20 69 66 20 73 65 6c  ae = "e"  if sel
6200: 66 2e 78 56 5f 61 65 2e 53 74 61 74 65 20 20 65  f.xV_ae.State  e
6210: 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20 20 20  lse "_".        
6220: 20 20 20 20 20 20 20 20 20 20 20 20 63 5f 61 61              c_aa
6230: 20 3d 20 22 61 22 20 20 69 66 20 73 65 6c 66 2e   = "a"  if self.
6240: 78 56 5f 61 61 2e 53 74 61 74 65 20 20 65 6c 73  xV_aa.State  els
6250: 65 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20  e "_".          
6260: 20 20 20 20 20 20 20 20 20 20 73 56 65 72 62 54            sVerbT
6270: 61 67 20 3d 20 63 5f 69 20 2b 20 63 5f 74 20 2b  ag = c_i + c_t +
6280: 20 63 5f 6e 20 2b 20 63 5f 70 20 2b 20 63 5f 6d   c_n + c_p + c_m
6290: 20 2b 20 63 5f 61 65 20 2b 20 63 5f 61 61 0a 20   + c_ae + c_aa. 
62a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62b0: 20 20 20 69 66 20 6e 6f 74 20 73 56 65 72 62 54     if not sVerbT
62c0: 61 67 2e 65 6e 64 73 77 69 74 68 28 22 5f 5f 22  ag.endswith("__"
62d0: 29 20 61 6e 64 20 6e 6f 74 20 73 56 65 72 62 54  ) and not sVerbT
62e0: 61 67 2e 73 74 61 72 74 73 77 69 74 68 28 22 5f  ag.startswith("_
62f0: 5f 5f 5f 22 29 3a 0a 20 20 20 20 20 20 20 20 20  ___"):.         
6300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6310: 56 65 72 62 50 61 74 74 65 72 6e 20 3d 20 73 65  VerbPattern = se
6320: 6c 66 2e 78 56 70 61 74 74 65 72 6e 2e 54 65 78  lf.xVpattern.Tex
6330: 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20  t.strip().      
6340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6350: 20 20 69 66 20 6e 6f 74 20 73 56 65 72 62 50 61    if not sVerbPa
6360: 74 74 65 72 6e 3a 0a 20 20 20 20 20 20 20 20 20  ttern:.         
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 20 20 23 20 55 74 69 6c 69 73 61 74 69 6f 6e     # Utilisation
6390: 20 64 75 20 67 c3 a9 6e c3 a9 72 61 74 65 75 72   du g..n..rateur
63a0: 20 64 65 20 63 6f 6e 6a 75 67 61 69 73 6f 6e 0a   de conjugaison.
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
63d0: 73 46 6c 65 78 69 6f 6e 2c 20 73 46 6c 65 78 54  sFlexion, sFlexT
63e0: 61 67 73 20 69 6e 20 63 6f 6e 6a 67 65 6e 2e 63  ags in conjgen.c
63f0: 6f 6e 6a 75 67 61 74 65 28 73 65 6c 66 2e 73 4c  onjugate(self.sL
6400: 65 6d 6d 61 2c 20 73 56 65 72 62 54 61 67 2c 20  emma, sVerbTag, 
6410: 6e 6f 74 20 62 6f 6f 6c 28 73 65 6c 66 2e 78 56  not bool(self.xV
6420: 5f 70 70 2e 53 74 61 74 65 29 29 3a 0a 20 20 20  _pp.State)):.   
6430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6440: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
6450: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
6460: 2e 61 70 70 65 6e 64 28 28 73 46 6c 65 78 69 6f  .append((sFlexio
6470: 6e 2c 20 73 46 6c 65 78 54 61 67 73 29 29 0a 20  n, sFlexTags)). 
6480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6490: 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20         else:.   
64a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64b0: 20 20 20 20 20 20 20 20 20 23 20 63 6f 70 69 65           # copie
64c0: 20 64 75 20 6d 6f 74 69 66 20 64 e2 80 99 75 6e   du motif d...un
64d0: 20 61 75 74 72 65 20 76 65 72 62 65 20 3a 20 75   autre verbe : u
64e0: 74 69 6c 69 73 61 74 69 6f 6e 20 64 75 20 63 6f  tilisation du co
64f0: 6e 6a 75 67 75 65 75 72 0a 20 20 20 20 20 20 20  njugueur.       
6500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6510: 20 20 20 20 20 69 66 20 63 6f 6e 6a 2e 69 73 56       if conj.isV
6520: 65 72 62 28 73 56 65 72 62 50 61 74 74 65 72 6e  erb(sVerbPattern
6530: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ):.             
6540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6550: 20 20 20 6f 56 65 72 62 20 3d 20 63 6f 6e 6a 2e     oVerb = conj.
6560: 56 65 72 62 28 73 65 6c 66 2e 73 4c 65 6d 6d 61  Verb(self.sLemma
6570: 2c 20 73 56 65 72 62 50 61 74 74 65 72 6e 29 0a  , sVerbPattern).
6580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65a0: 66 6f 72 20 73 54 61 67 31 2c 20 64 46 6c 65 78  for sTag1, dFlex
65b0: 20 69 6e 20 6f 56 65 72 62 2e 64 43 6f 6e 6a 2e   in oVerb.dConj.
65c0: 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20  items():.       
65d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
65f0: 73 54 61 67 31 20 21 3d 20 22 3a 51 22 3a 0a 20  sTag1 != ":Q":. 
6600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6620: 20 20 20 20 20 20 20 66 6f 72 20 73 54 61 67 32         for sTag2
6630: 2c 20 73 43 6f 6e 6a 20 69 6e 20 64 46 6c 65 78  , sConj in dFlex
6640: 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20  .items():.      
6650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6670: 20 20 20 20 20 20 69 66 20 73 54 61 67 32 2e 73        if sTag2.s
6680: 74 61 72 74 73 77 69 74 68 28 22 3a 22 29 20 61  tartswith(":") a
6690: 6e 64 20 73 43 6f 6e 6a 3a 0a 20 20 20 20 20 20  nd sConj:.      
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66c0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c            self.l
66d0: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70  GeneratedFlex.ap
66e0: 70 65 6e 64 28 28 73 43 6f 6e 6a 2c 20 22 3a 56  pend((sConj, ":V
66f0: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
6700: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
6710: 67 20 2b 20 73 54 61 67 31 20 2b 20 73 54 61 67  g + sTag1 + sTag
6720: 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  2)).            
6730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6740: 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20          else:.  
6750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6770: 20 20 20 20 20 20 23 20 70 61 72 74 69 63 69 70        # particip
6780: 65 73 20 70 61 73 73 c3 a9 73 0a 20 20 20 20 20  es pass..s.     
6790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67b0: 20 20 20 69 66 20 64 46 6c 65 78 5b 22 3a 51 33     if dFlex[":Q3
67c0: 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  "]:.            
67d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
67f0: 69 66 20 64 46 6c 65 78 5b 22 3a 51 32 22 5d 3a  if dFlex[":Q2"]:
6800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6830: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
6840: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c  Flex.append((dFl
6850: 65 78 5b 22 3a 51 31 22 5d 2c 20 22 3a 56 22 20  ex[":Q1"], ":V" 
6860: 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b  + oVerb.cGroup +
6870: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
6880: 2b 20 22 3a 51 3a 41 3a 6d 3a 73 2f 2a 22 29 29  + ":Q:A:m:s/*"))
6890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
68a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68c0: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
68d0: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c  Flex.append((dFl
68e0: 65 78 5b 22 3a 51 32 22 5d 2c 20 22 3a 56 22 20  ex[":Q2"], ":V" 
68f0: 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b  + oVerb.cGroup +
6900: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
6910: 2b 20 22 3a 51 3a 41 3a 6d 3a 70 2f 2a 22 29 29  + ":Q:A:m:p/*"))
6920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
6950: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e:.             
6960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74     self.lGenerat
6990: 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64  edFlex.append((d
69a0: 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 22 3a 56  Flex[":Q1"], ":V
69b0: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
69c0: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
69d0: 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 69 2f 2a 22  g + ":Q:A:m:i/*"
69e0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
69f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
6a10: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
6a20: 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78  ex.append((dFlex
6a30: 5b 22 3a 51 33 22 5d 2c 20 22 3a 56 22 20 2b 20  [":Q3"], ":V" + 
6a40: 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22  oVerb.cGroup + "
6a50: 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20  _" + sVerbTag + 
6a60: 22 3a 51 3a 41 3a 66 3a 73 2f 2a 22 29 29 0a 20  ":Q:A:f:s/*")). 
6a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a90: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
6aa0: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
6ab0: 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51  ppend((dFlex[":Q
6ac0: 34 22 5d 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  4"], ":V" + oVer
6ad0: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
6ae0: 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a   sVerbTag + ":Q:
6af0: 41 3a 66 3a 70 2f 2a 22 29 29 0a 20 20 20 20 20  A:f:p/*")).     
6b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b20: 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20     else:.       
6b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b50: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
6b60: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
6b70: 28 64 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 22  (dFlex[":Q1"], "
6b80: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
6b90: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
6ba0: 54 61 67 20 2b 20 22 3a 51 3a 65 3a 69 2f 2a 22  Tag + ":Q:e:i/*"
6bb0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  )).            e
6bc0: 6c 69 66 20 73 65 6c 66 2e 78 57 2e 53 74 61 74  lif self.xW.Stat
6bd0: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e:.             
6be0: 20 20 20 23 20 41 64 76 65 72 62 65 0a 20 20 20     # Adverbe.   
6bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
6c00: 66 2e 73 4c 65 6d 6d 61 20 3d 20 73 65 6c 66 2e  f.sLemma = self.
6c10: 73 4c 65 6d 6d 61 2e 6c 6f 77 65 72 28 29 3b 0a  sLemma.lower();.
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c30: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
6c40: 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 65 6c 66  lex.append((self
6c50: 2e 73 4c 65 6d 6d 61 2c 20 22 3a 57 2f 2a 22 29  .sLemma, ":W/*")
6c60: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ).            el
6c70: 69 66 20 73 65 6c 66 2e 78 58 2e 53 74 61 74 65  if self.xX.State
6c80: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
6c90: 20 20 23 20 41 75 74 72 65 0a 20 20 20 20 20 20    # Autre.      
6ca0: 20 20 20 20 20 20 20 20 20 20 73 46 6c 65 78 69            sFlexi
6cb0: 6f 6e 20 3d 20 73 65 6c 66 2e 78 46 6c 65 78 69  on = self.xFlexi
6cc0: 6f 6e 2e 54 65 78 74 2e 73 74 72 69 70 28 29 0a  on.Text.strip().
6cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ce0: 73 54 61 67 73 20 3d 20 73 65 6c 66 2e 78 54 61  sTags = self.xTa
6cf0: 67 73 2e 54 65 78 74 2e 73 74 72 69 70 28 29 0a  gs.Text.strip().
6d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d10: 69 66 20 73 46 6c 65 78 69 6f 6e 20 61 6e 64 20  if sFlexion and 
6d20: 73 54 61 67 73 2e 73 74 61 72 74 73 77 69 74 68  sTags.startswith
6d30: 28 22 3a 22 29 3a 0a 20 20 20 20 20 20 20 20 20  (":"):.         
6d40: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
6d50: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
6d60: 70 70 65 6e 64 28 28 73 46 6c 65 78 69 6f 6e 2c  ppend((sFlexion,
6d70: 20 73 54 61 67 73 29 29 0a 20 20 20 20 20 20 20   sTags)).       
6d80: 20 73 65 6c 66 2e 5f 73 68 6f 77 47 65 6e 57 6f   self._showGenWo
6d90: 72 64 73 28 29 0a 0a 20 20 20 20 64 65 66 20 5f  rds()..    def _
6da0: 73 68 6f 77 47 65 6e 57 6f 72 64 73 20 28 73 65  showGenWords (se
6db0: 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 78 47 72  lf):.        xGr
6dc0: 69 64 44 61 74 61 4d 6f 64 65 6c 20 3d 20 73 65  idDataModel = se
6dd0: 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77  lf.xGridModelNew
6de0: 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20  .GridDataModel. 
6df0: 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74 61         xGridData
6e00: 4d 6f 64 65 6c 2e 72 65 6d 6f 76 65 41 6c 6c 52  Model.removeAllR
6e10: 6f 77 73 28 29 0a 20 20 20 20 20 20 20 20 69 66  ows().        if
6e20: 20 6e 6f 74 20 73 65 6c 66 2e 6c 47 65 6e 65 72   not self.lGener
6e30: 61 74 65 64 46 6c 65 78 3a 0a 20 20 20 20 20 20  atedFlex:.      
6e40: 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64 2e        self.xAdd.
6e50: 45 6e 61 62 6c 65 64 20 3d 20 46 61 6c 73 65 0a  Enabled = False.
6e60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6e70: 72 6e 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69  rn.        for i
6e80: 2c 20 28 73 46 6c 65 78 69 6f 6e 2c 20 73 54 61  , (sFlexion, sTa
6e90: 67 29 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28  g) in enumerate(
6ea0: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
6eb0: 6c 65 78 29 3a 0a 20 20 20 20 20 20 20 20 20 20  lex):.          
6ec0: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
6ed0: 2e 61 64 64 52 6f 77 28 69 2c 20 28 73 46 6c 65  .addRow(i, (sFle
6ee0: 78 69 6f 6e 2c 20 73 54 61 67 29 29 0a 20 20 20  xion, sTag)).   
6ef0: 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64 2e 45       self.xAdd.E
6f00: 6e 61 62 6c 65 64 20 3d 20 54 72 75 65 0a 0a 20  nabled = True.. 
6f10: 20 20 20 64 65 66 20 5f 72 65 73 65 74 57 69 64     def _resetWid
6f20: 67 65 74 73 20 28 73 65 6c 66 29 3a 0a 20 20 20  gets (self):.   
6f30: 20 20 20 20 20 73 65 6c 66 2e 78 4c 65 6d 6d 61       self.xLemma
6f40: 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20 20 20  .Text = "".     
6f50: 20 20 20 73 65 6c 66 2e 78 4e 41 2e 53 74 61 74     self.xNA.Stat
6f60: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
6f70: 20 20 73 65 6c 66 2e 78 4e 2e 53 74 61 74 65 20    self.xN.State 
6f80: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
6f90: 73 65 6c 66 2e 78 41 2e 53 74 61 74 65 20 3d 20  self.xA.State = 
6fa0: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
6fb0: 6c 66 2e 78 4d 31 2e 53 74 61 74 65 20 3d 20 46  lf.xM1.State = F
6fc0: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c  alse.        sel
6fd0: 66 2e 78 4d 32 2e 53 74 61 74 65 20 3d 20 46 61  f.xM2.State = Fa
6fe0: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6ff0: 2e 78 4d 50 2e 53 74 61 74 65 20 3d 20 46 61 6c  .xMP.State = Fal
7000: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
7010: 78 56 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  xV.State = False
7020: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 57  .        self.xW
7030: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
7040: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 58 2e 53         self.xX.S
7050: 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20  tate = False.   
7060: 20 20 20 20 20 73 65 6c 66 2e 78 53 65 70 69 2e       self.xSepi.
7070: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
7080: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 6d 61 73        self.xSmas
7090: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
70a0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 66 65         self.xSfe
70b0: 6d 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  m.State = False.
70c0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 73          self.xSs
70d0: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
70e0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 78 2e         self.xSx.
70f0: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
7100: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69 6e 76        self.xSinv
7110: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
7120: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 6c 74         self.xAlt
7130: 4c 65 6d 6d 61 2e 54 65 78 74 20 3d 20 22 22 0a  Lemma.Text = "".
7140: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 41          self.xNA
7150: 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  2.State = False.
7160: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 32          self.xN2
7170: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
7180: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 32 2e         self.xA2.
7190: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
71a0: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 65 70 69        self.xSepi
71b0: 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  2.State = False.
71c0: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 6d          self.xSm
71d0: 61 73 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  as2.State = Fals
71e0: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
71f0: 53 66 65 6d 32 2e 53 74 61 74 65 20 3d 20 46 61  Sfem2.State = Fa
7200: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
7210: 2e 78 53 73 32 2e 53 74 61 74 65 20 3d 20 46 61  .xSs2.State = Fa
7220: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
7230: 2e 78 53 78 32 2e 53 74 61 74 65 20 3d 20 46 61  .xSx2.State = Fa
7240: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
7250: 2e 78 53 69 6e 76 32 2e 53 74 61 74 65 20 3d 20  .xSinv2.State = 
7260: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
7270: 6c 66 2e 78 4d 65 70 69 2e 53 74 61 74 65 20 3d  lf.xMepi.State =
7280: 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73   False.        s
7290: 65 6c 66 2e 78 4d 6d 61 73 2e 53 74 61 74 65 20  elf.xMmas.State 
72a0: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
72b0: 73 65 6c 66 2e 78 4d 66 65 6d 2e 53 74 61 74 65  self.xMfem.State
72c0: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
72d0: 20 73 65 6c 66 2e 78 56 5f 69 2e 53 74 61 74 65   self.xV_i.State
72e0: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
72f0: 20 73 65 6c 66 2e 78 56 5f 74 2e 53 74 61 74 65   self.xV_t.State
7300: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
7310: 20 73 65 6c 66 2e 78 56 5f 6e 2e 53 74 61 74 65   self.xV_n.State
7320: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
7330: 20 73 65 6c 66 2e 78 56 5f 70 2e 53 74 61 74 65   self.xV_p.State
7340: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
7350: 20 73 65 6c 66 2e 78 56 5f 6d 2e 53 74 61 74 65   self.xV_m.State
7360: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
7370: 20 73 65 6c 66 2e 78 56 5f 61 65 2e 53 74 61 74   self.xV_ae.Stat
7380: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
7390: 20 20 73 65 6c 66 2e 78 56 5f 61 61 2e 53 74 61    self.xV_aa.Sta
73a0: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
73b0: 20 20 20 73 65 6c 66 2e 78 56 5f 70 70 2e 53 74     self.xV_pp.St
73c0: 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20  ate = False.    
73d0: 20 20 20 20 73 65 6c 66 2e 78 56 70 61 74 74 65      self.xVpatte
73e0: 72 6e 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20  rn.Text = "".   
73f0: 20 20 20 20 20 73 65 6c 66 2e 78 46 6c 65 78 69       self.xFlexi
7400: 6f 6e 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20  on.Text = "".   
7410: 20 20 20 20 20 73 65 6c 66 2e 78 54 61 67 73 2e       self.xTags.
7420: 54 65 78 74 20 3d 20 22 22 0a 20 20 20 20 20 20  Text = "".      
7430: 20 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65    self.xGridMode
7440: 6c 4e 65 77 2e 47 72 69 64 44 61 74 61 4d 6f 64  lNew.GridDataMod
7450: 65 6c 2e 72 65 6d 6f 76 65 41 6c 6c 52 6f 77 73  el.removeAllRows
7460: 28 29 0a 0a 20 20 20 20 40 5f 77 61 69 74 50 6f  ()..    @_waitPo
7470: 69 6e 74 65 72 0a 20 20 20 20 64 65 66 20 61 64  inter.    def ad
7480: 64 54 6f 4c 65 78 69 63 6f 6e 20 28 73 65 6c 66  dToLexicon (self
7490: 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  ):.        self.
74a0: 78 41 64 64 2e 45 6e 61 62 6c 65 64 20 3d 20 46  xAdd.Enabled = F
74b0: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 78 47 72  alse.        xGr
74c0: 69 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77 20 3d  idDataModelNew =
74d0: 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c   self.xGridModel
74e0: 4e 65 77 2e 47 72 69 64 44 61 74 61 4d 6f 64 65  New.GridDataMode
74f0: 6c 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 44  l.        xGridD
7500: 61 74 61 4d 6f 64 65 6c 4c 65 78 20 3d 20 73 65  ataModelLex = se
7510: 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4c 65 78  lf.xGridModelLex
7520: 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20  .GridDataModel. 
7530: 20 20 20 20 20 20 20 6e 53 74 61 72 74 20 3d 20         nStart = 
7540: 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 4c 65  xGridDataModelLe
7550: 78 2e 52 6f 77 43 6f 75 6e 74 0a 20 20 20 20 20  x.RowCount.     
7560: 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67     for i in rang
7570: 65 28 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  e(xGridDataModel
7580: 4e 65 77 2e 52 6f 77 43 6f 75 6e 74 29 3a 0a 20  New.RowCount):. 
7590: 20 20 20 20 20 20 20 20 20 20 20 73 46 6c 65 78             sFlex
75a0: 69 6f 6e 2c 20 73 54 61 67 20 3d 20 78 47 72 69  ion, sTag = xGri
75b0: 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77 2e 67 65  dDataModelNew.ge
75c0: 74 52 6f 77 44 61 74 61 28 69 29 0a 20 20 20 20  tRowData(i).    
75d0: 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74          xGridDat
75e0: 61 4d 6f 64 65 6c 4c 65 78 2e 61 64 64 52 6f 77  aModelLex.addRow
75f0: 28 6e 53 74 61 72 74 20 2b 20 69 2c 20 28 73 46  (nStart + i, (sF
7600: 6c 65 78 69 6f 6e 2c 20 73 65 6c 66 2e 73 4c 65  lexion, self.sLe
7610: 6d 6d 61 2c 20 73 54 61 67 29 29 0a 20 20 20 20  mma, sTag)).    
7620: 20 20 20 20 73 65 6c 66 2e 78 53 61 76 65 2e 45      self.xSave.E
7630: 6e 61 62 6c 65 64 20 3d 20 54 72 75 65 0a 20 20  nabled = True.  
7640: 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 75 6d 4c        self.xNumL
7650: 65 78 2e 4c 61 62 65 6c 20 3d 20 73 74 72 28 69  ex.Label = str(i
7660: 6e 74 28 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e  nt(self.xNumLex.
7670: 4c 61 62 65 6c 29 20 2b 20 78 47 72 69 64 44 61  Label) + xGridDa
7680: 74 61 4d 6f 64 65 6c 4e 65 77 2e 52 6f 77 43 6f  taModelNew.RowCo
7690: 75 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c  unt).        sel
76a0: 66 2e 5f 72 65 73 65 74 57 69 64 67 65 74 73 28  f._resetWidgets(
76b0: 29 0a 0a 20 20 20 20 40 5f 77 61 69 74 50 6f 69  )..    @_waitPoi
76c0: 6e 74 65 72 0a 20 20 20 20 64 65 66 20 64 65 6c  nter.    def del
76d0: 65 74 65 53 65 6c 65 63 74 65 64 45 6e 74 72 69  eteSelectedEntri
76e0: 65 73 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20  es (self):.     
76f0: 20 20 20 23 20 67 65 6e 65 72 61 74 65 64 20 65     # generated e
7700: 6e 74 72 69 65 73 0a 20 20 20 20 20 20 20 20 78  ntries.        x
7710: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 20 3d 20  GridDataModel = 
7720: 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e  self.xGridModelN
7730: 65 77 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  ew.GridDataModel
7740: 0a 20 20 20 20 20 20 20 20 23 68 65 6c 70 65 72  .        #helper
7750: 73 2e 78 72 61 79 28 78 47 72 69 64 44 61 74 61  s.xray(xGridData
7760: 4d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 66  Model).        f
7770: 6f 72 20 69 20 69 6e 20 73 65 6c 66 2e 78 47 72  or i in self.xGr
7780: 69 64 43 6f 6e 74 72 6f 6c 4e 65 77 2e 67 65 74  idControlNew.get
7790: 53 65 6c 65 63 74 65 64 52 6f 77 73 28 29 3a 0a  SelectedRows():.
77a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69              if i
77b0: 20 3c 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65   < xGridDataMode
77c0: 6c 2e 52 6f 77 43 6f 75 6e 74 3a 0a 20 20 20 20  l.RowCount:.    
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 78 47 72 69              xGri
77e0: 64 44 61 74 61 4d 6f 64 65 6c 2e 72 65 6d 6f 76  dDataModel.remov
77f0: 65 52 6f 77 28 69 29 0a 20 20 20 20 20 20 20 20  eRow(i).        
7800: 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74 72 6f  self.xGridContro
7810: 6c 4e 65 77 2e 64 65 73 65 6c 65 63 74 41 6c 6c  lNew.deselectAll
7820: 52 6f 77 73 28 29 0a 20 20 20 20 20 20 20 20 23  Rows().        #
7830: 20 6c 65 78 69 63 6f 6e 0a 20 20 20 20 20 20 20   lexicon.       
7840: 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 20   xGridDataModel 
7850: 3d 20 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65  = self.xGridMode
7860: 6c 4c 65 78 2e 47 72 69 64 44 61 74 61 4d 6f 64  lLex.GridDataMod
7870: 65 6c 0a 20 20 20 20 20 20 20 20 6e 53 65 6c 65  el.        nSele
7880: 63 74 65 64 45 6e 74 72 69 65 73 20 3d 20 6c 65  ctedEntries = le
7890: 6e 28 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74  n(self.xGridCont
78a0: 72 6f 6c 4c 65 78 2e 67 65 74 53 65 6c 65 63 74  rolLex.getSelect
78b0: 65 64 52 6f 77 73 28 29 29 0a 20 20 20 20 20 20  edRows()).      
78c0: 20 20 66 6f 72 20 69 20 69 6e 20 73 65 6c 66 2e    for i in self.
78d0: 78 47 72 69 64 43 6f 6e 74 72 6f 6c 4c 65 78 2e  xGridControlLex.
78e0: 67 65 74 53 65 6c 65 63 74 65 64 52 6f 77 73 28  getSelectedRows(
78f0: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ):.            i
7900: 66 20 69 20 3c 20 78 47 72 69 64 44 61 74 61 4d  f i < xGridDataM
7910: 6f 64 65 6c 2e 52 6f 77 43 6f 75 6e 74 3a 0a 20  odel.RowCount:. 
7920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
7930: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 72 65  GridDataModel.re
7940: 6d 6f 76 65 52 6f 77 28 69 29 0a 20 20 20 20 20  moveRow(i).     
7950: 20 20 20 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e     self.xGridCon
7960: 74 72 6f 6c 4c 65 78 2e 64 65 73 65 6c 65 63 74  trolLex.deselect
7970: 41 6c 6c 52 6f 77 73 28 29 0a 20 20 20 20 20 20  AllRows().      
7980: 20 20 73 65 6c 66 2e 78 4e 75 6d 4c 65 78 2e 4c    self.xNumLex.L
7990: 61 62 65 6c 20 3d 20 73 74 72 28 78 47 72 69 64  abel = str(xGrid
79a0: 44 61 74 61 4d 6f 64 65 6c 2e 52 6f 77 43 6f 75  DataModel.RowCou
79b0: 6e 74 29 0a 0a 20 20 20 20 40 5f 77 61 69 74 50  nt)..    @_waitP
79c0: 6f 69 6e 74 65 72 0a 20 20 20 20 64 65 66 20 69  ointer.    def i
79d0: 6d 70 6f 72 74 44 69 63 74 69 6f 6e 61 72 79 20  mportDictionary 
79e0: 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20  (self):.        
79f0: 70 61 73 73 0a 0a 20 20 20 20 64 65 66 20 65 78  pass..    def ex
7a00: 70 6f 72 74 44 69 63 74 69 6f 6e 61 72 79 20 28  portDictionary (
7a10: 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 74  self):.        t
7a20: 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry:.            
7a30: 73 70 66 45 78 70 6f 72 74 65 64 20 3d 20 6f 73  spfExported = os
7a40: 2e 70 61 74 68 2e 6a 6f 69 6e 28 6f 73 2e 65 6e  .path.join(os.en
7a50: 76 69 72 6f 6e 5b 27 55 53 45 52 50 52 4f 46 49  viron['USERPROFI
7a60: 4c 45 27 5d 2c 20 22 66 72 2e 70 65 72 73 6f 6e  LE'], "fr.person
7a70: 61 6c 2e 6a 73 6f 6e 22 29 0a 20 20 20 20 20 20  al.json").      
7a80: 20 20 20 20 20 20 78 43 68 69 6c 64 20 3d 20 73        xChild = s
7a90: 65 6c 66 2e 78 53 65 74 74 69 6e 67 4e 6f 64 65  elf.xSettingNode
7aa0: 2e 67 65 74 42 79 4e 61 6d 65 28 22 6f 5f 66 72  .getByName("o_fr
7ab0: 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ").            s
7ac0: 4a 53 4f 4e 20 3d 20 78 43 68 69 6c 64 2e 67 65  JSON = xChild.ge
7ad0: 74 50 72 6f 70 65 72 74 79 56 61 6c 75 65 28 22  tPropertyValue("
7ae0: 70 65 72 73 6f 6e 61 6c 5f 64 69 63 22 29 0a 20  personal_dic"). 
7af0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 4a             if sJ
7b00: 53 4f 4e 3a 0a 20 20 20 20 20 20 20 20 20 20 20  SON:.           
7b10: 20 20 20 20 20 77 69 74 68 20 6f 70 65 6e 28 73       with open(s
7b20: 70 66 45 78 70 6f 72 74 65 64 2c 20 22 77 22 2c  pfExported, "w",
7b30: 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38   encoding="utf-8
7b40: 22 29 20 61 73 20 68 44 73 74 3a 0a 20 20 20 20  ") as hDst:.    
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b60: 68 44 73 74 2e 77 72 69 74 65 28 73 4a 53 4f 4e  hDst.write(sJSON
7b70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7b80: 20 20 73 4d 65 73 73 61 67 65 20 3d 20 73 65 6c    sMessage = sel
7b90: 66 2e 64 55 49 2e 67 65 74 28 27 65 78 70 6f 72  f.dUI.get('expor
7ba0: 74 5f 6d 65 73 73 61 67 65 27 2c 20 22 23 65 72  t_message', "#er
7bb0: 72 5f 6d 73 67 3a 20 25 73 22 29 20 25 20 73 70  r_msg: %s") % sp
7bc0: 66 45 78 70 6f 72 74 65 64 0a 20 20 20 20 20 20  fExported.      
7bd0: 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20        else:.    
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 73 4d 65 73              sMes
7bf0: 73 61 67 65 20 3d 20 73 65 6c 66 2e 64 55 49 2e  sage = self.dUI.
7c00: 67 65 74 28 27 65 6d 70 74 79 5f 64 69 63 74 69  get('empty_dicti
7c10: 6f 6e 61 72 79 27 2c 20 22 23 65 72 72 22 29 0a  onary', "#err").
7c20: 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a          except:.
7c30: 20 20 20 20 20 20 20 20 20 20 20 20 73 4d 65 73              sMes
7c40: 73 61 67 65 20 3d 20 74 72 61 63 65 62 61 63 6b  sage = traceback
7c50: 2e 66 6f 72 6d 61 74 5f 65 78 63 28 29 0a 20 20  .format_exc().  
7c60: 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78        MessageBox
7c70: 28 73 65 6c 66 2e 78 44 6f 63 75 6d 65 6e 74 2c  (self.xDocument,
7c80: 20 73 4d 65 73 73 61 67 65 2c 20 73 65 6c 66 2e   sMessage, self.
7c90: 64 55 49 2e 67 65 74 28 27 65 78 70 6f 72 74 5f  dUI.get('export_
7ca0: 74 69 74 6c 65 27 2c 20 22 23 65 72 72 22 29 29  title', "#err"))
7cb0: 0a 0a 20 20 20 20 20 20 20 20 23 20 46 69 6c 65  ..        # File
7cc0: 50 69 63 6b 65 72 20 64 6f 65 73 6e e2 80 99 74  Picker doesn...t
7cd0: 20 77 6f 72 6b 20 61 74 20 61 6c 6c e2 80 a6 0a   work at all....
7ce0: 20 20 20 20 20 20 20 20 23 78 46 69 6c 65 50 69          #xFilePi
7cf0: 63 6b 65 72 20 3d 20 73 65 6c 66 2e 78 53 76 4d  cker = self.xSvM
7d00: 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63  gr.createInstanc
7d10: 65 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f  eWithContext('co
7d20: 6d 2e 73 75 6e 2e 73 74 61 72 2e 75 69 2e 64 69  m.sun.star.ui.di
7d30: 61 6c 6f 67 73 2e 53 79 73 74 65 6d 46 69 6c 65  alogs.SystemFile
7d40: 50 69 63 6b 65 72 27 2c 20 73 65 6c 66 2e 63 74  Picker', self.ct
7d50: 78 29 0a 20 20 20 20 20 20 20 20 23 78 46 69 6c  x).        #xFil
7d60: 65 50 69 63 6b 65 72 2e 61 70 70 65 6e 64 46 69  ePicker.appendFi
7d70: 6c 74 65 72 28 22 53 75 70 70 6f 72 74 65 64 20  lter("Supported 
7d80: 66 69 6c 65 73 22 2c 20 22 2a 2e 6a 73 6f 6e 3b  files", "*.json;
7d90: 20 2a 2e 62 64 69 63 22 29 0a 20 20 20 20 20 20   *.bdic").      
7da0: 20 20 23 78 46 69 6c 65 50 69 63 6b 65 72 2e 73    #xFilePicker.s
7db0: 65 74 44 69 73 70 6c 61 79 44 69 72 65 63 74 6f  etDisplayDirecto
7dc0: 72 79 28 22 22 29 0a 20 20 20 20 20 20 20 20 23  ry("").        #
7dd0: 78 46 69 6c 65 50 69 63 6b 65 72 2e 73 65 74 4d  xFilePicker.setM
7de0: 75 6c 74 69 53 65 6c 65 63 74 69 6f 6e 4d 6f 64  ultiSelectionMod
7df0: 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20  e(True).        
7e00: 23 6e 52 65 73 75 6c 74 20 3d 20 78 46 69 6c 65  #nResult = xFile
7e10: 50 69 63 6b 65 72 2e 65 78 65 63 75 74 65 28 29  Picker.execute()
7e20: 0a 20 20 20 20 20 20 20 20 23 69 66 20 6e 52 65  .        #if nRe
7e30: 73 75 6c 74 20 3d 3d 20 31 3a 0a 20 20 20 20 20  sult == 1:.     
7e40: 20 20 20 20 20 20 20 23 70 61 73 73 0a 20 20 20         #pass.   
7e50: 20 20 20 20 20 20 20 20 20 23 6c 46 69 6c 65 20           #lFile 
7e60: 3d 20 78 46 69 6c 65 50 69 63 6b 65 72 2e 67 65  = xFilePicker.ge
7e70: 74 53 65 6c 65 63 74 65 64 46 69 6c 65 73 28 29  tSelectedFiles()
7e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 6c 46  .            #lF
7e90: 69 6c 65 20 3d 20 78 46 69 6c 65 50 69 63 6b 65  ile = xFilePicke
7ea0: 72 2e 67 65 74 46 69 6c 65 73 28 29 0a 0a 0a 23  r.getFiles()...#
7eb0: 67 5f 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  g_Implementation
7ec0: 48 65 6c 70 65 72 20 3d 20 75 6e 6f 68 65 6c 70  Helper = unohelp
7ed0: 65 72 2e 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  er.Implementatio
7ee0: 6e 48 65 6c 70 65 72 28 29 0a 23 67 5f 49 6d 70  nHelper().#g_Imp
7ef0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70 65  lementationHelpe
7f00: 72 2e 61 64 64 49 6d 70 6c 65 6d 65 6e 74 61 74  r.addImplementat
7f10: 69 6f 6e 28 4c 65 78 69 63 6f 6e 45 64 69 74 6f  ion(LexiconEdito
7f20: 72 2c 20 27 6e 65 74 2e 67 72 61 6d 6d 61 6c 65  r, 'net.grammale
7f30: 63 74 65 2e 4c 65 78 69 63 6f 6e 45 64 69 74 6f  cte.LexiconEdito
7f40: 72 27 2c 20 28 27 63 6f 6d 2e 73 75 6e 2e 73 74  r', ('com.sun.st
7f50: 61 72 2e 74 61 73 6b 2e 4a 6f 62 27 2c 29 29 0a  ar.task.Job',)).