Grammalecte  Hex Artifact Content

Artifact 34785f0710477c67cf0a0887c86e57c0c03b2ae49264a49cab4beb06ac2fb8c2:


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 47 50 4c 20  .# License: GPL 
0030: 33 0a 0a 69 6d 70 6f 72 74 20 75 6e 6f 68 65 6c  3..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 72 65 0a 69 6d 70 6f 72 74 20  mport re.import 
0060: 74 72 61 63 65 62 61 63 6b 0a 0a 69 6d 70 6f 72  traceback..impor
0070: 74 20 68 65 6c 70 65 72 73 0a 69 6d 70 6f 72 74  t helpers.import
0080: 20 6c 78 65 5f 73 74 72 69 6e 67 73 0a 69 6d 70   lxe_strings.imp
0090: 6f 72 74 20 6c 78 65 5f 63 6f 6e 6a 5f 64 61 74  ort lxe_conj_dat
00a0: 61 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c  a.import grammal
00b0: 65 63 74 65 2e 67 72 61 70 68 73 70 65 6c 6c 20  ecte.graphspell 
00c0: 61 73 20 73 63 0a 69 6d 70 6f 72 74 20 67 72 61  as sc.import gra
00d0: 6d 6d 61 6c 65 63 74 65 2e 67 72 61 70 68 73 70  mmalecte.graphsp
00e0: 65 6c 6c 2e 64 61 77 67 20 61 73 20 64 61 77 67  ell.dawg as dawg
00f0: 0a 69 6d 70 6f 72 74 20 67 72 61 6d 6d 61 6c 65  .import grammale
0100: 63 74 65 2e 66 72 2e 63 6f 6e 6a 20 61 73 20 63  cte.fr.conj as c
0110: 6f 6e 6a 0a 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75  onj..from com.su
0120: 6e 2e 73 74 61 72 2e 74 61 73 6b 20 69 6d 70 6f  n.star.task impo
0130: 72 74 20 58 4a 6f 62 45 78 65 63 75 74 6f 72 0a  rt XJobExecutor.
0140: 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61  from com.sun.sta
0150: 72 2e 61 77 74 20 69 6d 70 6f 72 74 20 58 41 63  r.awt import XAc
0160: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 66 72 6f  tionListener.fro
0170: 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  m com.sun.star.a
0180: 77 74 20 69 6d 70 6f 72 74 20 58 4b 65 79 4c 69  wt import XKeyLi
0190: 73 74 65 6e 65 72 0a 0a 0a 64 65 66 20 5f 77 61  stener...def _wa
01a0: 69 74 50 6f 69 6e 74 65 72 20 28 66 75 6e 63 44  itPointer (funcD
01b0: 65 63 6f 72 61 74 65 64 29 3a 0a 20 20 20 20 64  ecorated):.    d
01c0: 65 66 20 77 72 61 70 70 65 72 20 28 2a 61 72 67  ef wrapper (*arg
01d0: 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a 0a 20 20  s, **kwargs):.  
01e0: 20 20 20 20 20 20 23 20 73 65 6c 66 20 69 73 20        # self is 
01f0: 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  the first parame
0200: 74 65 72 20 69 66 20 74 68 65 20 64 65 63 6f 72  ter if the decor
0210: 61 74 6f 72 20 69 73 20 61 70 70 6c 69 65 64 20  ator is applied 
0220: 6f 6e 20 61 20 6f 62 6a 65 63 74 0a 20 20 20 20  on a object.    
0230: 20 20 20 20 73 65 6c 66 20 3d 20 61 72 67 73 5b      self = args[
0240: 30 5d 0a 20 20 20 20 20 20 20 20 23 20 62 65 66  0].        # bef
0250: 6f 72 65 0a 20 20 20 20 20 20 20 20 78 50 6f 69  ore.        xPoi
0260: 6e 74 65 72 20 3d 20 73 65 6c 66 2e 78 53 76 4d  nter = self.xSvM
0270: 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63  gr.createInstanc
0280: 65 57 69 74 68 43 6f 6e 74 65 78 74 28 22 63 6f  eWithContext("co
0290: 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 50  m.sun.star.awt.P
02a0: 6f 69 6e 74 65 72 22 2c 20 73 65 6c 66 2e 63 74  ointer", self.ct
02b0: 78 29 0a 20 20 20 20 20 20 20 20 78 50 6f 69 6e  x).        xPoin
02c0: 74 65 72 2e 73 65 74 54 79 70 65 28 75 6e 6f 2e  ter.setType(uno.
02d0: 67 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d  getConstantByNam
02e0: 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  e("com.sun.star.
02f0: 61 77 74 2e 53 79 73 74 65 6d 50 6f 69 6e 74 65  awt.SystemPointe
0300: 72 2e 57 41 49 54 22 29 29 0a 20 20 20 20 20 20  r.WAIT")).      
0310: 20 20 78 57 69 6e 64 6f 77 50 65 65 72 20 3d 20    xWindowPeer = 
0320: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
0330: 67 65 74 50 65 65 72 28 29 0a 20 20 20 20 20 20  getPeer().      
0340: 20 20 78 57 69 6e 64 6f 77 50 65 65 72 2e 73 65    xWindowPeer.se
0350: 74 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e 74 65  tPointer(xPointe
0360: 72 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 78  r).        for x
0370: 20 69 6e 20 78 57 69 6e 64 6f 77 50 65 65 72 2e   in xWindowPeer.
0380: 57 69 6e 64 6f 77 73 3a 0a 20 20 20 20 20 20 20  Windows:.       
0390: 20 20 20 20 20 78 2e 73 65 74 50 6f 69 6e 74 65       x.setPointe
03a0: 72 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20 20  r(xPointer).    
03b0: 20 20 20 20 23 20 70 72 6f 63 65 73 73 69 6e 67      # processing
03c0: 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20  .        result 
03d0: 3d 20 66 75 6e 63 44 65 63 6f 72 61 74 65 64 28  = funcDecorated(
03e0: 2a 61 72 67 73 2c 20 2a 2a 6b 77 61 72 67 73 29  *args, **kwargs)
03f0: 0a 20 20 20 20 20 20 20 20 23 20 61 66 74 65 72  .        # after
0400: 0a 20 20 20 20 20 20 20 20 78 50 6f 69 6e 74 65  .        xPointe
0410: 72 2e 73 65 74 54 79 70 65 28 75 6e 6f 2e 67 65  r.setType(uno.ge
0420: 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28  tConstantByName(
0430: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
0440: 74 2e 53 79 73 74 65 6d 50 6f 69 6e 74 65 72 2e  t.SystemPointer.
0450: 41 52 52 4f 57 22 29 29 0a 20 20 20 20 20 20 20  ARROW")).       
0460: 20 78 57 69 6e 64 6f 77 50 65 65 72 2e 73 65 74   xWindowPeer.set
0470: 50 6f 69 6e 74 65 72 28 78 50 6f 69 6e 74 65 72  Pointer(xPointer
0480: 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 78 20  ).        for x 
0490: 69 6e 20 78 57 69 6e 64 6f 77 50 65 65 72 2e 57  in xWindowPeer.W
04a0: 69 6e 64 6f 77 73 3a 0a 20 20 20 20 20 20 20 20  indows:.        
04b0: 20 20 20 20 78 2e 73 65 74 50 6f 69 6e 74 65 72      x.setPointer
04c0: 28 78 50 6f 69 6e 74 65 72 29 0a 20 20 20 20 20  (xPointer).     
04d0: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
04e0: 65 72 2e 73 65 74 56 69 73 69 62 6c 65 28 54 72  er.setVisible(Tr
04f0: 75 65 29 20 23 20 73 65 65 6d 73 20 6e 65 63 65  ue) # seems nece
0500: 73 73 61 72 79 20 74 6f 20 72 65 66 72 65 73 68  ssary to refresh
0510: 20 74 68 65 20 64 69 61 6c 6f 67 20 62 6f 78 20   the dialog box 
0520: 61 6e 64 20 74 65 78 74 20 77 69 64 67 65 74 73  and text widgets
0530: 20 28 77 68 79 3f 29 0a 20 20 20 20 20 20 20 20   (why?).        
0540: 23 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20  # return.       
0550: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0a 20   return result. 
0560: 20 20 20 72 65 74 75 72 6e 20 77 72 61 70 70 65     return wrappe
0570: 72 0a 0a 0a 63 6c 61 73 73 20 4c 65 78 69 63 6f  r...class Lexico
0580: 6e 45 64 69 74 6f 72 20 28 75 6e 6f 68 65 6c 70  nEditor (unohelp
0590: 65 72 2e 42 61 73 65 2c 20 58 41 63 74 69 6f 6e  er.Base, XAction
05a0: 4c 69 73 74 65 6e 65 72 2c 20 58 4b 65 79 4c 69  Listener, XKeyLi
05b0: 73 74 65 6e 65 72 2c 20 58 4a 6f 62 45 78 65 63  stener, XJobExec
05c0: 75 74 6f 72 29 3a 0a 0a 20 20 20 20 64 65 66 20  utor):..    def 
05d0: 5f 5f 69 6e 69 74 5f 5f 20 28 73 65 6c 66 2c 20  __init__ (self, 
05e0: 63 74 78 29 3a 0a 20 20 20 20 20 20 20 20 73 65  ctx):.        se
05f0: 6c 66 2e 63 74 78 20 3d 20 63 74 78 0a 20 20 20  lf.ctx = ctx.   
0600: 20 20 20 20 20 73 65 6c 66 2e 78 53 76 4d 67 72       self.xSvMgr
0610: 20 3d 20 73 65 6c 66 2e 63 74 78 2e 53 65 72 76   = self.ctx.Serv
0620: 69 63 65 4d 61 6e 61 67 65 72 0a 20 20 20 20 20  iceManager.     
0630: 20 20 20 73 65 6c 66 2e 78 44 65 73 6b 74 6f 70     self.xDesktop
0640: 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63   = self.xSvMgr.c
0650: 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74  reateInstanceWit
0660: 68 43 6f 6e 74 65 78 74 28 22 63 6f 6d 2e 73 75  hContext("com.su
0670: 6e 2e 73 74 61 72 2e 66 72 61 6d 65 2e 44 65 73  n.star.frame.Des
0680: 6b 74 6f 70 22 2c 20 73 65 6c 66 2e 63 74 78 29  ktop", self.ctx)
0690: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44  .        self.xD
06a0: 6f 63 75 6d 65 6e 74 20 3d 20 73 65 6c 66 2e 78  ocument = self.x
06b0: 44 65 73 6b 74 6f 70 2e 67 65 74 43 75 72 72 65  Desktop.getCurre
06c0: 6e 74 43 6f 6d 70 6f 6e 65 6e 74 28 29 0a 20 20  ntComponent().  
06d0: 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74        self.xCont
06e0: 61 69 6e 65 72 20 3d 20 4e 6f 6e 65 0a 20 20 20  ainer = None.   
06f0: 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f       self.xDialo
0700: 67 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20  g = None.       
0710: 20 73 65 6c 66 2e 6f 53 70 65 6c 6c 43 68 65 63   self.oSpellChec
0720: 6b 65 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20  ker = None.     
0730: 20 20 20 23 20 64 61 74 61 0a 20 20 20 20 20 20     # data.      
0740: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
0750: 64 46 6c 65 78 20 3d 20 5b 5d 0a 0a 20 20 20 20  dFlex = []..    
0760: 64 65 66 20 5f 61 64 64 57 69 64 67 65 74 20 28  def _addWidget (
0770: 73 65 6c 66 2c 20 6e 61 6d 65 2c 20 77 74 79 70  self, name, wtyp
0780: 65 2c 20 78 2c 20 79 2c 20 77 2c 20 68 2c 20 2a  e, x, y, w, h, *
0790: 2a 6b 77 61 72 67 73 29 3a 0a 20 20 20 20 20 20  *kwargs):.      
07a0: 20 20 78 57 69 64 67 65 74 20 3d 20 73 65 6c 66    xWidget = self
07b0: 2e 78 44 69 61 6c 6f 67 2e 63 72 65 61 74 65 49  .xDialog.createI
07c0: 6e 73 74 61 6e 63 65 28 27 63 6f 6d 2e 73 75 6e  nstance('com.sun
07d0: 2e 73 74 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e  .star.awt.UnoCon
07e0: 74 72 6f 6c 25 73 4d 6f 64 65 6c 27 20 25 20 77  trol%sModel' % w
07f0: 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 78 57  type).        xW
0800: 69 64 67 65 74 2e 4e 61 6d 65 20 3d 20 6e 61 6d  idget.Name = nam
0810: 65 0a 20 20 20 20 20 20 20 20 78 57 69 64 67 65  e.        xWidge
0820: 74 2e 50 6f 73 69 74 69 6f 6e 58 20 3d 20 78 0a  t.PositionX = x.
0830: 20 20 20 20 20 20 20 20 78 57 69 64 67 65 74 2e          xWidget.
0840: 50 6f 73 69 74 69 6f 6e 59 20 3d 20 79 0a 20 20  PositionY = y.  
0850: 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 57 69        xWidget.Wi
0860: 64 74 68 20 3d 20 77 0a 20 20 20 20 20 20 20 20  dth = w.        
0870: 78 57 69 64 67 65 74 2e 48 65 69 67 68 74 20 3d  xWidget.Height =
0880: 20 68 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b   h.        for k
0890: 2c 20 77 20 69 6e 20 6b 77 61 72 67 73 2e 69 74  , w in kwargs.it
08a0: 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20  ems():.         
08b0: 20 20 20 73 65 74 61 74 74 72 28 78 57 69 64 67     setattr(xWidg
08c0: 65 74 2c 20 6b 2c 20 77 29 0a 20 20 20 20 20 20  et, k, w).      
08d0: 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 69    self.xDialog.i
08e0: 6e 73 65 72 74 42 79 4e 61 6d 65 28 6e 61 6d 65  nsertByName(name
08f0: 2c 20 78 57 69 64 67 65 74 29 0a 20 20 20 20 20  , xWidget).     
0900: 20 20 20 72 65 74 75 72 6e 20 78 57 69 64 67 65     return xWidge
0910: 74 0a 0a 20 20 20 20 64 65 66 20 5f 61 64 64 47  t..    def _addG
0920: 72 69 64 20 28 73 65 6c 66 2c 20 6e 61 6d 65 2c  rid (self, name,
0930: 20 78 2c 20 79 2c 20 77 2c 20 68 2c 20 63 6f 6c   x, y, w, h, col
0940: 75 6d 6e 73 2c 20 2a 2a 6b 77 61 72 67 73 29 3a  umns, **kwargs):
0950: 0a 20 20 20 20 20 20 20 20 78 47 72 69 64 4d 6f  .        xGridMo
0960: 64 65 6c 20 3d 20 73 65 6c 66 2e 78 44 69 61 6c  del = self.xDial
0970: 6f 67 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63  og.createInstanc
0980: 65 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  e('com.sun.star.
0990: 61 77 74 2e 67 72 69 64 2e 55 6e 6f 43 6f 6e 74  awt.grid.UnoCont
09a0: 72 6f 6c 47 72 69 64 4d 6f 64 65 6c 27 29 0a 20  rolGridModel'). 
09b0: 20 20 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65         xGridMode
09c0: 6c 2e 4e 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20  l.Name = name.  
09d0: 20 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c        xGridModel
09e0: 2e 50 6f 73 69 74 69 6f 6e 58 20 3d 20 78 0a 20  .PositionX = x. 
09f0: 20 20 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65         xGridMode
0a00: 6c 2e 50 6f 73 69 74 69 6f 6e 59 20 3d 20 79 0a  l.PositionY = y.
0a10: 20 20 20 20 20 20 20 20 78 47 72 69 64 4d 6f 64          xGridMod
0a20: 65 6c 2e 57 69 64 74 68 20 3d 20 77 0a 20 20 20  el.Width = w.   
0a30: 20 20 20 20 20 78 47 72 69 64 4d 6f 64 65 6c 2e       xGridModel.
0a40: 48 65 69 67 68 74 20 3d 20 68 0a 20 20 20 20 20  Height = h.     
0a50: 20 20 20 78 43 6f 6c 75 6d 6e 4d 6f 64 65 6c 20     xColumnModel 
0a60: 3d 20 78 47 72 69 64 4d 6f 64 65 6c 2e 43 6f 6c  = xGridModel.Col
0a70: 75 6d 6e 4d 6f 64 65 6c 0a 20 20 20 20 20 20 20  umnModel.       
0a80: 20 66 6f 72 20 65 20 69 6e 20 63 6f 6c 75 6d 6e   for e in column
0a90: 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  s:.            x
0aa0: 43 6f 6c 20 3d 20 78 43 6f 6c 75 6d 6e 4d 6f 64  Col = xColumnMod
0ab0: 65 6c 2e 63 72 65 61 74 65 43 6f 6c 75 6d 6e 28  el.createColumn(
0ac0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ).            fo
0ad0: 72 20 6b 2c 20 77 20 69 6e 20 65 2e 69 74 65 6d  r k, w in e.item
0ae0: 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20  s():.           
0af0: 20 20 20 20 20 73 65 74 61 74 74 72 28 78 43 6f       setattr(xCo
0b00: 6c 2c 20 6b 2c 20 77 29 0a 20 20 20 20 20 20 20  l, k, w).       
0b10: 20 20 20 20 20 78 43 6f 6c 75 6d 6e 4d 6f 64 65       xColumnMode
0b20: 6c 2e 61 64 64 43 6f 6c 75 6d 6e 28 78 43 6f 6c  l.addColumn(xCol
0b30: 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c  ).        for k,
0b40: 20 77 20 69 6e 20 6b 77 61 72 67 73 2e 69 74 65   w in kwargs.ite
0b50: 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20  ms():.          
0b60: 20 20 73 65 74 61 74 74 72 28 78 47 72 69 64 4d    setattr(xGridM
0b70: 6f 64 65 6c 2c 20 6b 2c 20 77 29 0a 20 20 20 20  odel, k, w).    
0b80: 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67      self.xDialog
0b90: 2e 69 6e 73 65 72 74 42 79 4e 61 6d 65 28 6e 61  .insertByName(na
0ba0: 6d 65 2c 20 78 47 72 69 64 4d 6f 64 65 6c 29 0a  me, xGridModel).
0bb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 78          return x
0bc0: 47 72 69 64 4d 6f 64 65 6c 0a 0a 20 20 20 20 64  GridModel..    d
0bd0: 65 66 20 72 75 6e 20 28 73 65 6c 66 2c 20 73 4c  ef run (self, sL
0be0: 61 6e 67 29 3a 0a 20 20 20 20 20 20 20 20 73 65  ang):.        se
0bf0: 6c 66 2e 64 55 49 20 3d 20 6c 78 65 5f 73 74 72  lf.dUI = lxe_str
0c00: 69 6e 67 73 2e 67 65 74 55 49 28 73 4c 61 6e 67  ings.getUI(sLang
0c10: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 64 69 61  )..        # dia
0c20: 6c 6f 67 0a 20 20 20 20 20 20 20 20 73 65 6c 66  log.        self
0c30: 2e 78 44 69 61 6c 6f 67 20 3d 20 73 65 6c 66 2e  .xDialog = self.
0c40: 78 53 76 4d 67 72 2e 63 72 65 61 74 65 49 6e 73  xSvMgr.createIns
0c50: 74 61 6e 63 65 57 69 74 68 43 6f 6e 74 65 78 74  tanceWithContext
0c60: 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61  ('com.sun.star.a
0c70: 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c 44 69 61  wt.UnoControlDia
0c80: 6c 6f 67 4d 6f 64 65 6c 27 2c 20 73 65 6c 66 2e  logModel', self.
0c90: 63 74 78 29 0a 20 20 20 20 20 20 20 20 73 65 6c  ctx).        sel
0ca0: 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74 68 20  f.xDialog.Width 
0cb0: 3d 20 36 32 30 0a 20 20 20 20 20 20 20 20 73 65  = 620.        se
0cc0: 6c 66 2e 78 44 69 61 6c 6f 67 2e 48 65 69 67 68  lf.xDialog.Heigh
0cd0: 74 20 3d 20 32 39 32 0a 20 20 20 20 20 20 20 20  t = 292.        
0ce0: 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 54 69 74  self.xDialog.Tit
0cf0: 6c 65 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  le = self.dUI.ge
0d00: 74 28 27 74 69 74 6c 65 27 2c 20 22 23 74 69 74  t('title', "#tit
0d10: 6c 65 23 22 29 0a 20 20 20 20 20 20 20 20 78 57  le#").        xW
0d20: 69 6e 64 6f 77 53 69 7a 65 20 3d 20 68 65 6c 70  indowSize = help
0d30: 65 72 73 2e 67 65 74 57 69 6e 64 6f 77 53 69 7a  ers.getWindowSiz
0d40: 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  e().        self
0d50: 2e 78 44 69 61 6c 6f 67 2e 50 6f 73 69 74 69 6f  .xDialog.Positio
0d60: 6e 58 20 3d 20 69 6e 74 28 28 78 57 69 6e 64 6f  nX = int((xWindo
0d70: 77 53 69 7a 65 2e 57 69 64 74 68 20 2f 20 32 29  wSize.Width / 2)
0d80: 20 2d 20 28 73 65 6c 66 2e 78 44 69 61 6c 6f 67   - (self.xDialog
0d90: 2e 57 69 64 74 68 20 2f 20 32 29 29 0a 20 20 20  .Width / 2)).   
0da0: 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f       self.xDialo
0db0: 67 2e 50 6f 73 69 74 69 6f 6e 59 20 3d 20 69 6e  g.PositionY = in
0dc0: 74 28 28 78 57 69 6e 64 6f 77 53 69 7a 65 2e 48  t((xWindowSize.H
0dd0: 65 69 67 68 74 20 2f 20 32 29 20 2d 20 28 73 65  eight / 2) - (se
0de0: 6c 66 2e 78 44 69 61 6c 6f 67 2e 48 65 69 67 68  lf.xDialog.Heigh
0df0: 74 20 2f 20 32 29 29 0a 0a 20 20 20 20 20 20 20  t / 2))..       
0e00: 20 23 20 66 6f 6e 74 73 0a 20 20 20 20 20 20 20   # fonts.       
0e10: 20 78 46 44 54 69 74 6c 65 20 3d 20 75 6e 6f 2e   xFDTitle = uno.
0e20: 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63 74 28  createUnoStruct(
0e30: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
0e40: 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  t.FontDescriptor
0e50: 22 29 0a 20 20 20 20 20 20 20 20 78 46 44 54 69  ").        xFDTi
0e60: 74 6c 65 2e 48 65 69 67 68 74 20 3d 20 39 0a 20  tle.Height = 9. 
0e70: 20 20 20 20 20 20 20 78 46 44 54 69 74 6c 65 2e         xFDTitle.
0e80: 57 65 69 67 68 74 20 3d 20 75 6e 6f 2e 67 65 74  Weight = uno.get
0e90: 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28 22  ConstantByName("
0ea0: 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74  com.sun.star.awt
0eb0: 2e 46 6f 6e 74 57 65 69 67 68 74 2e 42 4f 4c 44  .FontWeight.BOLD
0ec0: 22 29 0a 20 20 20 20 20 20 20 20 78 46 44 54 69  ").        xFDTi
0ed0: 74 6c 65 2e 4e 61 6d 65 20 3d 20 22 56 65 72 64  tle.Name = "Verd
0ee0: 61 6e 61 22 0a 20 20 20 20 20 20 20 20 0a 20 20  ana".        .  
0ef0: 20 20 20 20 20 20 78 46 44 53 75 62 54 69 74 6c        xFDSubTitl
0f00: 65 20 3d 20 75 6e 6f 2e 63 72 65 61 74 65 55 6e  e = uno.createUn
0f10: 6f 53 74 72 75 63 74 28 22 63 6f 6d 2e 73 75 6e  oStruct("com.sun
0f20: 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74 44 65  .star.awt.FontDe
0f30: 73 63 72 69 70 74 6f 72 22 29 0a 20 20 20 20 20  scriptor").     
0f40: 20 20 20 78 46 44 53 75 62 54 69 74 6c 65 2e 48     xFDSubTitle.H
0f50: 65 69 67 68 74 20 3d 20 38 0a 20 20 20 20 20 20  eight = 8.      
0f60: 20 20 78 46 44 53 75 62 54 69 74 6c 65 2e 57 65    xFDSubTitle.We
0f70: 69 67 68 74 20 3d 20 75 6e 6f 2e 67 65 74 43 6f  ight = uno.getCo
0f80: 6e 73 74 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f  nstantByName("co
0f90: 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 46  m.sun.star.awt.F
0fa0: 6f 6e 74 57 65 69 67 68 74 2e 42 4f 4c 44 22 29  ontWeight.BOLD")
0fb0: 0a 20 20 20 20 20 20 20 20 78 46 44 53 75 62 54  .        xFDSubT
0fc0: 69 74 6c 65 2e 4e 61 6d 65 20 3d 20 22 56 65 72  itle.Name = "Ver
0fd0: 64 61 6e 61 22 0a 0a 20 20 20 20 20 20 20 20 23  dana"..        #
0fe0: 20 77 69 64 67 65 74 0a 20 20 20 20 20 20 20 20   widget.        
0ff0: 6e 58 31 20 3d 20 31 30 0a 20 20 20 20 20 20 20  nX1 = 10.       
1000: 20 6e 58 32 20 3d 20 32 30 0a 0a 20 20 20 20 20   nX2 = 20..     
1010: 20 20 20 6e 59 31 20 3d 20 35 0a 20 20 20 20 20     nY1 = 5.     
1020: 20 20 20 6e 59 32 20 3d 20 6e 59 31 20 2b 20 32     nY2 = nY1 + 2
1030: 35 20 23 20 6e 6f 6d 20 63 6f 6d 6d 75 6e 0a 20  5 # nom commun. 
1040: 20 20 20 20 20 20 20 6e 59 33 20 3d 20 6e 59 32         nY3 = nY2
1050: 20 2b 20 39 35 20 23 20 6e 6f 6d 20 70 72 6f 70   + 95 # nom prop
1060: 72 65 0a 20 20 20 20 20 20 20 20 6e 59 34 20 3d  re.        nY4 =
1070: 20 6e 59 33 20 2b 20 34 35 20 23 20 76 65 72 62   nY3 + 45 # verb
1080: 65 0a 20 20 20 20 20 20 20 20 6e 59 35 20 3d 20  e.        nY5 = 
1090: 6e 59 34 20 2b 20 36 38 20 23 20 61 64 76 65 72  nY4 + 68 # adver
10a0: 62 65 0a 20 20 20 20 20 20 20 20 6e 59 36 20 3d  be.        nY6 =
10b0: 20 6e 59 35 20 2b 20 31 33 20 23 20 61 75 74 72   nY5 + 13 # autr
10c0: 65 0a 0a 20 20 20 20 20 20 20 20 6e 58 42 20 3d  e..        nXB =
10d0: 20 6e 58 31 20 2b 20 31 39 35 0a 20 20 20 20 20   nX1 + 195.     
10e0: 20 20 20 6e 58 43 20 3d 20 6e 58 42 20 2b 20 32     nXC = nXB + 2
10f0: 30 35 0a 0a 20 20 20 20 20 20 20 20 6e 48 65 69  05..        nHei
1100: 67 68 74 20 3d 20 31 30 0a 0a 20 20 20 20 20 20  ght = 10..      
1110: 20 20 23 23 23 23 20 41 64 64 20 77 6f 72 64 0a    #### Add word.
1120: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64          self._ad
1130: 64 57 69 64 67 65 74 28 22 61 64 64 5f 73 65 63  dWidget("add_sec
1140: 74 69 6f 6e 22 2c 20 27 46 69 78 65 64 4c 69 6e  tion", 'FixedLin
1150: 65 27 2c 20 6e 58 31 2c 20 6e 59 31 2c 20 31 39  e', nX1, nY1, 19
1160: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
1170: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
1180: 28 22 61 64 64 5f 73 65 63 74 69 6f 6e 22 2c 20  ("add_section", 
1190: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
11a0: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54 69 74  criptor = xFDTit
11b0: 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  le).        self
11c0: 2e 78 4c 65 6d 6d 61 20 3d 20 73 65 6c 66 2e 5f  .xLemma = self._
11d0: 61 64 64 57 69 64 67 65 74 28 27 6c 65 6d 6d 61  addWidget('lemma
11e0: 27 2c 20 27 45 64 69 74 27 2c 20 6e 58 31 2c 20  ', 'Edit', nX1, 
11f0: 6e 59 31 2b 31 30 2c 20 31 32 30 2c 20 31 34 2c  nY1+10, 120, 14,
1200: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
1210: 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20 20  = xFDTitle).    
1220: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
1230: 67 65 74 28 27 63 6c 6f 73 65 5f 62 75 74 74 6f  get('close_butto
1240: 6e 27 2c 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58  n', 'Button', nX
1250: 31 2b 31 33 30 2c 20 6e 59 31 2b 31 30 2c 20 36  1+130, nY1+10, 6
1260: 30 2c 20 31 34 2c 20 4c 61 62 65 6c 20 3d 20 73  0, 14, Label = s
1270: 65 6c 66 2e 64 55 49 2e 67 65 74 28 27 63 6c 6f  elf.dUI.get('clo
1280: 73 65 5f 62 75 74 74 6f 6e 27 2c 20 22 23 65 72  se_button', "#er
1290: 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70  r"), FontDescrip
12a0: 74 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 2c 20  tor = xFDTitle, 
12b0: 54 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 35 35  TextColor = 0x55
12c0: 30 30 30 30 29 0a 0a 20 20 20 20 20 20 20 20 23  0000)..        #
12d0: 20 52 61 64 69 6f 20 62 75 74 74 6f 6e 73 3a 20   Radio buttons: 
12e0: 6d 61 69 6e 20 50 4f 53 20 74 61 67 0a 20 20 20  main POS tag.   
12f0: 20 20 20 20 20 23 20 4e 6f 74 65 3a 20 74 68 65       # Note: the
1300: 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 67 72 6f   only way to gro
1310: 75 70 20 52 61 64 69 6f 42 75 74 74 6f 6e 73 20  up RadioButtons 
1320: 69 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 65  is to create the
1330: 6d 20 73 75 63 63 65 73 73 69 76 65 6c 79 0a 20  m successively. 
1340: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4e 41 20         self.xNA 
1350: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
1360: 74 28 27 6e 6f 6d 5f 61 64 6a 27 2c 20 27 52 61  t('nom_adj', 'Ra
1370: 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c  dioButton', nX1,
1380: 20 6e 59 32 2b 31 32 2c 20 36 30 2c 20 6e 48 65   nY2+12, 60, nHe
1390: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
13a0: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d 5f  lf.dUI.get("nom_
13b0: 61 64 6a 22 2c 20 22 23 65 72 72 22 29 2c 20 48  adj", "#err"), H
13c0: 65 6c 70 54 65 78 74 20 3d 20 22 3a 4e 3a 41 22  elpText = ":N:A"
13d0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
13e0: 4e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  N = self._addWid
13f0: 67 65 74 28 27 6e 6f 6d 27 2c 20 27 52 61 64 69  get('nom', 'Radi
1400: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e  oButton', nX1, n
1410: 59 32 2b 32 32 2c 20 36 30 2c 20 6e 48 65 69 67  Y2+22, 60, nHeig
1420: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
1430: 2e 64 55 49 2e 67 65 74 28 22 6e 6f 6d 22 2c 20  .dUI.get("nom", 
1440: 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78  "#err"), HelpTex
1450: 74 20 3d 20 22 3a 4e 22 29 0a 20 20 20 20 20 20  t = ":N").      
1460: 20 20 73 65 6c 66 2e 78 41 20 3d 20 73 65 6c 66    self.xA = self
1470: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 61 64 6a  ._addWidget('adj
1480: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
1490: 2c 20 6e 58 31 2c 20 6e 59 32 2b 33 32 2c 20 36  , nX1, nY2+32, 6
14a0: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
14b0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
14c0: 28 22 61 64 6a 22 2c 20 22 23 65 72 72 22 29 2c  ("adj", "#err"),
14d0: 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 41 22   HelpText = ":A"
14e0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
14f0: 4d 31 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  M1 = self._addWi
1500: 64 67 65 74 28 27 4d 31 27 2c 20 27 52 61 64 69  dget('M1', 'Radi
1510: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e  oButton', nX1, n
1520: 59 33 2b 31 32 2c 20 36 30 2c 20 6e 48 65 69 67  Y3+12, 60, nHeig
1530: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
1540: 2e 64 55 49 2e 67 65 74 28 22 4d 31 22 2c 20 22  .dUI.get("M1", "
1550: 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74  #err"), HelpText
1560: 20 3d 20 22 3a 4d 31 22 29 0a 20 20 20 20 20 20   = ":M1").      
1570: 20 20 73 65 6c 66 2e 78 4d 32 20 3d 20 73 65 6c    self.xM2 = sel
1580: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 32  f._addWidget('M2
1590: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
15a0: 2c 20 6e 58 31 2c 20 6e 59 33 2b 32 32 2c 20 36  , nX1, nY3+22, 6
15b0: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
15c0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
15d0: 28 22 4d 32 22 2c 20 22 23 65 72 72 22 29 2c 20  ("M2", "#err"), 
15e0: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 4d 32 22  HelpText = ":M2"
15f0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
1600: 4d 50 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  MP = self._addWi
1610: 64 67 65 74 28 27 4d 50 27 2c 20 27 52 61 64 69  dget('MP', 'Radi
1620: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e  oButton', nX1, n
1630: 59 33 2b 33 32 2c 20 36 30 2c 20 6e 48 65 69 67  Y3+32, 60, nHeig
1640: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
1650: 2e 64 55 49 2e 67 65 74 28 22 4d 50 22 2c 20 22  .dUI.get("MP", "
1660: 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74  #err"), HelpText
1670: 20 3d 20 22 3a 4d 50 22 29 0a 20 20 20 20 20 20   = ":MP").      
1680: 20 20 73 65 6c 66 2e 78 56 20 3d 20 73 65 6c 66    self.xV = self
1690: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76 65 72  ._addWidget('ver
16a0: 62 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  b', 'RadioButton
16b0: 27 2c 20 6e 58 31 2c 20 6e 59 34 2b 32 2c 20 33  ', nX1, nY4+2, 3
16c0: 35 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  5, nHeight, Labe
16d0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
16e0: 28 22 76 65 72 62 22 2c 20 22 23 65 72 72 22 29  ("verb", "#err")
16f0: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
1700: 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20   = xFDSubTitle, 
1710: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 56 22 29  HelpText = ":V")
1720: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 57  .        self.xW
1730: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
1740: 65 74 28 27 61 64 76 27 2c 20 27 52 61 64 69 6f  et('adv', 'Radio
1750: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2c 20 6e 59  Button', nX1, nY
1760: 35 2b 32 2c 20 33 35 2c 20 6e 48 65 69 67 68 74  5+2, 35, nHeight
1770: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1780: 55 49 2e 67 65 74 28 22 61 64 76 65 72 62 22 2c  UI.get("adverb",
1790: 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65   "#err"), FontDe
17a0: 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75  scriptor = xFDSu
17b0: 62 54 69 74 6c 65 2c 20 48 65 6c 70 54 65 78 74  bTitle, HelpText
17c0: 20 3d 20 22 3a 57 22 29 0a 20 20 20 20 20 20 20   = ":W").       
17d0: 20 73 65 6c 66 2e 78 58 20 3d 20 73 65 6c 66 2e   self.xX = self.
17e0: 5f 61 64 64 57 69 64 67 65 74 28 27 6f 74 68 65  _addWidget('othe
17f0: 72 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  r', 'RadioButton
1800: 27 2c 20 6e 58 31 2c 20 6e 59 36 2b 32 2c 20 33  ', nX1, nY6+2, 3
1810: 35 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  5, nHeight, Labe
1820: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
1830: 28 22 6f 74 68 65 72 22 2c 20 22 23 65 72 72 22  ("other", "#err"
1840: 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f  ), FontDescripto
1850: 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c  r = xFDSubTitle,
1860: 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 58 22   HelpText = ":X"
1870: 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20  ).        .     
1880: 20 20 20 23 20 4e 6f 6d 2c 20 61 64 6a 65 63 74     # Nom, adject
1890: 69 66 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  if.        self.
18a0: 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f 6e  _addWidget("fl_n
18b0: 6f 6d 5f 61 64 6a 22 2c 20 27 46 69 78 65 64 4c  om_adj", 'FixedL
18c0: 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20  ine', nX1, nY2, 
18d0: 31 39 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61  190, nHeight, La
18e0: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
18f0: 65 74 28 22 63 6f 6d 6d 6f 6e 5f 6e 61 6d 65 22  et("common_name"
1900: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
1910: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53  escriptor = xFDS
1920: 75 62 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20  ubTitle).       
1930: 20 73 65 6c 66 2e 78 53 65 70 69 20 3d 20 73 65   self.xSepi = se
1940: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53  lf._addWidget('S
1950: 65 70 69 27 2c 20 27 52 61 64 69 6f 42 75 74 74  epi', 'RadioButt
1960: 6f 6e 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32  on', nX1+65, nY2
1970: 2b 31 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +12, 50, nHeight
1980: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1990: 55 49 2e 67 65 74 28 22 65 70 69 22 2c 20 22 23  UI.get("epi", "#
19a0: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
19b0: 3d 20 22 3a 65 22 29 0a 20 20 20 20 20 20 20 20  = ":e").        
19c0: 73 65 6c 66 2e 78 53 6d 61 73 20 3d 20 73 65 6c  self.xSmas = sel
19d0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 6d  f._addWidget('Sm
19e0: 61 73 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  as', 'RadioButto
19f0: 6e 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32 2b  n', nX1+65, nY2+
1a00: 32 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c  22, 50, nHeight,
1a10: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
1a20: 49 2e 67 65 74 28 22 6d 61 73 22 2c 20 22 23 65  I.get("mas", "#e
1a30: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
1a40: 20 22 3a 6d 22 29 0a 20 20 20 20 20 20 20 20 73   ":m").        s
1a50: 65 6c 66 2e 78 53 66 65 6d 20 3d 20 73 65 6c 66  elf.xSfem = self
1a60: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 53 66 65  ._addWidget('Sfe
1a70: 6d 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  m', 'RadioButton
1a80: 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 32 2b 33  ', nX1+65, nY2+3
1a90: 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  2, 50, nHeight, 
1aa0: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
1ab0: 2e 67 65 74 28 22 66 65 6d 22 2c 20 22 23 65 72  .get("fem", "#er
1ac0: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
1ad0: 22 3a 66 22 29 0a 20 20 20 20 20 20 20 20 73 65  ":f").        se
1ae0: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66  lf._addWidget("f
1af0: 6c 5f 73 65 70 31 22 2c 20 27 46 69 78 65 64 4c  l_sep1", 'FixedL
1b00: 69 6e 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20  ine', nX1, nY2, 
1b10: 31 2c 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20  1, nHeight).    
1b20: 20 20 20 20 73 65 6c 66 2e 78 53 73 20 3d 20 73      self.xSs = s
1b30: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
1b40: 53 73 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  Ss', 'RadioButto
1b50: 6e 27 2c 20 6e 58 31 2b 31 32 30 2c 20 6e 59 32  n', nX1+120, nY2
1b60: 2b 31 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74  +12, 50, nHeight
1b70: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
1b80: 55 49 2e 67 65 74 28 22 2d 73 22 2c 20 22 23 65  UI.get("-s", "#e
1b90: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
1ba0: 20 22 c2 b7 73 22 29 0a 20 20 20 20 20 20 20 20   "..s").        
1bb0: 73 65 6c 66 2e 78 53 78 20 3d 20 73 65 6c 66 2e  self.xSx = self.
1bc0: 5f 61 64 64 57 69 64 67 65 74 28 27 53 78 27 2c  _addWidget('Sx',
1bd0: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
1be0: 6e 58 31 2b 31 32 30 2c 20 6e 59 32 2b 32 32 2c  nX1+120, nY2+22,
1bf0: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
1c00: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1c10: 65 74 28 22 2d 78 22 2c 20 22 23 65 72 72 22 29  et("-x", "#err")
1c20: 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 c2 b7  , HelpText = "..
1c30: 78 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  x").        self
1c40: 2e 78 53 69 6e 76 20 3d 20 73 65 6c 66 2e 5f 61  .xSinv = self._a
1c50: 64 64 57 69 64 67 65 74 28 27 53 69 6e 76 27 2c  ddWidget('Sinv',
1c60: 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20   'RadioButton', 
1c70: 6e 58 31 2b 31 32 30 2c 20 6e 59 32 2b 33 32 2c  nX1+120, nY2+32,
1c80: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
1c90: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1ca0: 65 74 28 22 69 6e 76 22 2c 20 22 23 65 72 72 22  et("inv", "#err"
1cb0: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
1cc0: 69 22 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c  i")..        sel
1cd0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 61 6c  f._addWidget("al
1ce0: 74 5f 6c 65 6d 6d 61 5f 6c 61 62 65 6c 22 2c 20  t_lemma_label", 
1cf0: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
1d00: 2b 31 30 2c 20 6e 59 32 2b 34 32 2c 20 31 38 30  +10, nY2+42, 180
1d10: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
1d20: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
1d30: 22 61 6c 74 5f 6c 65 6d 6d 61 22 2c 20 22 23 65  "alt_lemma", "#e
1d40: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
1d50: 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61 20 3d 20 73  lf.xAltLemma = s
1d60: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27  elf._addWidget('
1d70: 61 6c 74 5f 6c 65 6d 6d 61 27 2c 20 27 45 64 69  alt_lemma', 'Edi
1d80: 74 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b  t', nX1+10, nY2+
1d90: 35 32 2c 20 31 32 30 2c 20 6e 48 65 69 67 68 74  52, 120, nHeight
1da0: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  ).        self.x
1db0: 4e 41 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  NA2 = self._addW
1dc0: 69 64 67 65 74 28 27 6e 6f 6d 5f 61 64 6a 32 27  idget('nom_adj2'
1dd0: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
1de0: 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b 36 35 2c   nX1+10, nY2+65,
1df0: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
1e00: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1e10: 65 74 28 22 6e 6f 6d 5f 61 64 6a 22 2c 20 22 23  et("nom_adj", "#
1e20: 65 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20  err"), HelpText 
1e30: 3d 20 22 3a 4e 3a 41 22 29 0a 20 20 20 20 20 20  = ":N:A").      
1e40: 20 20 73 65 6c 66 2e 78 4e 32 20 3d 20 73 65 6c    self.xN2 = sel
1e50: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6e 6f  f._addWidget('no
1e60: 6d 32 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f  m2', 'RadioButto
1e70: 6e 27 2c 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b  n', nX1+10, nY2+
1e80: 37 35 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c  75, 60, nHeight,
1e90: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
1ea0: 49 2e 67 65 74 28 22 6e 6f 6d 22 2c 20 22 23 65  I.get("nom", "#e
1eb0: 72 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d  rr"), HelpText =
1ec0: 20 22 3a 4e 22 29 0a 20 20 20 20 20 20 20 20 73   ":N").        s
1ed0: 65 6c 66 2e 78 41 32 20 3d 20 73 65 6c 66 2e 5f  elf.xA2 = self._
1ee0: 61 64 64 57 69 64 67 65 74 28 27 61 64 6a 32 27  addWidget('adj2'
1ef0: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
1f00: 20 6e 58 31 2b 31 30 2c 20 6e 59 32 2b 38 35 2c   nX1+10, nY2+85,
1f10: 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   60, nHeight, La
1f20: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
1f30: 65 74 28 22 61 64 6a 22 2c 20 22 23 65 72 72 22  et("adj", "#err"
1f40: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
1f50: 41 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  A").        self
1f60: 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f  ._addWidget("fl_
1f70: 73 65 70 32 22 2c 20 27 46 69 78 65 64 4c 69 6e  sep2", 'FixedLin
1f80: 65 27 2c 20 6e 58 31 2c 20 6e 59 32 2c 20 31 2c  e', nX1, nY2, 1,
1f90: 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20 20   nHeight).      
1fa0: 20 20 73 65 6c 66 2e 78 53 65 70 69 32 20 3d 20    self.xSepi2 = 
1fb0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
1fc0: 27 53 65 70 69 32 27 2c 20 27 52 61 64 69 6f 42  'Sepi2', 'RadioB
1fd0: 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 35 2c 20  utton', nX1+75, 
1fe0: 6e 59 32 2b 36 35 2c 20 35 30 2c 20 6e 48 65 69  nY2+65, 50, nHei
1ff0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
2000: 66 2e 64 55 49 2e 67 65 74 28 22 65 70 69 22 2c  f.dUI.get("epi",
2010: 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54 65   "#err"), HelpTe
2020: 78 74 20 3d 20 22 3a 65 22 29 0a 20 20 20 20 20  xt = ":e").     
2030: 20 20 20 73 65 6c 66 2e 78 53 6d 61 73 32 20 3d     self.xSmas2 =
2040: 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74   self._addWidget
2050: 28 27 53 6d 61 73 32 27 2c 20 27 52 61 64 69 6f  ('Smas2', 'Radio
2060: 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 35 2c  Button', nX1+75,
2070: 20 6e 59 32 2b 37 35 2c 20 35 30 2c 20 6e 48 65   nY2+75, 50, nHe
2080: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2090: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6d 61 73 22  lf.dUI.get("mas"
20a0: 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70 54  , "#err"), HelpT
20b0: 65 78 74 20 3d 20 22 3a 6d 22 29 0a 20 20 20 20  ext = ":m").    
20c0: 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d 32 20      self.xSfem2 
20d0: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
20e0: 74 28 27 53 66 65 6d 32 27 2c 20 27 52 61 64 69  t('Sfem2', 'Radi
20f0: 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 37 35  oButton', nX1+75
2100: 2c 20 6e 59 32 2b 38 35 2c 20 35 30 2c 20 6e 48  , nY2+85, 50, nH
2110: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2120: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 66 65 6d  elf.dUI.get("fem
2130: 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c 70  ", "#err"), Help
2140: 54 65 78 74 20 3d 20 22 3a 66 22 29 0a 20 20 20  Text = ":f").   
2150: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
2160: 64 67 65 74 28 22 66 6c 5f 73 65 70 33 22 2c 20  dget("fl_sep3", 
2170: 27 46 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 31  'FixedLine', nX1
2180: 2c 20 6e 59 32 2c 20 31 2c 20 6e 48 65 69 67 68  , nY2, 1, nHeigh
2190: 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  t).        self.
21a0: 78 53 73 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64  xSs2 = self._add
21b0: 57 69 64 67 65 74 28 27 53 73 32 27 2c 20 27 52  Widget('Ss2', 'R
21c0: 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31  adioButton', nX1
21d0: 2b 31 33 30 2c 20 6e 59 32 2b 36 35 2c 20 35 30  +130, nY2+65, 50
21e0: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
21f0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2200: 22 2d 73 22 2c 20 22 23 65 72 72 22 29 2c 20 48  "-s", "#err"), H
2210: 65 6c 70 54 65 78 74 20 3d 20 22 c2 b7 73 22 29  elpText = "..s")
2220: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53  .        self.xS
2230: 78 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  x2 = self._addWi
2240: 64 67 65 74 28 27 53 78 32 27 2c 20 27 52 61 64  dget('Sx2', 'Rad
2250: 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31 2b 31  ioButton', nX1+1
2260: 33 30 2c 20 6e 59 32 2b 37 35 2c 20 35 30 2c 20  30, nY2+75, 50, 
2270: 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d  nHeight, Label =
2280: 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 2d   self.dUI.get("-
2290: 78 22 2c 20 22 23 65 72 72 22 29 2c 20 48 65 6c  x", "#err"), Hel
22a0: 70 54 65 78 74 20 3d 20 22 c2 b7 78 22 29 0a 20  pText = "..x"). 
22b0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69 6e         self.xSin
22c0: 76 32 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  v2 = self._addWi
22d0: 64 67 65 74 28 27 53 69 6e 76 32 27 2c 20 27 52  dget('Sinv2', 'R
22e0: 61 64 69 6f 42 75 74 74 6f 6e 27 2c 20 6e 58 31  adioButton', nX1
22f0: 2b 31 33 30 2c 20 6e 59 32 2b 38 35 2c 20 35 30  +130, nY2+85, 50
2300: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2310: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2320: 22 69 6e 76 22 2c 20 22 23 65 72 72 22 29 2c 20  "inv", "#err"), 
2330: 48 65 6c 70 54 65 78 74 20 3d 20 22 3a 69 22 29  HelpText = ":i")
2340: 0a 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 20  ..        # Nom 
2350: 70 72 6f 70 72 65 0a 20 20 20 20 20 20 20 20 73  propre.        s
2360: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
2370: 66 6c 5f 4d 22 2c 20 27 46 69 78 65 64 4c 69 6e  fl_M", 'FixedLin
2380: 65 27 2c 20 6e 58 31 2c 20 6e 59 33 2c 20 31 39  e', nX1, nY3, 19
2390: 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65  0, nHeight, Labe
23a0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
23b0: 28 22 70 72 6f 70 65 72 5f 6e 61 6d 65 22 2c 20  ("proper_name", 
23c0: 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73  "#err"), FontDes
23d0: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 53 75 62  criptor = xFDSub
23e0: 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 73  Title).        s
23f0: 65 6c 66 2e 78 4d 65 70 69 20 3d 20 73 65 6c 66  elf.xMepi = self
2400: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 4d 65 70  ._addWidget('Mep
2410: 69 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e  i', 'RadioButton
2420: 27 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 31  ', nX1+65, nY3+1
2430: 32 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  2, 50, nHeight, 
2440: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
2450: 2e 67 65 74 28 22 65 70 69 22 2c 20 22 23 65 72  .get("epi", "#er
2460: 72 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20  r"), HelpText = 
2470: 22 3a 65 22 29 0a 20 20 20 20 20 20 20 20 73 65  ":e").        se
2480: 6c 66 2e 78 4d 6d 61 73 20 3d 20 73 65 6c 66 2e  lf.xMmas = self.
2490: 5f 61 64 64 57 69 64 67 65 74 28 27 4d 6d 61 73  _addWidget('Mmas
24a0: 27 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27  ', 'RadioButton'
24b0: 2c 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 32 32  , nX1+65, nY3+22
24c0: 2c 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c  , 50, nHeight, L
24d0: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
24e0: 67 65 74 28 22 6d 61 73 22 2c 20 22 23 65 72 72  get("mas", "#err
24f0: 22 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22  "), HelpText = "
2500: 3a 6d 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c  :m").        sel
2510: 66 2e 78 4d 66 65 6d 20 3d 20 73 65 6c 66 2e 5f  f.xMfem = self._
2520: 61 64 64 57 69 64 67 65 74 28 27 4d 66 65 6d 27  addWidget('Mfem'
2530: 2c 20 27 52 61 64 69 6f 42 75 74 74 6f 6e 27 2c  , 'RadioButton',
2540: 20 6e 58 31 2b 36 35 2c 20 6e 59 33 2b 33 32 2c   nX1+65, nY3+32,
2550: 20 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61   50, nHeight, La
2560: 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67  bel = self.dUI.g
2570: 65 74 28 22 66 65 6d 22 2c 20 22 23 65 72 72 22  et("fem", "#err"
2580: 29 2c 20 48 65 6c 70 54 65 78 74 20 3d 20 22 3a  ), HelpText = ":
2590: 66 22 29 0a 0a 20 20 20 20 20 20 20 20 23 20 56  f")..        # V
25a0: 65 72 62 65 0a 20 20 20 20 20 20 20 20 73 65 6c  erbe.        sel
25b0: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c  f._addWidget("fl
25c0: 5f 76 65 72 62 22 2c 20 27 46 69 78 65 64 4c 69  _verb", 'FixedLi
25d0: 6e 65 27 2c 20 6e 58 32 2b 33 30 2c 20 6e 59 34  ne', nX2+30, nY4
25e0: 2c 20 31 35 30 2c 20 6e 48 65 69 67 68 74 2c 20  , 150, nHeight, 
25f0: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
2600: 20 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20   xFDSubTitle).  
2610: 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f 69 20        self.xV_i 
2620: 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65  = self._addWidge
2630: 74 28 27 76 5f 69 27 2c 20 27 43 68 65 63 6b 42  t('v_i', 'CheckB
2640: 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b 31 32  ox', nX2, nY4+12
2650: 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c  , 60, nHeight, L
2660: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
2670: 67 65 74 28 22 76 5f 69 22 2c 20 22 23 65 72 72  get("v_i", "#err
2680: 22 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ")).        self
2690: 2e 78 56 5f 74 20 3d 20 73 65 6c 66 2e 5f 61 64  .xV_t = self._ad
26a0: 64 57 69 64 67 65 74 28 27 76 5f 74 27 2c 20 27  dWidget('v_t', '
26b0: 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32 2c 20  CheckBox', nX2, 
26c0: 6e 59 34 2b 32 30 2c 20 36 30 2c 20 6e 48 65 69  nY4+20, 60, nHei
26d0: 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c  ght, Label = sel
26e0: 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 74 22 2c  f.dUI.get("v_t",
26f0: 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20 20   "#err")).      
2700: 20 20 73 65 6c 66 2e 78 56 5f 6e 20 3d 20 73 65    self.xV_n = se
2710: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76  lf._addWidget('v
2720: 5f 6e 27 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c  _n', 'CheckBox',
2730: 20 6e 58 32 2c 20 6e 59 34 2b 32 38 2c 20 36 30   nX2, nY4+28, 60
2740: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2750: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2760: 22 76 5f 6e 22 2c 20 22 23 65 72 72 22 29 29 0a  "v_n", "#err")).
2770: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 56 5f          self.xV_
2780: 70 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64  p = self._addWid
2790: 67 65 74 28 27 76 5f 70 27 2c 20 27 43 68 65 63  get('v_p', 'Chec
27a0: 6b 42 6f 78 27 2c 20 6e 58 32 2c 20 6e 59 34 2b  kBox', nX2, nY4+
27b0: 33 36 2c 20 36 30 2c 20 6e 48 65 69 67 68 74 2c  36, 60, nHeight,
27c0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
27d0: 49 2e 67 65 74 28 22 76 5f 70 22 2c 20 22 23 65  I.get("v_p", "#e
27e0: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
27f0: 6c 66 2e 78 56 5f 6d 20 3d 20 73 65 6c 66 2e 5f  lf.xV_m = self._
2800: 61 64 64 57 69 64 67 65 74 28 27 76 5f 6d 27 2c  addWidget('v_m',
2810: 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32   'CheckBox', nX2
2820: 2c 20 6e 59 34 2b 34 34 2c 20 36 30 2c 20 6e 48  , nY4+44, 60, nH
2830: 65 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73  eight, Label = s
2840: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 76 5f 6d  elf.dUI.get("v_m
2850: 22 2c 20 22 23 65 72 72 22 29 29 0a 0a 20 20 20  ", "#err"))..   
2860: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
2870: 64 67 65 74 28 27 61 75 78 27 2c 20 27 46 69 78  dget('aux', 'Fix
2880: 65 64 54 65 78 74 27 2c 20 6e 58 32 2b 37 35 2c  edText', nX2+75,
2890: 20 6e 59 34 2b 31 30 2c 20 39 30 2c 20 6e 48 65   nY4+10, 90, nHe
28a0: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
28b0: 6c 66 2e 64 55 49 2e 67 65 74 28 22 61 75 78 22  lf.dUI.get("aux"
28c0: 2c 20 22 23 65 72 72 22 29 29 0a 20 20 20 20 20  , "#err")).     
28d0: 20 20 20 73 65 6c 66 2e 78 56 5f 61 65 20 3d 20     self.xV_ae = 
28e0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
28f0: 27 76 5f 61 65 27 2c 20 27 43 68 65 63 6b 42 6f  'v_ae', 'CheckBo
2900: 78 27 2c 20 6e 58 32 2b 37 35 2c 20 6e 59 34 2b  x', nX2+75, nY4+
2910: 32 30 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c  20, 90, nHeight,
2920: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
2930: 49 2e 67 65 74 28 22 76 5f 61 65 22 2c 20 22 23  I.get("v_ae", "#
2940: 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73  err")).        s
2950: 65 6c 66 2e 78 56 5f 61 61 20 3d 20 73 65 6c 66  elf.xV_aa = self
2960: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 76 5f 61  ._addWidget('v_a
2970: 61 27 2c 20 27 43 68 65 63 6b 42 6f 78 27 2c 20  a', 'CheckBox', 
2980: 6e 58 32 2b 37 35 2c 20 6e 59 34 2b 32 38 2c 20  nX2+75, nY4+28, 
2990: 39 30 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  90, nHeight, Lab
29a0: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
29b0: 74 28 22 76 5f 61 61 22 2c 20 22 23 65 72 72 22  t("v_aa", "#err"
29c0: 29 29 0a 0a 20 20 20 20 20 20 20 20 73 65 6c 66  ))..        self
29d0: 2e 78 56 5f 70 70 20 3d 20 73 65 6c 66 2e 5f 61  .xV_pp = self._a
29e0: 64 64 57 69 64 67 65 74 28 27 76 5f 70 70 27 2c  ddWidget('v_pp',
29f0: 20 27 43 68 65 63 6b 42 6f 78 27 2c 20 6e 58 32   'CheckBox', nX2
2a00: 2b 37 35 2c 20 6e 59 34 2b 34 34 2c 20 39 30 2c  +75, nY4+44, 90,
2a10: 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c 20   nHeight, Label 
2a20: 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  = self.dUI.get("
2a30: 76 5f 70 70 22 2c 20 22 23 65 72 72 22 29 29 0a  v_pp", "#err")).
2a40: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
2a50: 64 64 57 69 64 67 65 74 28 27 76 5f 70 61 74 74  ddWidget('v_patt
2a60: 65 72 6e 5f 6c 61 62 65 6c 27 2c 20 27 46 69 78  ern_label', 'Fix
2a70: 65 64 54 65 78 74 27 2c 20 6e 58 32 2b 31 30 2c  edText', nX2+10,
2a80: 20 6e 59 34 2b 35 36 2c 20 37 30 2c 20 6e 48 65   nY4+56, 70, nHe
2a90: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
2aa0: 6c 66 2e 64 55 49 2e 67 65 74 28 27 76 5f 70 61  lf.dUI.get('v_pa
2ab0: 74 74 65 72 6e 27 2c 20 22 23 65 72 72 22 29 2c  ttern', "#err"),
2ac0: 20 41 6c 69 67 6e 20 3d 20 32 29 0a 20 20 20 20   Align = 2).    
2ad0: 20 20 20 20 73 65 6c 66 2e 78 56 70 61 74 74 65      self.xVpatte
2ae0: 72 6e 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69  rn = self._addWi
2af0: 64 67 65 74 28 27 76 5f 70 61 74 74 65 72 6e 27  dget('v_pattern'
2b00: 2c 20 27 45 64 69 74 27 2c 20 6e 58 32 2b 38 35  , 'Edit', nX2+85
2b10: 2c 20 6e 59 34 2b 35 36 2c 20 38 30 2c 20 6e 48  , nY4+56, 80, nH
2b20: 65 69 67 68 74 29 0a 0a 20 20 20 20 20 20 20 20  eight)..        
2b30: 23 20 41 64 76 65 72 62 65 0a 20 20 20 20 20 20  # Adverbe.      
2b40: 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65    self._addWidge
2b50: 74 28 22 66 6c 5f 61 64 76 22 2c 20 27 46 69 78  t("fl_adv", 'Fix
2b60: 65 64 4c 69 6e 65 27 2c 20 6e 58 32 2b 33 30 2c  edLine', nX2+30,
2b70: 20 6e 59 35 2c 20 31 35 30 2c 20 6e 48 65 69 67   nY5, 150, nHeig
2b80: 68 74 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  ht, FontDescript
2b90: 6f 72 20 3d 20 78 46 44 53 75 62 54 69 74 6c 65  or = xFDSubTitle
2ba0: 29 0a 0a 20 20 20 20 20 20 20 20 23 20 41 75 74  )..        # Aut
2bb0: 72 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  re.        self.
2bc0: 5f 61 64 64 57 69 64 67 65 74 28 22 66 6c 5f 6f  _addWidget("fl_o
2bd0: 74 68 65 72 22 2c 20 27 46 69 78 65 64 4c 69 6e  ther", 'FixedLin
2be0: 65 27 2c 20 6e 58 32 2b 33 30 2c 20 6e 59 36 2c  e', nX2+30, nY6,
2bf0: 20 31 35 30 2c 20 6e 48 65 69 67 68 74 2c 20 46   150, nHeight, F
2c00: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
2c10: 78 46 44 53 75 62 54 69 74 6c 65 29 0a 20 20 20  xFDSubTitle).   
2c20: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
2c30: 64 67 65 74 28 27 66 6c 65 78 69 6f 6e 5f 6c 61  dget('flexion_la
2c40: 62 65 6c 27 2c 20 27 46 69 78 65 64 54 65 78 74  bel', 'FixedText
2c50: 27 2c 20 6e 58 32 2c 20 6e 59 36 2b 31 30 2c 20  ', nX2, nY6+10, 
2c60: 38 35 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62  85, nHeight, Lab
2c70: 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65  el = self.dUI.ge
2c80: 74 28 27 66 6c 65 78 69 6f 6e 27 2c 20 22 23 65  t('flexion', "#e
2c90: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
2ca0: 6c 66 2e 78 46 6c 65 78 69 6f 6e 20 3d 20 73 65  lf.xFlexion = se
2cb0: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 66  lf._addWidget('f
2cc0: 6c 65 78 69 6f 6e 27 2c 20 27 45 64 69 74 27 2c  lexion', 'Edit',
2cd0: 20 6e 58 32 2c 20 6e 59 36 2b 32 30 2c 20 38 35   nX2, nY6+20, 85
2ce0: 2c 20 6e 48 65 69 67 68 74 29 0a 20 20 20 20 20  , nHeight).     
2cf0: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
2d00: 65 74 28 27 74 61 67 73 5f 6c 61 62 65 6c 27 2c  et('tags_label',
2d10: 20 27 46 69 78 65 64 54 65 78 74 27 2c 20 6e 58   'FixedText', nX
2d20: 32 2b 39 30 2c 20 6e 59 36 2b 31 30 2c 20 38 35  2+90, nY6+10, 85
2d30: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
2d40: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
2d50: 27 74 61 67 73 27 2c 20 22 23 65 72 72 22 29 29  'tags', "#err"))
2d60: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 54  .        self.xT
2d70: 61 67 73 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  ags = self._addW
2d80: 69 64 67 65 74 28 27 74 61 67 73 27 2c 20 27 45  idget('tags', 'E
2d90: 64 69 74 27 2c 20 6e 58 32 2b 39 30 2c 20 6e 59  dit', nX2+90, nY
2da0: 36 2b 32 30 2c 20 38 35 2c 20 6e 48 65 69 67 68  6+20, 85, nHeigh
2db0: 74 29 0a 0a 20 20 20 20 20 20 20 20 23 23 23 23  t)..        ####
2dc0: 20 47 65 6e 65 72 61 74 65 64 20 77 6f 72 64 73   Generated words
2dd0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61  .        self._a
2de0: 64 64 57 69 64 67 65 74 28 22 67 77 6f 72 64 73  ddWidget("gwords
2df0: 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65  _section", 'Fixe
2e00: 64 4c 69 6e 65 27 2c 20 6e 58 42 2c 20 6e 59 31  dLine', nXB, nY1
2e10: 2c 20 32 30 30 2c 20 6e 48 65 69 67 68 74 2c 20  , 200, nHeight, 
2e20: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
2e30: 2e 67 65 74 28 22 6e 65 77 5f 73 65 63 74 69 6f  .get("new_sectio
2e40: 6e 22 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n", "#err"), Fon
2e50: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
2e60: 44 54 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20  DTitle).        
2e70: 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e  self.xGridModelN
2e80: 65 77 20 3d 20 73 65 6c 66 2e 5f 61 64 64 47 72  ew = self._addGr
2e90: 69 64 28 22 6c 69 73 74 5f 67 72 69 64 5f 67 77  id("list_grid_gw
2ea0: 6f 72 64 73 22 2c 20 6e 58 42 2c 20 6e 59 31 2b  ords", nXB, nY1+
2eb0: 31 30 2c 20 32 30 30 2c 20 31 37 35 2c 20 5b 0a  10, 200, 175, [.
2ec0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 22 54 69              {"Ti
2ed0: 74 6c 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e 67  tle": self.dUI.g
2ee0: 65 74 28 22 6c 65 78 5f 66 6c 65 78 22 2c 20 22  et("lex_flex", "
2ef0: 23 65 72 72 22 29 2c 20 22 43 6f 6c 75 6d 6e 57  #err"), "ColumnW
2f00: 69 64 74 68 22 3a 20 36 35 7d 2c 0a 20 20 20 20  idth": 65},.    
2f10: 20 20 20 20 20 20 20 20 7b 22 54 69 74 6c 65 22          {"Title"
2f20: 3a 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28 22  : self.dUI.get("
2f30: 6c 65 78 5f 6c 65 6d 6d 61 22 2c 20 22 23 65 72  lex_lemma", "#er
2f40: 72 22 29 2c 20 22 43 6f 6c 75 6d 6e 57 69 64 74  r"), "ColumnWidt
2f50: 68 22 3a 20 35 30 7d 2c 0a 20 20 20 20 20 20 20  h": 50},.       
2f60: 20 20 20 20 20 7b 22 54 69 74 6c 65 22 3a 20 73       {"Title": s
2f70: 65 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78  elf.dUI.get("lex
2f80: 5f 74 61 67 73 22 2c 20 22 23 65 72 72 22 29 2c  _tags", "#err"),
2f90: 20 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a 20   "ColumnWidth": 
2fa0: 36 35 7d 0a 20 20 20 20 20 20 20 20 5d 29 0a 20  65}.        ]). 
2fb0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64         self.xAdd
2fc0: 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67   = self._addWidg
2fd0: 65 74 28 27 61 64 64 5f 62 75 74 74 6f 6e 27 2c  et('add_button',
2fe0: 20 27 42 75 74 74 6f 6e 27 2c 20 6e 58 42 2c 20   'Button', nXB, 
2ff0: 6e 59 31 2b 31 39 30 2c 20 39 35 2c 20 31 32 2c  nY1+190, 95, 12,
3000: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3010: 49 2e 67 65 74 28 27 61 64 64 5f 62 75 74 74 6f  I.get('add_butto
3020: 6e 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e  n', "#err"), Fon
3030: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
3040: 44 54 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f  DTitle, TextColo
3050: 72 20 3d 20 30 78 30 30 35 35 30 30 2c 20 45 6e  r = 0x005500, En
3060: 61 62 6c 65 64 20 3d 20 46 61 6c 73 65 29 0a 20  abled = False). 
3070: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 65 6c         self.xDel
3080: 65 74 65 20 3d 20 73 65 6c 66 2e 5f 61 64 64 57  ete = self._addW
3090: 69 64 67 65 74 28 27 64 65 6c 65 74 65 5f 62 75  idget('delete_bu
30a0: 74 74 6f 6e 27 2c 20 27 42 75 74 74 6f 6e 27 2c  tton', 'Button',
30b0: 20 6e 58 42 2b 31 30 30 2c 20 6e 59 31 2b 31 39   nXB+100, nY1+19
30c0: 30 2c 20 31 30 30 2c 20 31 32 2c 20 4c 61 62 65  0, 100, 12, Labe
30d0: 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74  l = self.dUI.get
30e0: 28 27 64 65 6c 65 74 65 5f 62 75 74 74 6f 6e 27  ('delete_button'
30f0: 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74 44  , "#err"), FontD
3100: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 54  escriptor = xFDT
3110: 69 74 6c 65 2c 20 54 65 78 74 43 6f 6c 6f 72 20  itle, TextColor 
3120: 3d 20 30 78 35 35 30 30 30 30 29 0a 0a 20 20 20  = 0x550000)..   
3130: 20 20 20 20 20 6e 59 32 62 20 3d 20 6e 59 31 20       nY2b = nY1 
3140: 2b 20 32 30 35 0a 20 20 20 20 20 20 20 20 23 20  + 205.        # 
3150: 6c 65 78 69 63 6f 6e 20 69 6e 66 6f 20 73 65 63  lexicon info sec
3160: 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c  tion.        sel
3170: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22 6c 65  f._addWidget("le
3180: 78 69 63 6f 6e 5f 69 6e 66 6f 5f 73 65 63 74 69  xicon_info_secti
3190: 6f 6e 22 2c 20 27 46 69 78 65 64 4c 69 6e 65 27  on", 'FixedLine'
31a0: 2c 20 6e 58 42 2c 20 6e 59 32 62 2c 20 32 30 30  , nXB, nY2b, 200
31b0: 2c 20 6e 48 65 69 67 68 74 2c 20 4c 61 62 65 6c  , nHeight, Label
31c0: 20 3d 20 73 65 6c 66 2e 64 55 49 2e 67 65 74 28   = self.dUI.get(
31d0: 22 6c 65 78 69 63 6f 6e 5f 69 6e 66 6f 5f 73 65  "lexicon_info_se
31e0: 63 74 69 6f 6e 22 2c 20 22 23 65 72 72 22 29 2c  ction", "#err"),
31f0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
3200: 3d 20 78 46 44 54 69 74 6c 65 29 0a 20 20 20 20  = xFDTitle).    
3210: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
3220: 67 65 74 28 22 61 64 64 65 64 5f 65 6e 74 72 69  get("added_entri
3230: 65 73 5f 6c 61 62 65 6c 22 2c 20 27 46 69 78 65  es_label", 'Fixe
3240: 64 54 65 78 74 27 2c 20 6e 58 42 2c 20 6e 59 32  dText', nXB, nY2
3250: 62 2b 31 30 2c 20 39 30 2c 20 6e 48 65 69 67 68  b+10, 90, nHeigh
3260: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
3270: 64 55 49 2e 67 65 74 28 22 61 64 64 65 64 5f 65  dUI.get("added_e
3280: 6e 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22  ntries_label", "
3290: 23 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20  #err")).        
32a0: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
32b0: 22 64 65 6c 65 74 65 64 5f 65 6e 74 72 69 65 73  "deleted_entries
32c0: 5f 6c 61 62 65 6c 22 2c 20 27 46 69 78 65 64 54  _label", 'FixedT
32d0: 65 78 74 27 2c 20 6e 58 42 2c 20 6e 59 32 62 2b  ext', nXB, nY2b+
32e0: 32 30 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c  20, 90, nHeight,
32f0: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3300: 49 2e 67 65 74 28 22 64 65 6c 65 74 65 64 5f 65  I.get("deleted_e
3310: 6e 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22  ntries_label", "
3320: 23 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20  #err")).        
3330: 73 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28  self._addWidget(
3340: 22 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 5f  "num_of_entries_
3350: 6c 61 62 65 6c 31 22 2c 20 27 46 69 78 65 64 54  label1", 'FixedT
3360: 65 78 74 27 2c 20 6e 58 42 2c 20 6e 59 32 62 2b  ext', nXB, nY2b+
3370: 33 30 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c  30, 90, nHeight,
3380: 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55   Label = self.dU
3390: 49 2e 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e  I.get("num_of_en
33a0: 74 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22 23  tries_label", "#
33b0: 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73  err")).        s
33c0: 65 6c 66 2e 78 53 61 76 65 20 3d 20 73 65 6c 66  elf.xSave = self
33d0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 73 61 76  ._addWidget('sav
33e0: 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42 75 74 74  e_button', 'Butt
33f0: 6f 6e 27 2c 20 6e 58 42 2b 31 35 30 2c 20 6e 59  on', nXB+150, nY
3400: 32 62 2b 31 30 2c 20 35 30 2c 20 31 32 2c 20 4c  2b+10, 50, 12, L
3410: 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49 2e  abel = self.dUI.
3420: 67 65 74 28 27 73 61 76 65 5f 62 75 74 74 6f 6e  get('save_button
3430: 27 2c 20 22 23 65 72 72 22 29 2c 20 46 6f 6e 74  ', "#err"), Font
3440: 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44  Descriptor = xFD
3450: 53 75 62 54 69 74 6c 65 2c 20 54 65 78 74 43 6f  SubTitle, TextCo
3460: 6c 6f 72 20 3d 20 30 78 30 30 35 35 30 30 29 0a  lor = 0x005500).
3470: 20 20 20 20 20 20 20 20 23 20 64 69 63 74 69 6f          # dictio
3480: 6e 61 72 79 20 73 65 63 74 69 6f 6e 0a 20 20 20  nary section.   
3490: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
34a0: 64 67 65 74 28 22 64 69 63 74 69 6f 6e 61 72 79  dget("dictionary
34b0: 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46 69 78 65  _section", 'Fixe
34c0: 64 4c 69 6e 65 27 2c 20 6e 58 42 2c 20 6e 59 32  dLine', nXB, nY2
34d0: 62 2b 34 35 2c 20 32 30 30 2c 20 6e 48 65 69 67  b+45, 200, nHeig
34e0: 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66  ht, Label = self
34f0: 2e 64 55 49 2e 67 65 74 28 22 64 69 63 74 69 6f  .dUI.get("dictio
3500: 6e 61 72 79 5f 73 65 63 74 69 6f 6e 22 2c 20 22  nary_section", "
3510: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
3520: 72 69 70 74 6f 72 20 3d 20 78 46 44 54 69 74 6c  riptor = xFDTitl
3530: 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  e).        self.
3540: 5f 61 64 64 57 69 64 67 65 74 28 22 73 61 76 65  _addWidget("save
3550: 5f 64 61 74 65 5f 6c 61 62 65 6c 22 2c 20 27 46  _date_label", 'F
3560: 69 78 65 64 54 65 78 74 27 2c 20 6e 58 42 2c 20  ixedText', nXB, 
3570: 6e 59 32 62 2b 35 35 2c 20 39 30 2c 20 6e 48 65  nY2b+55, 90, nHe
3580: 69 67 68 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65  ight, Label = se
3590: 6c 66 2e 64 55 49 2e 67 65 74 28 22 73 61 76 65  lf.dUI.get("save
35a0: 5f 64 61 74 65 5f 6c 61 62 65 6c 22 2c 20 22 23  _date_label", "#
35b0: 65 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73  err")).        s
35c0: 65 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 22  elf._addWidget("
35d0: 6e 75 6d 5f 6f 66 5f 65 6e 74 72 69 65 73 5f 6c  num_of_entries_l
35e0: 61 62 65 6c 32 22 2c 20 27 46 69 78 65 64 54 65  abel2", 'FixedTe
35f0: 78 74 27 2c 20 6e 58 42 2c 20 6e 59 32 62 2b 36  xt', nXB, nY2b+6
3600: 35 2c 20 39 30 2c 20 6e 48 65 69 67 68 74 2c 20  5, 90, nHeight, 
3610: 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64 55 49  Label = self.dUI
3620: 2e 67 65 74 28 22 6e 75 6d 5f 6f 66 5f 65 6e 74  .get("num_of_ent
3630: 72 69 65 73 5f 6c 61 62 65 6c 22 2c 20 22 23 65  ries_label", "#e
3640: 72 72 22 29 29 0a 20 20 20 20 20 20 20 20 73 65  rr")).        se
3650: 6c 66 2e 78 45 78 70 6f 72 74 20 3d 20 73 65 6c  lf.xExport = sel
3660: 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 65 78  f._addWidget('ex
3670: 70 6f 72 74 5f 62 75 74 74 6f 6e 27 2c 20 27 42  port_button', 'B
3680: 75 74 74 6f 6e 27 2c 20 6e 58 42 2b 31 35 30 2c  utton', nXB+150,
3690: 20 6e 59 32 62 2b 35 35 2c 20 35 30 2c 20 31 32   nY2b+55, 50, 12
36a0: 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e 64  , Label = self.d
36b0: 55 49 2e 67 65 74 28 27 65 78 70 6f 72 74 5f 62  UI.get('export_b
36c0: 75 74 74 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c  utton', "#err"),
36d0: 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20   FontDescriptor 
36e0: 3d 20 78 46 44 53 75 62 54 69 74 6c 65 2c 20 54  = xFDSubTitle, T
36f0: 65 78 74 43 6f 6c 6f 72 20 3d 20 30 78 30 30 35  extColor = 0x005
3700: 35 30 30 29 0a 0a 20 20 20 20 20 20 20 20 23 23  500)..        ##
3710: 23 23 20 4c 65 78 69 63 6f 6e 20 73 65 63 74 69  ## Lexicon secti
3720: 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  on.        self.
3730: 5f 61 64 64 57 69 64 67 65 74 28 22 6c 65 78 69  _addWidget("lexi
3740: 63 6f 6e 5f 73 65 63 74 69 6f 6e 22 2c 20 27 46  con_section", 'F
3750: 69 78 65 64 4c 69 6e 65 27 2c 20 6e 58 43 2c 20  ixedLine', nXC, 
3760: 6e 59 31 2c 20 32 30 30 2c 20 6e 48 65 69 67 68  nY1, 200, nHeigh
3770: 74 2c 20 4c 61 62 65 6c 20 3d 20 73 65 6c 66 2e  t, Label = self.
3780: 64 55 49 2e 67 65 74 28 22 6c 65 78 69 63 6f 6e  dUI.get("lexicon
3790: 5f 73 65 63 74 69 6f 6e 22 2c 20 22 23 65 72 72  _section", "#err
37a0: 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74  "), FontDescript
37b0: 6f 72 20 3d 20 78 46 44 54 69 74 6c 65 29 0a 20  or = xFDTitle). 
37c0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 47 72 69         self.xGri
37d0: 64 4d 6f 64 65 6c 4c 65 78 20 3d 20 73 65 6c 66  dModelLex = self
37e0: 2e 5f 61 64 64 47 72 69 64 28 22 6c 69 73 74 5f  ._addGrid("list_
37f0: 67 72 69 64 5f 6c 65 78 69 63 6f 6e 22 2c 20 6e  grid_lexicon", n
3800: 58 43 2c 20 6e 59 31 2b 31 30 2c 20 32 30 30 2c  XC, nY1+10, 200,
3810: 20 32 37 30 2c 20 5b 0a 20 20 20 20 20 20 20 20   270, [.        
3820: 20 20 20 20 7b 22 54 69 74 6c 65 22 3a 20 73 65      {"Title": se
3830: 6c 66 2e 64 55 49 2e 67 65 74 28 22 6c 65 78 5f  lf.dUI.get("lex_
3840: 66 6c 65 78 22 2c 20 22 23 65 72 72 22 29 2c 20  flex", "#err"), 
3850: 22 43 6f 6c 75 6d 6e 57 69 64 74 68 22 3a 20 36  "ColumnWidth": 6
3860: 35 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  5},.            
3870: 7b 22 54 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64  {"Title": self.d
3880: 55 49 2e 67 65 74 28 22 6c 65 78 5f 6c 65 6d 6d  UI.get("lex_lemm
3890: 61 22 2c 20 22 23 65 72 72 22 29 2c 20 22 43 6f  a", "#err"), "Co
38a0: 6c 75 6d 6e 57 69 64 74 68 22 3a 20 35 30 7d 2c  lumnWidth": 50},
38b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 22 54  .            {"T
38c0: 69 74 6c 65 22 3a 20 73 65 6c 66 2e 64 55 49 2e  itle": self.dUI.
38d0: 67 65 74 28 22 6c 65 78 5f 74 61 67 73 22 2c 20  get("lex_tags", 
38e0: 22 23 65 72 72 22 29 2c 20 22 43 6f 6c 75 6d 6e  "#err"), "Column
38f0: 57 69 64 74 68 22 3a 20 36 35 7d 0a 20 20 20 20  Width": 65}.    
3900: 20 20 20 20 5d 29 0a 0a 20 20 20 20 20 20 20 20      ])..        
3910: 23 20 63 6f 6e 74 61 69 6e 65 72 0a 20 20 20 20  # container.    
3920: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
3930: 6e 65 72 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67  ner = self.xSvMg
3940: 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65  r.createInstance
3950: 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d  WithContext('com
3960: 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 55 6e  .sun.star.awt.Un
3970: 6f 43 6f 6e 74 72 6f 6c 44 69 61 6c 6f 67 27 2c  oControlDialog',
3980: 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20   self.ctx).     
3990: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
39a0: 65 72 2e 73 65 74 4d 6f 64 65 6c 28 73 65 6c 66  er.setModel(self
39b0: 2e 78 44 69 61 6c 6f 67 29 0a 20 20 20 20 20 20  .xDialog).      
39c0: 20 20 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74    self.xGridCont
39d0: 72 6f 6c 4e 65 77 20 3d 20 73 65 6c 66 2e 78 43  rolNew = self.xC
39e0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
39f0: 72 6f 6c 28 27 6c 69 73 74 5f 67 72 69 64 5f 67  rol('list_grid_g
3a00: 77 6f 72 64 73 27 29 0a 20 20 20 20 20 20 20 20  words').        
3a10: 73 65 6c 66 2e 78 47 72 69 64 43 6f 6e 74 72 6f  self.xGridContro
3a20: 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 78 43 6f 6e  lLex = self.xCon
3a30: 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f  tainer.getContro
3a40: 6c 28 27 6c 69 73 74 5f 67 72 69 64 5f 6c 65 78  l('list_grid_lex
3a50: 69 63 6f 6e 27 29 0a 20 20 20 20 20 20 20 20 23  icon').        #
3a60: 68 65 6c 70 65 72 73 2e 78 72 61 79 28 73 65 6c  helpers.xray(sel
3a70: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
3a80: 43 6f 6e 74 72 6f 6c 28 27 6c 65 6d 6d 61 27 29  Control('lemma')
3a90: 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f  ).        self._
3aa0: 63 72 65 61 74 65 4b 65 79 4c 69 73 74 65 6e 65  createKeyListene
3ab0: 72 73 28 5b 27 6c 65 6d 6d 61 27 2c 20 27 61 6c  rs(['lemma', 'al
3ac0: 74 5f 6c 65 6d 6d 61 27 2c 20 22 76 5f 70 61 74  t_lemma', "v_pat
3ad0: 74 65 72 6e 22 2c 20 27 66 6c 65 78 69 6f 6e 27  tern", 'flexion'
3ae0: 2c 20 27 74 61 67 73 27 5d 2c 20 22 55 70 64 61  , 'tags'], "Upda
3af0: 74 65 22 29 0a 20 20 20 20 20 20 20 20 73 65 6c  te").        sel
3b00: 66 2e 5f 63 72 65 61 74 65 41 63 74 69 6f 6e 4c  f._createActionL
3b10: 69 73 74 65 6e 65 72 73 28 5b 27 6e 6f 6d 5f 61  isteners(['nom_a
3b20: 64 6a 27 2c 20 27 6e 6f 6d 27 2c 20 27 61 64 6a  dj', 'nom', 'adj
3b30: 27 2c 20 27 4d 31 27 2c 20 27 4d 32 27 2c 20 27  ', 'M1', 'M2', '
3b40: 4d 50 27 2c 20 27 76 65 72 62 27 2c 20 27 61 64  MP', 'verb', 'ad
3b50: 76 27 2c 20 27 6f 74 68 65 72 27 2c 20 5c 0a 20  v', 'other', \. 
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b80: 20 20 20 20 27 53 65 70 69 27 2c 20 27 53 6d 61      'Sepi', 'Sma
3b90: 73 27 2c 20 27 53 66 65 6d 27 2c 20 27 53 73 27  s', 'Sfem', 'Ss'
3ba0: 2c 20 27 53 78 27 2c 20 27 53 69 6e 76 27 2c 20  , 'Sx', 'Sinv', 
3bb0: 27 6e 6f 6d 5f 61 64 6a 32 27 2c 20 27 6e 6f 6d  'nom_adj2', 'nom
3bc0: 32 27 2c 20 27 61 64 6a 32 27 2c 20 5c 0a 20 20  2', 'adj2', \.  
3bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bf0: 20 20 20 27 53 65 70 69 32 27 2c 20 27 53 6d 61     'Sepi2', 'Sma
3c00: 73 32 27 2c 20 27 53 66 65 6d 32 27 2c 20 27 53  s2', 'Sfem2', 'S
3c10: 73 32 27 2c 20 27 53 78 32 27 2c 20 27 53 69 6e  s2', 'Sx2', 'Sin
3c20: 76 32 27 2c 20 27 4d 65 70 69 27 2c 20 27 4d 6d  v2', 'Mepi', 'Mm
3c30: 61 73 27 2c 20 27 4d 66 65 6d 27 2c 20 5c 0a 20  as', 'Mfem', \. 
3c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c60: 20 20 20 20 27 76 5f 69 27 2c 20 27 76 5f 74 27      'v_i', 'v_t'
3c70: 2c 20 27 76 5f 6e 27 2c 20 27 76 5f 70 27 2c 20  , 'v_n', 'v_p', 
3c80: 27 76 5f 6d 27 2c 20 27 76 5f 61 65 27 2c 20 27  'v_m', 'v_ae', '
3c90: 76 5f 61 61 27 2c 20 27 76 5f 70 70 27 5d 2c 20  v_aa', 'v_pp'], 
3ca0: 22 55 70 64 61 74 65 22 29 0a 20 20 20 20 20 20  "Update").      
3cb0: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
3cc0: 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27 61 64  r.getControl('ad
3cd0: 64 5f 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63  d_button').addAc
3ce0: 74 69 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c  tionListener(sel
3cf0: 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  f).        self.
3d00: 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f  xContainer.getCo
3d10: 6e 74 72 6f 6c 28 27 61 64 64 5f 62 75 74 74 6f  ntrol('add_butto
3d20: 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d  n').setActionCom
3d30: 6d 61 6e 64 28 27 41 64 64 27 29 0a 20 20 20 20  mand('Add').    
3d40: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
3d50: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27  ner.getControl('
3d60: 64 65 6c 65 74 65 5f 62 75 74 74 6f 6e 27 29 2e  delete_button').
3d70: 61 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65  addActionListene
3d80: 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20  r(self).        
3d90: 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e  self.xContainer.
3da0: 67 65 74 43 6f 6e 74 72 6f 6c 28 27 64 65 6c 65  getControl('dele
3db0: 74 65 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74 41  te_button').setA
3dc0: 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 44 65  ctionCommand('De
3dd0: 6c 65 74 65 27 29 0a 20 20 20 20 20 20 20 20 73  lete').        s
3de0: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67  elf.xContainer.g
3df0: 65 74 43 6f 6e 74 72 6f 6c 28 27 73 61 76 65 5f  etControl('save_
3e00: 62 75 74 74 6f 6e 27 29 2e 61 64 64 41 63 74 69  button').addActi
3e10: 6f 6e 4c 69 73 74 65 6e 65 72 28 73 65 6c 66 29  onListener(self)
3e20: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43  .        self.xC
3e30: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
3e40: 72 6f 6c 28 27 73 61 76 65 5f 62 75 74 74 6f 6e  rol('save_button
3e50: 27 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f 6d 6d  ').setActionComm
3e60: 61 6e 64 28 27 53 61 76 65 27 29 0a 20 20 20 20  and('Save').    
3e70: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
3e80: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 27  ner.getControl('
3e90: 63 6c 6f 73 65 5f 62 75 74 74 6f 6e 27 29 2e 61  close_button').a
3ea0: 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72  ddActionListener
3eb0: 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73  (self).        s
3ec0: 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67  elf.xContainer.g
3ed0: 65 74 43 6f 6e 74 72 6f 6c 28 27 63 6c 6f 73 65  etControl('close
3ee0: 5f 62 75 74 74 6f 6e 27 29 2e 73 65 74 41 63 74  _button').setAct
3ef0: 69 6f 6e 43 6f 6d 6d 61 6e 64 28 27 43 6c 6f 73  ionCommand('Clos
3f00: 65 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66  e').        self
3f10: 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65 74 56  .xContainer.setV
3f20: 69 73 69 62 6c 65 28 46 61 6c 73 65 29 0a 20 20  isible(False).  
3f30: 20 20 20 20 20 20 78 54 6f 6f 6c 6b 69 74 20 3d        xToolkit =
3f40: 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72 65   self.xSvMgr.cre
3f50: 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68 43  ateInstanceWithC
3f60: 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e 2e  ontext('com.sun.
3f70: 73 74 61 72 2e 61 77 74 2e 45 78 74 54 6f 6f 6c  star.awt.ExtTool
3f80: 6b 69 74 27 2c 20 73 65 6c 66 2e 63 74 78 29 0a  kit', self.ctx).
3f90: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
3fa0: 6e 74 61 69 6e 65 72 2e 63 72 65 61 74 65 50 65  ntainer.createPe
3fb0: 65 72 28 78 54 6f 6f 6c 6b 69 74 2c 20 4e 6f 6e  er(xToolkit, Non
3fc0: 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  e).        self.
3fd0: 78 43 6f 6e 74 61 69 6e 65 72 2e 65 78 65 63 75  xContainer.execu
3fe0: 74 65 28 29 0a 0a 20 20 20 20 64 65 66 20 5f 63  te()..    def _c
3ff0: 72 65 61 74 65 4b 65 79 4c 69 73 74 65 6e 65 72  reateKeyListener
4000: 73 20 28 73 65 6c 66 2c 20 6c 4e 61 6d 65 73 2c  s (self, lNames,
4010: 20 73 41 63 74 69 6f 6e 29 3a 0a 20 20 20 20 20   sAction):.     
4020: 20 20 20 66 6f 72 20 73 4e 61 6d 65 20 69 6e 20     for sName in 
4030: 6c 4e 61 6d 65 73 3a 0a 20 20 20 20 20 20 20 20  lNames:.        
4040: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
4050: 6e 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 73  ner.getControl(s
4060: 4e 61 6d 65 29 2e 61 64 64 4b 65 79 4c 69 73 74  Name).addKeyList
4070: 65 6e 65 72 28 73 65 6c 66 29 0a 0a 20 20 20 20  ener(self)..    
4080: 64 65 66 20 5f 63 72 65 61 74 65 41 63 74 69 6f  def _createActio
4090: 6e 4c 69 73 74 65 6e 65 72 73 20 28 73 65 6c 66  nListeners (self
40a0: 2c 20 6c 4e 61 6d 65 73 2c 20 73 41 63 74 69 6f  , lNames, sActio
40b0: 6e 29 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20  n):.        for 
40c0: 73 4e 61 6d 65 20 69 6e 20 6c 4e 61 6d 65 73 3a  sName in lNames:
40d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c  .            sel
40e0: 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 67 65 74  f.xContainer.get
40f0: 43 6f 6e 74 72 6f 6c 28 73 4e 61 6d 65 29 2e 61  Control(sName).a
4100: 64 64 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72  ddActionListener
4110: 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20  (self).         
4120: 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e     self.xContain
4130: 65 72 2e 67 65 74 43 6f 6e 74 72 6f 6c 28 73 4e  er.getControl(sN
4140: 61 6d 65 29 2e 73 65 74 41 63 74 69 6f 6e 43 6f  ame).setActionCo
4150: 6d 6d 61 6e 64 28 73 41 63 74 69 6f 6e 29 0a 0a  mmand(sAction)..
4160: 20 20 20 20 23 20 58 41 63 74 69 6f 6e 4c 69 73      # XActionLis
4170: 74 65 6e 65 72 0a 20 20 20 20 64 65 66 20 61 63  tener.    def ac
4180: 74 69 6f 6e 50 65 72 66 6f 72 6d 65 64 20 28 73  tionPerformed (s
4190: 65 6c 66 2c 20 78 41 63 74 69 6f 6e 45 76 65 6e  elf, xActionEven
41a0: 74 29 3a 0a 20 20 20 20 20 20 20 20 74 72 79 3a  t):.        try:
41b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
41c0: 78 41 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63 74  xActionEvent.Act
41d0: 69 6f 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22 41  ionCommand == "A
41e0: 64 64 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  dd":.           
41f0: 20 20 20 20 20 73 65 6c 66 2e 61 64 64 54 6f 4c       self.addToL
4200: 65 78 69 63 6f 6e 28 29 0a 20 20 20 20 20 20 20  exicon().       
4210: 20 20 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f       elif xActio
4220: 6e 45 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d  nEvent.ActionCom
4230: 6d 61 6e 64 20 3d 3d 20 22 44 65 6c 65 74 65 22  mand == "Delete"
4240: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
4250: 20 20 70 61 73 73 0a 20 20 20 20 20 20 20 20 20    pass.         
4260: 20 20 20 65 6c 69 66 20 78 41 63 74 69 6f 6e 45     elif xActionE
4270: 76 65 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61  vent.ActionComma
4280: 6e 64 20 3d 3d 20 22 53 61 76 65 22 3a 0a 20 20  nd == "Save":.  
4290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
42a0: 6c 66 2e 73 61 76 65 4c 65 78 69 63 6f 6e 28 29  lf.saveLexicon()
42b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69  .            eli
42c0: 66 20 78 41 63 74 69 6f 6e 45 76 65 6e 74 2e 41  f xActionEvent.A
42d0: 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20  ctionCommand == 
42e0: 22 55 70 64 61 74 65 22 3a 0a 20 20 20 20 20 20  "Update":.      
42f0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75            self.u
4300: 70 64 61 74 65 47 65 6e 57 6f 72 64 73 28 29 0a  pdateGenWords().
4310: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66              elif
4320: 20 78 41 63 74 69 6f 6e 45 76 65 6e 74 2e 41 63   xActionEvent.Ac
4330: 74 69 6f 6e 43 6f 6d 6d 61 6e 64 20 3d 3d 20 22  tionCommand == "
4340: 43 6c 6f 73 65 22 3a 0a 20 20 20 20 20 20 20 20  Close":.        
4350: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
4360: 6e 74 61 69 6e 65 72 2e 65 6e 64 45 78 65 63 75  ntainer.endExecu
4370: 74 65 28 29 0a 20 20 20 20 20 20 20 20 65 78 63  te().        exc
4380: 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ept:.           
4390: 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74   traceback.print
43a0: 5f 65 78 63 28 29 0a 20 20 20 20 0a 20 20 20 20  _exc().    .    
43b0: 23 20 58 4b 65 79 4c 69 73 74 65 6e 65 72 0a 20  # XKeyListener. 
43c0: 20 20 20 64 65 66 20 6b 65 79 50 72 65 73 73 65     def keyPresse
43d0: 64 20 28 73 65 6c 66 2c 20 78 4b 65 79 45 76 65  d (self, xKeyEve
43e0: 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 70 61 73  nt):.        pas
43f0: 73 0a 0a 20 20 20 20 64 65 66 20 6b 65 79 52 65  s..    def keyRe
4400: 6c 65 61 73 65 64 20 28 73 65 6c 66 2c 20 78 4b  leased (self, xK
4410: 65 79 45 76 65 6e 74 29 3a 0a 20 20 20 20 20 20  eyEvent):.      
4420: 20 20 73 65 6c 66 2e 75 70 64 61 74 65 47 65 6e    self.updateGen
4430: 57 6f 72 64 73 28 29 0a 0a 20 20 20 20 23 20 58  Words()..    # X
4440: 4a 6f 62 45 78 65 63 75 74 6f 72 0a 20 20 20 20  JobExecutor.    
4450: 64 65 66 20 74 72 69 67 67 65 72 20 28 73 65 6c  def trigger (sel
4460: 66 2c 20 61 72 67 73 29 3a 0a 20 20 20 20 20 20  f, args):.      
4470: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
4480: 20 20 20 78 44 69 61 6c 6f 67 20 3d 20 4c 65 78     xDialog = Lex
4490: 69 63 6f 6e 45 64 69 74 6f 72 28 73 65 6c 66 2e  iconEditor(self.
44a0: 63 74 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  ctx).           
44b0: 20 78 44 69 61 6c 6f 67 2e 72 75 6e 28 29 0a 20   xDialog.run(). 
44c0: 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20         except:. 
44d0: 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
44e0: 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28 29  back.print_exc()
44f0: 0a 0a 20 20 20 20 23 20 43 6f 64 65 0a 20 20 20  ..    # Code.   
4500: 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72 0a 20   @_waitPointer. 
4510: 20 20 20 64 65 66 20 6c 6f 61 64 4c 65 78 69 63     def loadLexic
4520: 6f 6e 20 28 73 65 6c 66 29 3a 0a 20 20 20 20 20  on (self):.     
4530: 20 20 20 70 61 73 73 0a 0a 20 20 20 20 40 5f 77     pass..    @_w
4540: 61 69 74 50 6f 69 6e 74 65 72 0a 20 20 20 20 64  aitPointer.    d
4550: 65 66 20 73 61 76 65 4c 65 78 69 63 6f 6e 20 28  ef saveLexicon (
4560: 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 78  self):.        x
4570: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 20 3d 20  GridDataModel = 
4580: 73 65 6c 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4c  self.xGridModelL
4590: 65 78 2e 47 72 69 64 44 61 74 61 4d 6f 64 65 6c  ex.GridDataModel
45a0: 0a 20 20 20 20 20 20 20 20 6c 45 6e 74 72 79 20  .        lEntry 
45b0: 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f 72  = [].        for
45c0: 20 69 20 69 6e 20 72 61 6e 67 65 28 78 47 72 69   i in range(xGri
45d0: 64 44 61 74 61 4d 6f 64 65 6c 2e 52 6f 77 43 6f  dDataModel.RowCo
45e0: 75 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20  unt):.          
45f0: 20 20 6c 45 6e 74 72 79 2e 61 70 70 65 6e 64 28    lEntry.append(
4600: 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 67  xGridDataModel.g
4610: 65 74 52 6f 77 44 61 74 61 28 69 29 29 0a 20 20  etRowData(i)).  
4620: 20 20 20 20 20 20 6f 44 41 57 47 20 3d 20 64 61        oDAWG = da
4630: 77 67 2e 44 41 57 47 28 6c 45 6e 74 72 79 2c 20  wg.DAWG(lEntry, 
4640: 22 53 22 2c 20 22 66 72 22 2c 20 22 46 72 61 6e  "S", "fr", "Fran
4650: c3 a7 61 69 73 22 2c 20 22 44 69 63 74 69 6f 6e  ..ais", "Diction
4660: 6e 61 69 72 65 20 70 65 72 73 6f 6e 6e 65 6c 22  naire personnel"
4670: 29 0a 0a 20 20 20 20 64 65 66 20 5f 67 65 74 52  )..    def _getR
4680: 61 64 69 6f 56 61 6c 75 65 20 28 73 65 6c 66 2c  adioValue (self,
4690: 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20   *args):.       
46a0: 20 66 6f 72 20 78 20 69 6e 20 61 72 67 73 3a 0a   for x in args:.
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 78              if x
46c0: 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20  .State:.        
46d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 78          return x
46e0: 2e 48 65 6c 70 54 65 78 74 0a 20 20 20 20 20 20  .HelpText.      
46f0: 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 20    return None.. 
4700: 20 20 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72     @_waitPointer
4710: 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 47  .    def updateG
4720: 65 6e 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a  enWords (self):.
4730: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
4740: 6e 65 72 61 74 65 64 46 6c 65 78 20 3d 20 5b 5d  neratedFlex = []
4750: 0a 20 20 20 20 20 20 20 20 73 4c 65 6d 6d 61 20  .        sLemma 
4760: 3d 20 73 65 6c 66 2e 78 4c 65 6d 6d 61 2e 54 65  = self.xLemma.Te
4770: 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20  xt.strip().     
4780: 20 20 20 69 66 20 73 4c 65 6d 6d 61 3a 0a 20 20     if sLemma:.  
4790: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c            if sel
47a0: 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65  f._getRadioValue
47b0: 28 73 65 6c 66 2e 78 4e 41 2c 20 73 65 6c 66 2e  (self.xNA, self.
47c0: 78 4e 2c 20 73 65 6c 66 2e 78 41 29 3a 0a 20 20  xN, self.xA):.  
47d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
47e0: 53 75 62 73 74 61 6e 74 69 66 0a 20 20 20 20 20  Substantif.     
47f0: 20 20 20 20 20 20 20 20 20 20 20 73 50 4f 53 20             sPOS 
4800: 3d 20 73 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f  = self._getRadio
4810: 56 61 6c 75 65 28 73 65 6c 66 2e 78 4e 41 2c 20  Value(self.xNA, 
4820: 73 65 6c 66 2e 78 4e 2c 20 73 65 6c 66 2e 78 41  self.xN, self.xA
4830: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
4840: 20 20 73 47 65 6e 64 65 72 54 61 67 20 3d 20 73    sGenderTag = s
4850: 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c  elf._getRadioVal
4860: 75 65 28 73 65 6c 66 2e 78 53 65 70 69 2c 20 73  ue(self.xSepi, s
4870: 65 6c 66 2e 78 53 6d 61 73 2c 20 73 65 6c 66 2e  elf.xSmas, self.
4880: 78 53 66 65 6d 29 0a 20 20 20 20 20 20 20 20 20  xSfem).         
4890: 20 20 20 20 20 20 20 69 66 20 73 47 65 6e 64 65         if sGende
48a0: 72 54 61 67 3a 0a 20 20 20 20 20 20 20 20 20 20  rTag:.          
48b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c            if sel
48c0: 66 2e 78 53 73 2e 53 74 61 74 65 3a 0a 20 20 20  f.xSs.State:.   
48d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48e0: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
48f0: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
4900: 28 73 4c 65 6d 6d 61 2c 20 73 4c 65 6d 6d 61 2c  (sLemma, sLemma,
4910: 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54 61 67   sPOS+sGenderTag
4920: 2b 22 3a 73 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":s/*")).      
4930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4940: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
4950: 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c  dFlex.append((sL
4960: 65 6d 6d 61 2b 22 73 22 2c 20 73 4c 65 6d 6d 61  emma+"s", sLemma
4970: 2c 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54 61  , sPOS+sGenderTa
4980: 67 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20 20  g+":p/*")).     
4990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
49a0: 6c 69 66 20 73 65 6c 66 2e 78 53 78 2e 53 74 61  lif self.xSx.Sta
49b0: 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  te:.            
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
49d0: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
49e0: 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 2c 20  append((sLemma, 
49f0: 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47 65  sLemma, sPOS+sGe
4a00: 6e 64 65 72 54 61 67 2b 22 3a 73 2f 2a 22 29 29  nderTag+":s/*"))
4a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a20: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47           self.lG
4a30: 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70  eneratedFlex.app
4a40: 65 6e 64 28 28 73 4c 65 6d 6d 61 2b 22 78 22 2c  end((sLemma+"x",
4a50: 20 73 4c 65 6d 6d 61 2c 20 73 50 4f 53 2b 73 47   sLemma, sPOS+sG
4a60: 65 6e 64 65 72 54 61 67 2b 22 3a 70 2f 2a 22 29  enderTag+":p/*")
4a70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
4a80: 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e        elif self.
4a90: 78 53 69 6e 76 2e 53 74 61 74 65 3a 0a 20 20 20  xSinv.State:.   
4aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ab0: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
4ac0: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
4ad0: 28 73 4c 65 6d 6d 61 2c 20 73 4c 65 6d 6d 61 2c  (sLemma, sLemma,
4ae0: 20 73 50 4f 53 2b 73 47 65 6e 64 65 72 54 61 67   sPOS+sGenderTag
4af0: 2b 22 3a 69 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":i/*")).      
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 4c                sL
4b10: 65 6d 6d 61 32 20 3d 20 73 65 6c 66 2e 78 41 6c  emma2 = self.xAl
4b20: 74 4c 65 6d 6d 61 2e 54 65 78 74 2e 73 74 72 69  tLemma.Text.stri
4b30: 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  p().            
4b40: 20 20 20 20 20 20 20 20 69 66 20 73 4c 65 6d 6d          if sLemm
4b50: 61 32 20 61 6e 64 20 73 65 6c 66 2e 5f 67 65 74  a2 and self._get
4b60: 52 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e  RadioValue(self.
4b70: 78 4e 41 32 2c 20 73 65 6c 66 2e 78 4e 32 2c 20  xNA2, self.xN2, 
4b80: 73 65 6c 66 2e 78 41 32 29 20 61 6e 64 20 73 65  self.xA2) and se
4b90: 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75  lf._getRadioValu
4ba0: 65 28 73 65 6c 66 2e 78 53 65 70 69 32 2c 20 73  e(self.xSepi2, s
4bb0: 65 6c 66 2e 78 53 6d 61 73 32 2c 20 73 65 6c 66  elf.xSmas2, self
4bc0: 2e 78 53 66 65 6d 32 29 3a 0a 20 20 20 20 20 20  .xSfem2):.      
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4be0: 20 20 73 54 61 67 32 20 3d 20 73 65 6c 66 2e 5f    sTag2 = self._
4bf0: 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28 73 65  getRadioValue(se
4c00: 6c 66 2e 78 4e 41 32 2c 20 73 65 6c 66 2e 78 4e  lf.xNA2, self.xN
4c10: 32 2c 20 73 65 6c 66 2e 78 41 32 29 20 2b 20 73  2, self.xA2) + s
4c20: 65 6c 66 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c  elf._getRadioVal
4c30: 75 65 28 73 65 6c 66 2e 78 53 65 70 69 32 2c 20  ue(self.xSepi2, 
4c40: 73 65 6c 66 2e 78 53 6d 61 73 32 2c 20 73 65 6c  self.xSmas2, sel
4c50: 66 2e 78 53 66 65 6d 32 29 0a 20 20 20 20 20 20  f.xSfem2).      
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c70: 20 20 69 66 20 73 65 6c 66 2e 78 53 73 32 2e 53    if self.xSs2.S
4c80: 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20  tate:.          
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65    self.lGenerate
4cb0: 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c  dFlex.append((sL
4cc0: 65 6d 6d 61 32 2c 20 73 4c 65 6d 6d 61 2c 20 73  emma2, sLemma, s
4cd0: 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29 0a 20 20  Tag2+":s/*")).  
4ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4cf0: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c            self.l
4d00: 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70  GeneratedFlex.ap
4d10: 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2b 22 73  pend((sLemma2+"s
4d20: 22 2c 20 73 4c 65 6d 6d 61 2c 20 73 54 61 67 32  ", sLemma, sTag2
4d30: 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20 20 20  +":p/*")).      
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d50: 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 53 78 32    elif self.xSx2
4d60: 2e 53 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20  .State:.        
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d80: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
4d90: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
4da0: 73 4c 65 6d 6d 61 32 2c 20 73 4c 65 6d 6d 61 2c  sLemma2, sLemma,
4db0: 20 73 54 61 67 32 2b 22 3a 73 2f 2a 22 29 29 0a   sTag2+":s/*")).
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4dd0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
4de0: 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e  .lGeneratedFlex.
4df0: 61 70 70 65 6e 64 28 28 73 4c 65 6d 6d 61 32 2b  append((sLemma2+
4e00: 22 78 22 2c 20 73 4c 65 6d 6d 61 2c 20 73 54 61  "x", sLemma, sTa
4e10: 67 32 2b 22 3a 70 2f 2a 22 29 29 0a 20 20 20 20  g2+":p/*")).    
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e30: 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 53      elif self.xS
4e40: 69 6e 76 32 2e 53 74 61 74 65 3a 0a 20 20 20 20  inv2.State:.    
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e60: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
4e70: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
4e80: 6e 64 28 28 73 4c 65 6d 6d 61 32 2c 20 73 4c 65  nd((sLemma2, sLe
4e90: 6d 6d 61 2c 20 73 54 61 67 32 2b 22 3a 69 2f 2a  mma, sTag2+":i/*
4ea0: 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")).            
4eb0: 65 6c 69 66 20 73 65 6c 66 2e 5f 67 65 74 52 61  elif self._getRa
4ec0: 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78 4d  dioValue(self.xM
4ed0: 31 2c 20 73 65 6c 66 2e 78 4d 32 2c 20 73 65 6c  1, self.xM2, sel
4ee0: 66 2e 78 4d 50 29 3a 0a 20 20 20 20 20 20 20 20  f.xMP):.        
4ef0: 20 20 20 20 20 20 20 20 23 20 4e 6f 6d 20 70 72          # Nom pr
4f00: 6f 70 72 65 0a 20 20 20 20 20 20 20 20 20 20 20  opre.           
4f10: 20 20 20 20 20 73 50 4f 53 20 3d 20 73 65 6c 66       sPOS = self
4f20: 2e 5f 67 65 74 52 61 64 69 6f 56 61 6c 75 65 28  ._getRadioValue(
4f30: 73 65 6c 66 2e 78 4d 31 2c 20 73 65 6c 66 2e 78  self.xM1, self.x
4f40: 4d 32 2c 20 73 65 6c 66 2e 78 4d 50 29 0a 20 20  M2, self.xMP).  
4f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 4c                sL
4f60: 65 6d 6d 61 20 3d 20 73 4c 65 6d 6d 61 5b 30 3a  emma = sLemma[0:
4f70: 31 5d 2e 75 70 70 65 72 28 29 20 2b 20 73 4c 65  1].upper() + sLe
4f80: 6d 6d 61 5b 31 3a 5d 3b 0a 20 20 20 20 20 20 20  mma[1:];.       
4f90: 20 20 20 20 20 20 20 20 20 73 47 65 6e 64 65 72           sGender
4fa0: 54 61 67 20 3d 20 73 65 6c 66 2e 5f 67 65 74 52  Tag = self._getR
4fb0: 61 64 69 6f 56 61 6c 75 65 28 73 65 6c 66 2e 78  adioValue(self.x
4fc0: 4d 65 70 69 2c 20 73 65 6c 66 2e 78 4d 6d 61 73  Mepi, self.xMmas
4fd0: 2c 20 73 65 6c 66 2e 78 4d 66 65 6d 29 0a 20 20  , self.xMfem).  
4fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4ff0: 20 73 47 65 6e 64 65 72 54 61 67 3a 0a 20 20 20   sGenderTag:.   
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5010: 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64   self.lGenerated
5020: 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 73 4c 65  Flex.append((sLe
5030: 6d 6d 61 2c 20 73 4c 65 6d 6d 61 2c 20 73 50 4f  mma, sLemma, sPO
5040: 53 2b 73 47 65 6e 64 65 72 54 61 67 2b 22 3a 69  S+sGenderTag+":i
5050: 2f 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20  /*")).          
5060: 20 20 65 6c 69 66 20 73 65 6c 66 2e 78 56 2e 53    elif self.xV.S
5070: 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20  tate:.          
5080: 20 20 20 20 20 20 23 20 56 65 72 62 65 0a 20 20        # Verbe.  
5090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
50a0: 20 73 4c 65 6d 6d 61 2e 65 6e 64 73 77 69 74 68   sLemma.endswith
50b0: 28 28 22 65 72 22 2c 20 22 69 72 22 2c 20 22 72  (("er", "ir", "r
50c0: 65 22 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20  e")):.          
50d0: 20 20 20 20 20 20 20 20 20 20 73 4c 65 6d 6d 61            sLemma
50e0: 20 3d 20 73 4c 65 6d 6d 61 2e 6c 6f 77 65 72 28   = sLemma.lower(
50f0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5100: 20 20 20 20 20 20 63 5f 69 20 3d 20 22 69 22 20        c_i = "i" 
5110: 20 69 66 20 73 65 6c 66 2e 78 56 5f 69 2e 53 74   if self.xV_i.St
5120: 61 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20  ate  else "_".  
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5140: 20 20 63 5f 74 20 3d 20 22 74 22 20 20 69 66 20    c_t = "t"  if 
5150: 73 65 6c 66 2e 78 56 5f 74 2e 53 74 61 74 65 20  self.xV_t.State 
5160: 20 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20   else "_".      
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 5f                c_
5180: 6e 20 3d 20 22 6e 22 20 20 69 66 20 73 65 6c 66  n = "n"  if self
5190: 2e 78 56 5f 6e 2e 53 74 61 74 65 20 20 65 6c 73  .xV_n.State  els
51a0: 65 20 22 5f 22 0a 20 20 20 20 20 20 20 20 20 20  e "_".          
51b0: 20 20 20 20 20 20 20 20 20 20 63 5f 70 20 3d 20            c_p = 
51c0: 22 70 22 20 20 69 66 20 73 65 6c 66 2e 78 56 5f  "p"  if self.xV_
51d0: 70 2e 53 74 61 74 65 20 20 65 6c 73 65 20 22 5f  p.State  else "_
51e0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
51f0: 20 20 20 20 20 20 63 5f 6d 20 3d 20 22 6d 22 20        c_m = "m" 
5200: 20 69 66 20 73 65 6c 66 2e 78 56 5f 6d 2e 53 74   if self.xV_m.St
5210: 61 74 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20  ate  else "_".  
5220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5230: 20 20 63 5f 61 65 20 3d 20 22 65 22 20 20 69 66    c_ae = "e"  if
5240: 20 73 65 6c 66 2e 78 56 5f 61 65 2e 53 74 61 74   self.xV_ae.Stat
5250: 65 20 20 65 6c 73 65 20 22 5f 22 0a 20 20 20 20  e  else "_".    
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5270: 63 5f 61 61 20 3d 20 22 61 22 20 20 69 66 20 73  c_aa = "a"  if s
5280: 65 6c 66 2e 78 56 5f 61 61 2e 53 74 61 74 65 20  elf.xV_aa.State 
5290: 20 65 6c 73 65 20 22 5f 22 0a 20 20 20 20 20 20   else "_".      
52a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 56                sV
52b0: 65 72 62 54 61 67 20 3d 20 63 5f 69 20 2b 20 63  erbTag = c_i + c
52c0: 5f 74 20 2b 20 63 5f 6e 20 2b 20 63 5f 70 20 2b  _t + c_n + c_p +
52d0: 20 63 5f 6d 20 2b 20 63 5f 61 65 20 2b 20 63 5f   c_m + c_ae + c_
52e0: 61 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  aa.             
52f0: 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 56         if not sV
5300: 65 72 62 54 61 67 2e 65 6e 64 73 77 69 74 68 28  erbTag.endswith(
5310: 22 5f 5f 22 29 20 61 6e 64 20 6e 6f 74 20 73 56  "__") and not sV
5320: 65 72 62 54 61 67 2e 73 74 61 72 74 73 77 69 74  erbTag.startswit
5330: 68 28 22 5f 5f 5f 5f 22 29 3a 0a 20 20 20 20 20  h("____"):.     
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 73 56 65 72 62 50 61 74 74 65 72 6e 20     sVerbPattern 
5360: 3d 20 73 65 6c 66 2e 78 56 70 61 74 74 65 72 6e  = self.xVpattern
5370: 2e 54 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20  .Text.strip().  
5380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5390: 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 56 65        if not sVe
53a0: 72 62 50 61 74 74 65 72 6e 3a 0a 20 20 20 20 20  rbPattern:.     
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 20 20 20 20 20 20 20 69 66 20 73 4c 65 6d 6d 61         if sLemma
53d0: 2e 65 6e 64 73 77 69 74 68 28 22 65 72 22 29 20  .endswith("er") 
53e0: 6f 72 20 73 4c 65 6d 6d 61 2e 65 6e 64 73 77 69  or sLemma.endswi
53f0: 74 68 28 22 69 72 22 29 3a 0a 20 20 20 20 20 20  th("ir"):.      
5400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5410: 20 20 20 20 20 20 20 20 20 20 23 20 74 61 62 6c            # tabl
5420: 65 73 20 64 65 20 63 6f 6e 6a 75 67 61 69 73 6f  es de conjugaiso
5430: 6e 20 64 75 20 31 65 72 20 65 74 20 64 75 20 32  n du 1er et du 2
5440: 65 20 67 72 6f 75 70 65 0a 20 20 20 20 20 20 20  e groupe.       
5450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5460: 20 20 20 20 20 20 20 20 20 63 47 72 6f 75 70 20           cGroup 
5470: 3d 20 22 31 22 20 20 69 66 20 73 4c 65 6d 6d 61  = "1"  if sLemma
5480: 2e 65 6e 64 73 77 69 74 68 28 22 65 72 22 29 20  .endswith("er") 
5490: 20 65 6c 73 65 20 22 32 22 0a 20 20 20 20 20 20   else "2".      
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54b0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 43            for nC
54c0: 75 74 2c 20 73 41 64 64 2c 20 73 46 6c 65 78 54  ut, sAdd, sFlexT
54d0: 61 67 73 2c 20 73 50 61 74 74 65 72 6e 20 69 6e  ags, sPattern in
54e0: 20 73 65 6c 66 2e 5f 67 65 74 43 6f 6e 6a 52 75   self._getConjRu
54f0: 6c 65 73 28 73 4c 65 6d 6d 61 29 3a 0a 20 20 20  les(sLemma):.   
5500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5520: 20 69 66 20 6e 6f 74 20 73 50 61 74 74 65 72 6e   if not sPattern
5530: 20 6f 72 20 72 65 2e 73 65 61 72 63 68 28 73 50   or re.search(sP
5540: 61 74 74 65 72 6e 2c 20 73 4c 65 6d 6d 61 29 3a  attern, sLemma):
5550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5570: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47           self.lG
5580: 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70  eneratedFlex.app
5590: 65 6e 64 28 28 73 4c 65 6d 6d 61 5b 30 3a 2d 6e  end((sLemma[0:-n
55a0: 43 75 74 5d 2b 73 41 64 64 2c 20 73 4c 65 6d 6d  Cut]+sAdd, sLemm
55b0: 61 2c 20 22 3a 56 22 20 2b 20 63 47 72 6f 75 70  a, ":V" + cGroup
55c0: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
55d0: 67 20 2b 20 73 46 6c 65 78 54 61 67 73 29 29 0a  g + sFlexTags)).
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5600: 23 20 70 61 72 74 69 63 69 70 65 73 20 70 61 73  # participes pas
5610: 73 c3 a9 73 0a 20 20 20 20 20 20 20 20 20 20 20  s..s.           
5620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5630: 20 20 20 20 20 62 50 70 61 73 56 61 72 20 3d 20       bPpasVar = 
5640: 22 76 61 72 22 20 20 69 66 20 73 65 6c 66 2e 78  "var"  if self.x
5650: 56 5f 70 70 2e 53 74 61 74 65 20 20 65 6c 73 65  V_pp.State  else
5660: 20 22 69 6e 76 61 72 22 0a 20 20 20 20 20 20 20   "invar".       
5670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5680: 20 20 20 20 20 20 20 20 20 6c 50 70 61 73 52 75           lPpasRu
5690: 6c 65 73 20 3d 20 6c 78 65 5f 63 6f 6e 6a 5f 64  les = lxe_conj_d
56a0: 61 74 61 2e 6f 43 6f 6e 6a 5b 22 56 31 5f 70 70  ata.oConj["V1_pp
56b0: 61 73 22 5d 5b 62 50 70 61 73 56 61 72 5d 20 20  as"][bPpasVar]  
56c0: 69 66 20 73 4c 65 6d 6d 61 2e 65 6e 64 73 77 69  if sLemma.endswi
56d0: 74 68 28 22 65 72 22 29 20 20 65 6c 73 65 20 6c  th("er")  else l
56e0: 78 65 5f 63 6f 6e 6a 5f 64 61 74 61 2e 6f 43 6f  xe_conj_data.oCo
56f0: 6e 6a 5b 22 56 32 5f 70 70 61 73 22 5d 5b 62 50  nj["V2_ppas"][bP
5700: 70 61 73 56 61 72 5d 0a 20 20 20 20 20 20 20 20  pasVar].        
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5720: 20 20 20 20 20 20 20 20 66 6f 72 20 6e 43 75 74          for nCut
5730: 2c 20 73 41 64 64 2c 20 73 46 6c 65 78 54 61 67  , sAdd, sFlexTag
5740: 73 2c 20 73 50 61 74 74 65 72 6e 20 69 6e 20 6c  s, sPattern in l
5750: 50 70 61 73 52 75 6c 65 73 3a 0a 20 20 20 20 20  PpasRules:.     
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5780: 66 20 6e 6f 74 20 73 50 61 74 74 65 72 6e 20 6f  f not sPattern o
5790: 72 20 72 65 2e 73 65 61 72 63 68 28 73 50 61 74  r re.search(sPat
57a0: 74 65 72 6e 2c 20 73 4c 65 6d 6d 61 29 3a 0a 20  tern, sLemma):. 
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57d0: 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e         self.lGen
57e0: 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e  eratedFlex.appen
57f0: 64 28 28 73 4c 65 6d 6d 61 5b 30 3a 2d 6e 43 75  d((sLemma[0:-nCu
5800: 74 5d 2b 73 41 64 64 2c 20 73 4c 65 6d 6d 61 2c  t]+sAdd, sLemma,
5810: 20 22 3a 56 22 20 2b 20 63 47 72 6f 75 70 20 2b   ":V" + cGroup +
5820: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
5830: 2b 20 73 46 6c 65 78 54 61 67 73 29 29 0a 20 20  + sFlexTags)).  
5840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5850: 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20        else:.    
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5870: 20 20 20 20 20 20 20 20 23 20 63 6f 70 69 65 20          # copie 
5880: 64 75 20 6d 6f 74 69 66 20 64 e2 80 99 75 6e 20  du motif d...un 
5890: 61 75 74 72 65 20 76 65 72 62 65 20 3a 20 75 74  autre verbe : ut
58a0: 69 6c 69 73 61 74 69 6f 6e 20 64 75 20 63 6f 6e  ilisation du con
58b0: 6a 75 67 75 65 75 72 0a 20 20 20 20 20 20 20 20  jugueur.        
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58d0: 20 20 20 20 69 66 20 63 6f 6e 6a 2e 69 73 56 65      if conj.isVe
58e0: 72 62 28 73 56 65 72 62 50 61 74 74 65 72 6e 29  rb(sVerbPattern)
58f0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 6f 56 65 72 62 20 3d 20 63 6f 6e 6a 2e 56    oVerb = conj.V
5920: 65 72 62 28 73 4c 65 6d 6d 61 2c 20 73 56 65 72  erb(sLemma, sVer
5930: 62 50 61 74 74 65 72 6e 29 0a 20 20 20 20 20 20  bPattern).      
5940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5950: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 54            for sT
5960: 61 67 31 2c 20 64 46 6c 65 78 20 69 6e 20 6f 56  ag1, dFlex in oV
5970: 65 72 62 2e 64 43 6f 6e 6a 2e 69 74 65 6d 73 28  erb.dConj.items(
5980: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ):.             
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59a0: 20 20 20 20 20 20 20 69 66 20 73 54 61 67 31 20         if sTag1 
59b0: 21 3d 20 22 3a 51 22 3a 0a 20 20 20 20 20 20 20  != ":Q":.       
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 66 6f 72 20 73 54 61 67 32 2c 20 73 43 6f 6e   for sTag2, sCon
59f0: 6a 20 69 6e 20 64 46 6c 65 78 2e 69 74 65 6d 73  j in dFlex.items
5a00: 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ():.            
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a30: 69 66 20 73 54 61 67 32 2e 73 74 61 72 74 73 77  if sTag2.startsw
5a40: 69 74 68 28 22 3a 22 29 20 61 6e 64 20 73 43 6f  ith(":") and sCo
5a50: 6e 6a 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  nj:.            
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a80: 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61      self.lGenera
5a90: 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28  tedFlex.append((
5aa0: 73 43 6f 6e 6a 2c 20 73 4c 65 6d 6d 61 2c 20 22  sConj, sLemma, "
5ab0: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
5ac0: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
5ad0: 54 61 67 20 2b 20 73 54 61 67 31 20 2b 20 73 54  Tag + sTag1 + sT
5ae0: 61 67 32 29 29 0a 20 20 20 20 20 20 20 20 20 20  ag2)).          
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a            else:.
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b30: 20 20 20 20 20 20 20 20 23 20 70 61 72 74 69 63          # partic
5b40: 69 70 65 73 20 70 61 73 73 c3 a9 73 0a 20 20 20  ipes pass..s.   
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b70: 20 20 20 20 20 69 66 20 64 46 6c 65 78 5b 22 3a       if dFlex[":
5b80: 51 33 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20  Q3"]:.          
5b90: 20 20 20 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 20 20 20 20 20                  
5bb0: 20 20 69 66 20 64 46 6c 65 78 5b 22 3a 51 32 22    if dFlex[":Q2"
5bc0: 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]:.             
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bf0: 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74     self.lGenerat
5c00: 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28 28 64  edFlex.append((d
5c10: 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 73 4c 65  Flex[":Q1"], sLe
5c20: 6d 6d 61 2c 20 22 3a 56 22 20 2b 20 6f 56 65 72  mma, ":V" + oVer
5c30: 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22 20 2b  b.cGroup + "_" +
5c40: 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a 51 3a   sVerbTag + ":Q:
5c50: 41 3a 6d 3a 73 2f 2a 22 29 29 0a 20 20 20 20 20  A:m:s/*")).     
5c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c80: 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e             self.
5c90: 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61  lGeneratedFlex.a
5ca0: 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51  ppend((dFlex[":Q
5cb0: 32 22 5d 2c 20 73 4c 65 6d 6d 61 2c 20 22 3a 56  2"], sLemma, ":V
5cc0: 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70  " + oVerb.cGroup
5cd0: 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61   + "_" + sVerbTa
5ce0: 67 20 2b 20 22 3a 51 3a 41 3a 6d 3a 70 2f 2a 22  g + ":Q:A:m: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 20 20 20 20 20                  
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
5d20: 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lse:.           
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d50: 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65 72       self.lGener
5d60: 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64 28  atedFlex.append(
5d70: 28 64 46 6c 65 78 5b 22 3a 51 31 22 5d 2c 20 73  (dFlex[":Q1"], s
5d80: 4c 65 6d 6d 61 2c 20 22 3a 56 22 20 2b 20 6f 56  Lemma, ":V" + oV
5d90: 65 72 62 2e 63 47 72 6f 75 70 20 2b 20 22 5f 22  erb.cGroup + "_"
5da0: 20 2b 20 73 56 65 72 62 54 61 67 20 2b 20 22 3a   + sVerbTag + ":
5db0: 51 3a 41 3a 6d 3a 69 2f 2a 22 29 29 0a 20 20 20  Q:A:m:i/*")).   
5dc0: 20 20 20 20 20 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 20 20 20                  
5de0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47           self.lG
5df0: 65 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70  eneratedFlex.app
5e00: 65 6e 64 28 28 64 46 6c 65 78 5b 22 3a 51 33 22  end((dFlex[":Q3"
5e10: 5d 2c 20 73 4c 65 6d 6d 61 2c 20 22 3a 56 22 20  ], sLemma, ":V" 
5e20: 2b 20 6f 56 65 72 62 2e 63 47 72 6f 75 70 20 2b  + oVerb.cGroup +
5e30: 20 22 5f 22 20 2b 20 73 56 65 72 62 54 61 67 20   "_" + sVerbTag 
5e40: 2b 20 22 3a 51 3a 41 3a 66 3a 73 2f 2a 22 29 29  + ":Q:A:f:s/*"))
5e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c               sel
5e80: 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c 65 78  f.lGeneratedFlex
5e90: 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78 5b 22  .append((dFlex["
5ea0: 3a 51 34 22 5d 2c 20 73 4c 65 6d 6d 61 2c 20 22  :Q4"], sLemma, "
5eb0: 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47 72 6f  :V" + oVerb.cGro
5ec0: 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65 72 62  up + "_" + sVerb
5ed0: 54 61 67 20 2b 20 22 3a 51 3a 41 3a 66 3a 70 2f  Tag + ":Q:A:f:p/
5ee0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
5f10: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e:.             
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5f40: 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46 6c  elf.lGeneratedFl
5f50: 65 78 2e 61 70 70 65 6e 64 28 28 64 46 6c 65 78  ex.append((dFlex
5f60: 5b 22 3a 51 31 22 5d 2c 20 73 4c 65 6d 6d 61 2c  [":Q1"], sLemma,
5f70: 20 22 3a 56 22 20 2b 20 6f 56 65 72 62 2e 63 47   ":V" + oVerb.cG
5f80: 72 6f 75 70 20 2b 20 22 5f 22 20 2b 20 73 56 65  roup + "_" + sVe
5f90: 72 62 54 61 67 20 2b 20 22 3a 51 3a 65 3a 69 2f  rbTag + ":Q:e:i/
5fa0: 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  *")).           
5fb0: 20 65 6c 69 66 20 73 65 6c 66 2e 78 57 2e 53 74   elif self.xW.St
5fc0: 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ate:.           
5fd0: 20 20 20 20 20 23 20 41 64 76 65 72 62 65 0a 20       # Adverbe. 
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5ff0: 4c 65 6d 6d 61 20 3d 20 73 4c 65 6d 6d 61 2e 6c  Lemma = sLemma.l
6000: 6f 77 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20  ower();.        
6010: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65          self.lGe
6020: 6e 65 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65  neratedFlex.appe
6030: 6e 64 28 28 73 4c 65 6d 6d 61 2c 20 73 4c 65 6d  nd((sLemma, sLem
6040: 6d 61 2c 20 22 3a 57 2f 2a 22 29 29 0a 20 20 20  ma, ":W/*")).   
6050: 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65           elif se
6060: 6c 66 2e 78 58 2e 53 74 61 74 65 3a 0a 20 20 20  lf.xX.State:.   
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41               # A
6080: 75 74 72 65 0a 20 20 20 20 20 20 20 20 20 20 20  utre.           
6090: 20 20 20 20 20 73 46 6c 65 78 69 6f 6e 20 3d 20       sFlexion = 
60a0: 73 65 6c 66 2e 78 46 6c 65 78 69 6f 6e 2e 54 65  self.xFlexion.Te
60b0: 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20  xt.strip().     
60c0: 20 20 20 20 20 20 20 20 20 20 20 73 54 61 67 73             sTags
60d0: 20 3d 20 73 65 6c 66 2e 78 54 61 67 73 2e 54 65   = self.xTags.Te
60e0: 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20  xt.strip().     
60f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 46             if sF
6100: 6c 65 78 69 6f 6e 20 61 6e 64 20 73 54 61 67 73  lexion and sTags
6110: 2e 73 74 61 72 74 73 77 69 74 68 28 22 3a 22 29  .startswith(":")
6120: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
6130: 20 20 20 20 20 20 73 65 6c 66 2e 6c 47 65 6e 65        self.lGene
6140: 72 61 74 65 64 46 6c 65 78 2e 61 70 70 65 6e 64  ratedFlex.append
6150: 28 28 73 46 6c 65 78 69 6f 6e 2c 20 73 4c 65 6d  ((sFlexion, sLem
6160: 6d 61 2c 20 73 54 61 67 73 29 29 0a 20 20 20 20  ma, sTags)).    
6170: 20 20 20 20 73 65 6c 66 2e 5f 73 68 6f 77 47 65      self._showGe
6180: 6e 57 6f 72 64 73 28 29 0a 0a 20 20 20 20 64 65  nWords()..    de
6190: 66 20 5f 67 65 74 43 6f 6e 6a 52 75 6c 65 73 20  f _getConjRules 
61a0: 28 73 65 6c 66 2c 20 73 56 65 72 62 29 3a 0a 20  (self, sVerb):. 
61b0: 20 20 20 20 20 20 20 69 66 20 73 56 65 72 62 2e         if sVerb.
61c0: 65 6e 64 73 77 69 74 68 28 22 69 72 22 29 3a 0a  endswith("ir"):.
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65              # de
61e0: 75 78 69 c3 a8 6d 65 20 67 72 6f 75 70 65 0a 20  uxi..me groupe. 
61f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6200: 6e 20 6c 78 65 5f 63 6f 6e 6a 5f 64 61 74 61 2e  n lxe_conj_data.
6210: 6f 43 6f 6e 6a 5b 22 56 32 22 5d 0a 20 20 20 20  oConj["V2"].    
6220: 20 20 20 20 65 6c 69 66 20 73 56 65 72 62 2e 65      elif sVerb.e
6230: 6e 64 73 77 69 74 68 28 22 65 72 22 29 3a 0a 20  ndswith("er"):. 
6240: 20 20 20 20 20 20 20 20 20 20 20 23 20 70 72 65             # pre
6250: 6d 69 65 72 20 67 72 6f 75 70 65 2c 20 63 6f 6e  mier groupe, con
6260: 6a 75 67 61 69 73 6f 6e 20 65 6e 20 66 6f 6e 63  jugaison en fonc
6270: 74 69 6f 6e 20 64 65 20 6c 61 20 74 65 72 6d 69  tion de la termi
6280: 6e 61 69 73 6f 6e 20 64 75 20 6c 65 6d 6d 65 0a  naison du lemme.
6290: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 35 20              # 5 
62a0: 6c 65 74 74 72 65 73 0a 20 20 20 20 20 20 20 20  lettres.        
62b0: 20 20 20 20 69 66 20 73 56 65 72 62 5b 2d 35 3a      if sVerb[-5:
62c0: 5d 20 69 6e 20 6c 78 65 5f 63 6f 6e 6a 5f 64 61  ] in lxe_conj_da
62d0: 74 61 2e 6f 43 6f 6e 6a 5b 22 56 31 22 5d 3a 0a  ta.oConj["V1"]:.
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 72 65 74 75 72 6e 20 6c 78 65 5f 63 6f 6e 6a 5f  return lxe_conj_
6300: 64 61 74 61 2e 6f 43 6f 6e 6a 5b 22 56 31 22 5d  data.oConj["V1"]
6310: 5b 73 56 65 72 62 5b 2d 35 3a 5d 5d 0a 20 20 20  [sVerb[-5:]].   
6320: 20 20 20 20 20 20 20 20 20 23 20 34 20 6c 65 74           # 4 let
6330: 74 72 65 73 0a 20 20 20 20 20 20 20 20 20 20 20  tres.           
6340: 20 69 66 20 73 56 65 72 62 5b 2d 34 3a 5d 20 69   if sVerb[-4:] i
6350: 6e 20 6c 78 65 5f 63 6f 6e 6a 5f 64 61 74 61 2e  n lxe_conj_data.
6360: 6f 43 6f 6e 6a 5b 22 56 31 22 5d 3a 0a 20 20 20  oConj["V1"]:.   
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
6380: 73 56 65 72 62 2e 65 6e 64 73 77 69 74 68 28 28  sVerb.endswith((
6390: 22 65 6c 65 72 22 2c 20 22 65 74 65 72 22 29 29  "eler", "eter"))
63a0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  :.              
63b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 78 65        return lxe
63c0: 5f 63 6f 6e 6a 5f 64 61 74 61 2e 6f 43 6f 6e 6a  _conj_data.oConj
63d0: 5b 22 56 31 22 5d 5b 73 56 65 72 62 5b 2d 34 3a  ["V1"][sVerb[-4:
63e0: 5d 5d 5b 22 31 22 5d 0a 20 20 20 20 20 20 20 20  ]]["1"].        
63f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
6400: 78 65 5f 63 6f 6e 6a 5f 64 61 74 61 2e 6f 43 6f  xe_conj_data.oCo
6410: 6e 6a 5b 22 56 31 22 5d 5b 73 56 65 72 62 5b 2d  nj["V1"][sVerb[-
6420: 34 3a 5d 5d 0a 20 20 20 20 20 20 20 20 20 20 20  4:]].           
6430: 20 23 20 33 20 6c 65 74 74 72 65 73 0a 20 20 20   # 3 lettres.   
6440: 20 20 20 20 20 20 20 20 20 69 66 20 73 56 65 72           if sVer
6450: 62 5b 2d 33 3a 5d 20 69 6e 20 6c 78 65 5f 63 6f  b[-3:] in lxe_co
6460: 6e 6a 5f 64 61 74 61 2e 6f 43 6f 6e 6a 5b 22 56  nj_data.oConj["V
6470: 31 22 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20  1"]:.           
6480: 20 20 20 20 20 72 65 74 75 72 6e 20 6c 78 65 5f       return lxe_
6490: 63 6f 6e 6a 5f 64 61 74 61 2e 6f 43 6f 6e 6a 5b  conj_data.oConj[
64a0: 22 56 31 22 5d 5b 73 56 65 72 62 5b 2d 33 3a 5d  "V1"][sVerb[-3:]
64b0: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ].            re
64c0: 74 75 72 6e 20 6c 78 65 5f 63 6f 6e 6a 5f 64 61  turn lxe_conj_da
64d0: 74 61 2e 6f 43 6f 6e 6a 5b 22 56 31 22 5d 5b 22  ta.oConj["V1"]["
64e0: 65 72 22 5d 0a 20 20 20 20 20 20 20 20 65 6c 73  er"].        els
64f0: 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  e:.            #
6500: 20 74 72 6f 69 73 69 c3 a8 6d 65 20 67 72 6f 75   troisi..me grou
6510: 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  pe.            r
6520: 65 74 75 72 6e 20 5b 20 5b 30 2c 20 22 22 2c 20  eturn [ [0, "", 
6530: 22 3a 59 2f 2a 22 2c 20 66 61 6c 73 65 5d 20 5d  ":Y/*", false] ]
6540: 0a 0a 20 20 20 20 64 65 66 20 5f 73 68 6f 77 47  ..    def _showG
6550: 65 6e 57 6f 72 64 73 20 28 73 65 6c 66 29 3a 0a  enWords (self):.
6560: 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74          xGridDat
6570: 61 4d 6f 64 65 6c 20 3d 20 73 65 6c 66 2e 78 47  aModel = self.xG
6580: 72 69 64 4d 6f 64 65 6c 4e 65 77 2e 47 72 69 64  ridModelNew.Grid
6590: 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20 20  DataModel.      
65a0: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
65b0: 2e 72 65 6d 6f 76 65 41 6c 6c 52 6f 77 73 28 29  .removeAllRows()
65c0: 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20  .        if not 
65d0: 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74 65 64 46  self.lGeneratedF
65e0: 6c 65 78 3a 0a 20 20 20 20 20 20 20 20 20 20 20  lex:.           
65f0: 20 73 65 6c 66 2e 78 41 64 64 2e 45 6e 61 62 6c   self.xAdd.Enabl
6600: 65 64 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  ed = False.     
6610: 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20         return.  
6620: 20 20 20 20 20 20 66 6f 72 20 69 2c 20 28 73 46        for i, (sF
6630: 6c 65 78 69 6f 6e 2c 20 73 4c 65 6d 6d 61 2c 20  lexion, sLemma, 
6640: 73 54 61 67 29 20 69 6e 20 65 6e 75 6d 65 72 61  sTag) in enumera
6650: 74 65 28 73 65 6c 66 2e 6c 47 65 6e 65 72 61 74  te(self.lGenerat
6660: 65 64 46 6c 65 78 29 3a 0a 20 20 20 20 20 20 20  edFlex):.       
6670: 20 20 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f       xGridDataMo
6680: 64 65 6c 2e 61 64 64 52 6f 77 28 69 2c 20 28 73  del.addRow(i, (s
6690: 46 6c 65 78 69 6f 6e 2c 20 73 4c 65 6d 6d 61 2c  Flexion, sLemma,
66a0: 20 73 54 61 67 29 29 0a 20 20 20 20 20 20 20 20   sTag)).        
66b0: 73 65 6c 66 2e 78 41 64 64 2e 45 6e 61 62 6c 65  self.xAdd.Enable
66c0: 64 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 64 65  d = True..    de
66d0: 66 20 5f 72 65 73 65 74 57 69 64 67 65 74 73 20  f _resetWidgets 
66e0: 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20  (self):.        
66f0: 73 65 6c 66 2e 78 4c 65 6d 6d 61 2e 54 65 78 74  self.xLemma.Text
6700: 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73 65   = "".        se
6710: 6c 66 2e 78 4e 41 2e 53 74 61 74 65 20 3d 20 46  lf.xNA.State = F
6720: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c  alse.        sel
6730: 66 2e 78 4e 2e 53 74 61 74 65 20 3d 20 46 61 6c  f.xN.State = Fal
6740: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
6750: 78 41 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  xA.State = False
6760: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d  .        self.xM
6770: 31 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a  1.State = False.
6780: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 32          self.xM2
6790: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
67a0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d 50 2e         self.xMP.
67b0: 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20  State = False.  
67c0: 20 20 20 20 20 20 73 65 6c 66 2e 78 56 2e 53 74        self.xV.St
67d0: 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20  ate = False.    
67e0: 20 20 20 20 73 65 6c 66 2e 78 57 2e 53 74 61 74      self.xW.Stat
67f0: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
6800: 20 20 73 65 6c 66 2e 78 58 2e 53 74 61 74 65 20    self.xX.State 
6810: 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20  = False.        
6820: 73 65 6c 66 2e 78 53 65 70 69 2e 53 74 61 74 65  self.xSepi.State
6830: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
6840: 20 73 65 6c 66 2e 78 53 6d 61 73 2e 53 74 61 74   self.xSmas.Stat
6850: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
6860: 20 20 73 65 6c 66 2e 78 53 66 65 6d 2e 53 74 61    self.xSfem.Sta
6870: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
6880: 20 20 20 73 65 6c 66 2e 78 53 73 2e 53 74 61 74     self.xSs.Stat
6890: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
68a0: 20 20 73 65 6c 66 2e 78 53 78 2e 53 74 61 74 65    self.xSx.State
68b0: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
68c0: 20 73 65 6c 66 2e 78 53 69 6e 76 2e 53 74 61 74   self.xSinv.Stat
68d0: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
68e0: 20 20 73 65 6c 66 2e 78 41 6c 74 4c 65 6d 6d 61    self.xAltLemma
68f0: 2e 54 65 78 74 20 3d 20 22 22 0a 20 20 20 20 20  .Text = "".     
6900: 20 20 20 73 65 6c 66 2e 78 4e 41 32 2e 53 74 61     self.xNA2.Sta
6910: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
6920: 20 20 20 73 65 6c 66 2e 78 4e 32 2e 53 74 61 74     self.xN2.Stat
6930: 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20  e = False.      
6940: 20 20 73 65 6c 66 2e 78 41 32 2e 53 74 61 74 65    self.xA2.State
6950: 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20   = False.       
6960: 20 73 65 6c 66 2e 78 53 65 70 69 32 2e 53 74 61   self.xSepi2.Sta
6970: 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20  te = False.     
6980: 20 20 20 73 65 6c 66 2e 78 53 6d 61 73 32 2e 53     self.xSmas2.S
6990: 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20 20 20  tate = False.   
69a0: 20 20 20 20 20 73 65 6c 66 2e 78 53 66 65 6d 32       self.xSfem2
69b0: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
69c0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 73 32         self.xSs2
69d0: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
69e0: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 78 32         self.xSx2
69f0: 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65 0a 20  .State = False. 
6a00: 20 20 20 20 20 20 20 73 65 6c 66 2e 78 53 69 6e         self.xSin
6a10: 76 32 2e 53 74 61 74 65 20 3d 20 46 61 6c 73 65  v2.State = False
6a20: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 4d  .        self.xM
6a30: 65 70 69 2e 53 74 61 74 65 20 3d 20 46 61 6c 73  epi.State = Fals
6a40: 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78  e.        self.x
6a50: 4d 6d 61 73 2e 53 74 61 74 65 20 3d 20 46 61 6c  Mmas.State = Fal
6a60: 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e  se.        self.
6a70: 78 4d 66 65 6d 2e 53 74 61 74 65 20 3d 20 46 61  xMfem.State = Fa
6a80: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6a90: 2e 78 56 5f 69 2e 53 74 61 74 65 20 3d 20 46 61  .xV_i.State = Fa
6aa0: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6ab0: 2e 78 56 5f 74 2e 53 74 61 74 65 20 3d 20 46 61  .xV_t.State = Fa
6ac0: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6ad0: 2e 78 56 5f 6e 2e 53 74 61 74 65 20 3d 20 46 61  .xV_n.State = Fa
6ae0: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6af0: 2e 78 56 5f 70 2e 53 74 61 74 65 20 3d 20 46 61  .xV_p.State = Fa
6b00: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6b10: 2e 78 56 5f 6d 2e 53 74 61 74 65 20 3d 20 46 61  .xV_m.State = Fa
6b20: 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66  lse.        self
6b30: 2e 78 56 5f 61 65 2e 53 74 61 74 65 20 3d 20 46  .xV_ae.State = F
6b40: 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c  alse.        sel
6b50: 66 2e 78 56 5f 61 61 2e 53 74 61 74 65 20 3d 20  f.xV_aa.State = 
6b60: 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65  False.        se
6b70: 6c 66 2e 78 56 5f 70 70 2e 53 74 61 74 65 20 3d  lf.xV_pp.State =
6b80: 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73   False.        s
6b90: 65 6c 66 2e 78 56 70 61 74 74 65 72 6e 2e 54 65  elf.xVpattern.Te
6ba0: 78 74 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20  xt = "".        
6bb0: 73 65 6c 66 2e 78 46 6c 65 78 69 6f 6e 2e 54 65  self.xFlexion.Te
6bc0: 78 74 20 3d 20 22 22 0a 20 20 20 20 20 20 20 20  xt = "".        
6bd0: 73 65 6c 66 2e 78 54 61 67 73 2e 54 65 78 74 20  self.xTags.Text 
6be0: 3d 20 22 22 0a 20 20 20 20 20 20 20 20 73 65 6c  = "".        sel
6bf0: 66 2e 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77 2e  f.xGridModelNew.
6c00: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 2e 72 65  GridDataModel.re
6c10: 6d 6f 76 65 41 6c 6c 52 6f 77 73 28 29 0a 0a 20  moveAllRows().. 
6c20: 20 20 20 40 5f 77 61 69 74 50 6f 69 6e 74 65 72     @_waitPointer
6c30: 0a 20 20 20 20 64 65 66 20 61 64 64 54 6f 4c 65  .    def addToLe
6c40: 78 69 63 6f 6e 20 28 73 65 6c 66 29 3a 0a 20 20  xicon (self):.  
6c50: 20 20 20 20 20 20 73 65 6c 66 2e 78 41 64 64 2e        self.xAdd.
6c60: 45 6e 61 62 6c 65 64 20 3d 20 46 61 6c 73 65 0a  Enabled = False.
6c70: 20 20 20 20 20 20 20 20 78 47 72 69 64 44 61 74          xGridDat
6c80: 61 4d 6f 64 65 6c 4e 65 77 20 3d 20 73 65 6c 66  aModelNew = self
6c90: 2e 78 47 72 69 64 4d 6f 64 65 6c 4e 65 77 2e 47  .xGridModelNew.G
6ca0: 72 69 64 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20  ridDataModel.   
6cb0: 20 20 20 20 20 78 47 72 69 64 44 61 74 61 4d 6f       xGridDataMo
6cc0: 64 65 6c 4c 65 78 20 3d 20 73 65 6c 66 2e 78 47  delLex = self.xG
6cd0: 72 69 64 4d 6f 64 65 6c 4c 65 78 2e 47 72 69 64  ridModelLex.Grid
6ce0: 44 61 74 61 4d 6f 64 65 6c 0a 20 20 20 20 20 20  DataModel.      
6cf0: 20 20 6e 53 74 61 72 74 20 3d 20 78 47 72 69 64    nStart = xGrid
6d00: 44 61 74 61 4d 6f 64 65 6c 4c 65 78 2e 52 6f 77  DataModelLex.Row
6d10: 43 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 66 6f  Count.        fo
6d20: 72 20 69 20 69 6e 20 72 61 6e 67 65 28 78 47 72  r i in range(xGr
6d30: 69 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77 2e 52  idDataModelNew.R
6d40: 6f 77 43 6f 75 6e 74 29 3a 0a 20 20 20 20 20 20  owCount):.      
6d50: 20 20 20 20 20 20 73 46 6c 65 78 69 6f 6e 2c 20        sFlexion, 
6d60: 73 4c 65 6d 6d 61 2c 20 73 54 61 67 20 3d 20 78  sLemma, sTag = x
6d70: 47 72 69 64 44 61 74 61 4d 6f 64 65 6c 4e 65 77  GridDataModelNew
6d80: 2e 67 65 74 52 6f 77 44 61 74 61 28 69 29 0a 20  .getRowData(i). 
6d90: 20 20 20 20 20 20 20 20 20 20 20 78 47 72 69 64             xGrid
6da0: 44 61 74 61 4d 6f 64 65 6c 4c 65 78 2e 61 64 64  DataModelLex.add
6db0: 52 6f 77 28 6e 53 74 61 72 74 20 2b 20 69 2c 20  Row(nStart + i, 
6dc0: 28 73 46 6c 65 78 69 6f 6e 2c 20 73 4c 65 6d 6d  (sFlexion, sLemm
6dd0: 61 2c 20 73 54 61 67 29 29 0a 20 20 20 20 20 20  a, sTag)).      
6de0: 20 20 73 65 6c 66 2e 78 53 61 76 65 2e 45 6e 61    self.xSave.Ena
6df0: 62 6c 65 64 20 3d 20 54 72 75 65 0a 20 20 20 20  bled = True.    
6e00: 20 20 20 20 73 65 6c 66 2e 5f 72 65 73 65 74 57      self._resetW
6e10: 69 64 67 65 74 73 28 29 0a 0a 20 20 20 20 40 5f  idgets()..    @_
6e20: 77 61 69 74 50 6f 69 6e 74 65 72 0a 20 20 20 20  waitPointer.    
6e30: 64 65 66 20 64 65 6c 65 74 65 20 28 73 65 6c 66  def delete (self
6e40: 2c 20 78 4c 69 73 74 29 3a 0a 20 20 20 20 20 20  , xList):.      
6e50: 20 20 78 47 72 69 64 44 61 74 61 4d 6f 64 65 6c    xGridDataModel
6e60: 20 3d 20 78 4c 69 73 74 2e 47 72 69 64 44 61 74   = xList.GridDat
6e70: 61 4d 6f 64 65 6c 0a 0a 0a 0a 23 67 5f 49 6d 70  aModel....#g_Imp
6e80: 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70 65  lementationHelpe
6e90: 72 20 3d 20 75 6e 6f 68 65 6c 70 65 72 2e 49 6d  r = unohelper.Im
6ea0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 48 65 6c 70  plementationHelp
6eb0: 65 72 28 29 0a 23 67 5f 49 6d 70 6c 65 6d 65 6e  er().#g_Implemen
6ec0: 74 61 74 69 6f 6e 48 65 6c 70 65 72 2e 61 64 64  tationHelper.add
6ed0: 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 28 4c  Implementation(L
6ee0: 65 78 69 63 6f 6e 45 64 69 74 6f 72 2c 20 27 6e  exiconEditor, 'n
6ef0: 65 74 2e 67 72 61 6d 6d 61 6c 65 63 74 65 2e 4c  et.grammalecte.L
6f00: 65 78 69 63 6f 6e 45 64 69 74 6f 72 27 2c 20 28  exiconEditor', (
6f10: 27 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 74 61  'com.sun.star.ta
6f20: 73 6b 2e 4a 6f 62 27 2c 29 29 0a                 sk.Job',)).