Grammalecte  Hex Artifact Content

Artifact cd8f9ad8dc56dbb232ddd5639e41dbd3d0781ea09268dd43cd1ba6b83384c4f0:


0000: 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74  # -*- coding: ut
0010: 66 38 20 2d 2a 2d 0a 23 20 41 62 6f 75 74 20 64  f8 -*-.# About d
0020: 69 61 6c 6f 67 0a 23 20 62 79 20 4f 6c 69 76 69  ialog.# by Olivi
0030: 65 72 20 52 2e 0a 23 20 4c 69 63 65 6e 73 65 3a  er R..# License:
0040: 20 4d 50 4c 20 32 0a 0a 69 6d 70 6f 72 74 20 75   MPL 2..import u
0050: 6e 6f 68 65 6c 70 65 72 0a 69 6d 70 6f 72 74 20  nohelper.import 
0060: 75 6e 6f 0a 69 6d 70 6f 72 74 20 74 72 61 63 65  uno.import trace
0070: 62 61 63 6b 0a 69 6d 70 6f 72 74 20 73 79 73 0a  back.import sys.
0080: 0a 69 6d 70 6f 72 74 20 61 62 5f 73 74 72 69 6e  .import ab_strin
0090: 67 73 0a 69 6d 70 6f 72 74 20 68 65 6c 70 65 72  gs.import helper
00a0: 73 0a 0a 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e  s..from com.sun.
00b0: 73 74 61 72 2e 61 77 74 20 69 6d 70 6f 72 74 20  star.awt import 
00c0: 58 41 63 74 69 6f 6e 4c 69 73 74 65 6e 65 72 0a  XActionListener.
00d0: 66 72 6f 6d 20 63 6f 6d 2e 73 75 6e 2e 73 74 61  from com.sun.sta
00e0: 72 2e 62 65 61 6e 73 20 69 6d 70 6f 72 74 20 50  r.beans import P
00f0: 72 6f 70 65 72 74 79 56 61 6c 75 65 0a 0a 0a 63  ropertyValue...c
0100: 6c 61 73 73 20 41 62 6f 75 74 47 72 61 6d 6d 61  lass AboutGramma
0110: 6c 65 63 74 65 20 28 75 6e 6f 68 65 6c 70 65 72  lecte (unohelper
0120: 2e 42 61 73 65 2c 20 58 41 63 74 69 6f 6e 4c 69  .Base, XActionLi
0130: 73 74 65 6e 65 72 29 3a 0a 20 20 20 20 64 65 66  stener):.    def
0140: 20 5f 5f 69 6e 69 74 5f 5f 20 28 73 65 6c 66 2c   __init__ (self,
0150: 20 63 74 78 29 3a 0a 20 20 20 20 20 20 20 20 73   ctx):.        s
0160: 65 6c 66 2e 63 74 78 20 3d 20 63 74 78 0a 20 20  elf.ctx = ctx.  
0170: 20 20 20 20 20 20 73 65 6c 66 2e 78 53 76 4d 67        self.xSvMg
0180: 72 20 3d 20 73 65 6c 66 2e 63 74 78 2e 53 65 72  r = self.ctx.Ser
0190: 76 69 63 65 4d 61 6e 61 67 65 72 0a 20 20 20 20  viceManager.    
01a0: 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69      self.xContai
01b0: 6e 65 72 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20  ner = None.     
01c0: 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 20     self.xDialog 
01d0: 3d 20 4e 6f 6e 65 0a 0a 20 20 20 20 64 65 66 20  = None..    def 
01e0: 5f 61 64 64 57 69 64 67 65 74 20 28 73 65 6c 66  _addWidget (self
01f0: 2c 20 6e 61 6d 65 2c 20 77 74 79 70 65 2c 20 78  , name, wtype, x
0200: 2c 20 79 2c 20 77 2c 20 68 2c 20 2a 2a 6b 77 61  , y, w, h, **kwa
0210: 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 78 57  rgs):.        xW
0220: 69 64 67 65 74 20 3d 20 73 65 6c 66 2e 78 44 69  idget = self.xDi
0230: 61 6c 6f 67 2e 63 72 65 61 74 65 49 6e 73 74 61  alog.createInsta
0240: 6e 63 65 28 27 63 6f 6d 2e 73 75 6e 2e 73 74 61  nce('com.sun.sta
0250: 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e 74 72 6f 6c  r.awt.UnoControl
0260: 25 73 4d 6f 64 65 6c 27 20 25 20 77 74 79 70 65  %sModel' % wtype
0270: 29 0a 20 20 20 20 20 20 20 20 78 57 69 64 67 65  ).        xWidge
0280: 74 2e 4e 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20  t.Name = name.  
0290: 20 20 20 20 20 20 78 57 69 64 67 65 74 2e 50 6f        xWidget.Po
02a0: 73 69 74 69 6f 6e 58 20 3d 20 78 0a 20 20 20 20  sitionX = x.    
02b0: 20 20 20 20 78 57 69 64 67 65 74 2e 50 6f 73 69      xWidget.Posi
02c0: 74 69 6f 6e 59 20 3d 20 79 0a 20 20 20 20 20 20  tionY = y.      
02d0: 20 20 78 57 69 64 67 65 74 2e 57 69 64 74 68 20    xWidget.Width 
02e0: 3d 20 77 0a 20 20 20 20 20 20 20 20 78 57 69 64  = w.        xWid
02f0: 67 65 74 2e 48 65 69 67 68 74 20 3d 20 68 0a 20  get.Height = h. 
0300: 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 20 77 20         for k, w 
0310: 69 6e 20 6b 77 61 72 67 73 2e 69 74 65 6d 73 28  in kwargs.items(
0320: 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ):.            s
0330: 65 74 61 74 74 72 28 78 57 69 64 67 65 74 2c 20  etattr(xWidget, 
0340: 6b 2c 20 77 29 0a 20 20 20 20 20 20 20 20 73 65  k, w).        se
0350: 6c 66 2e 78 44 69 61 6c 6f 67 2e 69 6e 73 65 72  lf.xDialog.inser
0360: 74 42 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 78 57  tByName(name, xW
0370: 69 64 67 65 74 29 0a 20 20 20 20 20 20 20 20 72  idget).        r
0380: 65 74 75 72 6e 20 78 57 69 64 67 65 74 0a 0a 20  eturn xWidget.. 
0390: 20 20 20 64 65 66 20 72 75 6e 20 28 73 65 6c 66     def run (self
03a0: 2c 20 73 4c 61 6e 67 29 3a 0a 20 20 20 20 20 20  , sLang):.      
03b0: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
03c0: 20 20 20 64 55 49 20 3d 20 61 62 5f 73 74 72 69     dUI = ab_stri
03d0: 6e 67 73 2e 67 65 74 55 49 28 73 4c 61 6e 67 29  ngs.getUI(sLang)
03e0: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20  ..            # 
03f0: 64 69 61 6c 6f 67 0a 20 20 20 20 20 20 20 20 20  dialog.         
0400: 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 20     self.xDialog 
0410: 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e 63 72  = self.xSvMgr.cr
0420: 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69 74 68  eateInstanceWith
0430: 43 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73 75 6e  Context('com.sun
0440: 2e 73 74 61 72 2e 61 77 74 2e 55 6e 6f 43 6f 6e  .star.awt.UnoCon
0450: 74 72 6f 6c 44 69 61 6c 6f 67 4d 6f 64 65 6c 27  trolDialogModel'
0460: 2c 20 73 65 6c 66 2e 63 74 78 29 0a 20 20 20 20  , self.ctx).    
0470: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 44 69          self.xDi
0480: 61 6c 6f 67 2e 57 69 64 74 68 20 3d 20 31 36 30  alog.Width = 160
0490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c  .            sel
04a0: 66 2e 78 44 69 61 6c 6f 67 2e 48 65 69 67 68 74  f.xDialog.Height
04b0: 20 3d 20 33 32 30 0a 20 20 20 20 20 20 20 20 20   = 320.         
04c0: 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e     self.xDialog.
04d0: 54 69 74 6c 65 20 3d 20 64 55 49 2e 67 65 74 28  Title = dUI.get(
04e0: 27 77 69 6e 64 6f 77 74 69 74 6c 65 27 2c 20 22  'windowtitle', "
04f0: 23 65 72 72 22 29 0a 20 20 20 20 20 20 20 20 20  #err").         
0500: 20 20 20 78 57 69 6e 64 6f 77 53 69 7a 65 20 3d     xWindowSize =
0510: 20 68 65 6c 70 65 72 73 2e 67 65 74 57 69 6e 64   helpers.getWind
0520: 6f 77 53 69 7a 65 28 29 0a 20 20 20 20 20 20 20  owSize().       
0530: 20 20 20 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f       self.xDialo
0540: 67 2e 50 6f 73 69 74 69 6f 6e 58 20 3d 20 69 6e  g.PositionX = in
0550: 74 28 28 78 57 69 6e 64 6f 77 53 69 7a 65 2e 57  t((xWindowSize.W
0560: 69 64 74 68 20 2f 20 32 29 20 2d 20 28 73 65 6c  idth / 2) - (sel
0570: 66 2e 78 44 69 61 6c 6f 67 2e 57 69 64 74 68 20  f.xDialog.Width 
0580: 2f 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20  / 2)).          
0590: 20 20 73 65 6c 66 2e 78 44 69 61 6c 6f 67 2e 50    self.xDialog.P
05a0: 6f 73 69 74 69 6f 6e 59 20 3d 20 69 6e 74 28 28  ositionY = int((
05b0: 78 57 69 6e 64 6f 77 53 69 7a 65 2e 48 65 69 67  xWindowSize.Heig
05c0: 68 74 20 2f 20 32 29 20 2d 20 28 73 65 6c 66 2e  ht / 2) - (self.
05d0: 78 44 69 61 6c 6f 67 2e 48 65 69 67 68 74 20 2f  xDialog.Height /
05e0: 20 32 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20   2))..          
05f0: 20 20 23 20 78 57 69 64 67 65 74 73 0a 20 20 20    # xWidgets.   
0600: 20 20 20 20 20 20 20 20 20 6e 4c 62 6c 57 69 64           nLblWid
0610: 74 68 20 3d 20 31 34 30 0a 20 20 20 20 20 20 20  th = 140.       
0620: 20 20 20 20 20 6e 55 52 4c 63 6f 6c 6f 72 20 3d       nURLcolor =
0630: 20 30 78 34 34 34 34 46 46 0a 0a 20 20 20 20 20   0x4444FF..     
0640: 20 20 20 20 20 20 20 78 46 44 31 20 3d 20 75 6e         xFD1 = un
0650: 6f 2e 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63  o.createUnoStruc
0660: 74 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  t("com.sun.star.
0670: 61 77 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74  awt.FontDescript
0680: 6f 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20  or").           
0690: 20 78 46 44 31 2e 48 65 69 67 68 74 20 3d 20 31   xFD1.Height = 1
06a0: 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 46  0.            xF
06b0: 44 31 2e 57 65 69 67 68 74 20 3d 20 75 6e 6f 2e  D1.Weight = uno.
06c0: 67 65 74 43 6f 6e 73 74 61 6e 74 42 79 4e 61 6d  getConstantByNam
06d0: 65 28 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e  e("com.sun.star.
06e0: 61 77 74 2e 46 6f 6e 74 57 65 69 67 68 74 2e 42  awt.FontWeight.B
06f0: 4f 4c 44 22 29 0a 20 20 20 20 20 20 20 20 20 20  OLD").          
0700: 20 20 78 46 44 31 2e 4e 61 6d 65 20 3d 20 22 56    xFD1.Name = "V
0710: 65 72 64 61 6e 61 22 0a 0a 20 20 20 20 20 20 20  erdana"..       
0720: 20 20 20 20 20 78 46 44 32 20 3d 20 75 6e 6f 2e       xFD2 = uno.
0730: 63 72 65 61 74 65 55 6e 6f 53 74 72 75 63 74 28  createUnoStruct(
0740: 22 63 6f 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77  "com.sun.star.aw
0750: 74 2e 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  t.FontDescriptor
0760: 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  ").            x
0770: 46 44 32 2e 48 65 69 67 68 74 20 3d 20 31 30 0a  FD2.Height = 10.
0780: 20 20 20 20 20 20 20 20 20 20 20 20 78 46 44 32              xFD2
0790: 2e 4e 61 6d 65 20 3d 20 22 56 65 72 64 61 6e 61  .Name = "Verdana
07a0: 22 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  "..            x
07b0: 46 44 33 20 3d 20 75 6e 6f 2e 63 72 65 61 74 65  FD3 = uno.create
07c0: 55 6e 6f 53 74 72 75 63 74 28 22 63 6f 6d 2e 73  UnoStruct("com.s
07d0: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74  un.star.awt.Font
07e0: 44 65 73 63 72 69 70 74 6f 72 22 29 0a 20 20 20  Descriptor").   
07f0: 20 20 20 20 20 20 20 20 20 78 46 44 33 2e 48 65           xFD3.He
0800: 69 67 68 74 20 3d 20 31 32 0a 20 20 20 20 20 20  ight = 12.      
0810: 20 20 20 20 20 20 78 46 44 33 2e 57 65 69 67 68        xFD3.Weigh
0820: 74 20 3d 20 75 6e 6f 2e 67 65 74 43 6f 6e 73 74  t = uno.getConst
0830: 61 6e 74 42 79 4e 61 6d 65 28 22 63 6f 6d 2e 73  antByName("com.s
0840: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 46 6f 6e 74  un.star.awt.Font
0850: 57 65 69 67 68 74 2e 42 4f 4c 44 22 29 0a 20 20  Weight.BOLD").  
0860: 20 20 20 20 20 20 20 20 20 20 78 46 44 33 2e 4e            xFD3.N
0870: 61 6d 65 20 3d 20 22 56 65 72 64 61 6e 61 22 0a  ame = "Verdana".
0880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6c  .            # l
0890: 6f 67 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20  ogo.            
08a0: 78 44 65 66 61 75 6c 74 43 6f 6e 74 65 78 74 20  xDefaultContext 
08b0: 3d 20 73 65 6c 66 2e 63 74 78 2e 53 65 72 76 69  = self.ctx.Servi
08c0: 63 65 4d 61 6e 61 67 65 72 2e 44 65 66 61 75 6c  ceManager.Defaul
08d0: 74 43 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20  tContext.       
08e0: 20 20 20 20 20 78 50 61 63 6b 61 67 65 49 6e 66       xPackageInf
08f0: 6f 50 72 6f 76 69 64 65 72 20 3d 20 78 44 65 66  oProvider = xDef
0900: 61 75 6c 74 43 6f 6e 74 65 78 74 2e 67 65 74 56  aultContext.getV
0910: 61 6c 75 65 42 79 4e 61 6d 65 28 22 2f 73 69 6e  alueByName("/sin
0920: 67 6c 65 74 6f 6e 73 2f 63 6f 6d 2e 73 75 6e 2e  gletons/com.sun.
0930: 73 74 61 72 2e 64 65 70 6c 6f 79 6d 65 6e 74 2e  star.deployment.
0940: 50 61 63 6b 61 67 65 49 6e 66 6f 72 6d 61 74 69  PackageInformati
0950: 6f 6e 50 72 6f 76 69 64 65 72 22 29 0a 20 20 20  onProvider").   
0960: 20 20 20 20 20 20 20 20 20 73 45 78 74 50 61 74           sExtPat
0970: 68 20 3d 20 78 50 61 63 6b 61 67 65 49 6e 66 6f  h = xPackageInfo
0980: 50 72 6f 76 69 64 65 72 2e 67 65 74 50 61 63 6b  Provider.getPack
0990: 61 67 65 4c 6f 63 61 74 69 6f 6e 28 22 46 72 65  ageLocation("Fre
09a0: 6e 63 68 2e 6c 69 6e 67 75 69 73 74 69 63 2e 72  nch.linguistic.r
09b0: 65 73 6f 75 72 63 65 73 2e 66 72 6f 6d 2e 44 69  esources.from.Di
09c0: 63 6f 6c 6c 65 63 74 65 2e 62 79 2e 4f 6c 69 76  collecte.by.Oliv
09d0: 69 65 72 52 22 29 0a 20 20 20 20 20 20 20 20 20  ierR").         
09e0: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
09f0: 65 74 28 27 69 6d 67 4d 61 69 6e 4c 6f 67 6f 27  et('imgMainLogo'
0a00: 2c 20 27 49 6d 61 67 65 43 6f 6e 74 72 6f 6c 27  , 'ImageControl'
0a10: 2c 20 35 2c 20 35 2c 20 31 35 30 2c 20 38 30 2c  , 5, 5, 150, 80,
0a20: 20 49 6d 61 67 65 55 52 4c 20 3d 20 73 45 78 74   ImageURL = sExt
0a30: 50 61 74 68 2b 22 2f 69 6d 67 2f 6c 6f 67 6f 31  Path+"/img/logo1
0a40: 32 30 5f 74 65 78 74 2e 70 6e 67 22 2c 20 42 6f  20_text.png", Bo
0a50: 72 64 65 72 20 3d 20 30 2c 20 53 63 61 6c 65 4d  rder = 0, ScaleM
0a60: 6f 64 65 20 3d 20 31 29 0a 0a 20 20 20 20 20 20  ode = 1)..      
0a70: 20 20 20 20 20 20 23 20 49 6e 66 6f 73 0a 20 20        # Infos.  
0a80: 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f            self._
0a90: 61 64 64 57 69 64 67 65 74 28 27 6c 62 6c 56 65  addWidget('lblVe
0aa0: 72 73 69 6f 6e 27 2c 20 27 46 69 78 65 64 54 65  rsion', 'FixedTe
0ab0: 78 74 27 2c 20 31 30 2c 20 39 30 2c 20 6e 4c 62  xt', 10, 90, nLb
0ac0: 6c 57 69 64 74 68 2c 20 31 30 2c 20 4c 61 62 65  lWidth, 10, Labe
0ad0: 6c 20 3d 20 64 55 49 2e 67 65 74 28 27 76 65 72  l = dUI.get('ver
0ae0: 73 69 6f 6e 27 2c 20 22 23 65 72 72 22 29 2c 20  sion', "#err"), 
0af0: 41 6c 69 67 6e 20 3d 20 31 2c 20 46 6f 6e 74 44  Align = 1, FontD
0b00: 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44 32  escriptor = xFD2
0b10: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ).            se
0b20: 6c 66 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6c  lf._addWidget('l
0b30: 62 6c 4c 69 63 65 6e 63 65 27 2c 20 27 46 69 78  blLicence', 'Fix
0b40: 65 64 54 65 78 74 27 2c 20 31 30 2c 20 31 30 30  edText', 10, 100
0b50: 2c 20 6e 4c 62 6c 57 69 64 74 68 2c 20 31 30 2c  , nLblWidth, 10,
0b60: 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67 65 74   Label = dUI.get
0b70: 28 27 6c 69 63 65 6e 73 65 27 2c 20 22 23 65 72  ('license', "#er
0b80: 72 22 29 2c 20 41 6c 69 67 6e 20 3d 20 31 2c 20  r"), Align = 1, 
0b90: 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d  FontDescriptor =
0ba0: 20 78 46 44 32 29 0a 20 20 20 20 20 20 20 20 20   xFD2).         
0bb0: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
0bc0: 65 74 28 27 6c 62 6c 57 65 62 73 69 74 65 27 2c  et('lblWebsite',
0bd0: 20 27 46 69 78 65 64 48 79 70 65 72 6c 69 6e 6b   'FixedHyperlink
0be0: 27 2c 20 31 30 2c 20 31 31 30 2c 20 6e 4c 62 6c  ', 10, 110, nLbl
0bf0: 57 69 64 74 68 2c 20 31 30 2c 20 4c 61 62 65 6c  Width, 10, Label
0c00: 20 3d 20 64 55 49 2e 67 65 74 28 27 77 65 62 73   = dUI.get('webs
0c10: 69 74 65 27 2c 20 22 23 65 72 72 22 29 2c 20 41  ite', "#err"), A
0c20: 6c 69 67 6e 20 3d 20 31 2c 20 5c 0a 20 20 20 20  lign = 1, \.    
0c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c40: 20 20 20 20 20 20 20 20 55 52 4c 3d 22 68 74 74          URL="htt
0c50: 70 73 3a 2f 2f 67 72 61 6d 6d 61 6c 65 63 74 65  ps://grammalecte
0c60: 2e 6e 65 74 2f 3f 66 72 6f 6d 3d 67 72 61 6d 6d  .net/?from=gramm
0c70: 61 6c 65 63 74 65 2d 6c 6f 22 2c 20 46 6f 6e 74  alecte-lo", Font
0c80: 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46 44  Descriptor = xFD
0c90: 31 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20 6e  1, TextColor = n
0ca0: 55 52 4c 63 6f 6c 6f 72 29 0a 0a 20 20 20 20 20  URLcolor)..     
0cb0: 20 20 20 20 20 20 20 23 20 50 79 74 68 6f 6e 0a         # Python.
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
0cd0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 6c 62 6c  ._addWidget('lbl
0ce0: 70 79 74 68 6f 6e 27 2c 20 27 46 69 78 65 64 54  python', 'FixedT
0cf0: 65 78 74 27 2c 20 31 30 2c 20 31 32 35 2c 20 6e  ext', 10, 125, n
0d00: 4c 62 6c 57 69 64 74 68 2d 35 30 2c 20 31 30 2c  LblWidth-50, 10,
0d10: 20 41 6c 69 67 6e 20 3d 20 31 2c 20 54 65 78 74   Align = 1, Text
0d20: 43 6f 6c 6f 72 20 3d 20 30 78 36 36 36 36 36 36  Color = 0x666666
0d30: 2c 20 46 6f 6e 74 44 65 73 63 72 69 70 74 6f 72  , FontDescriptor
0d40: 20 3d 20 78 46 44 32 2c 20 5c 0a 20 20 20 20 20   = xFD2, \.     
0d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d60: 20 20 20 20 20 20 20 4c 61 62 65 6c 20 3d 20 64         Label = d
0d70: 55 49 2e 67 65 74 28 27 70 79 74 68 6f 6e 76 65  UI.get('pythonve
0d80: 72 27 2c 20 22 23 65 72 72 22 29 20 2b 20 22 7b  r', "#err") + "{
0d90: 30 5b 30 5d 7d 2e 7b 30 5b 31 5d 7d 2e 7b 30 5b  0[0]}.{0[1]}.{0[
0da0: 32 5d 7d 22 2e 66 6f 72 6d 61 74 28 73 79 73 2e  2]}".format(sys.
0db0: 76 65 72 73 69 6f 6e 5f 69 6e 66 6f 29 29 0a 20  version_info)). 
0dc0: 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6e 73             xCons
0dd0: 6f 6c 65 42 75 74 74 6f 6e 20 3d 20 73 65 6c 66  oleButton = self
0de0: 2e 5f 61 64 64 57 69 64 67 65 74 28 27 63 6f 6e  ._addWidget('con
0df0: 73 6f 6c 65 5f 62 75 74 74 6f 6e 27 2c 20 27 42  sole_button', 'B
0e00: 75 74 74 6f 6e 27 2c 20 6e 4c 62 6c 57 69 64 74  utton', nLblWidt
0e10: 68 2d 33 30 2c 20 31 32 34 2c 20 34 30 2c 20 31  h-30, 124, 40, 1
0e20: 30 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20  0, \.           
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e50: 20 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e 67 65    Label = dUI.ge
0e60: 74 28 27 63 6f 6e 73 6f 6c 65 27 2c 20 22 23 65  t('console', "#e
0e70: 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63 72 69  rr"), FontDescri
0e80: 70 74 6f 72 20 3d 20 78 46 44 32 2c 20 54 65 78  ptor = xFD2, Tex
0e90: 74 43 6f 6c 6f 72 20 3d 20 30 78 36 36 36 36 36  tColor = 0x66666
0ea0: 36 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  6)..            
0eb0: 23 20 6f 74 68 65 72 0a 20 20 20 20 20 20 20 20  # other.        
0ec0: 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64      self._addWid
0ed0: 67 65 74 28 27 6c 69 6e 65 27 2c 20 27 46 69 78  get('line', 'Fix
0ee0: 65 64 4c 69 6e 65 27 2c 20 31 30 2c 20 31 34 30  edLine', 10, 140
0ef0: 2c 20 6e 4c 62 6c 57 69 64 74 68 2c 20 31 30 29  , nLblWidth, 10)
0f00: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20  ..            # 
0f10: 73 70 6f 6e 73 6f 72 73 0a 20 20 20 20 20 20 20  sponsors.       
0f20: 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69       self._addWi
0f30: 64 67 65 74 28 27 6c 62 6c 4d 73 67 27 2c 20 27  dget('lblMsg', '
0f40: 46 69 78 65 64 54 65 78 74 27 2c 20 31 30 2c 20  FixedText', 10, 
0f50: 31 35 35 2c 20 6e 4c 62 6c 57 69 64 74 68 2c 20  155, nLblWidth, 
0f60: 31 30 2c 20 4c 61 62 65 6c 20 3d 20 64 55 49 2e  10, Label = dUI.
0f70: 67 65 74 28 27 6d 65 73 73 61 67 65 27 2c 20 22  get('message', "
0f80: 23 65 72 72 22 29 2c 20 46 6f 6e 74 44 65 73 63  #err"), FontDesc
0f90: 72 69 70 74 6f 72 20 3d 20 78 46 44 32 2c 20 41  riptor = xFD2, A
0fa0: 6c 69 67 6e 20 3d 20 31 29 0a 20 20 20 20 20 20  lign = 1).      
0fb0: 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64 57        self._addW
0fc0: 69 64 67 65 74 28 27 6c 62 6c 55 52 4c 31 27 2c  idget('lblURL1',
0fd0: 20 27 46 69 78 65 64 48 79 70 65 72 6c 69 6e 6b   'FixedHyperlink
0fe0: 27 2c 20 31 30 2c 20 31 37 30 2c 20 6e 4c 62 6c  ', 10, 170, nLbl
0ff0: 57 69 64 74 68 2c 20 31 30 2c 20 4c 61 62 65 6c  Width, 10, Label
1000: 20 3d 20 64 55 49 2e 67 65 74 28 27 73 70 6f 6e   = dUI.get('spon
1010: 73 6f 72 27 2c 20 22 23 65 72 72 22 29 2c 20 5c  sor', "#err"), \
1020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1030: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 69               Ali
1040: 67 6e 20 3d 20 31 2c 20 55 52 4c 3d 22 68 74 74  gn = 1, URL="htt
1050: 70 3a 2f 2f 6c 61 6d 6f 75 65 74 74 65 2e 6f 72  p://lamouette.or
1060: 67 2f 3f 66 72 6f 6d 3d 67 72 61 6d 6d 61 6c 65  g/?from=grammale
1070: 63 74 65 2d 6c 6f 22 2c 20 46 6f 6e 74 44 65 73  cte-lo", FontDes
1080: 63 72 69 70 74 6f 72 20 3d 20 78 46 44 33 2c 20  criptor = xFD3, 
1090: 54 65 78 74 43 6f 6c 6f 72 20 3d 20 6e 55 52 4c  TextColor = nURL
10a0: 63 6f 6c 6f 72 29 0a 20 20 20 20 20 20 20 20 20  color).         
10b0: 20 20 20 73 65 6c 66 2e 5f 61 64 64 57 69 64 67     self._addWidg
10c0: 65 74 28 27 69 6d 67 53 70 6f 6e 73 6f 72 27 2c  et('imgSponsor',
10d0: 20 27 49 6d 61 67 65 43 6f 6e 74 72 6f 6c 27 2c   'ImageControl',
10e0: 20 35 2c 20 31 38 30 2c 20 31 35 30 2c 20 35 30   5, 180, 150, 50
10f0: 2c 20 49 6d 61 67 65 55 52 4c 20 3d 20 73 45 78  , ImageURL = sEx
1100: 74 50 61 74 68 2b 22 2f 69 6d 67 2f 4c 61 4d 6f  tPath+"/img/LaMo
1110: 75 65 74 74 65 5f 73 6d 61 6c 6c 2e 70 6e 67 22  uette_small.png"
1120: 2c 20 42 6f 72 64 65 72 20 3d 20 30 2c 20 53 63  , Border = 0, Sc
1130: 61 6c 65 4d 6f 64 65 20 3d 20 31 29 0a 20 20 20  aleMode = 1).   
1140: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61           self._a
1150: 64 64 57 69 64 67 65 74 28 27 6c 62 6c 55 52 4c  ddWidget('lblURL
1160: 32 27 2c 20 27 46 69 78 65 64 48 79 70 65 72 6c  2', 'FixedHyperl
1170: 69 6e 6b 27 2c 20 31 30 2c 20 32 33 35 2c 20 6e  ink', 10, 235, n
1180: 4c 62 6c 57 69 64 74 68 2c 20 31 30 2c 20 4c 61  LblWidth, 10, La
1190: 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28 27 73  bel = dUI.get('s
11a0: 70 6f 6e 73 6f 72 32 27 2c 20 22 23 65 72 72 22  ponsor2', "#err"
11b0: 29 2c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20  ), \.           
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 41 6c 69 67 6e 20 3d 20 31 2c 20 55 52 4c 3d   Align = 1, URL=
11e0: 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 61 6c 67  "https://www.alg
11f0: 6f 6f 2e 66 72 2f 3f 66 72 6f 6d 3d 67 72 61 6d  oo.fr/?from=gram
1200: 6d 61 6c 65 63 74 65 2d 6c 6f 22 2c 20 46 6f 6e  malecte-lo", Fon
1210: 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 78 46  tDescriptor = xF
1220: 44 33 2c 20 54 65 78 74 43 6f 6c 6f 72 20 3d 20  D3, TextColor = 
1230: 6e 55 52 4c 63 6f 6c 6f 72 29 0a 20 20 20 20 20  nURLcolor).     
1240: 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61 64 64         self._add
1250: 57 69 64 67 65 74 28 27 69 6d 67 53 70 6f 6e 73  Widget('imgSpons
1260: 6f 72 32 27 2c 20 27 49 6d 61 67 65 43 6f 6e 74  or2', 'ImageCont
1270: 72 6f 6c 27 2c 20 35 2c 20 32 34 35 2c 20 31 35  rol', 5, 245, 15
1280: 30 2c 20 35 30 2c 20 49 6d 61 67 65 55 52 4c 20  0, 50, ImageURL 
1290: 3d 20 73 45 78 74 50 61 74 68 2b 22 2f 69 6d 67  = sExtPath+"/img
12a0: 2f 41 6c 67 6f 6f 5f 6c 6f 67 6f 2e 70 6e 67 22  /Algoo_logo.png"
12b0: 2c 20 42 6f 72 64 65 72 20 3d 20 30 2c 20 53 63  , Border = 0, Sc
12c0: 61 6c 65 4d 6f 64 65 20 3d 20 31 29 0a 20 20 20  aleMode = 1).   
12d0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 61           self._a
12e0: 64 64 57 69 64 67 65 74 28 27 6c 62 6c 55 52 4c  ddWidget('lblURL
12f0: 33 27 2c 20 27 46 69 78 65 64 48 79 70 65 72 6c  3', 'FixedHyperl
1300: 69 6e 6b 27 2c 20 31 30 2c 20 33 30 30 2c 20 6e  ink', 10, 300, n
1310: 4c 62 6c 57 69 64 74 68 2c 20 31 30 2c 20 4c 61  LblWidth, 10, La
1320: 62 65 6c 20 3d 20 64 55 49 2e 67 65 74 28 27 6c  bel = dUI.get('l
1330: 69 6e 6b 27 2c 20 22 23 65 72 72 22 29 2c 20 5c  ink', "#err"), \
1340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1350: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 69               Ali
1360: 67 6e 20 3d 20 31 2c 20 55 52 4c 3d 22 68 74 74  gn = 1, URL="htt
1370: 70 73 3a 2f 2f 67 72 61 6d 6d 61 6c 65 63 74 65  ps://grammalecte
1380: 2e 6e 65 74 2f 23 74 68 61 6e 6b 73 22 2c 20 46  .net/#thanks", F
1390: 6f 6e 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ontDescriptor = 
13a0: 78 46 44 31 2c 20 54 65 78 74 43 6f 6c 6f 72 20  xFD1, TextColor 
13b0: 3d 20 6e 55 52 4c 63 6f 6c 6f 72 29 0a 0a 20 20  = nURLcolor)..  
13c0: 20 20 20 20 20 20 20 20 20 20 23 20 63 6f 6e 74            # cont
13d0: 61 69 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20  ainer.          
13e0: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
13f0: 72 20 3d 20 73 65 6c 66 2e 78 53 76 4d 67 72 2e  r = self.xSvMgr.
1400: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 57 69  createInstanceWi
1410: 74 68 43 6f 6e 74 65 78 74 28 27 63 6f 6d 2e 73  thContext('com.s
1420: 75 6e 2e 73 74 61 72 2e 61 77 74 2e 55 6e 6f 43  un.star.awt.UnoC
1430: 6f 6e 74 72 6f 6c 44 69 61 6c 6f 67 27 2c 20 73  ontrolDialog', s
1440: 65 6c 66 2e 63 74 78 29 0a 20 20 20 20 20 20 20  elf.ctx).       
1450: 20 20 20 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61       self.xConta
1460: 69 6e 65 72 2e 73 65 74 4d 6f 64 65 6c 28 73 65  iner.setModel(se
1470: 6c 66 2e 78 44 69 61 6c 6f 67 29 0a 20 20 20 20  lf.xDialog).    
1480: 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43 6f          self.xCo
1490: 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74 72  ntainer.getContr
14a0: 6f 6c 28 27 63 6f 6e 73 6f 6c 65 5f 62 75 74 74  ol('console_butt
14b0: 6f 6e 27 29 2e 61 64 64 41 63 74 69 6f 6e 4c 69  on').addActionLi
14c0: 73 74 65 6e 65 72 28 73 65 6c 66 29 0a 20 20 20  stener(self).   
14d0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43           self.xC
14e0: 6f 6e 74 61 69 6e 65 72 2e 67 65 74 43 6f 6e 74  ontainer.getCont
14f0: 72 6f 6c 28 27 63 6f 6e 73 6f 6c 65 5f 62 75 74  rol('console_but
1500: 74 6f 6e 27 29 2e 73 65 74 41 63 74 69 6f 6e 43  ton').setActionC
1510: 6f 6d 6d 61 6e 64 28 27 43 6f 6e 73 6f 6c 65 27  ommand('Console'
1520: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ).            se
1530: 6c 66 2e 78 43 6f 6e 74 61 69 6e 65 72 2e 73 65  lf.xContainer.se
1540: 74 56 69 73 69 62 6c 65 28 46 61 6c 73 65 29 0a  tVisible(False).
1550: 20 20 20 20 20 20 20 20 20 20 20 20 78 54 6f 6f              xToo
1560: 6c 6b 69 74 20 3d 20 73 65 6c 66 2e 78 53 76 4d  lkit = self.xSvM
1570: 67 72 2e 63 72 65 61 74 65 49 6e 73 74 61 6e 63  gr.createInstanc
1580: 65 57 69 74 68 43 6f 6e 74 65 78 74 28 27 63 6f  eWithContext('co
1590: 6d 2e 73 75 6e 2e 73 74 61 72 2e 61 77 74 2e 45  m.sun.star.awt.E
15a0: 78 74 54 6f 6f 6c 6b 69 74 27 2c 20 73 65 6c 66  xtToolkit', self
15b0: 2e 63 74 78 29 0a 20 20 20 20 20 20 20 20 20 20  .ctx).          
15c0: 20 20 73 65 6c 66 2e 78 43 6f 6e 74 61 69 6e 65    self.xContaine
15d0: 72 2e 63 72 65 61 74 65 50 65 65 72 28 78 54 6f  r.createPeer(xTo
15e0: 6f 6c 6b 69 74 2c 20 4e 6f 6e 65 29 0a 20 20 20  olkit, None).   
15f0: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43           self.xC
1600: 6f 6e 74 61 69 6e 65 72 2e 65 78 65 63 75 74 65  ontainer.execute
1610: 28 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70  ().        excep
1620: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  t:.            t
1630: 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65  raceback.print_e
1640: 78 63 28 29 0a 0a 20 20 20 20 23 20 58 41 63 74  xc()..    # XAct
1650: 69 6f 6e 4c 69 73 74 65 6e 65 72 0a 20 20 20 20  ionListener.    
1660: 64 65 66 20 61 63 74 69 6f 6e 50 65 72 66 6f 72  def actionPerfor
1670: 6d 65 64 20 28 73 65 6c 66 2c 20 78 41 63 74 69  med (self, xActi
1680: 6f 6e 45 76 65 6e 74 29 3a 0a 20 20 20 20 20 20  onEvent):.      
1690: 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20    try:.         
16a0: 20 20 20 69 66 20 78 41 63 74 69 6f 6e 45 76 65     if xActionEve
16b0: 6e 74 2e 41 63 74 69 6f 6e 43 6f 6d 6d 61 6e 64  nt.ActionCommand
16c0: 20 3d 3d 20 27 43 6f 6e 73 6f 6c 65 27 3a 0a 20   == 'Console':. 
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
16e0: 65 6c 70 65 72 73 2e 73 74 61 72 74 5f 63 6f 6e  elpers.start_con
16f0: 73 6f 6c 65 28 29 0a 20 20 20 20 20 20 20 20 20  sole().         
1700: 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20     else:.       
1710: 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 78 43           self.xC
1720: 6f 6e 74 61 69 6e 65 72 2e 65 6e 64 45 78 65 63  ontainer.endExec
1730: 75 74 65 28 29 0a 20 20 20 20 20 20 20 20 65 78  ute().        ex
1740: 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20  cept:.          
1750: 20 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69 6e    traceback.prin
1760: 74 5f 65 78 63 28 29 0a                          t_exc().