Changeset 148


Ignore:
Timestamp:
Jun 5, 2024, 8:50:50 AM (4 months ago)
Author:
chronos
Message:
  • Modified: Updated Common package.
Location:
trunk
Files:
19 added
4 deleted
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/Core.lfm

    r145 r148  
    764764    Top = 209
    765765  end
    766   object AboutDialog: TAboutDialog
    767     Translator = Translator
    768     ThemeManager = ThemeManager
    769     ApplicationInfo = ApplicationInfo
    770     Left = 362
    771     Top = 288
    772   end
    773766end
  • trunk/Core.pas

    r146 r148  
    66  Classes, SysUtils, FileUtil, ApplicationInfo, LastOpenedList, Project,
    77  Translator, Target, RegistryEx, Registry, Graphics, Controls, ScaleDPI,
    8   PersistentForm, Theme, AboutDialog, BFTarget, Forms;
     8  PersistentForm, Theme, BFTarget, Forms;
    99
    1010type
     
    1313
    1414  TCore = class(TDataModule)
    15     AboutDialog: TAboutDialog;
    1615    ApplicationInfo: TApplicationInfo;
    1716    Translator: TTranslator;
  • trunk/Forms/FormMain.pas

    r145 r148  
    177177
    178178uses
    179   Core, TargetInterpretter, BFTarget, Common;
     179  Core, TargetInterpretter, BFTarget, Common, FormAbout;
    180180
    181181resourcestring
     
    581581
    582582procedure TFormMain.AAboutExecute(Sender: TObject);
    583 begin
    584   Core.Core.AboutDialog.Show;
     583var
     584  FormAbout: TFormAbout;
     585begin
     586  FormAbout := TFormAbout.Create(nil);
     587  FormAbout.ApplicationInfo := Core.Core.ApplicationInfo;
     588  try
     589    FormAbout.ShowModal;
     590  finally
     591     FormAbout.Free;
     592  end;
    585593end;
    586594
  • trunk/Packages/Common/Common.lpk

    r145 r148  
    1111      <PathDelim Value="\"/>
    1212      <SearchPaths>
     13        <OtherUnitFiles Value="Forms"/>
    1314        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)-$(BuildMode)"/>
    1415      </SearchPaths>
     
    4142Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/>
    4243    <License Value="Copy left."/>
    43     <Version Minor="11"/>
    44     <Files Count="33">
     44    <Version Minor="12"/>
     45    <Files Count="36">
    4546      <Item1>
    4647        <Filename Value="StopWatch.pas"/>
     
    159160      </Item26>
    160161      <Item27>
    161         <Filename Value="FormAbout.pas"/>
    162         <UnitName Value="FormAbout"/>
     162        <Filename Value="PixelPointer.pas"/>
     163        <UnitName Value="PixelPointer"/>
    163164      </Item27>
    164165      <Item28>
    165         <Filename Value="AboutDialog.pas"/>
    166         <HasRegisterProc Value="True"/>
    167         <UnitName Value="AboutDialog"/>
     166        <Filename Value="DataFile.pas"/>
     167        <UnitName Value="DataFile"/>
    168168      </Item28>
    169169      <Item29>
    170         <Filename Value="PixelPointer.pas"/>
    171         <UnitName Value="PixelPointer"/>
     170        <Filename Value="TestCase.pas"/>
     171        <UnitName Value="TestCase"/>
    172172      </Item29>
    173173      <Item30>
    174         <Filename Value="DataFile.pas"/>
    175         <UnitName Value="DataFile"/>
     174        <Filename Value="Generics.pas"/>
     175        <UnitName Value="Generics"/>
    176176      </Item30>
    177177      <Item31>
    178         <Filename Value="TestCase.pas"/>
    179         <UnitName Value="TestCase"/>
    180       </Item31>
    181       <Item32>
    182         <Filename Value="Generics.pas"/>
    183         <UnitName Value="Generics"/>
    184       </Item32>
    185       <Item33>
    186178        <Filename Value="CommonPackage.pas"/>
    187179        <Type Value="Main Unit"/>
    188180        <UnitName Value="CommonPackage"/>
     181      </Item31>
     182      <Item32>
     183        <Filename Value="Table.pas"/>
     184        <UnitName Value="Table"/>
     185      </Item32>
     186      <Item33>
     187        <Filename Value="FormEx.pas"/>
     188        <HasRegisterProc Value="True"/>
     189        <UnitName Value="FormEx"/>
    189190      </Item33>
     191      <Item34>
     192        <Filename Value="Forms\FormTests.pas"/>
     193        <UnitName Value="FormTests"/>
     194      </Item34>
     195      <Item35>
     196        <Filename Value="Forms\FormTest.pas"/>
     197        <UnitName Value="FormTest"/>
     198      </Item35>
     199      <Item36>
     200        <Filename Value="Forms\FormAbout.pas"/>
     201        <UnitName Value="FormAbout"/>
     202      </Item36>
    190203    </Files>
    191204    <CompatibilityMode Value="True"/>
  • trunk/Packages/Common/Common.pas

    r145 r148  
    6565function GetFileFilterItemExt(Filter: string; Index: Integer): string;
    6666function IntToBin(Data: Int64; Count: Byte): string;
    67 function Implode(Separator: Char; List: TList<string>): string;
     67function Implode(Separator: string; List: TList<string>): string;
     68function Implode(Separator: string; List: TStringList; Around: string = ''): string;
    6869function LastPos(const SubStr: String; const S: String): Integer;
    6970function LoadFileToStr(const FileName: TFileName): AnsiString;
     
    206207end;*)
    207208
     209function Implode(Separator: string; List: TStringList; Around: string = ''): string;
     210var
     211  I: Integer;
     212begin
     213  Result := '';
     214  for I := 0 to List.Count - 1 do begin
     215    Result := Result + Around + List[I] + Around;
     216    if I < List.Count - 1 then Result := Result + Separator;
     217  end;
     218end;
     219
    208220function LastPos(const SubStr: String; const S: String): Integer;
    209221begin
     
    314326end;
    315327
    316 function Implode(Separator: Char; List: TList<string>): string;
     328function Implode(Separator: string; List: TList<string>): string;
    317329var
    318330  I: Integer;
  • trunk/Packages/Common/CommonPackage.pas

    r145 r148  
    99
    1010uses
    11   StopWatch, Common, DebugLog, Common.Delay, PrefixMultiplier, URI, Threading,
     11  StopWatch, Common, DebugLog, Common.Delay, PrefixMultiplier, URI, Threading, 
    1212  Memory, ResetableThread, Pool, LastOpenedList, RegistryEx, JobProgressView,
    1313  XML, ApplicationInfo, SyncCounter, ListViewSort, PersistentForm, FindFile,
    1414  ScaleDPI, Theme, StringTable, MetaCanvas, Geometric, Translator, Languages,
    15   FormAbout, AboutDialog, PixelPointer, DataFile, TestCase, Generics,
    16   LazarusPackageIntf;
     15  PixelPointer, DataFile, TestCase, Generics, Table, FormEx, FormTests,
     16  FormTest, FormAbout, LazarusPackageIntf;
    1717
    1818implementation
     
    3131  RegisterUnit('Theme', @Theme.Register);
    3232  RegisterUnit('Translator', @Translator.Register);
    33   RegisterUnit('AboutDialog', @AboutDialog.Register);
     33  RegisterUnit('FormEx', @FormEx.Register);
    3434end;
    3535
  • trunk/Packages/Common/DataFile.pas

    r145 r148  
    7777procedure TDataFile.Assign(Source: TPersistent);
    7878begin
    79   inherited;
    8079  if Source is TDataFile then begin
    8180    FFileName := TDataFile(Source).FFileName;
    8281    FModified := TDataFile(Source).FModified;
    83   end;
     82  end else inherited;
    8483end;
    8584
  • trunk/Packages/Common/Languages.pas

    r145 r148  
    216216  SLang_za = 'Zhuang';
    217217  SLang_zh = 'Chinese';
     218  SLang_zh_Hans = 'Simplified Chinese';
     219  SLang_zh_Hant = 'Traditional Chinese';
    218220  SLang_zu = 'Zulu';
     221
    219222
    220223implementation
     
    228231begin
    229232  I := 0;
    230   while (I < Count) and (TLanguage(Items[I]).Code < ACode) do Inc(I);
    231   if I < Count then Result := TLanguage(Items[I])
     233  while (I < Count) and (Items[I].Code <> ACode) do Inc(I);
     234  if I < Count then Result := Items[I]
    232235    else Result := nil;
    233236end;
     
    439442  AddNew('za', SLang_za);
    440443  AddNew('zh', SLang_zh);
     444  AddNew('zh-Hant', SLang_zh_Hant);
     445  AddNew('zh-Hans', SLang_zh_Hans);
    441446  AddNew('zu', SLang_zu);
    442447end;
  • trunk/Packages/Common/Languages/DataFile.cs.po

    r145 r148  
    1313
    1414#: datafile.sallfiles
    15 #, fuzzy
    1615msgctxt "datafile.sallfiles"
    1716msgid "All files"
     
    1918
    2019#: datafile.sdatafilename
    21 #, fuzzy
    2220msgctxt "datafile.sdatafilename"
    2321msgid "Data file"
  • trunk/Packages/Common/Languages/DebugLog.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
     12"X-Generator: Poedit 3.0.1\n"
    1113
    1214#: debuglog.sfilenamenotdefined
    13 #, fuzzy
    1415msgctxt "debuglog.sfilenamenotdefined"
    1516msgid "Filename not defined"
  • trunk/Packages/Common/Languages/FindFile.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: \n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
    11 "Language: cs\n"
    12 "X-Generator: Poedit 1.8.9\n"
     12"X-Generator: Poedit 3.0.1\n"
    1313
    1414#: findfile.sdirnotfound
    15 #, fuzzy
    1615msgctxt "findfile.sdirnotfound"
    1716msgid "Directory not found"
  • trunk/Packages/Common/Languages/FormAbout.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Chronos <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
    11 "Language: cs\n"
    12 "X-Generator: Poedit 2.4.1\n"
     12"X-Generator: Poedit 3.0.1\n"
    1313
    1414#: formabout.slicense
    15 #, fuzzy
    1615msgctxt "formabout.slicense"
    1716msgid "License"
     
    1918
    2019#: formabout.sreleasedate
    21 #, fuzzy
    2220msgctxt "formabout.sreleasedate"
    2321msgid "Release date"
     
    2523
    2624#: formabout.sversion
    27 #, fuzzy
    2825msgctxt "formabout.sversion"
    2926msgid "Version"
  • trunk/Packages/Common/Languages/JobProgressView.cs.po

    r145 r148  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "X-Generator: Poedit 2.2\n"
     12"X-Generator: Poedit 3.0.1\n"
    1313
    1414#: jobprogressview.sestimatedtime
    15 #, object-pascal-format, fuzzy
     15#, object-pascal-format
    1616msgctxt "jobprogressview.sestimatedtime"
    1717msgid "Estimated time: %s"
     
    1919
    2020#: jobprogressview.sexecuted
    21 #, fuzzy
    2221msgctxt "jobprogressview.sexecuted"
    2322msgid "Executed"
     
    2524
    2625#: jobprogressview.sfinished
    27 #, fuzzy
    2826msgctxt "jobprogressview.sfinished"
    2927msgid "Finished"
     
    3129
    3230#: jobprogressview.spleasewait
    33 #, fuzzy
    3431msgctxt "jobprogressview.spleasewait"
    3532msgid "Please wait..."
     
    3734
    3835#: jobprogressview.sterminate
    39 #, fuzzy
    4036msgctxt "jobprogressview.sterminate"
    4137msgid "Termination"
     
    4339
    4440#: jobprogressview.stotalestimatedtime
    45 #, object-pascal-format, fuzzy
     41#, object-pascal-format
    4642msgctxt "jobprogressview.stotalestimatedtime"
    4743msgid "Total estimated time: %s"
  • trunk/Packages/Common/Languages/Languages.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Jiří Hajda <software@mezservis.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
     12"X-Generator: Poedit 3.0.1\n"
    1113
    1214#: languages.slangauto
    13 #, fuzzy
    1415msgctxt "languages.slangauto"
    1516msgid "Automatic"
     
    2223
    2324#: languages.slang_ab
    24 #, fuzzy
    2525msgctxt "languages.slang_ab"
    2626msgid "Abkhazian"
     
    3333
    3434#: languages.slang_af
    35 #, fuzzy
    3635msgctxt "languages.slang_af"
    3736msgid "Afrikaans"
     
    5453
    5554#: languages.slang_ar
    56 #, fuzzy
    5755msgctxt "languages.slang_ar"
    5856msgid "Arabic"
     
    9088
    9189#: languages.slang_bg
    92 #, fuzzy
    9390msgctxt "languages.slang_bg"
    9491msgid "Bulgarian"
     
    116113
    117114#: languages.slang_bo
    118 #, fuzzy
    119115msgctxt "languages.slang_bo"
    120116msgid "Tibetan"
     
    132128
    133129#: languages.slang_ca
    134 #, fuzzy
    135130msgctxt "languages.slang_ca"
    136131msgid "Catalan"
     
    153148
    154149#: languages.slang_cr
    155 #, fuzzy
    156150msgctxt "languages.slang_cr"
    157151msgid "Cree"
     
    159153
    160154#: languages.slang_cs
    161 #, fuzzy
    162155msgctxt "languages.slang_cs"
    163156msgid "Czech"
     
    175168
    176169#: languages.slang_da
    177 #, fuzzy
    178170msgctxt "languages.slang_da"
    179171msgid "Danish"
     
    181173
    182174#: languages.slang_de
    183 #, fuzzy
    184175msgctxt "languages.slang_de"
    185176msgid "German"
     
    187178
    188179#: languages.slang_de_at
    189 #, fuzzy
    190180msgctxt "languages.slang_de_at"
    191181msgid "Austrian German"
     
    193183
    194184#: languages.slang_de_ch
    195 #, fuzzy
    196185msgctxt "languages.slang_de_ch"
    197186msgid "Swiss German"
     
    214203
    215204#: languages.slang_el
    216 #, fuzzy
    217205msgctxt "languages.slang_el"
    218206msgid "Greek"
     
    220208
    221209#: languages.slang_en
    222 #, fuzzy
    223210msgctxt "languages.slang_en"
    224211msgid "English"
     
    226213
    227214#: languages.slang_en_au
    228 #, fuzzy
    229215msgctxt "languages.slang_en_au"
    230216msgid "Australian English"
     
    232218
    233219#: languages.slang_en_ca
    234 #, fuzzy
    235220msgctxt "languages.slang_en_ca"
    236221msgid "Canadian English"
     
    238223
    239224#: languages.slang_en_gb
    240 #, fuzzy
    241225msgctxt "languages.slang_en_gb"
    242226msgid "British English"
     
    244228
    245229#: languages.slang_en_us
    246 #, fuzzy
    247230msgctxt "languages.slang_en_us"
    248231msgid "American English"
     
    250233
    251234#: languages.slang_eo
    252 #, fuzzy
    253235msgctxt "languages.slang_eo"
    254236msgid "Esperanto"
     
    256238
    257239#: languages.slang_es
    258 #, fuzzy
    259240msgctxt "languages.slang_es"
    260241msgid "Spanish"
     
    262243
    263244#: languages.slang_et
    264 #, fuzzy
    265245msgctxt "languages.slang_et"
    266246msgid "Estonian"
     
    273253
    274254#: languages.slang_fa
    275 #, fuzzy
    276255msgctxt "languages.slang_fa"
    277256msgid "Persian"
     
    284263
    285264#: languages.slang_fi
    286 #, fuzzy
    287265msgctxt "languages.slang_fi"
    288266msgid "Finnish"
     
    300278
    301279#: languages.slang_fr
    302 #, fuzzy
    303280msgctxt "languages.slang_fr"
    304281msgid "French"
     
    316293
    317294#: languages.slang_ga
    318 #, fuzzy
    319295msgctxt "languages.slang_ga"
    320296msgid "Irish"
     
    352328
    353329#: languages.slang_he
    354 #, fuzzy
    355330msgctxt "languages.slang_he"
    356331msgid "Hebrew"
     
    368343
    369344#: languages.slang_hr
    370 #, fuzzy
    371345msgctxt "languages.slang_hr"
    372346msgid "Croatian"
     
    379353
    380354#: languages.slang_hu
    381 #, fuzzy
    382355msgctxt "languages.slang_hu"
    383356msgid "Hungarian"
     
    385358
    386359#: languages.slang_hy
    387 #, fuzzy
    388360msgctxt "languages.slang_hy"
    389361msgid "Armenian"
     
    431403
    432404#: languages.slang_is
    433 #, fuzzy
    434405msgctxt "languages.slang_is"
    435406msgid "Icelandic"
     
    437408
    438409#: languages.slang_it
    439 #, fuzzy
    440410msgctxt "languages.slang_it"
    441411msgid "Italian"
     
    448418
    449419#: languages.slang_ja
    450 #, fuzzy
    451420msgctxt "languages.slang_ja"
    452421msgid "Japanese"
     
    459428
    460429#: languages.slang_ka
    461 #, fuzzy
    462430msgctxt "languages.slang_ka"
    463431msgid "Georgian"
     
    465433
    466434#: languages.slang_kg
    467 #, fuzzy
    468435msgctxt "languages.slang_kg"
    469436msgid "Kongo"
     
    486453
    487454#: languages.slang_kl
    488 #, fuzzy
    489455msgctxt "languages.slang_kl"
    490456msgid "Greenlandic"
     
    497463
    498464#: languages.slang_kn
    499 #, fuzzy
    500465msgctxt "languages.slang_kn"
    501466msgid "Kannada"
     
    503468
    504469#: languages.slang_ko
    505 #, fuzzy
    506470msgctxt "languages.slang_ko"
    507471msgid "Korean"
     
    529493
    530494#: languages.slang_kw
    531 #, fuzzy
    532495msgctxt "languages.slang_kw"
    533496msgid "Cornish"
     
    540503
    541504#: languages.slang_la
    542 #, fuzzy
    543505msgctxt "languages.slang_la"
    544506msgid "Latin"
     
    546508
    547509#: languages.slang_lb
    548 #, fuzzy
    549510msgctxt "languages.slang_lb"
    550511msgid "Luxembourgish"
     
    567528
    568529#: languages.slang_lo
    569 #, fuzzy
    570530msgctxt "languages.slang_lo"
    571531msgid "Lao"
     
    573533
    574534#: languages.slang_lt
    575 #, fuzzy
    576535msgctxt "languages.slang_lt"
    577536msgid "Lithuanian"
     
    584543
    585544#: languages.slang_lv
    586 #, fuzzy
    587545msgctxt "languages.slang_lv"
    588546msgid "Latvian"
     
    605563
    606564#: languages.slang_mk
    607 #, fuzzy
    608565msgctxt "languages.slang_mk"
    609566msgid "Macedonian"
     
    616573
    617574#: languages.slang_mn
    618 #, fuzzy
    619575msgctxt "languages.slang_mn"
    620576msgid "Mongolian"
     
    622578
    623579#: languages.slang_mo
    624 #, fuzzy
    625580msgctxt "languages.slang_mo"
    626581msgid "Moldavian"
     
    673628
    674629#: languages.slang_nl
    675 #, fuzzy
    676630msgctxt "languages.slang_nl"
    677631msgid "Dutch"
     
    689643
    690644#: languages.slang_no
    691 #, fuzzy
    692645msgctxt "languages.slang_no"
    693646msgid "Norwegian"
     
    700653
    701654#: languages.slang_nv
    702 #, fuzzy
    703655msgctxt "languages.slang_nv"
    704656msgid "Navajo"
     
    746698
    747699#: languages.slang_pl
    748 #, fuzzy
    749700msgctxt "languages.slang_pl"
    750701msgid "Polish"
     
    757708
    758709#: languages.slang_pt
    759 #, fuzzy
    760710msgctxt "languages.slang_pt"
    761711msgid "Portuguese"
     
    763713
    764714#: languages.slang_pt_br
    765 #, fuzzy
    766715msgctxt "languages.slang_pt_br"
    767716msgid "Brazilian Portuguese"
     
    784733
    785734#: languages.slang_ro
    786 #, fuzzy
    787735msgctxt "languages.slang_ro"
    788736msgid "Romanian"
     
    790738
    791739#: languages.slang_ru
    792 #, fuzzy
    793740msgctxt "languages.slang_ru"
    794741msgid "Russian"
     
    831778
    832779#: languages.slang_sk
    833 #, fuzzy
    834780msgctxt "languages.slang_sk"
    835781msgid "Slovak"
     
    837783
    838784#: languages.slang_sl
    839 #, fuzzy
    840785msgctxt "languages.slang_sl"
    841786msgid "Slovenian"
     
    858803
    859804#: languages.slang_sq
    860 #, fuzzy
    861805msgctxt "languages.slang_sq"
    862806msgid "Albanian"
     
    879823
    880824#: languages.slang_su
    881 #, fuzzy
    882825msgctxt "languages.slang_su"
    883826msgid "Sundanese"
     
    885828
    886829#: languages.slang_sv
    887 #, fuzzy
    888830msgctxt "languages.slang_sv"
    889831msgid "Swedish"
     
    941883
    942884#: languages.slang_tr
    943 #, fuzzy
    944885msgctxt "languages.slang_tr"
    945886msgid "Turkish"
     
    952893
    953894#: languages.slang_tt
    954 #, fuzzy
    955895msgctxt "languages.slang_tt"
    956896msgid "Tatar"
     
    973913
    974914#: languages.slang_uk
    975 #, fuzzy
    976915msgctxt "languages.slang_uk"
    977916msgid "Ukrainian"
     
    994933
    995934#: languages.slang_vi
    996 #, fuzzy
    997935msgctxt "languages.slang_vi"
    998936msgid "Vietnamese"
     
    1035973
    1036974#: languages.slang_zh
    1037 #, fuzzy
    1038975msgctxt "languages.slang_zh"
    1039976msgid "Chinese"
    1040977msgstr "Čínština"
    1041978
     979#: languages.slang_zh_hans
     980msgid "Simplified Chinese"
     981msgstr ""
     982
     983#: languages.slang_zh_hant
     984msgid "Traditional Chinese"
     985msgstr ""
     986
    1042987#: languages.slang_zu
    1043 #, fuzzy
    1044988msgctxt "languages.slang_zu"
    1045989msgid "Zulu"
  • trunk/Packages/Common/Languages/Languages.pot

    r145 r148  
    776776msgstr ""
    777777
     778#: languages.slang_zh_hans
     779msgid "Simplified Chinese"
     780msgstr ""
     781
     782#: languages.slang_zh_hant
     783msgid "Traditional Chinese"
     784msgstr ""
     785
    778786#: languages.slang_zu
    779787msgid "Zulu"
  • trunk/Packages/Common/Languages/Pool.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Chronos <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
     12"X-Generator: Poedit 3.0.1\n"
    1113
    1214#: pool.sobjectpoolempty
    13 #, fuzzy
    1415msgctxt "pool.sobjectpoolempty"
    1516msgid "Object pool is empty"
     
    1718
    1819#: pool.sreleaseerror
    19 #, fuzzy
    2020msgctxt "pool.sreleaseerror"
    2121msgid "Unknown object for release from pool"
  • trunk/Packages/Common/Languages/ResetableThread.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Chronos <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
     12"X-Generator: Poedit 3.0.1\n"
    1113
    1214#: resetablethread.swaiterror
    13 #, fuzzy
    1415msgctxt "resetablethread.swaiterror"
    1516msgid "WaitFor error"
  • trunk/Packages/Common/Languages/ScaleDPI.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: \n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
    11 "Language: cs\n"
    12 "X-Generator: Poedit 1.8.9\n"
     12"X-Generator: Poedit 3.0.1\n"
    1313
    1414#: scaledpi.swrongdpi
    15 #, object-pascal-format, fuzzy
     15#, object-pascal-format
    1616msgctxt "scaledpi.swrongdpi"
    1717msgid "Wrong DPI [%d,%d]"
  • trunk/Packages/Common/Languages/TestCase.cs.po

    r145 r148  
    1313
    1414#: testcase.sfailed
    15 #, fuzzy
    1615msgctxt "testcase.sfailed"
    1716msgid "Failed"
     
    1918
    2019#: testcase.snone
    21 #, fuzzy
    2220msgctxt "testcase.snone"
    2321msgid "None"
     
    2523
    2624#: testcase.spassed
    27 #, fuzzy
    2825msgctxt "testcase.spassed"
    2926msgid "Passed"
  • trunk/Packages/Common/Languages/Threading.cs.po

    r145 r148  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Chronos <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
     12"X-Generator: Poedit 3.0.1\n"
    1113
    1214#: threading.scurrentthreadnotfound
    13 #, object-pascal-format, fuzzy
     15#, object-pascal-format
    1416msgctxt "threading.scurrentthreadnotfound"
    1517msgid "Current thread ID %d not found in virtual thread list."
  • trunk/Packages/Common/PixelPointer.pas

    r145 r148  
    44
    55uses
    6   Classes, SysUtils, Graphics;
     6  Math, Classes, SysUtils, Graphics;
    77
    88type
    99  TColor32 = type Cardinal;
    1010  TColor32Component = (ccBlue, ccGreen, ccRed, ccAlpha);
     11  TColor32Planes = array[0..3] of Byte;
    1112
    1213  { TPixel32 }
     
    1415  TPixel32 = packed record
    1516  private
    16     procedure SetRGB(AValue: Cardinal);
    17     function GetRGB: Cardinal;
     17    procedure SetRGB(AValue: Cardinal); inline;
     18    function GetRGB: Cardinal; inline;
    1819  public
    1920    property RGB: Cardinal read GetRGB write SetRGB;
     
    2122      0: (B, G, R, A: Byte);
    2223      1: (ARGB: TColor32);
    23       2: (Planes: array[0..3] of Byte);
     24      2: (Planes: TColor32Planes);
    2425      3: (Components: array[TColor32Component] of Byte);
    2526  end;
     
    2930
    3031  TPixelPointer = record
     32  private
     33    function GetPixelARGB: TColor32; inline;
     34    function GetPixelB: Byte; inline;
     35    function GetPixelG: Byte; inline;
     36    function GetPixelPlane(Index: Byte): Byte; inline;
     37    function GetPixelR: Byte; inline;
     38    function GetPixelA: Byte; inline;
     39    function GetPixelPlanes: TColor32Planes;
     40    function GetPixelRGB: Cardinal; inline;
     41    procedure SetPixelARGB(Value: TColor32); inline;
     42    procedure SetPixelB(Value: Byte); inline;
     43    procedure SetPixelG(Value: Byte); inline;
     44    procedure SetPixelPlane(Index: Byte; AValue: Byte); inline;
     45    procedure SetPixelR(Value: Byte); inline;
     46    procedure SetPixelA(Value: Byte); inline;
     47    procedure SetPixelRGB(Value: Cardinal); inline;
     48  public
    3149    Base: PPixel32;
    3250    Pixel: PPixel32;
     
    3553    BytesPerPixel: Integer;
    3654    BytesPerLine: Integer;
     55    Data: PPixel32;
     56    Width: Integer;
     57    Height: Integer;
    3758    procedure NextLine; inline; // Move pointer to start of next line
    3859    procedure PreviousLine; inline; // Move pointer to start of previous line
     
    4162    procedure SetXY(X, Y: Integer); inline; // Set pixel position relative to base
    4263    procedure SetX(X: Integer); inline; // Set horizontal pixel position relative to base
     64    procedure CheckRange; inline; // Check if current pixel position is not out of range
     65    function PosValid: Boolean;
     66    class function Create(Bitmap: TRasterImage; BaseX: Integer = 0; BaseY: Integer = 0): TPixelPointer; static;
     67    property PixelARGB: TColor32 read GetPixelARGB write SetPixelARGB;
     68    property PixelRGB: Cardinal read GetPixelRGB write SetPixelRGB;
     69    property PixelB: Byte read GetPixelB write SetPixelB;
     70    property PixelG: Byte read GetPixelG write SetPixelG;
     71    property PixelR: Byte read GetPixelR write SetPixelR;
     72    property PixelA: Byte read GetPixelA write SetPixelA;
     73    property PixelPlane[Index: Byte]: Byte read GetPixelPlane write SetPixelPlane;
    4374  end;
    4475  PPixelPointer = ^TPixelPointer;
    4576
    46   function PixelPointer(Bitmap: TRasterImage; BaseX: Integer = 0; BaseY: Integer = 0): TPixelPointer; inline;
    4777  function SwapRedBlue(Color: TColor32): TColor32;
    4878  procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect; SrcBitmap: TRasterImage; SrcPos: TPoint);
     
    6393implementation
    6494
     95resourcestring
     96  SOutOfRange = 'Pixel pointer out of range [X: %d, Y: %d, Width: %d, Height: %d]';
     97  SWrongBitmapSize = 'Wrong bitmap size [width: %d, height: %d]';
     98
    6599{ TPixel32 }
    66100
     
    72106procedure TPixel32.SetRGB(AValue: Cardinal);
    73107begin
    74   R := (AValue shr 16) and $ff;
    75   G := (AValue shr 8) and $ff;
    76   B := (AValue shr 0) and $ff;
     108  ARGB := (ARGB and $ff000000) or (AValue and $ffffff);
    77109end;
    78110
     
    112144end;
    113145
     146procedure TPixelPointer.CheckRange;
     147{$IFOPT R+}
     148var
     149  X: Integer;
     150  Y: Integer;
     151{$ENDIF}
     152begin
     153  {$IFOPT R+}
     154  if (PByte(Pixel) < PByte(Data)) or
     155    (PByte(Pixel) >= PByte(Data) + Height * BytesPerLine) then begin
     156    X := PByte(Pixel) - PByte(Data);
     157    Y := Floor(X / BytesPerLine);
     158    X := X - Y * BytesPerLine;
     159    X := Floor(X / BytesPerPixel);
     160    raise Exception.Create(Format(SOutOfRange, [X, Y, Width, Height]));
     161  end;
     162  {$ENDIF}
     163end;
     164
     165function TPixelPointer.PosValid: Boolean;
     166begin
     167  Result := not ((PByte(Pixel) < PByte(Data)) or
     168    (PByte(Pixel) >= PByte(Data) + Height * BytesPerLine));
     169end;
     170
     171function TPixelPointer.GetPixelPlanes: TColor32Planes;
     172begin
     173  CheckRange;
     174  Result := Pixel^.Planes;
     175end;
     176
     177function TPixelPointer.GetPixelRGB: Cardinal;
     178begin
     179  CheckRange;
     180  Result := Pixel^.RGB;
     181end;
     182
     183procedure TPixelPointer.SetPixelARGB(Value: TColor32);
     184begin
     185  CheckRange;
     186  Pixel^.ARGB := Value;
     187end;
     188
     189procedure TPixelPointer.SetPixelB(Value: Byte);
     190begin
     191  CheckRange;
     192  Pixel^.B := Value;
     193end;
     194
     195procedure TPixelPointer.SetPixelG(Value: Byte);
     196begin
     197  CheckRange;
     198  Pixel^.G := Value;
     199end;
     200
     201procedure TPixelPointer.SetPixelPlane(Index: Byte; AValue: Byte);
     202begin
     203  CheckRange;
     204  Pixel^.Planes[Index] := AValue;
     205end;
     206
     207procedure TPixelPointer.SetPixelR(Value: Byte);
     208begin
     209  CheckRange;
     210  Pixel^.R := Value;
     211end;
     212
     213procedure TPixelPointer.SetPixelA(Value: Byte);
     214begin
     215  CheckRange;
     216  Pixel^.A := Value;
     217end;
     218
     219function TPixelPointer.GetPixelARGB: TColor32;
     220begin
     221  CheckRange;
     222  Result := Pixel^.ARGB;
     223end;
     224
     225function TPixelPointer.GetPixelB: Byte;
     226begin
     227  CheckRange;
     228  Result := Pixel^.B;
     229end;
     230
     231function TPixelPointer.GetPixelG: Byte;
     232begin
     233  CheckRange;
     234  Result := Pixel^.G;
     235end;
     236
     237function TPixelPointer.GetPixelPlane(Index: Byte): Byte;
     238begin
     239  CheckRange;
     240  Result := Pixel^.Planes[Index];
     241end;
     242
     243function TPixelPointer.GetPixelR: Byte;
     244begin
     245  CheckRange;
     246  Result := Pixel^.R;
     247end;
     248
     249function TPixelPointer.GetPixelA: Byte;
     250begin
     251  CheckRange;
     252  Result := Pixel^.A;
     253end;
     254
     255procedure TPixelPointer.SetPixelRGB(Value: Cardinal);
     256begin
     257  CheckRange;
     258  Pixel^.RGB := Value;
     259end;
     260
    114261procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect;
    115262  SrcBitmap: TRasterImage; SrcPos: TPoint);
     
    120267  SrcBitmap.BeginUpdate(True);
    121268  DstBitmap.BeginUpdate(True);
    122   SrcPtr := PixelPointer(SrcBitmap, SrcPos.X, SrcPos.Y);
    123   DstPtr := PixelPointer(DstBitmap, DstRect.Left, DstRect.Top);
     269  SrcPtr := TPixelPointer.Create(SrcBitmap, SrcPos.X, SrcPos.Y);
     270  DstPtr := TPixelPointer.Create(DstBitmap, DstRect.Left, DstRect.Top);
    124271  for Y := 0 to DstRect.Height - 1 do begin
    125272    for X := 0 to DstRect.Width - 1 do begin
    126       DstPtr.Pixel^.ARGB := SrcPtr.Pixel^.ARGB;
     273      DstPtr.PixelARGB := SrcPtr.PixelARGB;
    127274      SrcPtr.NextPixel;
    128275      DstPtr.NextPixel;
     
    150297  SrcBitmap.BeginUpdate(True);
    151298  DstBitmap.BeginUpdate(True);
    152   SrcPtr := PixelPointer(SrcBitmap, SrcRect.Left, SrcRect.Top);
    153   DstPtr := PixelPointer(DstBitmap, DstRect.Left, DstRect.Top);
     299  SrcPtr := TPixelPointer.Create(SrcBitmap, SrcRect.Left, SrcRect.Top);
     300  DstPtr := TPixelPointer.Create(DstBitmap, DstRect.Left, DstRect.Top);
    154301  for Y := 0 to DstRect.Height - 1 do begin
    155302    for X := 0 to DstRect.Width - 1 do begin
     
    160307      DstPtr.SetXY(X, Y);
    161308      SrcPtr.SetXY(R.Left, R.Top);
    162       C := SrcPtr.Pixel^.ARGB;
    163       DstPtr.Pixel^.ARGB := C;
     309      C := SrcPtr.PixelARGB;
     310      DstPtr.PixelARGB := C;
    164311      for YY := 0 to R.Height - 1 do begin
    165312        for XX := 0 to R.Width - 1 do begin
    166           DstPtr.Pixel^.ARGB := C;
     313          DstPtr.PixelARGB := C;
    167314          DstPtr.NextPixel;
    168315        end;
     
    181328begin
    182329  Bitmap.BeginUpdate(True);
    183   Ptr := PixelPointer(Bitmap);
     330  Ptr := TPixelPointer.Create(Bitmap);
    184331  for Y := 0 to Bitmap.Height - 1 do begin
    185332    for X := 0 to Bitmap.Width - 1 do begin
    186       Ptr.Pixel^.ARGB := Color;
     333      Ptr.PixelARGB := Color;
    187334      Ptr.NextPixel;
    188335    end;
     
    198345begin
    199346  Bitmap.BeginUpdate(True);
    200   Ptr := PixelPointer(Bitmap, Rect.Left, Rect.Top);
     347  Ptr := TPixelPointer.Create(Bitmap, Rect.Left, Rect.Top);
    201348  for Y := 0 to Rect.Height - 1 do begin
    202349    for X := 0 to Rect.Width - 1 do begin
    203       Ptr.Pixel^.ARGB := Color;
     350      Ptr.PixelARGB := Color;
    204351      Ptr.NextPixel;
    205352    end;
     
    215362begin
    216363  Bitmap.BeginUpdate(True);
    217   Ptr := PixelPointer(Bitmap);
     364  Ptr := TPixelPointer.Create(Bitmap);
    218365  for Y := 0 to Bitmap.Height - 1 do begin
    219366    for X := 0 to Bitmap.Width - 1 do begin
    220       Ptr.Pixel^.ARGB := SwapRedBlue(Ptr.Pixel^.ARGB);
     367      Ptr.PixelARGB := SwapRedBlue(Ptr.PixelARGB);
    221368      Ptr.NextPixel;
    222369    end;
     
    232379begin
    233380  Bitmap.BeginUpdate(True);
    234   Ptr := PixelPointer(Bitmap);
     381  Ptr := TPixelPointer.Create(Bitmap);
    235382  for Y := 0 to Bitmap.Height - 1 do begin
    236383    for X := 0 to Bitmap.Width - 1 do begin
    237       Ptr.Pixel^.ARGB := Ptr.Pixel^.ARGB xor $ffffff;
     384      Ptr.PixelARGB := Ptr.PixelARGB xor $ffffff;
    238385      Ptr.NextPixel;
    239386    end;
     
    252399  Pixel := Color32ToPixel32(Color);
    253400  Bitmap.BeginUpdate(True);
    254   Ptr := PixelPointer(Bitmap);
     401  Ptr := TPixelPointer.Create(Bitmap);
    255402  for Y := 0 to Bitmap.Height - 1 do begin
    256403    for X := 0 to Bitmap.Width - 1 do begin
    257       A := Ptr.Pixel^.A; //(Ptr.Pixel^.A + Pixel.A) shr 1;
    258       R := (Ptr.Pixel^.R + Pixel.R) shr 1;
    259       G := (Ptr.Pixel^.G + Pixel.G) shr 1;
    260       B := (Ptr.Pixel^.B + Pixel.B) shr 1;
    261       Ptr.Pixel^.ARGB := Color32(A, R, G, B);
     404      A := Ptr.PixelA; //(Ptr.PixelA + Pixel.A) shr 1;
     405      R := (Ptr.PixelR + Pixel.R) shr 1;
     406      G := (Ptr.PixelG + Pixel.G) shr 1;
     407      B := (Ptr.PixelB + Pixel.B) shr 1;
     408      Ptr.PixelARGB := Color32(A, R, G, B);
    262409      Ptr.NextPixel;
    263410    end;
     
    295442end;
    296443
    297 function PixelPointer(Bitmap: TRasterImage; BaseX: Integer;
     444class function TPixelPointer.Create(Bitmap: TRasterImage; BaseX: Integer;
    298445  BaseY: Integer): TPixelPointer;
    299446begin
     447  Result.Width := Bitmap.Width;
     448  Result.Height := Bitmap.Height;
     449  if (Result.Width < 0) or (Result.Height < 0) then
     450    raise Exception.Create(Format(SWrongBitmapSize, [Result.Width, Result.Height]));
    300451  Result.BytesPerLine := Bitmap.RawImage.Description.BytesPerLine;
    301452  Result.BytesPerPixel := Bitmap.RawImage.Description.BitsPerPixel shr 3;
     453  Result.Data := PPixel32(Bitmap.RawImage.Data);
    302454  Result.Base := PPixel32(Bitmap.RawImage.Data + BaseX * Result.BytesPerPixel +
    303455    BaseY * Result.BytesPerLine);
  • trunk/Packages/Common/PrefixMultiplier.pas

    r145 r148  
    3131  (
    3232    (ShortText: 'y'; FullText: 'yocto'; Value: 1e-24),
    33       (ShortText: 'z'; FullText: 'zepto'; Value: 1e-21),
     33    (ShortText: 'z'; FullText: 'zepto'; Value: 1e-21),
    3434    (ShortText: 'a'; FullText: 'atto'; Value: 1e-18),
    3535    (ShortText: 'f'; FullText: 'femto'; Value: 1e-15),
     
    5252  (
    5353    (ShortText: 'ys'; FullText: 'yocto'; Value: 1e-24),
    54       (ShortText: 'zs'; FullText: 'zepto'; Value: 1e-21),
     54    (ShortText: 'zs'; FullText: 'zepto'; Value: 1e-21),
    5555    (ShortText: 'as'; FullText: 'atto'; Value: 1e-18),
    5656    (ShortText: 'fs'; FullText: 'femto'; Value: 1e-15),
  • trunk/Packages/Common/Translator.pas

    r145 r148  
    4848    procedure TranslateProperty(Component: TPersistent; PropInfo: PPropInfo);
    4949    function IsExcluded(Component: TPersistent; PropertyName: string): Boolean;
    50     function GetLangFileDir: string;
     50    function GetLangFileDirs: TStrings;
    5151  public
    5252    ComponentExcludes: TComponentExcludesList;
     
    7171  end;
    7272
     73const
     74  PoExt = '.po';
     75
    7376procedure Register;
    7477
    7578
    7679implementation
     80
     81uses
     82  Common;
    7783
    7884procedure Register;
     
    161167  FileList: TStringList;
    162168  I: Integer;
     169  J: Integer;
    163170  LocaleShort: string;
    164171  SearchMask: string;
     172  LangDirs: TStrings;
    165173begin
    166174  FPoFiles.Clear;
    167   if Assigned(FLanguage) then
    168   try
     175  if Assigned(FLanguage) then begin
    169176    LocaleShort := GetLocaleShort;
    170     //ShowMessage(ExtractFileDir(Application.ExeName) +
    171     //  DirectorySeparator + 'Languages' + ' ' + '*.' + LocaleShort + '.po');
    172177    SearchMask := '*';
    173178    if LocaleShort <> '' then SearchMask := SearchMask + '.' + LocaleShort;
    174     SearchMask := SearchMask + '.po';
    175     FileList := FindAllFiles(GetLangFileDir, SearchMask);
    176     for I := 0 to FileList.Count - 1 do begin
    177       FileName := FileList[I];
    178       //FileName := FindLocaleFileName('.po');
    179       if FileExists(FileName) and (
    180       ((LocaleShort = '') and (Pos('.', FileName) = Pos('.po', FileName))) or
    181       (LocaleShort <> '')) then FPoFiles.Add(TPOFile.Create(FileName));
    182     end;
    183   finally
    184     FileList.Free;
     179    SearchMask := SearchMask + PoExt;
     180    LangDirs := GetLangFileDirs;
     181    for J := 0 to LangDirs.Count - 1 do begin
     182      FileList := FindAllFiles(LangDirs[J], SearchMask);
     183      try
     184        for I := 0 to FileList.Count - 1 do begin
     185          FileName := FileList[I];
     186          //FileName := FindLocaleFileName('.po');
     187           if FileExists(FileName) and (
     188          ((LocaleShort = '') and (Pos('.', FileName) = Pos(PoExt, FileName))) or
     189          (LocaleShort <> '')) then FPoFiles.Add(TPOFile.Create(FileName));
     190        end;
     191      finally
     192        FileList.Free;
     193      end;
     194    end;
     195    LangDirs.Free;
    185196  end;
    186197end;
     
    299310end;
    300311
    301 function TTranslator.GetLangFileDir: string;
    302 begin
    303   Result := FPoFilesFolder;
    304   if Copy(Result, 1, 1) <> DirectorySeparator then
    305     Result := ExtractFileDir(Application.ExeName) +
    306       DirectorySeparator + Result;
     312function TTranslator.GetLangFileDirs: TStrings;
     313var
     314  I: Integer;
     315begin
     316  Result := TStringList.Create;
     317  Result.Delimiter := ';';
     318  Result.StrictDelimiter := True;
     319  Result.DelimitedText := FPoFilesFolder;
     320
     321  for I := 0 to Result.Count - 1 do begin
     322    Result[I] := StringReplace(Result[I], '/', DirectorySeparator, [rfReplaceAll]);
     323    Result[I] := StringReplace(Result[I], '\', DirectorySeparator, [rfReplaceAll]);
     324    if Copy(Result[I], 1, 1) <> DirectorySeparator then
     325      Result[I] := ExtractFileDir(Application.ExeName) +
     326        DirectorySeparator + Result[I];
     327  end;
    307328end;
    308329
     
    371392var
    372393  I: Integer;
    373   LangDir: string;
    374 begin
    375   LangDir := GetLangFileDir;
     394  J: Integer;
     395  LangDirs: TStrings;
     396begin
     397  LangDirs := GetLangFileDirs;
    376398  Languages.SearchByCode('').Available := True; // Automatic
    377399
    378400  for I := 1 to Languages.Count - 1 do
    379401  with Languages[I] do begin
    380     Available := FileExists(LangDir + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) +
    381       '.' + Code + ExtensionSeparator + 'po') or (Code = 'en');
    382   end;
     402    for J := 0 to LangDirs.Count - 1 do begin
     403      if FileExists(LangDirs[J] + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) +
     404        '.' + Code + PoExt) or (Code = 'en') then begin
     405          Available := True;
     406          Continue;
     407        end;
     408    end;
     409  end;
     410  LangDirs.Free;
    383411end;
    384412
  • trunk/Target/TargetPython.pas

    r145 r148  
    3939  {$IFDEF UNIX}
    4040  CompilerPath := '';
    41   ExecutorPath := '/usr/bin/python';
     41  ExecutorPath := '/usr/bin/python3';
    4242  {$ENDIF}
    4343end;
Note: See TracChangeset for help on using the changeset viewer.