Changeset 30


Ignore:
Timestamp:
Jun 28, 2024, 11:08:43 PM (5 months ago)
Author:
chronos
Message:
  • Modified: Updated Common package.
Location:
trunk
Files:
21 added
5 deleted
14 edited
1 copied
53 moved

Legend:

Unmodified
Added
Removed
  • trunk/DbEngines/UEngineMySQL.pas

    r26 r30  
    55uses
    66  Classes, Dialogs, SysUtils, UDatabase, USqlDatabase, UHtmlClasses,
    7   UGenerics;
     7  Generics;
    88
    99type
  • trunk/DbEngines/UEngineXML.pas

    r29 r30  
    44
    55uses
    6   Classes, SysUtils, DOM, XMLRead, XMLWrite, UDatabase, UXMLUtils, FileUtil,
    7   UHtmlClasses, USqlDatabase, UGenerics;
     6  Classes, SysUtils, DOM, XMLRead, XMLWrite, UDatabase, XML, FileUtil,
     7  UHtmlClasses, USqlDatabase, Generics;
    88
    99type
  • trunk/Forms/UFormPreferences.pas

    r28 r30  
    2929
    3030uses
    31   UCore, ULanguages;
     31  UCore, Languages;
    3232
    3333{ TFormPreferences }
  • trunk/Languages/MyData.cs.po

    r28 r30  
    1212"X-Generator: Poedit 3.0.1\n"
    1313
    14 #: tcore.aabout.caption
    15 msgctxt "tcore.aabout.caption"
    16 msgid "About"
    17 msgstr "O aplikaci"
    18 
    19 #: tcore.adatabaseconnect.caption
    20 msgid "Connect"
    21 msgstr "Připojit"
    22 
    23 #: tcore.adatabasedisconnect.caption
    24 msgid "Disconnect"
    25 msgstr "Odpojit"
    26 
    27 #: tcore.aexit.caption
    28 msgid "Exit"
    29 msgstr "Ukončit"
    30 
    31 #: tcore.applicationinfo1.description
    32 msgid "Customizable database storage"
    33 msgstr "Nastavitelné databázové úložiště"
    34 
    35 #: tcore.apreferences.caption
    36 msgctxt "tcore.apreferences.caption"
    37 msgid "Preferences"
    38 msgstr "Předvolby"
    39 
    4014#: tformconnect.buttoncancel.caption
    4115msgctxt "tformconnect.buttoncancel.caption"
     
    322296msgstr "Záznamy"
    323297
    324 #: tformtable.buttoncancel.caption
    325 msgctxt "tformtable.buttoncancel.caption"
    326 msgid "Cancel"
    327 msgstr "Zrušit"
    328 
    329 #: tformtable.buttonok.caption
    330 msgctxt "tformtable.buttonok.caption"
    331 msgid "Ok"
    332 msgstr "Ok"
    333 
    334 #: tformtable.caption
    335 msgctxt "tformtable.caption"
    336 msgid "Table"
    337 msgstr "Tabulka"
    338 
    339 #: tformtable.label1.caption
    340 msgid "System name:"
    341 msgstr "Jméno systému:"
    342 
    343 #: tformtable.label2.caption
    344 msgid "Caption:"
    345 msgstr "Titulek:"
    346 
    347298#: tformtables.aadd.caption
    348299msgctxt "tformtables.aadd.caption"
     
    526477msgstr "Opravdu chcete odstranit tabulku '%s'?"
    527478
    528 #: uhtmlclasses.sstringtoipconversionerror
    529 msgctxt "uhtmlclasses.sstringtoipconversionerror"
    530 msgid "String to IP address conversion error"
    531 msgstr "Chyba převodu řetězce na IP adresu"
    532 
    533479#: uipaddress.sstringtoipconversionerror
    534480msgctxt "uipaddress.sstringtoipconversionerror"
    535481msgid "String to IP address conversion error"
    536482msgstr "Chyba převodu řetězce na IP adresu"
     483
  • trunk/Languages/MyData.pot

    r28 r30  
    11msgid ""
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    3 
    4 #: tcore.aabout.caption
    5 msgid "About"
    6 msgstr ""
    7 
    8 #: tcore.adatabaseconnect.caption
    9 msgid "Connect"
    10 msgstr ""
    11 
    12 #: tcore.adatabasedisconnect.caption
    13 msgid "Disconnect"
    14 msgstr ""
    15 
    16 #: tcore.aexit.caption
    17 msgid "Exit"
    18 msgstr ""
    19 
    20 #: tcore.applicationinfo1.description
    21 msgid "Customizable database storage"
    22 msgstr ""
    23 
    24 #: tcore.apreferences.caption
    25 msgctxt "tcore.apreferences.caption"
    26 msgid "Preferences"
    27 msgstr ""
    283
    294#: tformconnect.buttoncancel.caption
     
    311286msgstr ""
    312287
    313 #: tformtable.buttoncancel.caption
    314 msgctxt "tformtable.buttoncancel.caption"
    315 msgid "Cancel"
    316 msgstr ""
    317 
    318 #: tformtable.buttonok.caption
    319 msgctxt "tformtable.buttonok.caption"
    320 msgid "Ok"
    321 msgstr ""
    322 
    323 #: tformtable.caption
    324 msgctxt "tformtable.caption"
    325 msgid "Table"
    326 msgstr ""
    327 
    328 #: tformtable.label1.caption
    329 msgid "System name:"
    330 msgstr ""
    331 
    332 #: tformtable.label2.caption
    333 msgid "Caption:"
    334 msgstr ""
    335 
    336288#: tformtables.aadd.caption
    337289msgctxt "tformtables.aadd.caption"
     
    505457msgstr ""
    506458
    507 #: uhtmlclasses.sstringtoipconversionerror
    508 msgctxt "uhtmlclasses.sstringtoipconversionerror"
    509 msgid "String to IP address conversion error"
    510 msgstr ""
    511 
    512459#: uipaddress.sstringtoipconversionerror
    513460msgctxt "uipaddress.sstringtoipconversionerror"
  • trunk/MyData.lpi

    r26 r30  
    246246    <Linking>
    247247      <Debugging>
     248        <DebugInfoType Value="dsDwarf3"/>
    248249        <UseHeaptrc Value="True"/>
    249250        <UseExternalDbgSyms Value="True"/>
  • trunk/Packages/Common/ApplicationInfo.pas

    r29 r30  
    1 unit UApplicationInfo;
     1unit ApplicationInfo;
    22
    33interface
    44
    55uses
    6   SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType;
     6  SysUtils, Classes, Forms, RegistryEx, Controls, Graphics, LCLType;
    77
    88type
  • trunk/Packages/Common/Common.Delay.pas

    r29 r30  
    1 unit UDelay;
     1unit Common.Delay;
    22
    33interface
     
    7171
    7272end.
    73 
  • trunk/Packages/Common/Common.lpk

    r25 r30  
    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="10"/>
    44     <Files Count="32">
     44    <Version Minor="12"/>
     45    <Files Count="36">
    4546      <Item1>
    4647        <Filename Value="StopWatch.pas"/>
     
    4849      </Item1>
    4950      <Item2>
    50         <Filename Value="UCommon.pas"/>
    51         <UnitName Value="UCommon"/>
     51        <Filename Value="Common.pas"/>
     52        <UnitName Value="Common"/>
    5253      </Item2>
    5354      <Item3>
    54         <Filename Value="UDebugLog.pas"/>
    55         <HasRegisterProc Value="True"/>
    56         <UnitName Value="UDebugLog"/>
     55        <Filename Value="DebugLog.pas"/>
     56        <HasRegisterProc Value="True"/>
     57        <UnitName Value="DebugLog"/>
    5758      </Item3>
    5859      <Item4>
    59         <Filename Value="UDelay.pas"/>
    60         <UnitName Value="UDelay"/>
     60        <Filename Value="Common.Delay.pas"/>
     61        <UnitName Value="Common.Delay"/>
    6162      </Item4>
    6263      <Item5>
    63         <Filename Value="UPrefixMultiplier.pas"/>
    64         <HasRegisterProc Value="True"/>
    65         <UnitName Value="UPrefixMultiplier"/>
     64        <Filename Value="PrefixMultiplier.pas"/>
     65        <HasRegisterProc Value="True"/>
     66        <UnitName Value="PrefixMultiplier"/>
    6667      </Item5>
    6768      <Item6>
    68         <Filename Value="UURI.pas"/>
    69         <UnitName Value="UURI"/>
     69        <Filename Value="URI.pas"/>
     70        <UnitName Value="URI"/>
    7071      </Item6>
    7172      <Item7>
    72         <Filename Value="UThreading.pas"/>
    73         <UnitName Value="UThreading"/>
     73        <Filename Value="Threading.pas"/>
     74        <UnitName Value="Threading"/>
    7475      </Item7>
    7576      <Item8>
    76         <Filename Value="UMemory.pas"/>
    77         <UnitName Value="UMemory"/>
     77        <Filename Value="Memory.pas"/>
     78        <UnitName Value="Memory"/>
    7879      </Item8>
    7980      <Item9>
    80         <Filename Value="UResetableThread.pas"/>
    81         <UnitName Value="UResetableThread"/>
     81        <Filename Value="ResetableThread.pas"/>
     82        <UnitName Value="ResetableThread"/>
    8283      </Item9>
    8384      <Item10>
    84         <Filename Value="UPool.pas"/>
    85         <UnitName Value="UPool"/>
     85        <Filename Value="Pool.pas"/>
     86        <UnitName Value="Pool"/>
    8687      </Item10>
    8788      <Item11>
    88         <Filename Value="ULastOpenedList.pas"/>
    89         <HasRegisterProc Value="True"/>
    90         <UnitName Value="ULastOpenedList"/>
     89        <Filename Value="LastOpenedList.pas"/>
     90        <HasRegisterProc Value="True"/>
     91        <UnitName Value="LastOpenedList"/>
    9192      </Item11>
    9293      <Item12>
    93         <Filename Value="URegistry.pas"/>
    94         <UnitName Value="URegistry"/>
     94        <Filename Value="RegistryEx.pas"/>
     95        <UnitName Value="RegistryEx"/>
    9596      </Item12>
    9697      <Item13>
    97         <Filename Value="UJobProgressView.pas"/>
    98         <HasRegisterProc Value="True"/>
    99         <UnitName Value="UJobProgressView"/>
     98        <Filename Value="JobProgressView.pas"/>
     99        <HasRegisterProc Value="True"/>
     100        <UnitName Value="JobProgressView"/>
    100101      </Item13>
    101102      <Item14>
    102         <Filename Value="UXMLUtils.pas"/>
    103         <UnitName Value="UXMLUtils"/>
     103        <Filename Value="XML.pas"/>
     104        <UnitName Value="XML"/>
    104105      </Item14>
    105106      <Item15>
    106         <Filename Value="UApplicationInfo.pas"/>
    107         <HasRegisterProc Value="True"/>
    108         <UnitName Value="UApplicationInfo"/>
     107        <Filename Value="ApplicationInfo.pas"/>
     108        <HasRegisterProc Value="True"/>
     109        <UnitName Value="ApplicationInfo"/>
    109110      </Item15>
    110111      <Item16>
    111         <Filename Value="USyncCounter.pas"/>
    112         <UnitName Value="USyncCounter"/>
     112        <Filename Value="SyncCounter.pas"/>
     113        <UnitName Value="SyncCounter"/>
    113114      </Item16>
    114115      <Item17>
    115         <Filename Value="UListViewSort.pas"/>
    116         <HasRegisterProc Value="True"/>
    117         <UnitName Value="UListViewSort"/>
     116        <Filename Value="ListViewSort.pas"/>
     117        <HasRegisterProc Value="True"/>
     118        <UnitName Value="ListViewSort"/>
    118119      </Item17>
    119120      <Item18>
    120         <Filename Value="UPersistentForm.pas"/>
    121         <HasRegisterProc Value="True"/>
    122         <UnitName Value="UPersistentForm"/>
     121        <Filename Value="PersistentForm.pas"/>
     122        <HasRegisterProc Value="True"/>
     123        <UnitName Value="PersistentForm"/>
    123124      </Item18>
    124125      <Item19>
    125         <Filename Value="UFindFile.pas"/>
    126         <HasRegisterProc Value="True"/>
    127         <UnitName Value="UFindFile"/>
     126        <Filename Value="FindFile.pas"/>
     127        <HasRegisterProc Value="True"/>
     128        <UnitName Value="FindFile"/>
    128129      </Item19>
    129130      <Item20>
    130         <Filename Value="UScaleDPI.pas"/>
    131         <HasRegisterProc Value="True"/>
    132         <UnitName Value="UScaleDPI"/>
     131        <Filename Value="ScaleDPI.pas"/>
     132        <HasRegisterProc Value="True"/>
     133        <UnitName Value="ScaleDPI"/>
    133134      </Item20>
    134135      <Item21>
    135         <Filename Value="UTheme.pas"/>
    136         <HasRegisterProc Value="True"/>
    137         <UnitName Value="UTheme"/>
     136        <Filename Value="Theme.pas"/>
     137        <HasRegisterProc Value="True"/>
     138        <UnitName Value="Theme"/>
    138139      </Item21>
    139140      <Item22>
    140         <Filename Value="UStringTable.pas"/>
    141         <UnitName Value="UStringTable"/>
     141        <Filename Value="StringTable.pas"/>
     142        <UnitName Value="StringTable"/>
    142143      </Item22>
    143144      <Item23>
    144         <Filename Value="UMetaCanvas.pas"/>
    145         <UnitName Value="UMetaCanvas"/>
     145        <Filename Value="MetaCanvas.pas"/>
     146        <UnitName Value="MetaCanvas"/>
    146147      </Item23>
    147148      <Item24>
    148         <Filename Value="UGeometric.pas"/>
    149         <UnitName Value="UGeometric"/>
     149        <Filename Value="Geometric.pas"/>
     150        <UnitName Value="Geometric"/>
    150151      </Item24>
    151152      <Item25>
    152         <Filename Value="UTranslator.pas"/>
    153         <HasRegisterProc Value="True"/>
    154         <UnitName Value="UTranslator"/>
     153        <Filename Value="Translator.pas"/>
     154        <HasRegisterProc Value="True"/>
     155        <UnitName Value="Translator"/>
    155156      </Item25>
    156157      <Item26>
    157         <Filename Value="ULanguages.pas"/>
    158         <UnitName Value="ULanguages"/>
     158        <Filename Value="Languages.pas"/>
     159        <UnitName Value="Languages"/>
    159160      </Item26>
    160161      <Item27>
    161         <Filename Value="UFormAbout.pas"/>
    162         <UnitName Value="UFormAbout"/>
     162        <Filename Value="PixelPointer.pas"/>
     163        <UnitName Value="PixelPointer"/>
    163164      </Item27>
    164165      <Item28>
    165         <Filename Value="UAboutDialog.pas"/>
    166         <HasRegisterProc Value="True"/>
    167         <UnitName Value="UAboutDialog"/>
     166        <Filename Value="DataFile.pas"/>
     167        <UnitName Value="DataFile"/>
    168168      </Item28>
    169169      <Item29>
    170         <Filename Value="UPixelPointer.pas"/>
    171         <UnitName Value="UPixelPointer"/>
     170        <Filename Value="TestCase.pas"/>
     171        <UnitName Value="TestCase"/>
    172172      </Item29>
    173173      <Item30>
    174         <Filename Value="UDataFile.pas"/>
    175         <UnitName Value="UDataFile"/>
     174        <Filename Value="Generics.pas"/>
     175        <UnitName Value="Generics"/>
    176176      </Item30>
    177177      <Item31>
    178         <Filename Value="UTestCase.pas"/>
    179         <UnitName Value="UTestCase"/>
     178        <Filename Value="CommonPackage.pas"/>
     179        <Type Value="Main Unit"/>
     180        <UnitName Value="CommonPackage"/>
    180181      </Item31>
    181182      <Item32>
    182         <Filename Value="UGenerics.pas"/>
    183         <UnitName Value="UGenerics"/>
     183        <Filename Value="Table.pas"/>
     184        <UnitName Value="Table"/>
    184185      </Item32>
     186      <Item33>
     187        <Filename Value="FormEx.pas"/>
     188        <HasRegisterProc Value="True"/>
     189        <UnitName Value="FormEx"/>
     190      </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>
    185203    </Files>
    186204    <CompatibilityMode Value="True"/>
  • trunk/Packages/Common/Common.pas

    r29 r30  
    1 unit UCommon;
     1unit Common;
    22
    33interface
     
    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

    r29 r30  
    33 }
    44
    5 unit Common;
     5unit CommonPackage;
    66
    77{$warn 5023 off : no warning about unused units}
     
    99
    1010uses
    11   StopWatch, UCommon, UDebugLog, UDelay, UPrefixMultiplier, UURI, UThreading,
    12   UMemory, UResetableThread, UPool, ULastOpenedList, URegistry,
    13   UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort,
    14   UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UMetaCanvas,
    15   UGeometric, UTranslator, ULanguages, UFormAbout, UAboutDialog,
    16   UPixelPointer, UDataFile, UTestCase, UGenerics, LazarusPackageIntf;
     11  StopWatch, Common, DebugLog, Common.Delay, PrefixMultiplier, URI, Threading,
     12  Memory, ResetableThread, Pool, LastOpenedList, RegistryEx, JobProgressView,
     13  XML, ApplicationInfo, SyncCounter, ListViewSort, PersistentForm, FindFile,
     14  ScaleDPI, Theme, StringTable, MetaCanvas, Geometric, Translator, Languages,
     15  PixelPointer, DataFile, TestCase, Generics, Table, FormEx, FormTests,
     16  FormTest, FormAbout, LazarusPackageIntf;
    1717
    1818implementation
     
    2020procedure Register;
    2121begin
    22   RegisterUnit('UDebugLog', @UDebugLog.Register);
    23   RegisterUnit('UPrefixMultiplier', @UPrefixMultiplier.Register);
    24   RegisterUnit('ULastOpenedList', @ULastOpenedList.Register);
    25   RegisterUnit('UJobProgressView', @UJobProgressView.Register);
    26   RegisterUnit('UApplicationInfo', @UApplicationInfo.Register);
    27   RegisterUnit('UListViewSort', @UListViewSort.Register);
    28   RegisterUnit('UPersistentForm', @UPersistentForm.Register);
    29   RegisterUnit('UFindFile', @UFindFile.Register);
    30   RegisterUnit('UScaleDPI', @UScaleDPI.Register);
    31   RegisterUnit('UTheme', @UTheme.Register);
    32   RegisterUnit('UTranslator', @UTranslator.Register);
    33   RegisterUnit('UAboutDialog', @UAboutDialog.Register);
     22  RegisterUnit('DebugLog', @DebugLog.Register);
     23  RegisterUnit('PrefixMultiplier', @PrefixMultiplier.Register);
     24  RegisterUnit('LastOpenedList', @LastOpenedList.Register);
     25  RegisterUnit('JobProgressView', @JobProgressView.Register);
     26  RegisterUnit('ApplicationInfo', @ApplicationInfo.Register);
     27  RegisterUnit('ListViewSort', @ListViewSort.Register);
     28  RegisterUnit('PersistentForm', @PersistentForm.Register);
     29  RegisterUnit('FindFile', @FindFile.Register);
     30  RegisterUnit('ScaleDPI', @ScaleDPI.Register);
     31  RegisterUnit('Theme', @Theme.Register);
     32  RegisterUnit('Translator', @Translator.Register);
     33  RegisterUnit('FormEx', @FormEx.Register);
    3434end;
    3535
  • trunk/Packages/Common/DataFile.pas

    r29 r30  
    1 unit UDataFile;
     1unit DataFile;
    22
    33interface
     
    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
     
    109108
    110109end.
    111 
  • trunk/Packages/Common/DebugLog.pas

    r29 r30  
    1 unit UDebugLog;
     1unit DebugLog;
    22
    33interface
     
    134134
    135135end.
    136 
  • trunk/Packages/Common/FindFile.pas

    r29 r30  
    1919}
    2020
    21 unit UFindFile;
     21unit FindFile;
    2222
    2323interface
     
    7575constructor TFindFile.Create(AOwner: TComponent);
    7676begin
    77   inherited Create(AOwner);
     77  inherited;
    7878  Path := IncludeTrailingBackslash(UTF8Encode(GetCurrentDir));
    7979  FileMask := FilterAll;
     
    143143    SysUtils.FindClose(Rec);
    144144  end;
    145 end; 
     145end;
    146146
    147147end.
    148 
  • trunk/Packages/Common/Generics.pas

    r29 r30  
    1 unit UGenerics;
     1unit Generics;
    22
    33interface
     
    7777
    7878end.
    79 
  • trunk/Packages/Common/Geometric.pas

    r29 r30  
    1 unit UGeometric;
     1unit Geometric;
    22
    33interface
     
    88type
    99  TPointArray = array of TPoint;
     10
     11  { TVector }
     12
     13  TVector = record
     14    Position: TPoint;
     15    Direction: TPoint;
     16    function GetLength: Double;
     17    function GetAngle: Double;
     18    procedure SetLength(Value: Double);
     19    class function Create(P1, P2: TPoint): TVector; static;
     20  end;
    1021
    1122function Distance(P1, P2: TPoint): Integer;
     
    1324function AddPoint(const P1, P2: TPoint): TPoint;
    1425function SubPoint(const P1, P2: TPoint): TPoint;
    15 function PointToLineDistance(const P, V, W: TPoint): Integer;
     26function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer;
    1627function ComparePoint(P1, P2: TPoint): Boolean;
    1728function RotatePoint(Center, P: TPoint; Angle: Double): TPoint;
     
    5061end;
    5162
    52 function PointToLineDistance(const P, V, W: TPoint): Integer;
     63function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer;
    5364var
    5465  l2, t: Double;
     
    6879  if T < 0 then begin
    6980    Result := Distance(P, V);       // Beyond the 'v' end of the segment
    70     exit;
     81    Intersect := V;
     82    Exit;
    7183  end
    7284  else if T > 1 then begin
    7385    Result := Distance(P, W);  // Beyond the 'w' end of the segment
     86    Intersect := W;
    7487    Exit;
    7588  end;
     
    7790  TT.Y := Trunc(V.Y + T * (W.Y - V.Y));
    7891  Result := Distance(P, TT);
     92  Intersect := TT;
    7993end;
    8094
     
    162176end;
    163177
     178{ TVector }
     179
     180function TVector.GetLength: Double;
     181begin
     182  Result := Sqrt(Sqr(Direction.X) + Sqr(Direction.Y));
     183end;
     184
     185function TVector.GetAngle: Double;
     186begin
     187  Result := ArcTan2(Direction.Y, Direction.X);
     188end;
     189
     190procedure TVector.SetLength(Value: Double);
     191var
     192  Angle: Double;
     193begin
     194  Angle := GetAngle;
     195  Direction := Point(Round(Cos(Angle) * Value),
     196    Round(Sin(Angle) * Value));
     197end;
     198
     199class function TVector.Create(P1, P2: TPoint): TVector;
     200begin
     201  Result.Position := P1;
     202  Result.Direction := Point(P2.X - P1.X, P2.Y - P1.Y);
     203end;
    164204
    165205end.
    166 
  • trunk/Packages/Common/JobProgressView.pas

    r29 r30  
    1 unit UJobProgressView;
     1unit JobProgressView;
    22
    33interface
     
    55uses
    66  SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs,
    7   Dialogs, ComCtrls, StdCtrls, ExtCtrls, Generics.Collections, UThreading, Math,
     7  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Generics.Collections, Threading, Math,
    88  DateUtils;
    99
     
    154154  end;
    155155
    156   //var
    157   //  FormJobProgressView: TFormJobProgressView;
    158 
    159156procedure Register;
    160157
     
    185182  try
    186183    try
    187       //raise Exception.Create('Exception in job');
    188184      ProgressView.CurrentJob.Method(Job);
    189185    except
  • trunk/Packages/Common/Languages.pas

    r29 r30  
    1 unit ULanguages;
     1unit Languages;
    22
    33interface
     
    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;
    443448
    444449end.
    445 
  • trunk/Packages/Common/Languages/DataFile.cs.po

    r29 r30  
    1212"X-Generator: Poedit 3.0.1\n"
    1313
    14 #: udatafile.sallfiles
     14#: datafile.sallfiles
     15msgctxt "datafile.sallfiles"
    1516msgid "All files"
    1617msgstr "Všechny soubory"
    1718
    18 #: udatafile.sdatafilename
     19#: datafile.sdatafilename
     20msgctxt "datafile.sdatafilename"
    1921msgid "Data file"
    2022msgstr "Datový soubor"
     23
  • trunk/Packages/Common/Languages/DataFile.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: udatafile.sallfiles
     4#: datafile.sallfiles
    55msgid "All files"
    66msgstr ""
    77
    8 #: udatafile.sdatafilename
     8#: datafile.sdatafilename
    99msgid "Data file"
    1010msgstr ""
  • trunk/Packages/Common/Languages/DebugLog.cs.po

    r29 r30  
    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
    12 #: udebuglog.sfilenamenotdefined
     14#: debuglog.sfilenamenotdefined
     15msgctxt "debuglog.sfilenamenotdefined"
    1316msgid "Filename not defined"
    1417msgstr "Neurčen soubor"
  • trunk/Packages/Common/Languages/DebugLog.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: udebuglog.sfilenamenotdefined
     4#: debuglog.sfilenamenotdefined
    55msgid "Filename not defined"
    66msgstr ""
  • trunk/Packages/Common/Languages/FindFile.cs.po

    r29 r30  
    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
    14 #: ufindfile.sdirnotfound
     14#: findfile.sdirnotfound
     15msgctxt "findfile.sdirnotfound"
    1516msgid "Directory not found"
    1617msgstr "Adresář nenalezen"
  • trunk/Packages/Common/Languages/FindFile.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: ufindfile.sdirnotfound
     4#: findfile.sdirnotfound
    55msgid "Directory not found"
    66msgstr ""
  • trunk/Packages/Common/Languages/FormAbout.cs.po

    r29 r30  
    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
    14 #: uformabout.slicense
     14#: formabout.slicense
     15msgctxt "formabout.slicense"
    1516msgid "License"
    1617msgstr "Licence"
    1718
    18 #: uformabout.sreleasedate
     19#: formabout.sreleasedate
     20msgctxt "formabout.sreleasedate"
    1921msgid "Release date"
    2022msgstr "Datum uvolnění"
    2123
    22 #: uformabout.sversion
     24#: formabout.sversion
     25msgctxt "formabout.sversion"
    2326msgid "Version"
    2427msgstr "Verze"
  • trunk/Packages/Common/Languages/FormAbout.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: uformabout.slicense
     4#: formabout.slicense
    55msgid "License"
    66msgstr ""
    77
    8 #: uformabout.sreleasedate
     8#: formabout.sreleasedate
    99msgid "Release date"
    1010msgstr ""
    1111
    12 #: uformabout.sversion
     12#: formabout.sversion
    1313msgid "Version"
    1414msgstr ""
  • trunk/Packages/Common/Languages/JobProgressView.cs.po

    r29 r30  
    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
    14 #: ujobprogressview.sestimatedtime
     14#: jobprogressview.sestimatedtime
    1515#, object-pascal-format
     16msgctxt "jobprogressview.sestimatedtime"
    1617msgid "Estimated time: %s"
    1718msgstr "Odhadovaný čas: %s"
    1819
    19 #: ujobprogressview.sexecuted
     20#: jobprogressview.sexecuted
     21msgctxt "jobprogressview.sexecuted"
    2022msgid "Executed"
    2123msgstr "Vykonané"
    2224
    23 #: ujobprogressview.sfinished
     25#: jobprogressview.sfinished
     26msgctxt "jobprogressview.sfinished"
    2427msgid "Finished"
    2528msgstr "Dokončené"
    2629
    27 #: ujobprogressview.spleasewait
     30#: jobprogressview.spleasewait
     31msgctxt "jobprogressview.spleasewait"
    2832msgid "Please wait..."
    2933msgstr "Prosím čekejte..."
    3034
    31 #: ujobprogressview.sterminate
     35#: jobprogressview.sterminate
     36msgctxt "jobprogressview.sterminate"
    3237msgid "Termination"
    3338msgstr "Přerušení"
    3439
    35 #: ujobprogressview.stotalestimatedtime
     40#: jobprogressview.stotalestimatedtime
    3641#, object-pascal-format
     42msgctxt "jobprogressview.stotalestimatedtime"
    3743msgid "Total estimated time: %s"
    3844msgstr "Celkový odhadovaný čas: %s"
  • trunk/Packages/Common/Languages/JobProgressView.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: ujobprogressview.sestimatedtime
     4#: jobprogressview.sestimatedtime
    55#, object-pascal-format
    66msgid "Estimated time: %s"
    77msgstr ""
    88
    9 #: ujobprogressview.sexecuted
     9#: jobprogressview.sexecuted
    1010msgid "Executed"
    1111msgstr ""
    1212
    13 #: ujobprogressview.sfinished
     13#: jobprogressview.sfinished
    1414msgid "Finished"
    1515msgstr ""
    1616
    17 #: ujobprogressview.spleasewait
     17#: jobprogressview.spleasewait
    1818msgid "Please wait..."
    1919msgstr ""
    2020
    21 #: ujobprogressview.sterminate
     21#: jobprogressview.sterminate
    2222msgid "Termination"
    2323msgstr ""
    2424
    25 #: ujobprogressview.stotalestimatedtime
     25#: jobprogressview.stotalestimatedtime
    2626#, object-pascal-format
    2727msgid "Total estimated time: %s"
  • trunk/Packages/Common/Languages/Languages.cs.po

    r29 r30  
    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"
    11 
    12 #: ulanguages.slangauto
     12"X-Generator: Poedit 3.0.1\n"
     13
     14#: languages.slangauto
     15msgctxt "languages.slangauto"
    1316msgid "Automatic"
    1417msgstr "Automaticky"
    1518
    16 #: ulanguages.slang_aa
     19#: languages.slang_aa
     20msgctxt "languages.slang_aa"
    1721msgid "Afar"
    1822msgstr ""
    1923
    20 #: ulanguages.slang_ab
     24#: languages.slang_ab
     25msgctxt "languages.slang_ab"
    2126msgid "Abkhazian"
    2227msgstr "Abcházština"
    2328
    24 #: ulanguages.slang_ae
     29#: languages.slang_ae
     30msgctxt "languages.slang_ae"
    2531msgid "Avestan"
    2632msgstr ""
    2733
    28 #: ulanguages.slang_af
     34#: languages.slang_af
     35msgctxt "languages.slang_af"
    2936msgid "Afrikaans"
    3037msgstr "Afrikánština"
    3138
    32 #: ulanguages.slang_ak
     39#: languages.slang_ak
     40msgctxt "languages.slang_ak"
    3341msgid "Akan"
    3442msgstr ""
    3543
    36 #: ulanguages.slang_am
     44#: languages.slang_am
     45msgctxt "languages.slang_am"
    3746msgid "Amharic"
    3847msgstr ""
    3948
    40 #: ulanguages.slang_an
     49#: languages.slang_an
     50msgctxt "languages.slang_an"
    4151msgid "Aragonese"
    4252msgstr ""
    4353
    44 #: ulanguages.slang_ar
     54#: languages.slang_ar
     55msgctxt "languages.slang_ar"
    4556msgid "Arabic"
    4657msgstr "Arabština"
    4758
    48 #: ulanguages.slang_as
     59#: languages.slang_as
     60msgctxt "languages.slang_as"
    4961msgid "Assamese"
    5062msgstr ""
    5163
    52 #: ulanguages.slang_av
     64#: languages.slang_av
     65msgctxt "languages.slang_av"
    5366msgid "Avaric"
    5467msgstr ""
    5568
    56 #: ulanguages.slang_ay
     69#: languages.slang_ay
     70msgctxt "languages.slang_ay"
    5771msgid "Aymara"
    5872msgstr ""
    5973
    60 #: ulanguages.slang_az
     74#: languages.slang_az
     75msgctxt "languages.slang_az"
    6176msgid "Azerbaijani"
    6277msgstr ""
    6378
    64 #: ulanguages.slang_ba
     79#: languages.slang_ba
     80msgctxt "languages.slang_ba"
    6581msgid "Bashkir"
    6682msgstr ""
    6783
    68 #: ulanguages.slang_be
     84#: languages.slang_be
     85msgctxt "languages.slang_be"
    6986msgid "Belarusian"
    7087msgstr ""
    7188
    72 #: ulanguages.slang_bg
     89#: languages.slang_bg
     90msgctxt "languages.slang_bg"
    7391msgid "Bulgarian"
    7492msgstr "Maďarština"
    7593
    76 #: ulanguages.slang_bh
     94#: languages.slang_bh
     95msgctxt "languages.slang_bh"
    7796msgid "Bihari"
    7897msgstr ""
    7998
    80 #: ulanguages.slang_bi
     99#: languages.slang_bi
     100msgctxt "languages.slang_bi"
    81101msgid "Bislama"
    82102msgstr ""
    83103
    84 #: ulanguages.slang_bm
     104#: languages.slang_bm
     105msgctxt "languages.slang_bm"
    85106msgid "Bambara"
    86107msgstr ""
    87108
    88 #: ulanguages.slang_bn
     109#: languages.slang_bn
     110msgctxt "languages.slang_bn"
    89111msgid "Bengali"
    90112msgstr ""
    91113
    92 #: ulanguages.slang_bo
     114#: languages.slang_bo
     115msgctxt "languages.slang_bo"
    93116msgid "Tibetan"
    94117msgstr "Tibetština"
    95118
    96 #: ulanguages.slang_br
     119#: languages.slang_br
     120msgctxt "languages.slang_br"
    97121msgid "Breton"
    98122msgstr ""
    99123
    100 #: ulanguages.slang_bs
     124#: languages.slang_bs
     125msgctxt "languages.slang_bs"
    101126msgid "Bosnian"
    102127msgstr ""
    103128
    104 #: ulanguages.slang_ca
     129#: languages.slang_ca
     130msgctxt "languages.slang_ca"
    105131msgid "Catalan"
    106132msgstr "Katalánština"
    107133
    108 #: ulanguages.slang_ce
     134#: languages.slang_ce
     135msgctxt "languages.slang_ce"
    109136msgid "Chechen"
    110137msgstr ""
    111138
    112 #: ulanguages.slang_ch
     139#: languages.slang_ch
     140msgctxt "languages.slang_ch"
    113141msgid "Chamorro"
    114142msgstr ""
    115143
    116 #: ulanguages.slang_co
     144#: languages.slang_co
     145msgctxt "languages.slang_co"
    117146msgid "Corsican"
    118147msgstr ""
    119148
    120 #: ulanguages.slang_cr
     149#: languages.slang_cr
     150msgctxt "languages.slang_cr"
    121151msgid "Cree"
    122152msgstr "Kríjština"
    123153
    124 #: ulanguages.slang_cs
     154#: languages.slang_cs
     155msgctxt "languages.slang_cs"
    125156msgid "Czech"
    126157msgstr "Čeština"
    127158
    128 #: ulanguages.slang_cv
     159#: languages.slang_cv
     160msgctxt "languages.slang_cv"
    129161msgid "Chuvash"
    130162msgstr ""
    131163
    132 #: ulanguages.slang_cy
     164#: languages.slang_cy
     165msgctxt "languages.slang_cy"
    133166msgid "Welsh"
    134167msgstr ""
    135168
    136 #: ulanguages.slang_da
     169#: languages.slang_da
     170msgctxt "languages.slang_da"
    137171msgid "Danish"
    138172msgstr "Dánština"
    139173
    140 #: ulanguages.slang_de
     174#: languages.slang_de
     175msgctxt "languages.slang_de"
    141176msgid "German"
    142177msgstr "Němčina"
    143178
    144 #: ulanguages.slang_de_at
     179#: languages.slang_de_at
     180msgctxt "languages.slang_de_at"
    145181msgid "Austrian German"
    146182msgstr "Australská němčina"
    147183
    148 #: ulanguages.slang_de_ch
     184#: languages.slang_de_ch
     185msgctxt "languages.slang_de_ch"
    149186msgid "Swiss German"
    150187msgstr "Švédská němčina"
    151188
    152 #: ulanguages.slang_dv
     189#: languages.slang_dv
     190msgctxt "languages.slang_dv"
    153191msgid "Divehi"
    154192msgstr ""
    155193
    156 #: ulanguages.slang_dz
     194#: languages.slang_dz
     195msgctxt "languages.slang_dz"
    157196msgid "Dzongkha"
    158197msgstr ""
    159198
    160 #: ulanguages.slang_ee
     199#: languages.slang_ee
     200msgctxt "languages.slang_ee"
    161201msgid "Ewe"
    162202msgstr ""
    163203
    164 #: ulanguages.slang_el
     204#: languages.slang_el
     205msgctxt "languages.slang_el"
    165206msgid "Greek"
    166207msgstr "Řečtina"
    167208
    168 #: ulanguages.slang_en
     209#: languages.slang_en
     210msgctxt "languages.slang_en"
    169211msgid "English"
    170212msgstr "Angličtina"
    171213
    172 #: ulanguages.slang_en_au
     214#: languages.slang_en_au
     215msgctxt "languages.slang_en_au"
    173216msgid "Australian English"
    174217msgstr "Australská angličtina"
    175218
    176 #: ulanguages.slang_en_ca
     219#: languages.slang_en_ca
     220msgctxt "languages.slang_en_ca"
    177221msgid "Canadian English"
    178222msgstr "Kanadská angličtina"
    179223
    180 #: ulanguages.slang_en_gb
     224#: languages.slang_en_gb
     225msgctxt "languages.slang_en_gb"
    181226msgid "British English"
    182227msgstr "Britská angličtina"
    183228
    184 #: ulanguages.slang_en_us
     229#: languages.slang_en_us
     230msgctxt "languages.slang_en_us"
    185231msgid "American English"
    186232msgstr "Americká angličtina"
    187233
    188 #: ulanguages.slang_eo
     234#: languages.slang_eo
     235msgctxt "languages.slang_eo"
    189236msgid "Esperanto"
    190237msgstr "Esperanto"
    191238
    192 #: ulanguages.slang_es
     239#: languages.slang_es
     240msgctxt "languages.slang_es"
    193241msgid "Spanish"
    194242msgstr "Španělština"
    195243
    196 #: ulanguages.slang_et
     244#: languages.slang_et
     245msgctxt "languages.slang_et"
    197246msgid "Estonian"
    198247msgstr "Estonština"
    199248
    200 #: ulanguages.slang_eu
     249#: languages.slang_eu
     250msgctxt "languages.slang_eu"
    201251msgid "Basque"
    202252msgstr ""
    203253
    204 #: ulanguages.slang_fa
     254#: languages.slang_fa
     255msgctxt "languages.slang_fa"
    205256msgid "Persian"
    206257msgstr "Perština"
    207258
    208 #: ulanguages.slang_ff
     259#: languages.slang_ff
     260msgctxt "languages.slang_ff"
    209261msgid "Fulah"
    210262msgstr ""
    211263
    212 #: ulanguages.slang_fi
     264#: languages.slang_fi
     265msgctxt "languages.slang_fi"
    213266msgid "Finnish"
    214267msgstr "Finština"
    215268
    216 #: ulanguages.slang_fj
     269#: languages.slang_fj
     270msgctxt "languages.slang_fj"
    217271msgid "Fijian"
    218272msgstr ""
    219273
    220 #: ulanguages.slang_fo
     274#: languages.slang_fo
     275msgctxt "languages.slang_fo"
    221276msgid "Faroese"
    222277msgstr ""
    223278
    224 #: ulanguages.slang_fr
     279#: languages.slang_fr
     280msgctxt "languages.slang_fr"
    225281msgid "French"
    226282msgstr "Francouzština"
    227283
    228 #: ulanguages.slang_fr_be
    229 msgctxt "ulanguages.slang_fr_be"
     284#: languages.slang_fr_be
     285msgctxt "languages.slang_fr_be"
    230286msgid "Walloon"
    231287msgstr ""
    232288
    233 #: ulanguages.slang_fy
     289#: languages.slang_fy
     290msgctxt "languages.slang_fy"
    234291msgid "Frisian"
    235292msgstr ""
    236293
    237 #: ulanguages.slang_ga
     294#: languages.slang_ga
     295msgctxt "languages.slang_ga"
    238296msgid "Irish"
    239297msgstr "Irština"
    240298
    241 #: ulanguages.slang_gd
     299#: languages.slang_gd
     300msgctxt "languages.slang_gd"
    242301msgid "Gaelic"
    243302msgstr ""
    244303
    245 #: ulanguages.slang_gl
     304#: languages.slang_gl
     305msgctxt "languages.slang_gl"
    246306msgid "Gallegan"
    247307msgstr ""
    248308
    249 #: ulanguages.slang_gn
     309#: languages.slang_gn
     310msgctxt "languages.slang_gn"
    250311msgid "Guarani"
    251312msgstr ""
    252313
    253 #: ulanguages.slang_gu
     314#: languages.slang_gu
     315msgctxt "languages.slang_gu"
    254316msgid "Gujarati"
    255317msgstr ""
    256318
    257 #: ulanguages.slang_gv
     319#: languages.slang_gv
     320msgctxt "languages.slang_gv"
    258321msgid "Manx"
    259322msgstr ""
    260323
    261 #: ulanguages.slang_ha
     324#: languages.slang_ha
     325msgctxt "languages.slang_ha"
    262326msgid "Hausa"
    263327msgstr ""
    264328
    265 #: ulanguages.slang_he
     329#: languages.slang_he
     330msgctxt "languages.slang_he"
    266331msgid "Hebrew"
    267332msgstr "Hebrejština"
    268333
    269 #: ulanguages.slang_hi
     334#: languages.slang_hi
     335msgctxt "languages.slang_hi"
    270336msgid "Hindi"
    271337msgstr ""
    272338
    273 #: ulanguages.slang_ho
     339#: languages.slang_ho
     340msgctxt "languages.slang_ho"
    274341msgid "Hiri Motu"
    275342msgstr ""
    276343
    277 #: ulanguages.slang_hr
     344#: languages.slang_hr
     345msgctxt "languages.slang_hr"
    278346msgid "Croatian"
    279347msgstr "Chorvatština"
    280348
    281 #: ulanguages.slang_ht
     349#: languages.slang_ht
     350msgctxt "languages.slang_ht"
    282351msgid "Haitian"
    283352msgstr ""
    284353
    285 #: ulanguages.slang_hu
     354#: languages.slang_hu
     355msgctxt "languages.slang_hu"
    286356msgid "Hungarian"
    287357msgstr "Maďarština"
    288358
    289 #: ulanguages.slang_hy
     359#: languages.slang_hy
     360msgctxt "languages.slang_hy"
    290361msgid "Armenian"
    291362msgstr "Arménština"
    292363
    293 #: ulanguages.slang_hz
     364#: languages.slang_hz
     365msgctxt "languages.slang_hz"
    294366msgid "Herero"
    295367msgstr ""
    296368
    297 #: ulanguages.slang_ia
     369#: languages.slang_ia
     370msgctxt "languages.slang_ia"
    298371msgid "Interlingua"
    299372msgstr ""
    300373
    301 #: ulanguages.slang_id
     374#: languages.slang_id
     375msgctxt "languages.slang_id"
    302376msgid "Indonesian"
    303377msgstr ""
    304378
    305 #: ulanguages.slang_ie
     379#: languages.slang_ie
     380msgctxt "languages.slang_ie"
    306381msgid "Interlingue"
    307382msgstr ""
    308383
    309 #: ulanguages.slang_ig
     384#: languages.slang_ig
     385msgctxt "languages.slang_ig"
    310386msgid "Igbo"
    311387msgstr ""
    312388
    313 #: ulanguages.slang_ii
     389#: languages.slang_ii
     390msgctxt "languages.slang_ii"
    314391msgid "Sichuan Yi"
    315392msgstr ""
    316393
    317 #: ulanguages.slang_ik
     394#: languages.slang_ik
     395msgctxt "languages.slang_ik"
    318396msgid "Inupiaq"
    319397msgstr ""
    320398
    321 #: ulanguages.slang_io
     399#: languages.slang_io
     400msgctxt "languages.slang_io"
    322401msgid "Ido"
    323402msgstr ""
    324403
    325 #: ulanguages.slang_is
     404#: languages.slang_is
     405msgctxt "languages.slang_is"
    326406msgid "Icelandic"
    327407msgstr "Islandština"
    328408
    329 #: ulanguages.slang_it
     409#: languages.slang_it
     410msgctxt "languages.slang_it"
    330411msgid "Italian"
    331412msgstr "Italština"
    332413
    333 #: ulanguages.slang_iu
     414#: languages.slang_iu
     415msgctxt "languages.slang_iu"
    334416msgid "Inuktitut"
    335417msgstr ""
    336418
    337 #: ulanguages.slang_ja
     419#: languages.slang_ja
     420msgctxt "languages.slang_ja"
    338421msgid "Japanese"
    339422msgstr "Japonština"
    340423
    341 #: ulanguages.slang_jv
     424#: languages.slang_jv
     425msgctxt "languages.slang_jv"
    342426msgid "Javanese"
    343427msgstr ""
    344428
    345 #: ulanguages.slang_ka
     429#: languages.slang_ka
     430msgctxt "languages.slang_ka"
    346431msgid "Georgian"
    347432msgstr "Gruzínština"
    348433
    349 #: ulanguages.slang_kg
     434#: languages.slang_kg
     435msgctxt "languages.slang_kg"
    350436msgid "Kongo"
    351437msgstr "Konžština"
    352438
    353 #: ulanguages.slang_ki
     439#: languages.slang_ki
     440msgctxt "languages.slang_ki"
    354441msgid "Kikuyu"
    355442msgstr ""
    356443
    357 #: ulanguages.slang_kj
     444#: languages.slang_kj
     445msgctxt "languages.slang_kj"
    358446msgid "Kuanyama"
    359447msgstr ""
    360448
    361 #: ulanguages.slang_kk
     449#: languages.slang_kk
     450msgctxt "languages.slang_kk"
    362451msgid "Kazakh"
    363452msgstr ""
    364453
    365 #: ulanguages.slang_kl
     454#: languages.slang_kl
     455msgctxt "languages.slang_kl"
    366456msgid "Greenlandic"
    367457msgstr "Grónština"
    368458
    369 #: ulanguages.slang_km
     459#: languages.slang_km
     460msgctxt "languages.slang_km"
    370461msgid "Khmer"
    371462msgstr ""
    372463
    373 #: ulanguages.slang_kn
     464#: languages.slang_kn
     465msgctxt "languages.slang_kn"
    374466msgid "Kannada"
    375467msgstr "Kannadština"
    376468
    377 #: ulanguages.slang_ko
     469#: languages.slang_ko
     470msgctxt "languages.slang_ko"
    378471msgid "Korean"
    379472msgstr "Korejština"
    380473
    381 #: ulanguages.slang_kr
     474#: languages.slang_kr
     475msgctxt "languages.slang_kr"
    382476msgid "Kanuri"
    383477msgstr ""
    384478
    385 #: ulanguages.slang_ks
     479#: languages.slang_ks
     480msgctxt "languages.slang_ks"
    386481msgid "Kashmiri"
    387482msgstr ""
    388483
    389 #: ulanguages.slang_ku
     484#: languages.slang_ku
     485msgctxt "languages.slang_ku"
    390486msgid "Kurdish"
    391487msgstr ""
    392488
    393 #: ulanguages.slang_kv
     489#: languages.slang_kv
     490msgctxt "languages.slang_kv"
    394491msgid "Komi"
    395492msgstr ""
    396493
    397 #: ulanguages.slang_kw
     494#: languages.slang_kw
     495msgctxt "languages.slang_kw"
    398496msgid "Cornish"
    399497msgstr "Kornština"
    400498
    401 #: ulanguages.slang_ky
     499#: languages.slang_ky
     500msgctxt "languages.slang_ky"
    402501msgid "Kirghiz"
    403502msgstr ""
    404503
    405 #: ulanguages.slang_la
     504#: languages.slang_la
     505msgctxt "languages.slang_la"
    406506msgid "Latin"
    407507msgstr "Latina"
    408508
    409 #: ulanguages.slang_lb
     509#: languages.slang_lb
     510msgctxt "languages.slang_lb"
    410511msgid "Luxembourgish"
    411512msgstr "Lucemburština"
    412513
    413 #: ulanguages.slang_lg
     514#: languages.slang_lg
     515msgctxt "languages.slang_lg"
    414516msgid "Ganda"
    415517msgstr ""
    416518
    417 #: ulanguages.slang_li
     519#: languages.slang_li
     520msgctxt "languages.slang_li"
    418521msgid "Limburgan"
    419522msgstr ""
    420523
    421 #: ulanguages.slang_ln
     524#: languages.slang_ln
     525msgctxt "languages.slang_ln"
    422526msgid "Lingala"
    423527msgstr ""
    424528
    425 #: ulanguages.slang_lo
     529#: languages.slang_lo
     530msgctxt "languages.slang_lo"
    426531msgid "Lao"
    427532msgstr "Laoština"
    428533
    429 #: ulanguages.slang_lt
     534#: languages.slang_lt
     535msgctxt "languages.slang_lt"
    430536msgid "Lithuanian"
    431537msgstr "Litevština"
    432538
    433 #: ulanguages.slang_lu
     539#: languages.slang_lu
     540msgctxt "languages.slang_lu"
    434541msgid "Luba-Katanga"
    435542msgstr ""
    436543
    437 #: ulanguages.slang_lv
     544#: languages.slang_lv
     545msgctxt "languages.slang_lv"
    438546msgid "Latvian"
    439547msgstr "Lotyština"
    440548
    441 #: ulanguages.slang_mg
     549#: languages.slang_mg
     550msgctxt "languages.slang_mg"
    442551msgid "Malagasy"
    443552msgstr ""
    444553
    445 #: ulanguages.slang_mh
     554#: languages.slang_mh
     555msgctxt "languages.slang_mh"
    446556msgid "Marshallese"
    447557msgstr ""
    448558
    449 #: ulanguages.slang_mi
     559#: languages.slang_mi
     560msgctxt "languages.slang_mi"
    450561msgid "Maori"
    451562msgstr ""
    452563
    453 #: ulanguages.slang_mk
     564#: languages.slang_mk
     565msgctxt "languages.slang_mk"
    454566msgid "Macedonian"
    455567msgstr "Makedonština"
    456568
    457 #: ulanguages.slang_ml
     569#: languages.slang_ml
     570msgctxt "languages.slang_ml"
    458571msgid "Malayalam"
    459572msgstr ""
    460573
    461 #: ulanguages.slang_mn
     574#: languages.slang_mn
     575msgctxt "languages.slang_mn"
    462576msgid "Mongolian"
    463577msgstr "Mongolština"
    464578
    465 #: ulanguages.slang_mo
     579#: languages.slang_mo
     580msgctxt "languages.slang_mo"
    466581msgid "Moldavian"
    467582msgstr "Moldavština"
    468583
    469 #: ulanguages.slang_mr
     584#: languages.slang_mr
     585msgctxt "languages.slang_mr"
    470586msgid "Marathi"
    471587msgstr ""
    472588
    473 #: ulanguages.slang_ms
     589#: languages.slang_ms
     590msgctxt "languages.slang_ms"
    474591msgid "Malay"
    475592msgstr ""
    476593
    477 #: ulanguages.slang_mt
     594#: languages.slang_mt
     595msgctxt "languages.slang_mt"
    478596msgid "Maltese"
    479597msgstr ""
    480598
    481 #: ulanguages.slang_my
     599#: languages.slang_my
     600msgctxt "languages.slang_my"
    482601msgid "Burmese"
    483602msgstr ""
    484603
    485 #: ulanguages.slang_na
     604#: languages.slang_na
     605msgctxt "languages.slang_na"
    486606msgid "Nauru"
    487607msgstr ""
    488608
    489 #: ulanguages.slang_nb
     609#: languages.slang_nb
     610msgctxt "languages.slang_nb"
    490611msgid "Norwegian Bokmaal"
    491612msgstr ""
    492613
    493 #: ulanguages.slang_nd
     614#: languages.slang_nd
     615msgctxt "languages.slang_nd"
    494616msgid "Ndebele, North"
    495617msgstr ""
    496618
    497 #: ulanguages.slang_ne
     619#: languages.slang_ne
     620msgctxt "languages.slang_ne"
    498621msgid "Nepali"
    499622msgstr ""
    500623
    501 #: ulanguages.slang_ng
     624#: languages.slang_ng
     625msgctxt "languages.slang_ng"
    502626msgid "Ndonga"
    503627msgstr ""
    504628
    505 #: ulanguages.slang_nl
     629#: languages.slang_nl
     630msgctxt "languages.slang_nl"
    506631msgid "Dutch"
    507632msgstr "Němčina"
    508633
    509 #: ulanguages.slang_nl_be
     634#: languages.slang_nl_be
     635msgctxt "languages.slang_nl_be"
    510636msgid "Flemish"
    511637msgstr ""
    512638
    513 #: ulanguages.slang_nn
     639#: languages.slang_nn
     640msgctxt "languages.slang_nn"
    514641msgid "Norwegian Nynorsk"
    515642msgstr ""
    516643
    517 #: ulanguages.slang_no
     644#: languages.slang_no
     645msgctxt "languages.slang_no"
    518646msgid "Norwegian"
    519647msgstr "Norština"
    520648
    521 #: ulanguages.slang_nr
     649#: languages.slang_nr
     650msgctxt "languages.slang_nr"
    522651msgid "Ndebele, South"
    523652msgstr ""
    524653
    525 #: ulanguages.slang_nv
     654#: languages.slang_nv
     655msgctxt "languages.slang_nv"
    526656msgid "Navajo"
    527657msgstr "Navažština"
    528658
    529 #: ulanguages.slang_ny
     659#: languages.slang_ny
     660msgctxt "languages.slang_ny"
    530661msgid "Chichewa"
    531662msgstr ""
    532663
    533 #: ulanguages.slang_oc
     664#: languages.slang_oc
     665msgctxt "languages.slang_oc"
    534666msgid "Occitan"
    535667msgstr ""
    536668
    537 #: ulanguages.slang_oj
     669#: languages.slang_oj
     670msgctxt "languages.slang_oj"
    538671msgid "Ojibwa"
    539672msgstr ""
    540673
    541 #: ulanguages.slang_om
     674#: languages.slang_om
     675msgctxt "languages.slang_om"
    542676msgid "Oromo"
    543677msgstr ""
    544678
    545 #: ulanguages.slang_or
     679#: languages.slang_or
     680msgctxt "languages.slang_or"
    546681msgid "Oriya"
    547682msgstr ""
    548683
    549 #: ulanguages.slang_os
     684#: languages.slang_os
     685msgctxt "languages.slang_os"
    550686msgid "Ossetian"
    551687msgstr ""
    552688
    553 #: ulanguages.slang_pa
     689#: languages.slang_pa
     690msgctxt "languages.slang_pa"
    554691msgid "Panjabi"
    555692msgstr ""
    556693
    557 #: ulanguages.slang_pi
     694#: languages.slang_pi
     695msgctxt "languages.slang_pi"
    558696msgid "Pali"
    559697msgstr ""
    560698
    561 #: ulanguages.slang_pl
     699#: languages.slang_pl
     700msgctxt "languages.slang_pl"
    562701msgid "Polish"
    563702msgstr "Polština"
    564703
    565 #: ulanguages.slang_ps
     704#: languages.slang_ps
     705msgctxt "languages.slang_ps"
    566706msgid "Pushto"
    567707msgstr ""
    568708
    569 #: ulanguages.slang_pt
     709#: languages.slang_pt
     710msgctxt "languages.slang_pt"
    570711msgid "Portuguese"
    571712msgstr "Portugalština"
    572713
    573 #: ulanguages.slang_pt_br
     714#: languages.slang_pt_br
     715msgctxt "languages.slang_pt_br"
    574716msgid "Brazilian Portuguese"
    575717msgstr "Brazislká portugalština"
    576718
    577 #: ulanguages.slang_qu
     719#: languages.slang_qu
     720msgctxt "languages.slang_qu"
    578721msgid "Quechua"
    579722msgstr ""
    580723
    581 #: ulanguages.slang_rm
     724#: languages.slang_rm
     725msgctxt "languages.slang_rm"
    582726msgid "Raeto-Romance"
    583727msgstr ""
    584728
    585 #: ulanguages.slang_rn
     729#: languages.slang_rn
     730msgctxt "languages.slang_rn"
    586731msgid "Rundi"
    587732msgstr ""
    588733
    589 #: ulanguages.slang_ro
     734#: languages.slang_ro
     735msgctxt "languages.slang_ro"
    590736msgid "Romanian"
    591737msgstr "Romština"
    592738
    593 #: ulanguages.slang_ru
     739#: languages.slang_ru
     740msgctxt "languages.slang_ru"
    594741msgid "Russian"
    595742msgstr "Ruština"
    596743
    597 #: ulanguages.slang_rw
     744#: languages.slang_rw
     745msgctxt "languages.slang_rw"
    598746msgid "Kinyarwanda"
    599747msgstr ""
    600748
    601 #: ulanguages.slang_sa
     749#: languages.slang_sa
     750msgctxt "languages.slang_sa"
    602751msgid "Sanskrit"
    603752msgstr ""
    604753
    605 #: ulanguages.slang_sc
     754#: languages.slang_sc
     755msgctxt "languages.slang_sc"
    606756msgid "Sardinian"
    607757msgstr ""
    608758
    609 #: ulanguages.slang_sd
     759#: languages.slang_sd
     760msgctxt "languages.slang_sd"
    610761msgid "Sindhi"
    611762msgstr ""
    612763
    613 #: ulanguages.slang_se
     764#: languages.slang_se
     765msgctxt "languages.slang_se"
    614766msgid "Northern Sami"
    615767msgstr ""
    616768
    617 #: ulanguages.slang_sg
     769#: languages.slang_sg
     770msgctxt "languages.slang_sg"
    618771msgid "Sango"
    619772msgstr ""
    620773
    621 #: ulanguages.slang_si
     774#: languages.slang_si
     775msgctxt "languages.slang_si"
    622776msgid "Sinhalese"
    623777msgstr ""
    624778
    625 #: ulanguages.slang_sk
     779#: languages.slang_sk
     780msgctxt "languages.slang_sk"
    626781msgid "Slovak"
    627782msgstr "Slovenština"
    628783
    629 #: ulanguages.slang_sl
     784#: languages.slang_sl
     785msgctxt "languages.slang_sl"
    630786msgid "Slovenian"
    631787msgstr "Slovinština"
    632788
    633 #: ulanguages.slang_sm
     789#: languages.slang_sm
     790msgctxt "languages.slang_sm"
    634791msgid "Samoan"
    635792msgstr ""
    636793
    637 #: ulanguages.slang_sn
     794#: languages.slang_sn
     795msgctxt "languages.slang_sn"
    638796msgid "Shona"
    639797msgstr ""
    640798
    641 #: ulanguages.slang_so
     799#: languages.slang_so
     800msgctxt "languages.slang_so"
    642801msgid "Somali"
    643802msgstr ""
    644803
    645 #: ulanguages.slang_sq
     804#: languages.slang_sq
     805msgctxt "languages.slang_sq"
    646806msgid "Albanian"
    647807msgstr "Albánština"
    648808
    649 #: ulanguages.slang_sr
     809#: languages.slang_sr
     810msgctxt "languages.slang_sr"
    650811msgid "Serbian"
    651812msgstr ""
    652813
    653 #: ulanguages.slang_ss
     814#: languages.slang_ss
     815msgctxt "languages.slang_ss"
    654816msgid "Swati"
    655817msgstr ""
    656818
    657 #: ulanguages.slang_st
     819#: languages.slang_st
     820msgctxt "languages.slang_st"
    658821msgid "Sotho, Southern"
    659822msgstr ""
    660823
    661 #: ulanguages.slang_su
     824#: languages.slang_su
     825msgctxt "languages.slang_su"
    662826msgid "Sundanese"
    663827msgstr "Sundština"
    664828
    665 #: ulanguages.slang_sv
     829#: languages.slang_sv
     830msgctxt "languages.slang_sv"
    666831msgid "Swedish"
    667832msgstr "Švédština"
    668833
    669 #: ulanguages.slang_sw
     834#: languages.slang_sw
     835msgctxt "languages.slang_sw"
    670836msgid "Swahili"
    671837msgstr ""
    672838
    673 #: ulanguages.slang_ta
     839#: languages.slang_ta
     840msgctxt "languages.slang_ta"
    674841msgid "Tamil"
    675842msgstr ""
    676843
    677 #: ulanguages.slang_te
     844#: languages.slang_te
     845msgctxt "languages.slang_te"
    678846msgid "Telugu"
    679847msgstr ""
    680848
    681 #: ulanguages.slang_tg
     849#: languages.slang_tg
     850msgctxt "languages.slang_tg"
    682851msgid "Tajik"
    683852msgstr ""
    684853
    685 #: ulanguages.slang_th
     854#: languages.slang_th
     855msgctxt "languages.slang_th"
    686856msgid "Thai"
    687857msgstr ""
    688858
    689 #: ulanguages.slang_ti
     859#: languages.slang_ti
     860msgctxt "languages.slang_ti"
    690861msgid "Tigrinya"
    691862msgstr ""
    692863
    693 #: ulanguages.slang_tk
     864#: languages.slang_tk
     865msgctxt "languages.slang_tk"
    694866msgid "Turkmen"
    695867msgstr ""
    696868
    697 #: ulanguages.slang_tl
     869#: languages.slang_tl
     870msgctxt "languages.slang_tl"
    698871msgid "Tagalog"
    699872msgstr ""
    700873
    701 #: ulanguages.slang_tn
     874#: languages.slang_tn
     875msgctxt "languages.slang_tn"
    702876msgid "Tswana"
    703877msgstr ""
    704878
    705 #: ulanguages.slang_to
     879#: languages.slang_to
     880msgctxt "languages.slang_to"
    706881msgid "Tonga"
    707882msgstr ""
    708883
    709 #: ulanguages.slang_tr
     884#: languages.slang_tr
     885msgctxt "languages.slang_tr"
    710886msgid "Turkish"
    711887msgstr "Turečtina"
    712888
    713 #: ulanguages.slang_ts
     889#: languages.slang_ts
     890msgctxt "languages.slang_ts"
    714891msgid "Tsonga"
    715892msgstr ""
    716893
    717 #: ulanguages.slang_tt
     894#: languages.slang_tt
     895msgctxt "languages.slang_tt"
    718896msgid "Tatar"
    719897msgstr "Tatarština"
    720898
    721 #: ulanguages.slang_tw
     899#: languages.slang_tw
     900msgctxt "languages.slang_tw"
    722901msgid "Twi"
    723902msgstr ""
    724903
    725 #: ulanguages.slang_ty
     904#: languages.slang_ty
     905msgctxt "languages.slang_ty"
    726906msgid "Tahitian"
    727907msgstr ""
    728908
    729 #: ulanguages.slang_ug
     909#: languages.slang_ug
     910msgctxt "languages.slang_ug"
    730911msgid "Uighur"
    731912msgstr ""
    732913
    733 #: ulanguages.slang_uk
     914#: languages.slang_uk
     915msgctxt "languages.slang_uk"
    734916msgid "Ukrainian"
    735917msgstr "Ukrajinština"
    736918
    737 #: ulanguages.slang_ur
     919#: languages.slang_ur
     920msgctxt "languages.slang_ur"
    738921msgid "Urdu"
    739922msgstr ""
    740923
    741 #: ulanguages.slang_uz
     924#: languages.slang_uz
     925msgctxt "languages.slang_uz"
    742926msgid "Uzbek"
    743927msgstr ""
    744928
    745 #: ulanguages.slang_ve
     929#: languages.slang_ve
     930msgctxt "languages.slang_ve"
    746931msgid "Venda"
    747932msgstr ""
    748933
    749 #: ulanguages.slang_vi
     934#: languages.slang_vi
     935msgctxt "languages.slang_vi"
    750936msgid "Vietnamese"
    751937msgstr "Vietnamština"
    752938
    753 #: ulanguages.slang_vo
     939#: languages.slang_vo
     940msgctxt "languages.slang_vo"
    754941msgid "Volapuk"
    755942msgstr ""
    756943
    757 #: ulanguages.slang_wa
    758 msgctxt "ulanguages.slang_wa"
     944#: languages.slang_wa
     945msgctxt "languages.slang_wa"
    759946msgid "Walloon"
    760947msgstr ""
    761948
    762 #: ulanguages.slang_wo
     949#: languages.slang_wo
     950msgctxt "languages.slang_wo"
    763951msgid "Wolof"
    764952msgstr ""
    765953
    766 #: ulanguages.slang_xh
     954#: languages.slang_xh
     955msgctxt "languages.slang_xh"
    767956msgid "Xhosa"
    768957msgstr ""
    769958
    770 #: ulanguages.slang_yi
     959#: languages.slang_yi
     960msgctxt "languages.slang_yi"
    771961msgid "Yiddish"
    772962msgstr ""
    773963
    774 #: ulanguages.slang_yo
     964#: languages.slang_yo
     965msgctxt "languages.slang_yo"
    775966msgid "Yoruba"
    776967msgstr ""
    777968
    778 #: ulanguages.slang_za
     969#: languages.slang_za
     970msgctxt "languages.slang_za"
    779971msgid "Zhuang"
    780972msgstr ""
    781973
    782 #: ulanguages.slang_zh
     974#: languages.slang_zh
     975msgctxt "languages.slang_zh"
    783976msgid "Chinese"
    784977msgstr "Čínština"
    785978
    786 #: ulanguages.slang_zu
     979#: languages.slang_zh_hans
     980msgid "Simplified Chinese"
     981msgstr ""
     982
     983#: languages.slang_zh_hant
     984msgid "Traditional Chinese"
     985msgstr ""
     986
     987#: languages.slang_zu
     988msgctxt "languages.slang_zu"
    787989msgid "Zulu"
    788990msgstr "Zuluština"
  • trunk/Packages/Common/Languages/Languages.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: ulanguages.slangauto
     4#: languages.slangauto
    55msgid "Automatic"
    66msgstr ""
    77
    8 #: ulanguages.slang_aa
     8#: languages.slang_aa
    99msgid "Afar"
    1010msgstr ""
    1111
    12 #: ulanguages.slang_ab
     12#: languages.slang_ab
    1313msgid "Abkhazian"
    1414msgstr ""
    1515
    16 #: ulanguages.slang_ae
     16#: languages.slang_ae
    1717msgid "Avestan"
    1818msgstr ""
    1919
    20 #: ulanguages.slang_af
     20#: languages.slang_af
    2121msgid "Afrikaans"
    2222msgstr ""
    2323
    24 #: ulanguages.slang_ak
     24#: languages.slang_ak
    2525msgid "Akan"
    2626msgstr ""
    2727
    28 #: ulanguages.slang_am
     28#: languages.slang_am
    2929msgid "Amharic"
    3030msgstr ""
    3131
    32 #: ulanguages.slang_an
     32#: languages.slang_an
    3333msgid "Aragonese"
    3434msgstr ""
    3535
    36 #: ulanguages.slang_ar
     36#: languages.slang_ar
    3737msgid "Arabic"
    3838msgstr ""
    3939
    40 #: ulanguages.slang_as
     40#: languages.slang_as
    4141msgid "Assamese"
    4242msgstr ""
    4343
    44 #: ulanguages.slang_av
     44#: languages.slang_av
    4545msgid "Avaric"
    4646msgstr ""
    4747
    48 #: ulanguages.slang_ay
     48#: languages.slang_ay
    4949msgid "Aymara"
    5050msgstr ""
    5151
    52 #: ulanguages.slang_az
     52#: languages.slang_az
    5353msgid "Azerbaijani"
    5454msgstr ""
    5555
    56 #: ulanguages.slang_ba
     56#: languages.slang_ba
    5757msgid "Bashkir"
    5858msgstr ""
    5959
    60 #: ulanguages.slang_be
     60#: languages.slang_be
    6161msgid "Belarusian"
    6262msgstr ""
    6363
    64 #: ulanguages.slang_bg
     64#: languages.slang_bg
    6565msgid "Bulgarian"
    6666msgstr ""
    6767
    68 #: ulanguages.slang_bh
     68#: languages.slang_bh
    6969msgid "Bihari"
    7070msgstr ""
    7171
    72 #: ulanguages.slang_bi
     72#: languages.slang_bi
    7373msgid "Bislama"
    7474msgstr ""
    7575
    76 #: ulanguages.slang_bm
     76#: languages.slang_bm
    7777msgid "Bambara"
    7878msgstr ""
    7979
    80 #: ulanguages.slang_bn
     80#: languages.slang_bn
    8181msgid "Bengali"
    8282msgstr ""
    8383
    84 #: ulanguages.slang_bo
     84#: languages.slang_bo
    8585msgid "Tibetan"
    8686msgstr ""
    8787
    88 #: ulanguages.slang_br
     88#: languages.slang_br
    8989msgid "Breton"
    9090msgstr ""
    9191
    92 #: ulanguages.slang_bs
     92#: languages.slang_bs
    9393msgid "Bosnian"
    9494msgstr ""
    9595
    96 #: ulanguages.slang_ca
     96#: languages.slang_ca
    9797msgid "Catalan"
    9898msgstr ""
    9999
    100 #: ulanguages.slang_ce
     100#: languages.slang_ce
    101101msgid "Chechen"
    102102msgstr ""
    103103
    104 #: ulanguages.slang_ch
     104#: languages.slang_ch
    105105msgid "Chamorro"
    106106msgstr ""
    107107
    108 #: ulanguages.slang_co
     108#: languages.slang_co
    109109msgid "Corsican"
    110110msgstr ""
    111111
    112 #: ulanguages.slang_cr
     112#: languages.slang_cr
    113113msgid "Cree"
    114114msgstr ""
    115115
    116 #: ulanguages.slang_cs
     116#: languages.slang_cs
    117117msgid "Czech"
    118118msgstr ""
    119119
    120 #: ulanguages.slang_cv
     120#: languages.slang_cv
    121121msgid "Chuvash"
    122122msgstr ""
    123123
    124 #: ulanguages.slang_cy
     124#: languages.slang_cy
    125125msgid "Welsh"
    126126msgstr ""
    127127
    128 #: ulanguages.slang_da
     128#: languages.slang_da
    129129msgid "Danish"
    130130msgstr ""
    131131
    132 #: ulanguages.slang_de
     132#: languages.slang_de
    133133msgid "German"
    134134msgstr ""
    135135
    136 #: ulanguages.slang_de_at
     136#: languages.slang_de_at
    137137msgid "Austrian German"
    138138msgstr ""
    139139
    140 #: ulanguages.slang_de_ch
     140#: languages.slang_de_ch
    141141msgid "Swiss German"
    142142msgstr ""
    143143
    144 #: ulanguages.slang_dv
     144#: languages.slang_dv
    145145msgid "Divehi"
    146146msgstr ""
    147147
    148 #: ulanguages.slang_dz
     148#: languages.slang_dz
    149149msgid "Dzongkha"
    150150msgstr ""
    151151
    152 #: ulanguages.slang_ee
     152#: languages.slang_ee
    153153msgid "Ewe"
    154154msgstr ""
    155155
    156 #: ulanguages.slang_el
     156#: languages.slang_el
    157157msgid "Greek"
    158158msgstr ""
    159159
    160 #: ulanguages.slang_en
     160#: languages.slang_en
    161161msgid "English"
    162162msgstr ""
    163163
    164 #: ulanguages.slang_en_au
     164#: languages.slang_en_au
    165165msgid "Australian English"
    166166msgstr ""
    167167
    168 #: ulanguages.slang_en_ca
     168#: languages.slang_en_ca
    169169msgid "Canadian English"
    170170msgstr ""
    171171
    172 #: ulanguages.slang_en_gb
     172#: languages.slang_en_gb
    173173msgid "British English"
    174174msgstr ""
    175175
    176 #: ulanguages.slang_en_us
     176#: languages.slang_en_us
    177177msgid "American English"
    178178msgstr ""
    179179
    180 #: ulanguages.slang_eo
     180#: languages.slang_eo
    181181msgid "Esperanto"
    182182msgstr ""
    183183
    184 #: ulanguages.slang_es
     184#: languages.slang_es
    185185msgid "Spanish"
    186186msgstr ""
    187187
    188 #: ulanguages.slang_et
     188#: languages.slang_et
    189189msgid "Estonian"
    190190msgstr ""
    191191
    192 #: ulanguages.slang_eu
     192#: languages.slang_eu
    193193msgid "Basque"
    194194msgstr ""
    195195
    196 #: ulanguages.slang_fa
     196#: languages.slang_fa
    197197msgid "Persian"
    198198msgstr ""
    199199
    200 #: ulanguages.slang_ff
     200#: languages.slang_ff
    201201msgid "Fulah"
    202202msgstr ""
    203203
    204 #: ulanguages.slang_fi
     204#: languages.slang_fi
    205205msgid "Finnish"
    206206msgstr ""
    207207
    208 #: ulanguages.slang_fj
     208#: languages.slang_fj
    209209msgid "Fijian"
    210210msgstr ""
    211211
    212 #: ulanguages.slang_fo
     212#: languages.slang_fo
    213213msgid "Faroese"
    214214msgstr ""
    215215
    216 #: ulanguages.slang_fr
     216#: languages.slang_fr
    217217msgid "French"
    218218msgstr ""
    219219
    220 #: ulanguages.slang_fr_be
    221 msgctxt "ulanguages.slang_fr_be"
     220#: languages.slang_fr_be
     221msgctxt "languages.slang_fr_be"
    222222msgid "Walloon"
    223223msgstr ""
    224224
    225 #: ulanguages.slang_fy
     225#: languages.slang_fy
    226226msgid "Frisian"
    227227msgstr ""
    228228
    229 #: ulanguages.slang_ga
     229#: languages.slang_ga
    230230msgid "Irish"
    231231msgstr ""
    232232
    233 #: ulanguages.slang_gd
     233#: languages.slang_gd
    234234msgid "Gaelic"
    235235msgstr ""
    236236
    237 #: ulanguages.slang_gl
     237#: languages.slang_gl
    238238msgid "Gallegan"
    239239msgstr ""
    240240
    241 #: ulanguages.slang_gn
     241#: languages.slang_gn
    242242msgid "Guarani"
    243243msgstr ""
    244244
    245 #: ulanguages.slang_gu
     245#: languages.slang_gu
    246246msgid "Gujarati"
    247247msgstr ""
    248248
    249 #: ulanguages.slang_gv
     249#: languages.slang_gv
    250250msgid "Manx"
    251251msgstr ""
    252252
    253 #: ulanguages.slang_ha
     253#: languages.slang_ha
    254254msgid "Hausa"
    255255msgstr ""
    256256
    257 #: ulanguages.slang_he
     257#: languages.slang_he
    258258msgid "Hebrew"
    259259msgstr ""
    260260
    261 #: ulanguages.slang_hi
     261#: languages.slang_hi
    262262msgid "Hindi"
    263263msgstr ""
    264264
    265 #: ulanguages.slang_ho
     265#: languages.slang_ho
    266266msgid "Hiri Motu"
    267267msgstr ""
    268268
    269 #: ulanguages.slang_hr
     269#: languages.slang_hr
    270270msgid "Croatian"
    271271msgstr ""
    272272
    273 #: ulanguages.slang_ht
     273#: languages.slang_ht
    274274msgid "Haitian"
    275275msgstr ""
    276276
    277 #: ulanguages.slang_hu
     277#: languages.slang_hu
    278278msgid "Hungarian"
    279279msgstr ""
    280280
    281 #: ulanguages.slang_hy
     281#: languages.slang_hy
    282282msgid "Armenian"
    283283msgstr ""
    284284
    285 #: ulanguages.slang_hz
     285#: languages.slang_hz
    286286msgid "Herero"
    287287msgstr ""
    288288
    289 #: ulanguages.slang_ia
     289#: languages.slang_ia
    290290msgid "Interlingua"
    291291msgstr ""
    292292
    293 #: ulanguages.slang_id
     293#: languages.slang_id
    294294msgid "Indonesian"
    295295msgstr ""
    296296
    297 #: ulanguages.slang_ie
     297#: languages.slang_ie
    298298msgid "Interlingue"
    299299msgstr ""
    300300
    301 #: ulanguages.slang_ig
     301#: languages.slang_ig
    302302msgid "Igbo"
    303303msgstr ""
    304304
    305 #: ulanguages.slang_ii
     305#: languages.slang_ii
    306306msgid "Sichuan Yi"
    307307msgstr ""
    308308
    309 #: ulanguages.slang_ik
     309#: languages.slang_ik
    310310msgid "Inupiaq"
    311311msgstr ""
    312312
    313 #: ulanguages.slang_io
     313#: languages.slang_io
    314314msgid "Ido"
    315315msgstr ""
    316316
    317 #: ulanguages.slang_is
     317#: languages.slang_is
    318318msgid "Icelandic"
    319319msgstr ""
    320320
    321 #: ulanguages.slang_it
     321#: languages.slang_it
    322322msgid "Italian"
    323323msgstr ""
    324324
    325 #: ulanguages.slang_iu
     325#: languages.slang_iu
    326326msgid "Inuktitut"
    327327msgstr ""
    328328
    329 #: ulanguages.slang_ja
     329#: languages.slang_ja
    330330msgid "Japanese"
    331331msgstr ""
    332332
    333 #: ulanguages.slang_jv
     333#: languages.slang_jv
    334334msgid "Javanese"
    335335msgstr ""
    336336
    337 #: ulanguages.slang_ka
     337#: languages.slang_ka
    338338msgid "Georgian"
    339339msgstr ""
    340340
    341 #: ulanguages.slang_kg
     341#: languages.slang_kg
    342342msgid "Kongo"
    343343msgstr ""
    344344
    345 #: ulanguages.slang_ki
     345#: languages.slang_ki
    346346msgid "Kikuyu"
    347347msgstr ""
    348348
    349 #: ulanguages.slang_kj
     349#: languages.slang_kj
    350350msgid "Kuanyama"
    351351msgstr ""
    352352
    353 #: ulanguages.slang_kk
     353#: languages.slang_kk
    354354msgid "Kazakh"
    355355msgstr ""
    356356
    357 #: ulanguages.slang_kl
     357#: languages.slang_kl
    358358msgid "Greenlandic"
    359359msgstr ""
    360360
    361 #: ulanguages.slang_km
     361#: languages.slang_km
    362362msgid "Khmer"
    363363msgstr ""
    364364
    365 #: ulanguages.slang_kn
     365#: languages.slang_kn
    366366msgid "Kannada"
    367367msgstr ""
    368368
    369 #: ulanguages.slang_ko
     369#: languages.slang_ko
    370370msgid "Korean"
    371371msgstr ""
    372372
    373 #: ulanguages.slang_kr
     373#: languages.slang_kr
    374374msgid "Kanuri"
    375375msgstr ""
    376376
    377 #: ulanguages.slang_ks
     377#: languages.slang_ks
    378378msgid "Kashmiri"
    379379msgstr ""
    380380
    381 #: ulanguages.slang_ku
     381#: languages.slang_ku
    382382msgid "Kurdish"
    383383msgstr ""
    384384
    385 #: ulanguages.slang_kv
     385#: languages.slang_kv
    386386msgid "Komi"
    387387msgstr ""
    388388
    389 #: ulanguages.slang_kw
     389#: languages.slang_kw
    390390msgid "Cornish"
    391391msgstr ""
    392392
    393 #: ulanguages.slang_ky
     393#: languages.slang_ky
    394394msgid "Kirghiz"
    395395msgstr ""
    396396
    397 #: ulanguages.slang_la
     397#: languages.slang_la
    398398msgid "Latin"
    399399msgstr ""
    400400
    401 #: ulanguages.slang_lb
     401#: languages.slang_lb
    402402msgid "Luxembourgish"
    403403msgstr ""
    404404
    405 #: ulanguages.slang_lg
     405#: languages.slang_lg
    406406msgid "Ganda"
    407407msgstr ""
    408408
    409 #: ulanguages.slang_li
     409#: languages.slang_li
    410410msgid "Limburgan"
    411411msgstr ""
    412412
    413 #: ulanguages.slang_ln
     413#: languages.slang_ln
    414414msgid "Lingala"
    415415msgstr ""
    416416
    417 #: ulanguages.slang_lo
     417#: languages.slang_lo
    418418msgid "Lao"
    419419msgstr ""
    420420
    421 #: ulanguages.slang_lt
     421#: languages.slang_lt
    422422msgid "Lithuanian"
    423423msgstr ""
    424424
    425 #: ulanguages.slang_lu
     425#: languages.slang_lu
    426426msgid "Luba-Katanga"
    427427msgstr ""
    428428
    429 #: ulanguages.slang_lv
     429#: languages.slang_lv
    430430msgid "Latvian"
    431431msgstr ""
    432432
    433 #: ulanguages.slang_mg
     433#: languages.slang_mg
    434434msgid "Malagasy"
    435435msgstr ""
    436436
    437 #: ulanguages.slang_mh
     437#: languages.slang_mh
    438438msgid "Marshallese"
    439439msgstr ""
    440440
    441 #: ulanguages.slang_mi
     441#: languages.slang_mi
    442442msgid "Maori"
    443443msgstr ""
    444444
    445 #: ulanguages.slang_mk
     445#: languages.slang_mk
    446446msgid "Macedonian"
    447447msgstr ""
    448448
    449 #: ulanguages.slang_ml
     449#: languages.slang_ml
    450450msgid "Malayalam"
    451451msgstr ""
    452452
    453 #: ulanguages.slang_mn
     453#: languages.slang_mn
    454454msgid "Mongolian"
    455455msgstr ""
    456456
    457 #: ulanguages.slang_mo
     457#: languages.slang_mo
    458458msgid "Moldavian"
    459459msgstr ""
    460460
    461 #: ulanguages.slang_mr
     461#: languages.slang_mr
    462462msgid "Marathi"
    463463msgstr ""
    464464
    465 #: ulanguages.slang_ms
     465#: languages.slang_ms
    466466msgid "Malay"
    467467msgstr ""
    468468
    469 #: ulanguages.slang_mt
     469#: languages.slang_mt
    470470msgid "Maltese"
    471471msgstr ""
    472472
    473 #: ulanguages.slang_my
     473#: languages.slang_my
    474474msgid "Burmese"
    475475msgstr ""
    476476
    477 #: ulanguages.slang_na
     477#: languages.slang_na
    478478msgid "Nauru"
    479479msgstr ""
    480480
    481 #: ulanguages.slang_nb
     481#: languages.slang_nb
    482482msgid "Norwegian Bokmaal"
    483483msgstr ""
    484484
    485 #: ulanguages.slang_nd
     485#: languages.slang_nd
    486486msgid "Ndebele, North"
    487487msgstr ""
    488488
    489 #: ulanguages.slang_ne
     489#: languages.slang_ne
    490490msgid "Nepali"
    491491msgstr ""
    492492
    493 #: ulanguages.slang_ng
     493#: languages.slang_ng
    494494msgid "Ndonga"
    495495msgstr ""
    496496
    497 #: ulanguages.slang_nl
     497#: languages.slang_nl
    498498msgid "Dutch"
    499499msgstr ""
    500500
    501 #: ulanguages.slang_nl_be
     501#: languages.slang_nl_be
    502502msgid "Flemish"
    503503msgstr ""
    504504
    505 #: ulanguages.slang_nn
     505#: languages.slang_nn
    506506msgid "Norwegian Nynorsk"
    507507msgstr ""
    508508
    509 #: ulanguages.slang_no
     509#: languages.slang_no
    510510msgid "Norwegian"
    511511msgstr ""
    512512
    513 #: ulanguages.slang_nr
     513#: languages.slang_nr
    514514msgid "Ndebele, South"
    515515msgstr ""
    516516
    517 #: ulanguages.slang_nv
     517#: languages.slang_nv
    518518msgid "Navajo"
    519519msgstr ""
    520520
    521 #: ulanguages.slang_ny
     521#: languages.slang_ny
    522522msgid "Chichewa"
    523523msgstr ""
    524524
    525 #: ulanguages.slang_oc
     525#: languages.slang_oc
    526526msgid "Occitan"
    527527msgstr ""
    528528
    529 #: ulanguages.slang_oj
     529#: languages.slang_oj
    530530msgid "Ojibwa"
    531531msgstr ""
    532532
    533 #: ulanguages.slang_om
     533#: languages.slang_om
    534534msgid "Oromo"
    535535msgstr ""
    536536
    537 #: ulanguages.slang_or
     537#: languages.slang_or
    538538msgid "Oriya"
    539539msgstr ""
    540540
    541 #: ulanguages.slang_os
     541#: languages.slang_os
    542542msgid "Ossetian"
    543543msgstr ""
    544544
    545 #: ulanguages.slang_pa
     545#: languages.slang_pa
    546546msgid "Panjabi"
    547547msgstr ""
    548548
    549 #: ulanguages.slang_pi
     549#: languages.slang_pi
    550550msgid "Pali"
    551551msgstr ""
    552552
    553 #: ulanguages.slang_pl
     553#: languages.slang_pl
    554554msgid "Polish"
    555555msgstr ""
    556556
    557 #: ulanguages.slang_ps
     557#: languages.slang_ps
    558558msgid "Pushto"
    559559msgstr ""
    560560
    561 #: ulanguages.slang_pt
     561#: languages.slang_pt
    562562msgid "Portuguese"
    563563msgstr ""
    564564
    565 #: ulanguages.slang_pt_br
     565#: languages.slang_pt_br
    566566msgid "Brazilian Portuguese"
    567567msgstr ""
    568568
    569 #: ulanguages.slang_qu
     569#: languages.slang_qu
    570570msgid "Quechua"
    571571msgstr ""
    572572
    573 #: ulanguages.slang_rm
     573#: languages.slang_rm
    574574msgid "Raeto-Romance"
    575575msgstr ""
    576576
    577 #: ulanguages.slang_rn
     577#: languages.slang_rn
    578578msgid "Rundi"
    579579msgstr ""
    580580
    581 #: ulanguages.slang_ro
     581#: languages.slang_ro
    582582msgid "Romanian"
    583583msgstr ""
    584584
    585 #: ulanguages.slang_ru
     585#: languages.slang_ru
    586586msgid "Russian"
    587587msgstr ""
    588588
    589 #: ulanguages.slang_rw
     589#: languages.slang_rw
    590590msgid "Kinyarwanda"
    591591msgstr ""
    592592
    593 #: ulanguages.slang_sa
     593#: languages.slang_sa
    594594msgid "Sanskrit"
    595595msgstr ""
    596596
    597 #: ulanguages.slang_sc
     597#: languages.slang_sc
    598598msgid "Sardinian"
    599599msgstr ""
    600600
    601 #: ulanguages.slang_sd
     601#: languages.slang_sd
    602602msgid "Sindhi"
    603603msgstr ""
    604604
    605 #: ulanguages.slang_se
     605#: languages.slang_se
    606606msgid "Northern Sami"
    607607msgstr ""
    608608
    609 #: ulanguages.slang_sg
     609#: languages.slang_sg
    610610msgid "Sango"
    611611msgstr ""
    612612
    613 #: ulanguages.slang_si
     613#: languages.slang_si
    614614msgid "Sinhalese"
    615615msgstr ""
    616616
    617 #: ulanguages.slang_sk
     617#: languages.slang_sk
    618618msgid "Slovak"
    619619msgstr ""
    620620
    621 #: ulanguages.slang_sl
     621#: languages.slang_sl
    622622msgid "Slovenian"
    623623msgstr ""
    624624
    625 #: ulanguages.slang_sm
     625#: languages.slang_sm
    626626msgid "Samoan"
    627627msgstr ""
    628628
    629 #: ulanguages.slang_sn
     629#: languages.slang_sn
    630630msgid "Shona"
    631631msgstr ""
    632632
    633 #: ulanguages.slang_so
     633#: languages.slang_so
    634634msgid "Somali"
    635635msgstr ""
    636636
    637 #: ulanguages.slang_sq
     637#: languages.slang_sq
    638638msgid "Albanian"
    639639msgstr ""
    640640
    641 #: ulanguages.slang_sr
     641#: languages.slang_sr
    642642msgid "Serbian"
    643643msgstr ""
    644644
    645 #: ulanguages.slang_ss
     645#: languages.slang_ss
    646646msgid "Swati"
    647647msgstr ""
    648648
    649 #: ulanguages.slang_st
     649#: languages.slang_st
    650650msgid "Sotho, Southern"
    651651msgstr ""
    652652
    653 #: ulanguages.slang_su
     653#: languages.slang_su
    654654msgid "Sundanese"
    655655msgstr ""
    656656
    657 #: ulanguages.slang_sv
     657#: languages.slang_sv
    658658msgid "Swedish"
    659659msgstr ""
    660660
    661 #: ulanguages.slang_sw
     661#: languages.slang_sw
    662662msgid "Swahili"
    663663msgstr ""
    664664
    665 #: ulanguages.slang_ta
     665#: languages.slang_ta
    666666msgid "Tamil"
    667667msgstr ""
    668668
    669 #: ulanguages.slang_te
     669#: languages.slang_te
    670670msgid "Telugu"
    671671msgstr ""
    672672
    673 #: ulanguages.slang_tg
     673#: languages.slang_tg
    674674msgid "Tajik"
    675675msgstr ""
    676676
    677 #: ulanguages.slang_th
     677#: languages.slang_th
    678678msgid "Thai"
    679679msgstr ""
    680680
    681 #: ulanguages.slang_ti
     681#: languages.slang_ti
    682682msgid "Tigrinya"
    683683msgstr ""
    684684
    685 #: ulanguages.slang_tk
     685#: languages.slang_tk
    686686msgid "Turkmen"
    687687msgstr ""
    688688
    689 #: ulanguages.slang_tl
     689#: languages.slang_tl
    690690msgid "Tagalog"
    691691msgstr ""
    692692
    693 #: ulanguages.slang_tn
     693#: languages.slang_tn
    694694msgid "Tswana"
    695695msgstr ""
    696696
    697 #: ulanguages.slang_to
     697#: languages.slang_to
    698698msgid "Tonga"
    699699msgstr ""
    700700
    701 #: ulanguages.slang_tr
     701#: languages.slang_tr
    702702msgid "Turkish"
    703703msgstr ""
    704704
    705 #: ulanguages.slang_ts
     705#: languages.slang_ts
    706706msgid "Tsonga"
    707707msgstr ""
    708708
    709 #: ulanguages.slang_tt
     709#: languages.slang_tt
    710710msgid "Tatar"
    711711msgstr ""
    712712
    713 #: ulanguages.slang_tw
     713#: languages.slang_tw
    714714msgid "Twi"
    715715msgstr ""
    716716
    717 #: ulanguages.slang_ty
     717#: languages.slang_ty
    718718msgid "Tahitian"
    719719msgstr ""
    720720
    721 #: ulanguages.slang_ug
     721#: languages.slang_ug
    722722msgid "Uighur"
    723723msgstr ""
    724724
    725 #: ulanguages.slang_uk
     725#: languages.slang_uk
    726726msgid "Ukrainian"
    727727msgstr ""
    728728
    729 #: ulanguages.slang_ur
     729#: languages.slang_ur
    730730msgid "Urdu"
    731731msgstr ""
    732732
    733 #: ulanguages.slang_uz
     733#: languages.slang_uz
    734734msgid "Uzbek"
    735735msgstr ""
    736736
    737 #: ulanguages.slang_ve
     737#: languages.slang_ve
    738738msgid "Venda"
    739739msgstr ""
    740740
    741 #: ulanguages.slang_vi
     741#: languages.slang_vi
    742742msgid "Vietnamese"
    743743msgstr ""
    744744
    745 #: ulanguages.slang_vo
     745#: languages.slang_vo
    746746msgid "Volapuk"
    747747msgstr ""
    748748
    749 #: ulanguages.slang_wa
    750 msgctxt "ulanguages.slang_wa"
     749#: languages.slang_wa
     750msgctxt "languages.slang_wa"
    751751msgid "Walloon"
    752752msgstr ""
    753753
    754 #: ulanguages.slang_wo
     754#: languages.slang_wo
    755755msgid "Wolof"
    756756msgstr ""
    757757
    758 #: ulanguages.slang_xh
     758#: languages.slang_xh
    759759msgid "Xhosa"
    760760msgstr ""
    761761
    762 #: ulanguages.slang_yi
     762#: languages.slang_yi
    763763msgid "Yiddish"
    764764msgstr ""
    765765
    766 #: ulanguages.slang_yo
     766#: languages.slang_yo
    767767msgid "Yoruba"
    768768msgstr ""
    769769
    770 #: ulanguages.slang_za
     770#: languages.slang_za
    771771msgid "Zhuang"
    772772msgstr ""
    773773
    774 #: ulanguages.slang_zh
     774#: languages.slang_zh
    775775msgid "Chinese"
    776776msgstr ""
    777777
    778 #: ulanguages.slang_zu
     778#: languages.slang_zh_hans
     779msgid "Simplified Chinese"
     780msgstr ""
     781
     782#: languages.slang_zh_hant
     783msgid "Traditional Chinese"
     784msgstr ""
     785
     786#: languages.slang_zu
    779787msgid "Zulu"
    780788msgstr ""
  • trunk/Packages/Common/Languages/Pool.cs.po

    r29 r30  
    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
    12 #: upool.sobjectpoolempty
     14#: pool.sobjectpoolempty
     15msgctxt "pool.sobjectpoolempty"
    1316msgid "Object pool is empty"
    1417msgstr "Zásobník objektů je prázdný"
    1518
    16 #: upool.sreleaseerror
     19#: pool.sreleaseerror
     20msgctxt "pool.sreleaseerror"
    1721msgid "Unknown object for release from pool"
    1822msgstr "Neznýmý objekt pro uvolnění ze zásobníku"
  • trunk/Packages/Common/Languages/Pool.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: upool.sobjectpoolempty
     4#: pool.sobjectpoolempty
    55msgid "Object pool is empty"
    66msgstr ""
    77
    8 #: upool.sreleaseerror
     8#: pool.sreleaseerror
    99msgid "Unknown object for release from pool"
    1010msgstr ""
  • trunk/Packages/Common/Languages/ResetableThread.cs.po

    r29 r30  
    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
    12 #: uresetablethread.swaiterror
     14#: resetablethread.swaiterror
     15msgctxt "resetablethread.swaiterror"
    1316msgid "WaitFor error"
    1417msgstr "Chyba WaitFor"
  • trunk/Packages/Common/Languages/ResetableThread.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: uresetablethread.swaiterror
     4#: resetablethread.swaiterror
    55msgid "WaitFor error"
    66msgstr ""
  • trunk/Packages/Common/Languages/ScaleDPI.cs.po

    r29 r30  
    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
    14 #: uscaledpi.swrongdpi
     14#: scaledpi.swrongdpi
    1515#, object-pascal-format
     16msgctxt "scaledpi.swrongdpi"
    1617msgid "Wrong DPI [%d,%d]"
    1718msgstr "Chybné DPI [%d,%d]"
  • trunk/Packages/Common/Languages/ScaleDPI.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: uscaledpi.swrongdpi
     4#: scaledpi.swrongdpi
    55#, object-pascal-format
    66msgid "Wrong DPI [%d,%d]"
  • trunk/Packages/Common/Languages/TestCase.cs.po

    r29 r30  
    1212"X-Generator: Poedit 3.0.1\n"
    1313
    14 #: utestcase.sfailed
     14#: testcase.sfailed
     15msgctxt "testcase.sfailed"
    1516msgid "Failed"
    1617msgstr "Selhalo"
    1718
    18 #: utestcase.snone
     19#: testcase.snone
     20msgctxt "testcase.snone"
    1921msgid "None"
    2022msgstr "Žádný"
    2123
    22 #: utestcase.spassed
     24#: testcase.spassed
     25msgctxt "testcase.spassed"
    2326msgid "Passed"
    2427msgstr "Prošlo"
     28
  • trunk/Packages/Common/Languages/TestCase.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: utestcase.sfailed
     4#: testcase.sfailed
    55msgid "Failed"
    66msgstr ""
    77
    8 #: utestcase.snone
     8#: testcase.snone
    99msgid "None"
    1010msgstr ""
    1111
    12 #: utestcase.spassed
     12#: testcase.spassed
    1313msgid "Passed"
    1414msgstr ""
  • trunk/Packages/Common/Languages/Threading.cs.po

    r29 r30  
    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
    12 #: uthreading.scurrentthreadnotfound
     14#: threading.scurrentthreadnotfound
    1315#, object-pascal-format
     16msgctxt "threading.scurrentthreadnotfound"
    1417msgid "Current thread ID %d not found in virtual thread list."
    1518msgstr "Aktuální vlákno ID %d nenalezeno v seznamu virtuálních vláken."
  • trunk/Packages/Common/Languages/Threading.pot

    r29 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: uthreading.scurrentthreadnotfound
     4#: threading.scurrentthreadnotfound
    55#, object-pascal-format
    66msgid "Current thread ID %d not found in virtual thread list."
  • trunk/Packages/Common/LastOpenedList.pas

    r29 r30  
    1 unit ULastOpenedList;
     1unit LastOpenedList;
    22
    33interface
    44
    55uses
    6   Classes, SysUtils, Registry, URegistry, Menus, XMLConf, DOM;
     6  Classes, SysUtils, Registry, RegistryEx, Menus, XMLConf, DOM;
    77
    88type
     
    194194
    195195end.
    196 
  • trunk/Packages/Common/ListViewSort.pas

    r29 r30  
    1 unit UListViewSort;
     1unit ListViewSort;
    22
    33// Date: 2019-05-17
     
    136136constructor TListViewEx.Create(TheOwner: TComponent);
    137137begin
    138   inherited Create(TheOwner);
     138  inherited;
    139139  Filter := TListViewFilter.Create(Self);
    140140  Filter.Parent := Self;
     
    172172constructor TListViewFilter.Create(AOwner: TComponent);
    173173begin
    174   inherited Create(AOwner);
     174  inherited;
    175175  FStringGrid1 := TStringGrid.Create(Self);
    176176  FStringGrid1.Align := alClient;
  • trunk/Packages/Common/Memory.pas

    r29 r30  
    1 unit UMemory;
     1unit Memory;
    22
    33interface
     
    120120
    121121end.
    122 
  • trunk/Packages/Common/MetaCanvas.pas

    r29 r30  
    1 unit UMetaCanvas;
     1unit MetaCanvas;
    22
    33interface
     
    6363
    6464  TCanvasPolygon = class(TCanvasObject)
     65    Pen: TPen;
     66    Brush: TBrush;
     67    Points: array of TPoint;
     68    procedure Paint(Canvas: TCanvas); override;
     69    procedure Zoom(Factor: Double); override;
     70    procedure Move(Delta: TPoint); override;
     71    constructor Create;
     72    destructor Destroy; override;
     73  end;
     74
     75  { TCanvasPolyline }
     76
     77  TCanvasPolyline = class(TCanvasObject)
     78    Pen: TPen;
     79    Brush: TBrush;
     80    Points: array of TPoint;
     81    procedure Paint(Canvas: TCanvas); override;
     82    procedure Zoom(Factor: Double); override;
     83    procedure Move(Delta: TPoint); override;
     84    constructor Create;
     85    destructor Destroy; override;
     86  end;
     87
     88  { TCanvasPolyBezier }
     89
     90  TCanvasPolyBezier = class(TCanvasObject)
    6591    Pen: TPen;
    6692    Brush: TBrush;
     
    133159    procedure DoMoveTo(X, Y: Integer); override;
    134160    procedure DoLineTo(X, Y: Integer); override;
     161    procedure DoPolyline(const Points: array of TPoint); override;
     162    procedure DoPolyBezier(Points: PPoint; NumPts: Integer;
     163      Filled: Boolean = False; Continuous: Boolean = False); override;
    135164  public
    136165    Objects: TCanvasObjects;
     
    141170    procedure TextOut(X,Y: Integer; const Text: String); override;
    142171    procedure Polygon(Points: PPoint; NumPts: Integer; Winding: Boolean = False); override;
     172    procedure Polyline(Points: PPoint; NumPts: Integer); override;
     173    procedure PolyBezier(Points: PPoint; NumPts: Integer;
     174      Filled: Boolean = False; Continuous: Boolean = True); override;
    143175    procedure Ellipse(x1, y1, x2, y2: Integer); override;
    144176    procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override;
     
    159191
    160192uses
    161   UGeometric, LCLIntf;
     193  Geometric, LCLIntf;
     194
     195{ TCanvasPolyBezier }
     196
     197procedure TCanvasPolyBezier.Paint(Canvas: TCanvas);
     198begin
     199  Canvas.Pen.Assign(Pen);
     200  Canvas.Brush.Assign(Brush);
     201  Canvas.PolyBezier(Points);
     202end;
     203
     204procedure TCanvasPolyBezier.Zoom(Factor: Double);
     205var
     206  I: Integer;
     207begin
     208  for I := 0 to High(Points) do
     209    Points[I] := Point(Trunc(Points[I].X * Factor),
     210      Trunc(Points[I].Y * Factor));
     211  Pen.Width := Trunc(Pen.Width * Factor);
     212end;
     213
     214procedure TCanvasPolyBezier.Move(Delta: TPoint);
     215var
     216  I: Integer;
     217begin
     218  for I := 0 to High(Points) do
     219    Points[I] := AddPoint(Points[I], Delta);
     220end;
     221
     222constructor TCanvasPolyBezier.Create;
     223begin
     224  Pen := TPen.Create;
     225  Brush := TBrush.Create;
     226end;
     227
     228destructor TCanvasPolyBezier.Destroy;
     229begin
     230  FreeAndNil(Brush);
     231  FreeAndNil(Pen);
     232  inherited;
     233end;
     234
     235{ TCanvasPolyline }
     236
     237procedure TCanvasPolyline.Paint(Canvas: TCanvas);
     238begin
     239  Canvas.Pen.Assign(Pen);
     240  Canvas.Brush.Assign(Brush);
     241  Canvas.Polyline(Points);
     242end;
     243
     244procedure TCanvasPolyline.Zoom(Factor: Double);
     245var
     246  I: Integer;
     247begin
     248  for I := 0 to High(Points) do
     249    Points[I] := Point(Trunc(Points[I].X * Factor),
     250      Trunc(Points[I].Y * Factor));
     251  Pen.Width := Trunc(Pen.Width * Factor);
     252end;
     253
     254procedure TCanvasPolyline.Move(Delta: TPoint);
     255var
     256  I: Integer;
     257begin
     258  for I := 0 to High(Points) do
     259    Points[I] := AddPoint(Points[I], Delta);
     260end;
     261
     262constructor TCanvasPolyline.Create;
     263begin
     264  Pen := TPen.Create;
     265  Brush := TBrush.Create;
     266end;
     267
     268destructor TCanvasPolyline.Destroy;
     269begin
     270  FreeAndNil(Brush);
     271  FreeAndNil(Pen);
     272  inherited;
     273end;
    162274
    163275{ TCanvasPie }
     
    304416destructor TCanvasPolygon.Destroy;
    305417begin
    306   Brush.Free;
    307   Pen.Free;
     418  FreeAndNil(Brush);
     419  FreeAndNil(Pen);
    308420  inherited;
    309421end;
     
    511623    APoints[I] := Points[I];
    512624  DoPolygon(APoints);
     625end;
     626
     627procedure TMetaCanvas.Polyline(Points: PPoint; NumPts: Integer);
     628var
     629  APoints: array of TPoint;
     630  I: Integer;
     631begin
     632  APoints := nil;
     633  SetLength(APoints, NumPts);
     634  for I := 0 to High(APoints) do
     635    APoints[I] := Points[I];
     636  DoPolyline(APoints);
     637end;
     638
     639procedure TMetaCanvas.PolyBezier(Points: PPoint; NumPts: Integer;
     640  Filled: Boolean; Continuous: Boolean);
     641begin
     642  DoPolyBezier(Points, NumPts, Filled, Continuous);
    513643end;
    514644
     
    580710end;
    581711
     712procedure TMetaCanvas.DoPolyline(const Points: array of TPoint);
     713var
     714  NewObj: TCanvasPolyline;
     715  I: Integer;
     716begin
     717  NewObj := TCanvasPolyline.Create;
     718  NewObj.Brush.Assign(Brush);
     719  NewObj.Pen.Assign(Pen);
     720  SetLength(NewObj.Points, Length(Points));
     721  for I := 0 to High(Points) do
     722    NewObj.Points[I] := Points[I];
     723  Objects.Add(NewObj);
     724end;
     725
     726procedure TMetaCanvas.DoPolyBezier(Points: PPoint; NumPts: Integer;
     727  Filled: Boolean; Continuous: Boolean);
     728var
     729  NewObj: TCanvasPolyBezier;
     730  I: Integer;
     731begin
     732  NewObj := TCanvasPolyBezier.Create;
     733  NewObj.Brush.Assign(Brush);
     734  NewObj.Pen.Assign(Pen);
     735  SetLength(NewObj.Points, NumPts);
     736  for I := 0 to High(NewObj.Points) do
     737    NewObj.Points[I] := Points[I];
     738  Objects.Add(NewObj);
     739end;
     740
    582741procedure TMetaCanvas.FillRect(const ARect: TRect);
    583742begin
     
    664823
    665824end.
    666 
  • trunk/Packages/Common/PersistentForm.pas

    r29 r30  
    1 unit UPersistentForm;
    2 
    3 // Date: 2020-11-26
     1unit PersistentForm;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls,
     6  Classes, SysUtils, Forms, RegistryEx, LCLIntf, Registry, Controls, ComCtrls,
    97  ExtCtrls, LCLType;
    108
     
    2119    procedure SaveControl(Control: TControl);
    2220  public
    23     FormNormalSize: TRect;
    2421    FormRestoredSize: TRect;
    2522    FormWindowState: TWindowState;
     
    155152    RootKey := RegistryContext.RootKey;
    156153    OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True);
    157     // Normal size
    158     FormNormalSize.Left := ReadIntegerWithDefault('NormalLeft', FormNormalSize.Left);
    159     FormNormalSize.Top := ReadIntegerWithDefault('NormalTop', FormNormalSize.Top);
    160     FormNormalSize.Right := ReadIntegerWithDefault('NormalWidth', FormNormalSize.Right - FormNormalSize.Left)
    161       + FormNormalSize.Left;
    162     FormNormalSize.Bottom := ReadIntegerWithDefault('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top)
    163       + FormNormalSize.Top;
     154
    164155    // Restored size
    165156    FormRestoredSize.Left := ReadIntegerWithDefault('RestoredLeft', FormRestoredSize.Left);
     
    169160    FormRestoredSize.Bottom := ReadIntegerWithDefault('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top)
    170161      + FormRestoredSize.Top;
     162
    171163    // Other state
    172164    FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState)));
     
    183175    RootKey := RegistryContext.RootKey;
    184176    OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True);
    185     // Normal state
    186     WriteInteger('NormalWidth', FormNormalSize.Right - FormNormalSize.Left);
    187     WriteInteger('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top);
    188     WriteInteger('NormalTop', FormNormalSize.Top);
    189     WriteInteger('NormalLeft', FormNormalSize.Left);
    190     // Restored state
     177
     178    // Restored size
    191179    WriteInteger('RestoredWidth', FormRestoredSize.Right - FormRestoredSize.Left);
    192180    WriteInteger('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top);
    193181    WriteInteger('RestoredTop', FormRestoredSize.Top);
    194182    WriteInteger('RestoredLeft', FormRestoredSize.Left);
     183
    195184    // Other state
    196185    WriteInteger('WindowState', Integer(FormWindowState));
     
    257246begin
    258247  Self.Form := Form;
     248
    259249  // Set default
    260   FormNormalSize := Bounds((Screen.Width - Form.Width) div 2,
    261     (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
    262250  FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2,
    263251    (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
     
    267255  LoadFromRegistry(RegistryContext);
    268256
    269   if not EqualRect(FormNormalSize, FormRestoredSize) or
    270     DefaultMaximized then begin
     257  if (FormWindowState = wsMaximized) or DefaultMaximized then begin
    271258    // Restore to maximized state
    272259    Form.WindowState := wsNormal;
     
    277264    // Restore to normal state
    278265    Form.WindowState := wsNormal;
    279     if FEntireVisible then FormNormalSize := CheckEntireVisible(FormNormalSize)
     266    if FEntireVisible then FormRestoredSize := CheckEntireVisible(FormRestoredSize)
    280267      else if FMinVisiblePart > 0 then
    281     FormNormalSize := CheckPartVisible(FormNormalSize, FMinVisiblePart);
    282     if not EqualRect(FormNormalSize, Form.BoundsRect) then
    283       Form.BoundsRect := FormNormalSize;
     268        FormRestoredSize := CheckPartVisible(FormRestoredSize, FMinVisiblePart);
     269    if not EqualRect(FormRestoredSize, Form.BoundsRect) then
     270      Form.BoundsRect := FormRestoredSize;
    284271  end;
    285272  if FormFullScreen then SetFullScreen(True);
     
    290277begin
    291278  Self.Form := Form;
    292   FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
    293   if not FormFullScreen then
    294     FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    295       Form.RestoredHeight);
    296   FormWindowState := Form.WindowState;
     279  if not FormFullScreen then begin
     280    FormWindowState := Form.WindowState;
     281    if FormWindowState = wsMaximized then begin
     282      FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     283        Form.RestoredHeight);
     284    end else
     285    if FormWindowState = wsNormal then begin
     286      FormRestoredSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
     287    end;
     288  end;
    297289  SaveToRegistry(RegistryContext);
    298290  SaveControl(Form);
     
    312304  if State then begin
    313305    FormFullScreen := True;
    314     FormNormalSize := Form.BoundsRect;
    315     FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    316       Form.RestoredHeight);
     306    if Form.WindowState = wsMaximized then begin
     307      FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     308        Form.RestoredHeight);
     309    end else
     310    if Form.WindowState = wsNormal then begin
     311      FormRestoredSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
     312    end;
    317313    FormWindowState := Form.WindowState;
     314    Form.WindowState := wsMaximized;
     315    Form.WindowState := wsNormal;
    318316    ShowWindow(Form.Handle, SW_SHOWFULLSCREEN);
    319317    {$IFDEF WINDOWS}
     
    327325    ShowWindow(Form.Handle, SW_SHOWNORMAL);
    328326    if FormWindowState = wsNormal then begin
    329       Form.BoundsRect := FormNormalSize;
     327      Form.WindowState := wsNormal;
     328      Form.BoundsRect := FormRestoredSize;
    330329    end else
    331330    if FormWindowState = wsMaximized then begin
     
    337336
    338337end.
    339 
  • trunk/Packages/Common/PixelPointer.pas

    r29 r30  
    1 unit UPixelPointer;
     1unit PixelPointer;
    22
    33interface
    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
     20    class function CreateRGB(R, G, B: Byte): TPixel32; static;
     21    class function CreateRGBA(R, G, B, A: Byte): TPixel32; static;
    1922    property RGB: Cardinal read GetRGB write SetRGB;
    2023    case Integer of
    2124      0: (B, G, R, A: Byte);
    2225      1: (ARGB: TColor32);
    23       2: (Planes: array[0..3] of Byte);
     26      2: (Planes: TColor32Planes);
    2427      3: (Components: array[TColor32Component] of Byte);
    2528  end;
     
    2932
    3033  TPixelPointer = record
     34  private
     35    function GetPixelARGB: TColor32; inline;
     36    function GetPixelB: Byte; inline;
     37    function GetPixelG: Byte; inline;
     38    function GetPixelPlane(Index: Byte): Byte; inline;
     39    function GetPixelR: Byte; inline;
     40    function GetPixelA: Byte; inline;
     41    function GetPixelPlanes: TColor32Planes;
     42    function GetPixelRGB: Cardinal; inline;
     43    procedure SetPixelARGB(Value: TColor32); inline;
     44    procedure SetPixelB(Value: Byte); inline;
     45    procedure SetPixelG(Value: Byte); inline;
     46    procedure SetPixelPlane(Index: Byte; AValue: Byte); inline;
     47    procedure SetPixelR(Value: Byte); inline;
     48    procedure SetPixelA(Value: Byte); inline;
     49    procedure SetPixelRGB(Value: Cardinal); inline;
     50  public
    3151    Base: PPixel32;
    3252    Pixel: PPixel32;
     
    3555    BytesPerPixel: Integer;
    3656    BytesPerLine: Integer;
     57    Data: PPixel32;
     58    Width: Integer;
     59    Height: Integer;
    3760    procedure NextLine; inline; // Move pointer to start of next line
    3861    procedure PreviousLine; inline; // Move pointer to start of previous line
     
    4164    procedure SetXY(X, Y: Integer); inline; // Set pixel position relative to base
    4265    procedure SetX(X: Integer); inline; // Set horizontal pixel position relative to base
     66    procedure CheckRange; inline; // Check if current pixel position is not out of range
     67    function PosValid: Boolean;
     68    class function Create(Bitmap: TRasterImage; BaseX: Integer = 0; BaseY: Integer = 0): TPixelPointer; static;
     69    property PixelARGB: TColor32 read GetPixelARGB write SetPixelARGB;
     70    property PixelRGB: Cardinal read GetPixelRGB write SetPixelRGB;
     71    property PixelB: Byte read GetPixelB write SetPixelB;
     72    property PixelG: Byte read GetPixelG write SetPixelG;
     73    property PixelR: Byte read GetPixelR write SetPixelR;
     74    property PixelA: Byte read GetPixelA write SetPixelA;
     75    property PixelPlane[Index: Byte]: Byte read GetPixelPlane write SetPixelPlane;
    4376  end;
    4477  PPixelPointer = ^TPixelPointer;
    4578
    46   function PixelPointer(Bitmap: TRasterImage; BaseX: Integer = 0; BaseY: Integer = 0): TPixelPointer; inline;
    4779  function SwapRedBlue(Color: TColor32): TColor32;
    4880  procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect; SrcBitmap: TRasterImage; SrcPos: TPoint);
     
    6395implementation
    6496
     97resourcestring
     98  SOutOfRange = 'Pixel pointer out of range [X: %d, Y: %d, Width: %d, Height: %d]';
     99  SWrongBitmapSize = 'Wrong bitmap size [width: %d, height: %d]';
     100
    65101{ TPixel32 }
    66102
     
    70106end;
    71107
     108class function TPixel32.CreateRGB(R, G, B: Byte): TPixel32;
     109begin
     110  Result.R := R;
     111  Result.G := G;
     112  Result.B := B;
     113  Result.A := 0;
     114end;
     115
     116class function TPixel32.CreateRGBA(R, G, B, A: Byte): TPixel32;
     117begin
     118  Result.R := R;
     119  Result.G := G;
     120  Result.B := B;
     121  Result.A := A;
     122end;
     123
    72124procedure TPixel32.SetRGB(AValue: Cardinal);
    73125begin
    74   R := (AValue shr 16) and $ff;
    75   G := (AValue shr 8) and $ff;
    76   B := (AValue shr 0) and $ff;
     126  ARGB := (ARGB and $ff000000) or (AValue and $ffffff);
    77127end;
    78128
     
    112162end;
    113163
     164procedure TPixelPointer.CheckRange;
     165{$IFOPT R+}
     166var
     167  X: Integer;
     168  Y: Integer;
     169{$ENDIF}
     170begin
     171  {$IFOPT R+}
     172  if (PByte(Pixel) < PByte(Data)) or
     173    (PByte(Pixel) >= PByte(Data) + Height * BytesPerLine) then begin
     174    X := PByte(Pixel) - PByte(Data);
     175    Y := Floor(X / BytesPerLine);
     176    X := X - Y * BytesPerLine;
     177    X := Floor(X / BytesPerPixel);
     178    raise Exception.Create(Format(SOutOfRange, [X, Y, Width, Height]));
     179  end;
     180  {$ENDIF}
     181end;
     182
     183function TPixelPointer.PosValid: Boolean;
     184begin
     185  Result := not ((PByte(Pixel) < PByte(Data)) or
     186    (PByte(Pixel) >= PByte(Data) + Height * BytesPerLine));
     187end;
     188
     189function TPixelPointer.GetPixelPlanes: TColor32Planes;
     190begin
     191  CheckRange;
     192  Result := Pixel^.Planes;
     193end;
     194
     195function TPixelPointer.GetPixelRGB: Cardinal;
     196begin
     197  CheckRange;
     198  Result := Pixel^.RGB;
     199end;
     200
     201procedure TPixelPointer.SetPixelARGB(Value: TColor32);
     202begin
     203  CheckRange;
     204  Pixel^.ARGB := Value;
     205end;
     206
     207procedure TPixelPointer.SetPixelB(Value: Byte);
     208begin
     209  CheckRange;
     210  Pixel^.B := Value;
     211end;
     212
     213procedure TPixelPointer.SetPixelG(Value: Byte);
     214begin
     215  CheckRange;
     216  Pixel^.G := Value;
     217end;
     218
     219procedure TPixelPointer.SetPixelPlane(Index: Byte; AValue: Byte);
     220begin
     221  CheckRange;
     222  Pixel^.Planes[Index] := AValue;
     223end;
     224
     225procedure TPixelPointer.SetPixelR(Value: Byte);
     226begin
     227  CheckRange;
     228  Pixel^.R := Value;
     229end;
     230
     231procedure TPixelPointer.SetPixelA(Value: Byte);
     232begin
     233  CheckRange;
     234  Pixel^.A := Value;
     235end;
     236
     237function TPixelPointer.GetPixelARGB: TColor32;
     238begin
     239  CheckRange;
     240  Result := Pixel^.ARGB;
     241end;
     242
     243function TPixelPointer.GetPixelB: Byte;
     244begin
     245  CheckRange;
     246  Result := Pixel^.B;
     247end;
     248
     249function TPixelPointer.GetPixelG: Byte;
     250begin
     251  CheckRange;
     252  Result := Pixel^.G;
     253end;
     254
     255function TPixelPointer.GetPixelPlane(Index: Byte): Byte;
     256begin
     257  CheckRange;
     258  Result := Pixel^.Planes[Index];
     259end;
     260
     261function TPixelPointer.GetPixelR: Byte;
     262begin
     263  CheckRange;
     264  Result := Pixel^.R;
     265end;
     266
     267function TPixelPointer.GetPixelA: Byte;
     268begin
     269  CheckRange;
     270  Result := Pixel^.A;
     271end;
     272
     273procedure TPixelPointer.SetPixelRGB(Value: Cardinal);
     274begin
     275  CheckRange;
     276  Pixel^.RGB := Value;
     277end;
     278
    114279procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect;
    115280  SrcBitmap: TRasterImage; SrcPos: TPoint);
     
    120285  SrcBitmap.BeginUpdate(True);
    121286  DstBitmap.BeginUpdate(True);
    122   SrcPtr := PixelPointer(SrcBitmap, SrcPos.X, SrcPos.Y);
    123   DstPtr := PixelPointer(DstBitmap, DstRect.Left, DstRect.Top);
     287  SrcPtr := TPixelPointer.Create(SrcBitmap, SrcPos.X, SrcPos.Y);
     288  DstPtr := TPixelPointer.Create(DstBitmap, DstRect.Left, DstRect.Top);
    124289  for Y := 0 to DstRect.Height - 1 do begin
    125290    for X := 0 to DstRect.Width - 1 do begin
    126       DstPtr.Pixel^.ARGB := SrcPtr.Pixel^.ARGB;
     291      DstPtr.PixelARGB := SrcPtr.PixelARGB;
    127292      SrcPtr.NextPixel;
    128293      DstPtr.NextPixel;
     
    150315  SrcBitmap.BeginUpdate(True);
    151316  DstBitmap.BeginUpdate(True);
    152   SrcPtr := PixelPointer(SrcBitmap, SrcRect.Left, SrcRect.Top);
    153   DstPtr := PixelPointer(DstBitmap, DstRect.Left, DstRect.Top);
     317  SrcPtr := TPixelPointer.Create(SrcBitmap, SrcRect.Left, SrcRect.Top);
     318  DstPtr := TPixelPointer.Create(DstBitmap, DstRect.Left, DstRect.Top);
    154319  for Y := 0 to DstRect.Height - 1 do begin
    155320    for X := 0 to DstRect.Width - 1 do begin
     
    160325      DstPtr.SetXY(X, Y);
    161326      SrcPtr.SetXY(R.Left, R.Top);
    162       C := SrcPtr.Pixel^.ARGB;
    163       DstPtr.Pixel^.ARGB := C;
     327      C := SrcPtr.PixelARGB;
     328      DstPtr.PixelARGB := C;
    164329      for YY := 0 to R.Height - 1 do begin
    165330        for XX := 0 to R.Width - 1 do begin
    166           DstPtr.Pixel^.ARGB := C;
     331          DstPtr.PixelARGB := C;
    167332          DstPtr.NextPixel;
    168333        end;
     
    181346begin
    182347  Bitmap.BeginUpdate(True);
    183   Ptr := PixelPointer(Bitmap);
     348  Ptr := TPixelPointer.Create(Bitmap);
    184349  for Y := 0 to Bitmap.Height - 1 do begin
    185350    for X := 0 to Bitmap.Width - 1 do begin
    186       Ptr.Pixel^.ARGB := Color;
     351      Ptr.PixelARGB := Color;
    187352      Ptr.NextPixel;
    188353    end;
     
    198363begin
    199364  Bitmap.BeginUpdate(True);
    200   Ptr := PixelPointer(Bitmap, Rect.Left, Rect.Top);
     365  Ptr := TPixelPointer.Create(Bitmap, Rect.Left, Rect.Top);
    201366  for Y := 0 to Rect.Height - 1 do begin
    202367    for X := 0 to Rect.Width - 1 do begin
    203       Ptr.Pixel^.ARGB := Color;
     368      Ptr.PixelARGB := Color;
    204369      Ptr.NextPixel;
    205370    end;
     
    215380begin
    216381  Bitmap.BeginUpdate(True);
    217   Ptr := PixelPointer(Bitmap);
     382  Ptr := TPixelPointer.Create(Bitmap);
    218383  for Y := 0 to Bitmap.Height - 1 do begin
    219384    for X := 0 to Bitmap.Width - 1 do begin
    220       Ptr.Pixel^.ARGB := SwapRedBlue(Ptr.Pixel^.ARGB);
     385      Ptr.PixelARGB := SwapRedBlue(Ptr.PixelARGB);
    221386      Ptr.NextPixel;
    222387    end;
     
    232397begin
    233398  Bitmap.BeginUpdate(True);
    234   Ptr := PixelPointer(Bitmap);
     399  Ptr := TPixelPointer.Create(Bitmap);
    235400  for Y := 0 to Bitmap.Height - 1 do begin
    236401    for X := 0 to Bitmap.Width - 1 do begin
    237       Ptr.Pixel^.ARGB := Ptr.Pixel^.ARGB xor $ffffff;
     402      Ptr.PixelARGB := Ptr.PixelARGB xor $ffffff;
    238403      Ptr.NextPixel;
    239404    end;
     
    252417  Pixel := Color32ToPixel32(Color);
    253418  Bitmap.BeginUpdate(True);
    254   Ptr := PixelPointer(Bitmap);
     419  Ptr := TPixelPointer.Create(Bitmap);
    255420  for Y := 0 to Bitmap.Height - 1 do begin
    256421    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);
     422      A := Ptr.PixelA; //(Ptr.PixelA + Pixel.A) shr 1;
     423      R := (Ptr.PixelR + Pixel.R) shr 1;
     424      G := (Ptr.PixelG + Pixel.G) shr 1;
     425      B := (Ptr.PixelB + Pixel.B) shr 1;
     426      Ptr.PixelARGB := Color32(A, R, G, B);
    262427      Ptr.NextPixel;
    263428    end;
     
    295460end;
    296461
    297 function PixelPointer(Bitmap: TRasterImage; BaseX: Integer;
     462class function TPixelPointer.Create(Bitmap: TRasterImage; BaseX: Integer;
    298463  BaseY: Integer): TPixelPointer;
    299464begin
     465  Result.Width := Bitmap.Width;
     466  Result.Height := Bitmap.Height;
     467  if (Result.Width < 0) or (Result.Height < 0) then
     468    raise Exception.Create(Format(SWrongBitmapSize, [Result.Width, Result.Height]));
    300469  Result.BytesPerLine := Bitmap.RawImage.Description.BytesPerLine;
    301470  Result.BytesPerPixel := Bitmap.RawImage.Description.BitsPerPixel shr 3;
     471  Result.Data := PPixel32(Bitmap.RawImage.Data);
    302472  Result.Base := PPixel32(Bitmap.RawImage.Data + BaseX * Result.BytesPerPixel +
    303473    BaseY * Result.BytesPerLine);
     
    310480end;
    311481
    312 
    313482end.
    314 
  • trunk/Packages/Common/Pool.pas

    r29 r30  
    1 unit UPool;
     1unit Pool;
    22
    33interface
    44
    55uses
    6   Classes, SysUtils, syncobjs, Generics.Collections, UThreading;
     6  Classes, SysUtils, syncobjs, Generics.Collections, Threading;
    77
    88type
     
    5757  try
    5858    Lock.Acquire;
    59     inherited SetTotalCount(AValue);
     59    inherited;
    6060  finally
    6161    Lock.Release;
     
    6767  try
    6868    Lock.Acquire;
    69     Result := inherited GetUsedCount;
     69    Result := inherited;
    7070  finally
    7171    Lock.Release;
     
    8888      end;
    8989    end;
    90     Result := inherited Acquire;
     90    Result := inherited;
    9191  finally
    9292    Lock.Release;
     
    9898  try
    9999    Lock.Acquire;
    100     inherited Release(Item);
     100    inherited;
    101101  finally
    102102    Lock.Release;
     
    113113begin
    114114  TotalCount := 0;
    115   Lock.Free;
     115  FreeAndNil(Lock);
    116116  inherited;
    117117end;
     
    199199
    200200end.
    201 
  • trunk/Packages/Common/PrefixMultiplier.pas

    r29 r30  
    1 unit UPrefixMultiplier;
     1unit PrefixMultiplier;
    22
    33// Date: 2010-06-01
     
    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),
     
    124124
    125125end.
    126 
  • trunk/Packages/Common/RegistryEx.pas

    r29 r30  
    1 unit URegistry;
     1unit RegistryEx;
    22
    33interface
     
    3838    function DeleteKeyRecursive(const Key: string): Boolean;
    3939    function OpenKey(const Key: string; CanCreate: Boolean): Boolean;
    40     function GetValue(const Name: string; const DefaultValue: Integer): Integer; overload;
    41     function GetValue(const Name: string; const DefaultValue: string): string; overload;
    42     function GetValue(const Name: string; const DefaultValue: Boolean): Boolean; overload;
    43     function GetValue(const Name: string; const DefaultValue: Double): Double; overload;
    44     function GetValue(const Name: string; const DefaultValue: Char): Char; overload;
    45     procedure SetValue(const Name: string; const Value: Integer); overload;
    46     procedure SetValue(const Name: string; const Value: string); overload;
    47     procedure SetValue(const Name: string; const Value: Boolean); overload;
    48     procedure SetValue(const Name: string; const Value: Double); overload;
    49     procedure SetValue(const Name: string; const Value: Char); overload;
    5040    property CurrentContext: TRegistryContext read GetCurrentContext write SetCurrentContext;
    5141  end;
     
    120110end;
    121111
    122 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Integer
    123   ): Integer;
    124 begin
    125   Result := ReadIntegerWithDefault(Name, DefaultValue);
    126 end;
    127 
    128 function TRegistryEx.GetValue(const Name: string; const DefaultValue: string
    129   ): string;
    130 begin
    131   Result := ReadStringWithDefault(Name, DefaultValue);
    132 end;
    133 
    134 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Boolean
    135   ): Boolean;
    136 begin
    137   Result := ReadBoolWithDefault(Name, DefaultValue);
    138 end;
    139 
    140 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Double
    141   ): Double;
    142 begin
    143   Result := ReadFloatWithDefault(Name, DefaultValue);
    144 end;
    145 
    146 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Char
    147   ): Char;
    148 begin
    149   Result := ReadCharWithDefault(Name, DefaultValue);
    150 end;
    151 
    152 procedure TRegistryEx.SetValue(const Name: string; const Value: Integer);
    153 begin
    154   WriteInteger(Name, Value);
    155 end;
    156 
    157 procedure TRegistryEx.SetValue(const Name: string; const Value: string);
    158 begin
    159   WriteString(Name, Value);
    160 end;
    161 
    162 procedure TRegistryEx.SetValue(const Name: string; const Value: Boolean);
    163 begin
    164   WriteBool(Name, Value);
    165 end;
    166 
    167 procedure TRegistryEx.SetValue(const Name: string; const Value: Double);
    168 begin
    169   WriteFloat(Name, Value);
    170 end;
    171 
    172 procedure TRegistryEx.SetValue(const Name: string; const Value: Char);
    173 begin
    174   WriteChar(Name, Value);
    175 end;
    176 
    177112function TRegistryEx.DeleteKeyRecursive(const Key: string): Boolean;
    178113var
     
    198133  //CloseKey;
    199134  {$ENDIF}
    200   Result := inherited OpenKey(Key, CanCreate);
     135  Result := inherited;
    201136end;
    202137
  • trunk/Packages/Common/ResetableThread.pas

    r29 r30  
    1 unit UResetableThread;
     1unit ResetableThread;
    22
    33interface
    44
    55uses
    6   Classes, SysUtils, syncobjs, UThreading, UPool;
     6  Classes, SysUtils, syncobjs, Threading, Pool;
    77
    88type
     
    295295
    296296end.
    297 
  • trunk/Packages/Common/ScaleDPI.pas

    r29 r30  
    1 unit UScaleDPI;
     1unit ScaleDPI;
    22
    33{ See: http://wiki.lazarus.freepascal.org/High_DPI }
  • trunk/Packages/Common/StopWatch.pas

    r25 r30  
    1313  TStopWatch = class
    1414  private
    15     fFrequency : TLargeInteger;
    16     fIsRunning: Boolean;
    17     fIsHighResolution: Boolean;
    18     fStartCount, fStopCount : TLargeInteger;
    19     procedure SetTickStamp(var lInt : TLargeInteger) ;
     15    FFrequency: TLargeInteger;
     16    FIsRunning: Boolean;
     17    FIsHighResolution: Boolean;
     18    FStartCount, fStopCount: TLargeInteger;
     19    procedure SetTickStamp(var Value: TLargeInteger);
    2020    function GetElapsedTicks: TLargeInteger;
    2121    function GetElapsedMiliseconds: TLargeInteger;
    2222    function GetElapsed: string;
    2323  public
    24     constructor Create(const startOnCreate : Boolean = False) ;
     24    constructor Create(const StartOnCreate: Boolean = False) ;
    2525    procedure Start;
    2626    procedure Stop;
    27     property IsHighResolution : Boolean read fIsHighResolution;
    28     property ElapsedTicks : TLargeInteger read GetElapsedTicks;
    29     property ElapsedMiliseconds : TLargeInteger read GetElapsedMiliseconds;
    30     property Elapsed : string read GetElapsed;
    31     property IsRunning : Boolean read fIsRunning;
     27    property IsHighResolution: Boolean read FIsHighResolution;
     28    property ElapsedTicks: TLargeInteger read GetElapsedTicks;
     29    property ElapsedMiliseconds: TLargeInteger read GetElapsedMiliseconds;
     30    property Elapsed: string read GetElapsed;
     31    property IsRunning: Boolean read FIsRunning;
    3232  end;
    3333
     
    3535implementation
    3636
    37 constructor TStopWatch.Create(const startOnCreate : boolean = false) ;
     37constructor TStopWatch.Create(const StartOnCreate: Boolean = False);
    3838begin
    39   inherited Create;
    40 
    41   fIsRunning := False;
     39  FIsRunning := False;
    4240
    4341  {$IFDEF WINDOWS}
    4442  fIsHighResolution := QueryPerformanceFrequency(fFrequency) ;
    4543  {$ELSE}
    46   fIsHighResolution := False;
     44  FIsHighResolution := False;
    4745  {$ENDIF}
    48   if NOT fIsHighResolution then fFrequency := MSecsPerSec;
     46  if NOT FIsHighResolution then FFrequency := MSecsPerSec;
    4947
    5048  if StartOnCreate then Start;
     
    5351function TStopWatch.GetElapsedTicks: TLargeInteger;
    5452begin
    55   Result := fStopCount - fStartCount;
     53  Result := FStopCount - FStartCount;
    5654end;
    5755
    58 procedure TStopWatch.SetTickStamp(var lInt : TLargeInteger) ;
     56procedure TStopWatch.SetTickStamp(var Value: TLargeInteger);
    5957begin
    60   if fIsHighResolution then
     58  if FIsHighResolution then
    6159    {$IFDEF Windows}
    62     QueryPerformanceCounter(lInt)
     60    QueryPerformanceCounter(Value)
    6361    {$ELSE}
    6462    {$ENDIF}
    6563  else
    66     lInt := MilliSecondOf(Now) ;
     64    Value := MilliSecondOf(Now);
    6765end;
    6866
    6967function TStopWatch.GetElapsed: string;
    7068var
    71   dt: TDateTime;
     69  Elapsed: TDateTime;
    7270begin
    73   dt := ElapsedMiliseconds / MSecsPerSec / SecsPerDay;
    74   result := Format('%d days, %s', [Trunc(dt), FormatDateTime('hh:nn:ss.z', Frac(dt))]) ;
     71  Elapsed := ElapsedMiliseconds / MSecsPerSec / SecsPerDay;
     72  Result := Format('%d days, %s', [Trunc(Elapsed), FormatDateTime('hh:nn:ss.z', Frac(Elapsed))]) ;
    7573end;
    7674
    7775function TStopWatch.GetElapsedMiliseconds: TLargeInteger;
    7876begin
    79   Result := (MSecsPerSec * (fStopCount - fStartCount)) div fFrequency;
     77  Result := (MSecsPerSec * (fStopCount - FStartCount)) div FFrequency;
    8078end;
    8179
    8280procedure TStopWatch.Start;
    8381begin
    84   SetTickStamp(fStartCount);
    85   fIsRunning := True;
     82  SetTickStamp(FStartCount);
     83  FIsRunning := True;
    8684end;
    8785
    8886procedure TStopWatch.Stop;
    8987begin
    90   SetTickStamp(fStopCount);
    91   fIsRunning := False;
     88  SetTickStamp(FStopCount);
     89  FIsRunning := False;
    9290end;
    9391
  • trunk/Packages/Common/StringTable.pas

    r29 r30  
    1 unit UStringTable;
     1unit StringTable;
    22
    33interface
     
    6969end;
    7070
    71 
    7271end.
    73 
  • trunk/Packages/Common/SyncCounter.pas

    r29 r30  
    1 unit USyncCounter;
     1unit SyncCounter;
    22
    33interface
     
    7878
    7979end.
    80 
  • trunk/Packages/Common/TestCase.pas

    r29 r30  
    1 unit UTestCase;
     1unit TestCase;
    22
    33interface
     
    127127
    128128end.
    129 
  • trunk/Packages/Common/Theme.pas

    r29 r30  
    1 unit UTheme;
     1unit Theme;
    22
    33interface
     
    186186end;
    187187
    188 
    189188end.
  • trunk/Packages/Common/Threading.pas

    r29 r30  
    1 unit UThreading;
     1unit Threading;
    22
    33interface
     
    188188constructor TThreadList.Create;
    189189begin
    190   inherited Create;
     190  inherited;
    191191end;
    192192
     
    366366
    367367end.
    368 
  • trunk/Packages/Common/Translator.pas

    r29 r30  
    1 unit UTranslator;
     1unit Translator;
    22
    33interface
     
    55uses
    66  Classes, SysUtils, Forms, ExtCtrls, Controls, LazFileUtils, LazUTF8,
    7   Translations, TypInfo, Dialogs, FileUtil, LCLProc, ULanguages, LCLType,
     7  Translations, TypInfo, Dialogs, FileUtil, LCLProc, Languages, LCLType,
    88  LCLVersion, Generics.Collections;
    99
     
    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
     
    569597end;
    570598
    571 
    572599end.
    573 
  • trunk/Packages/Common/URI.pas

    r29 r30  
    1 unit UURI;
     1unit URI;
    22
    33// Date: 2011-04-04
     
    347347
    348348end.
    349 
  • trunk/Packages/Common/XML.pas

    r29 r30  
    1 unit UXMLUtils;
     1unit XML;
    22
    33interface
     
    1414procedure WriteString(Node: TDOMNode; Name: string; Value: string);
    1515procedure WriteDateTime(Node: TDOMNode; Name: string; Value: TDateTime);
     16procedure WriteDouble(Node: TDOMNode; Name: string; Value: Double);
    1617function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer;
    1718function ReadInt64(Node: TDOMNode; Name: string; DefaultValue: Int64): Int64;
     
    1920function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string;
    2021function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime;
     22function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double;
    2123procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
    2224
    2325
    2426implementation
     27
     28function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double;
     29var
     30  NewNode: TDOMNode;
     31begin
     32  Result := DefaultValue;
     33  NewNode := Node.FindNode(DOMString(Name));
     34  if Assigned(NewNode) then
     35    Result := StrToFloat(string(NewNode.TextContent));
     36end;
    2537
    2638procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
     
    200212end;
    201213
     214procedure WriteDouble(Node: TDOMNode; Name: string; Value: Double);
     215var
     216  NewNode: TDOMNode;
     217begin
     218  NewNode := Node.OwnerDocument.CreateElement(DOMString(Name));
     219  NewNode.TextContent := DOMString(FloatToStr(Value));
     220  Node.AppendChild(NewNode);
     221end;
     222
    202223function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer;
    203224var
     
    252273
    253274end.
    254 
  • trunk/Packages/Database/USqlDatabase.pas

    r26 r30  
    66
    77uses
    8   SysUtils, Classes, Dialogs, mysql50, TypInfo, UGenerics, Generics.Collections;
     8  SysUtils, Classes, Dialogs, mysql50, TypInfo, Generics, Generics.Collections;
    99
    1010type
  • trunk/UCore.pas

    r28 r30  
    44
    55uses
    6   Classes, SysUtils, FileUtil, Controls, ActnList, UDatabase, UTranslator,
    7   UApplicationInfo, UPersistentForm, Forms, URegistry, UScaleDPI;
     6  Classes, SysUtils, FileUtil, Controls, ActnList, UDatabase, Translator,
     7  ApplicationInfo, PersistentForm, Forms, RegistryEx, ScaleDPI;
    88
    99type
     
    5555
    5656uses
    57   UFormTables, UFormConnect, UAboutDialog, UFormDatabases, UFormPreferences,
     57  UFormTables, UFormConnect, FormAbout, UFormDatabases, UFormPreferences,
    5858  UFormMain;
    5959
     
    100100procedure TCore.AAboutExecute(Sender: TObject);
    101101begin
    102   with TAboutDialog.Create(nil) do
     102  with TFormAbout.Create(nil) do
    103103  try
    104104    ApplicationInfo := ApplicationInfo1;
    105     Show;
     105    ShowModal;
    106106  finally
    107107    Free;
     
    151151  try
    152152    CurrentContext := TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey);
    153     Preferences.RememberDatabase := GetValue('RememberDatabase', True);
    154     Preferences.LastDatabaseName := GetValue('LastDatabaseName', '');
     153    Preferences.RememberDatabase := ReadBoolWithDefault('RememberDatabase', True);
     154    Preferences.LastDatabaseName := ReadStringWithDefault('LastDatabaseName', '');
    155155    Translator1.Language := Translator1.Languages.SearchByCode(
    156       GetValue('Language', ''));
     156      ReadStringWithDefault('Language', ''));
    157157  finally
    158158    Free;
     
    166166  try
    167167    CurrentContext := TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey);
    168     SetValue('RememberDatabase', Preferences.RememberDatabase);
    169     SetValue('LastDatabaseName', Preferences.LastDatabaseName);
    170     SetValue('Language', Translator1.Language.Code);
     168    WriteBool('RememberDatabase', Preferences.RememberDatabase);
     169    WriteString('LastDatabaseName', Preferences.LastDatabaseName);
     170    WriteString('Language', Translator1.Language.Code);
    171171  finally
    172172    Free;
  • trunk/UDatabase.pas

    r29 r30  
    44
    55uses
    6   Classes, SysUtils, ExtCtrls, Dialogs, USqlDatabase, URegistry, UGenerics,
     6  Classes, SysUtils, ExtCtrls, Dialogs, USqlDatabase, RegistryEx, Generics,
    77  Generics.Collections;
    88
     
    347347  try
    348348    CurrentContext := Context;
    349     Count := GetValue('Count', 0);
     349    Count := ReadIntegerWithDefault('Count', 0);
    350350    for I := 0 to Count - 1 do begin
    351351      OpenKey(Context.Key + '\Item' + IntToStr(I), True);
    352       ClientType := DbManager.ClientTypes.FindByName(GetValue('ClientType', ''));
     352      ClientType := DbManager.ClientTypes.FindByName(ReadStringWithDefault('ClientType', ''));
    353353      if not Assigned(ClientType) and (DbManager.ClientTypes.Count > 0) then
    354354        ClientType := TDbClientType(DbManager.ClientTypes[0]);
     
    357357      ConnectProfile.DbManager := DbManager;
    358358      ConnectProfile.ClientType := ClientType;
    359       ConnectProfile.Name := GetValue('Name', '');
    360       ConnectProfile.Params.ConnectionString := GetValue('ConnectionString', '');
     359      ConnectProfile.Name := ReadStringWithDefault('Name', '');
     360      ConnectProfile.Params.ConnectionString := ReadStringWithDefault('ConnectionString', '');
    361361      Items[I] := ConnectProfile;
    362362    end;
     
    373373  try
    374374    CurrentContext := Context;
    375     SetValue('Count', Count);
     375    ReadIntegerWithDefault('Count', Count);
    376376    for I := 0 to Count - 1 do begin
    377377      OpenKey(Context.Key + '\Item' + IntToStr(I), True);
    378       SetValue('Name', Items[I].Name);
    379       SetValue('ConnectionString', Items[I].Params.ConnectionString);
    380       SetValue('ClientType', Items[I].ClientType.Name);
     378      WriteString('Name', Items[I].Name);
     379      WriteString('ConnectionString', Items[I].Params.ConnectionString);
     380      WriteString('ClientType', Items[I].ClientType.Name);
    381381    end;
    382382  finally
  • trunk/UHtmlClasses.pas

    r28 r30  
    44
    55uses
    6   UXmlClasses, Classes, SysUtils, Generics.Collections, UGenerics, UIpAddress;
     6  UXmlClasses, Classes, SysUtils, Generics.Collections, Generics, UIpAddress;
    77
    88type
  • trunk/UIpAddress.pas

    r26 r30  
    44
    55uses
    6   Classes, SysUtils, UGenerics;
     6  Classes, SysUtils, Generics;
    77
    88type
  • trunk/UXmlClasses.pas

    r26 r30  
    44
    55uses
    6   Classes, SysUtils, StrUtils, Generics.Collections, UGenerics;
     6  Classes, SysUtils, StrUtils, Generics.Collections, Generics;
    77
    88type
Note: See TracChangeset for help on using the changeset viewer.