Changeset 315


Ignore:
Timestamp:
Jun 19, 2024, 11:15:44 PM (3 weeks ago)
Author:
chronos
Message:
  • Modified: Updated Common package.
Location:
trunk
Files:
27 added
6 deleted
18 edited
1 copied
46 moved

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormClient.pas

    r304 r315  
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    99  UGame, LCLType, Menus, ActnList, ComCtrls, dateutils, XMLConf, DOM, Math,
    10   UGeometry, UGameClient, UGameProtocol, UThreading, UPlayer, UClientGUI, UFormMain;
     10  UGeometry, UGameClient, UGameProtocol, Threading, UPlayer, UClientGUI, UFormMain;
    1111
    1212const
  • trunk/Forms/UFormPlayersStats.pas

    r243 r315  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
    9   Menus, ActnList, UGame, UListViewSort;
     9  Menus, ActnList, UGame, ListViewSort;
    1010
    1111type
  • trunk/Forms/UFormSettings.pas

    r243 r315  
    5555
    5656uses
    57   UCore, ULanguages, UTheme;
     57  UCore, Languages, Theme;
    5858
    5959{ TFormSettings }
  • trunk/Packages/Common/ApplicationInfo.pas

    r314 r315  
    1 unit UApplicationInfo;
    2 
    3 {$mode delphi}
     1unit ApplicationInfo;
    42
    53interface
    64
    75uses
    8   SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType;
     6  SysUtils, Classes, Forms, RegistryEx, Controls, Graphics, LCLType;
    97
    108type
     
    5957procedure Register;
    6058
     59
    6160implementation
    6261
  • trunk/Packages/Common/Common.Delay.pas

    r314 r315  
    1 unit UDelay;
    2 
    3 {$mode delphi}
     1unit Common.Delay;
    42
    53interface
     
    7371
    7472end.
    75 
  • trunk/Packages/Common/Common.lpk

    r313 r315  
    1111      <PathDelim Value="\"/>
    1212      <SearchPaths>
     13        <OtherUnitFiles Value="Forms"/>
    1314        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)-$(BuildMode)"/>
    1415      </SearchPaths>
     
    3334      <Other>
    3435        <CompilerMessages>
    35           <IgnoredMessages idx6058="True" idx5024="True" idx3124="True" idx3123="True"/>
     36          <IgnoredMessages idx6058="True" idx5071="True" idx5024="True" idx3124="True" idx3123="True"/>
    3637        </CompilerMessages>
    3738      </Other>
     
    4142Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/>
    4243    <License Value="Copy left."/>
    43     <Version Minor="9"/>
    44     <Files Count="29">
     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>
     173      <Item30>
     174        <Filename Value="Generics.pas"/>
     175        <UnitName Value="Generics"/>
     176      </Item30>
     177      <Item31>
     178        <Filename Value="CommonPackage.pas"/>
     179        <Type Value="Main Unit"/>
     180        <UnitName Value="CommonPackage"/>
     181      </Item31>
     182      <Item32>
     183        <Filename Value="Table.pas"/>
     184        <UnitName Value="Table"/>
     185      </Item32>
     186      <Item33>
     187        <Filename Value="FormEx.pas"/>
     188        <HasRegisterProc Value="True"/>
     189        <UnitName Value="FormEx"/>
     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>
    173203    </Files>
    174204    <CompatibilityMode Value="True"/>
  • trunk/Packages/Common/Common.pas

    r314 r315  
    1 unit UCommon;
    2 
    3 {$mode delphi}
     1unit Common;
    42
    53interface
     
    86  {$IFDEF WINDOWS}Windows,{$ENDIF}
    97  {$IFDEF UNIX}baseunix,{$ENDIF}
    10   Classes, SysUtils, StrUtils, Dialogs, Process, LCLIntf,
    11   FileUtil; //, ShFolder, ShellAPI;
     8  Classes, SysUtils, StrUtils, Dialogs, Process, LCLIntf, Graphics,
     9  FileUtil, Generics.Collections; //, ShFolder, ShellAPI;
    1210
    1311type
    1412  TArrayOfByte = array of Byte;
    15   TArrayOfString = array of string;
    1613  TExceptionEvent = procedure(Sender: TObject; E: Exception) of object;
    1714
     
    3532  DLLHandle1: HModule;
    3633
    37 {$IFDEF WINDOWS}
    38   GetUserNameEx: procedure (NameFormat: DWORD;
    39     lpNameBuffer: LPSTR; nSize: PULONG); stdcall;
    40 {$ENDIF}
     34  {$IFDEF WINDOWS}
     35    GetUserNameEx: procedure (NameFormat: DWORD;
     36      lpNameBuffer: LPSTR; nSize: PULONG); stdcall;
     37  {$ENDIF}
     38
     39const
     40  clLightBlue = TColor($FF8080);
     41  clLightGreen = TColor($80FF80);
     42  clLightRed = TColor($8080FF);
    4143
    4244function AddLeadingZeroes(const aNumber, Length : integer) : string;
     
    5153function ComputerName: string;
    5254procedure DeleteFiles(APath, AFileSpec: string);
     55function Explode(Separator: Char; Data: string): TStringArray;
    5356procedure ExecuteProgram(Executable: string; Parameters: array of string);
    5457procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog);
     
    6265function GetFileFilterItemExt(Filter: string; Index: Integer): string;
    6366function IntToBin(Data: Int64; Count: Byte): string;
     67function Implode(Separator: string; List: TList<string>): string;
     68function Implode(Separator: string; List: TStringList; Around: string = ''): string;
    6469function LastPos(const SubStr: String; const S: String): Integer;
    6570function LoadFileToStr(const FileName: TFileName): AnsiString;
    6671function LoggedOnUserNameEx(Format: TUserNameFormat): string;
    67 function MergeArray(A, B: array of string): TArrayOfString;
     72function MergeArray(A, B: array of string): TStringArray;
    6873function OccurenceOfChar(What: Char; Where: string): Integer;
    6974procedure OpenWebPage(URL: string);
     75procedure OpenEmail(Email: string);
    7076procedure OpenFileInShell(FileName: string);
    7177function PosFromIndex(SubStr: string; Text: string;
     
    8389function SplitString(var Text: string; Count: Word): string;
    8490function StripTags(const S: string): string;
    85 function TryHexToInt(Data: string; var Value: Integer): Boolean;
    86 function TryBinToInt(Data: string; var Value: Integer): Boolean;
     91function TryHexToInt(Data: string; out Value: Integer): Boolean;
     92function TryBinToInt(Data: string; out Value: Integer): Boolean;
    8793procedure SortStrings(Strings: TStrings);
    8894
     
    201207end;*)
    202208
     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
    203220function LastPos(const SubStr: String; const S: String): Integer;
    204221begin
     
    246263end;
    247264
    248 function TryHexToInt(Data: string; var Value: Integer): Boolean;
     265function TryHexToInt(Data: string; out Value: Integer): Boolean;
    249266var
    250267  I: Integer;
     
    262279end;
    263280
    264 function TryBinToInt(Data: string; var Value: Integer): Boolean;
     281function TryBinToInt(Data: string; out Value: Integer): Boolean;
    265282var
    266283  I: Integer;
     
    290307end;
    291308
    292 function Explode(Separator: char; Data: string): TArrayOfString;
    293 begin
    294   Result := nil;
    295   SetLength(Result, 0);
    296   while Pos(Separator, Data) > 0 do begin
     309function Explode(Separator: Char; Data: string): TStringArray;
     310var
     311  Index: Integer;
     312begin
     313  Result := Default(TStringArray);
     314  repeat
     315    Index := Pos(Separator, Data);
     316    if Index > 0 then begin
     317      SetLength(Result, Length(Result) + 1);
     318      Result[High(Result)] := Copy(Data, 1, Index - 1);
     319      Delete(Data, 1, Index);
     320    end else Break;
     321  until False;
     322  if Data <> '' then begin
    297323    SetLength(Result, Length(Result) + 1);
    298     Result[High(Result)] := Copy(Data, 1, Pos(Separator, Data) - 1);
    299     Delete(Data, 1, Pos(Separator, Data));
    300   end;
    301   SetLength(Result, Length(Result) + 1);
    302   Result[High(Result)] := Data;
    303 end;
    304 
    305 {$IFDEF Windows}
     324    Result[High(Result)] := Data;
     325  end;
     326end;
     327
     328function Implode(Separator: string; List: TList<string>): string;
     329var
     330  I: Integer;
     331begin
     332  Result := '';
     333  for I := 0 to List.Count - 1 do begin
     334    Result := Result + List[I];
     335    if I < List.Count - 1 then Result := Result + Separator;
     336  end;
     337end;
     338
     339{$IFDEF WINDOWS}
    306340function GetUserName: string;
    307341const
     
    311345begin
    312346  L := MAX_USERNAME_LENGTH + 2;
     347  Result := Default(string);
    313348  SetLength(Result, L);
    314349  if Windows.GetUserName(PChar(Result), L) and (L > 0) then begin
     
    324359  end;
    325360end;
    326 {$endif}
     361{$ENDIF}
    327362
    328363function ComputerName: string;
    329 {$ifdef mswindows}
     364{$IFDEF WINDOWS}
    330365const
    331366 INFO_BUFFER_SIZE = 32767;
     
    342377  end;
    343378end;
    344 {$endif}
    345 {$ifdef unix}
     379{$ENDIF}
     380{$IFDEF UNIX}
    346381var
    347382  Name: UtsName;
     
    351386  Result := Name.Nodename;
    352387end;
    353 {$endif}
    354 
    355 {$ifdef windows}
     388{$ENDIF}
     389
     390{$IFDEF WINDOWS}
    356391function LoggedOnUserNameEx(Format: TUserNameFormat): string;
    357392const
     
    431466procedure LoadLibraries;
    432467begin
    433   {$IFDEF Windows}
     468  {$IFDEF WINDOWS}
    434469  DLLHandle1 := LoadLibrary('secur32.dll');
    435470  if DLLHandle1 <> 0 then
     
    442477procedure FreeLibraries;
    443478begin
    444   {$IFDEF Windows}
     479  {$IFDEF WINDOWS}
    445480  if DLLHandle1 <> 0 then FreeLibrary(DLLHandle1);
    446481  {$ENDIF}
     
    475510end;
    476511
     512procedure OpenEmail(Email: string);
     513begin
     514  OpenURL('mailto:' + Email);
     515end;
     516
    477517procedure OpenFileInShell(FileName: string);
    478518begin
     
    503543end;
    504544
    505 function MergeArray(A, B: array of string): TArrayOfString;
    506 var
    507   I: Integer;
    508 begin
    509   Result := Default(TArrayOfString);
     545function MergeArray(A, B: array of string): TStringArray;
     546var
     547  I: Integer;
     548begin
     549  Result := Default(TStringArray);
    510550  SetLength(Result, Length(A) + Length(B));
    511551  for I := 0 to Length(A) - 1 do
  • trunk/Packages/Common/CommonPackage.pas

    r314 r315  
    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, 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/DebugLog.pas

    r314 r315  
    1 unit UDebugLog;
    2 
    3 {$mode delphi}
     1unit DebugLog;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, FileUtil, fgl, SyncObjs;
     6  Classes, SysUtils, FileUtil, Generics.Collections, SyncObjs;
    97
    108type
     
    1513    Group: string;
    1614    Text: string;
     15  end;
     16
     17  TDebugLogItems = class(TObjectList<TDebugLogItem>)
    1718  end;
    1819
     
    2930    procedure SetMaxCount(const AValue: Integer);
    3031  public
    31     Items: TFPGObjectList<TDebugLogItem>;
     32    Items: TDebugLogItems;
    3233    Lock: TCriticalSection;
    3334    procedure Add(Text: string; Group: string = '');
     
    4445
    4546procedure Register;
     47
    4648
    4749implementation
     
    117119begin
    118120  inherited;
    119   Items := TFPGObjectList<TDebugLogItem>.Create;
     121  Items := TDebugLogItems.Create;
    120122  Lock := TCriticalSection.Create;
    121123  MaxCount := 100;
     
    126128destructor TDebugLog.Destroy;
    127129begin
    128   Items.Free;
    129   Lock.Free;
     130  FreeAndNil(Items);
     131  FreeAndNil(Lock);
    130132  inherited;
    131133end;
    132134
    133135end.
    134 
  • trunk/Packages/Common/FindFile.pas

    r314 r315  
    1919}
    2020
    21 unit UFindFile;
     21unit FindFile;
    2222
    2323interface
     
    3535  private
    3636    s : TStringList;
    37 
    3837    fSubFolder : boolean;
    3938    fAttr: TFileAttrib;
    4039    fPath : string;
    4140    fFileMask : string;
    42 
    4341    procedure SetPath(Value: string);
    4442    procedure FileSearch(const inPath : string);
     
    4644    constructor Create(AOwner: TComponent); override;
    4745    destructor Destroy; override;
    48 
    4946    function SearchForFiles: TStringList;
    5047  published
     
    6562procedure Register;
    6663
     64
    6765implementation
    6866
     
    7775constructor TFindFile.Create(AOwner: TComponent);
    7876begin
    79   inherited Create(AOwner);
     77  inherited;
    8078  Path := IncludeTrailingBackslash(UTF8Encode(GetCurrentDir));
    8179  FileMask := FilterAll;
     
    8785begin
    8886  s.Free;
    89   inherited Destroy;
     87  inherited;
    9088end;
    9189
     
    145143    SysUtils.FindClose(Rec);
    146144  end;
    147 end; 
     145end;
    148146
    149147end.
    150 
  • trunk/Packages/Common/Geometric.pas

    r314 r315  
    1 unit UGeometric;
    2 
    3 {$mode delphi}
     1unit Geometric;
    42
    53interface
     
    108type
    119  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;
    1221
    1322function Distance(P1, P2: TPoint): Integer;
     
    1524function AddPoint(const P1, P2: TPoint): TPoint;
    1625function SubPoint(const P1, P2: TPoint): TPoint;
    17 function PointToLineDistance(const P, V, W: TPoint): Integer;
     26function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer;
    1827function ComparePoint(P1, P2: TPoint): Boolean;
    1928function RotatePoint(Center, P: TPoint; Angle: Double): TPoint;
     
    2736function ShiftRect(ARect: TRect; Delta: TPoint): TRect;
    2837
     38
    2939implementation
    3040
     
    5161end;
    5262
    53 function PointToLineDistance(const P, V, W: TPoint): Integer;
     63function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer;
    5464var
    5565  l2, t: Double;
     
    6979  if T < 0 then begin
    7080    Result := Distance(P, V);       // Beyond the 'v' end of the segment
    71     exit;
     81    Intersect := V;
     82    Exit;
    7283  end
    7384  else if T > 1 then begin
    7485    Result := Distance(P, W);  // Beyond the 'w' end of the segment
     86    Intersect := W;
    7587    Exit;
    7688  end;
     
    7890  TT.Y := Trunc(V.Y + T * (W.Y - V.Y));
    7991  Result := Distance(P, TT);
     92  Intersect := TT;
    8093end;
    8194
     
    163176end;
    164177
     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;
    165204
    166205end.
    167 
  • trunk/Packages/Common/JobProgressView.pas

    r314 r315  
    1 unit UJobProgressView;
    2 
    3 {$MODE Delphi}
     1unit JobProgressView;
    42
    53interface
     
    75uses
    86  SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs,
    9   Dialogs, ComCtrls, StdCtrls, ExtCtrls, fgl, UThreading, Math,
     7  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Generics.Collections, Threading, Math,
    108  DateUtils;
    119
     
    7169  end;
    7270
    73   TJobs = class(TFPGObjectList<TJob>)
     71  TJobs = class(TObjectList<TJob>)
    7472  end;
    7573
     
    156154  end;
    157155
    158   //var
    159   //  FormJobProgressView: TFormJobProgressView;
    160 
    161156procedure Register;
    162157
    163158resourcestring
    164159  SExecuted = 'Executed';
     160
    165161
    166162implementation
     
    186182  try
    187183    try
    188       //raise Exception.Create('Exception in job');
    189184      ProgressView.CurrentJob.Method(Job);
    190185    except
     
    642637begin
    643638  FLock.Free;
    644   inherited Destroy;
     639  inherited;
    645640end;
    646641
  • trunk/Packages/Common/Languages.pas

    r314 r315  
    1 unit ULanguages;
    2 
    3 {$mode delphi}{$H+}
     1unit Languages;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, fgl;
     6  Classes, SysUtils, Generics.Collections;
    97
    108type
     
    1715  { TLanguages }
    1816
    19   TLanguages = class(TFPGObjectList<TLanguage>)
     17  TLanguages = class(TObjectList<TLanguage>)
    2018    function SearchByCode(ACode: string): TLanguage;
    2119    procedure AddNew(Code: string; Name: string);
     
    218216  SLang_za = 'Zhuang';
    219217  SLang_zh = 'Chinese';
     218  SLang_zh_Hans = 'Simplified Chinese';
     219  SLang_zh_Hant = 'Traditional Chinese';
    220220  SLang_zu = 'Zulu';
     221
    221222
    222223implementation
     
    230231begin
    231232  I := 0;
    232   while (I < Count) and (TLanguage(Items[I]).Code < ACode) do Inc(I);
    233   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]
    234235    else Result := nil;
    235236end;
     
    441442  AddNew('za', SLang_za);
    442443  AddNew('zh', SLang_zh);
     444  AddNew('zh-Hant', SLang_zh_Hant);
     445  AddNew('zh-Hans', SLang_zh_Hans);
    443446  AddNew('zu', SLang_zu);
    444447end;
    445448
    446449end.
    447 
  • trunk/Packages/Common/Languages/DebugLog.cs.po

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    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/Threading.cs.po

    r314 r315  
    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

    r314 r315  
    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

    r314 r315  
    1 unit ULastOpenedList;
    2 
    3 {$mode delphi}
     1unit LastOpenedList;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, Registry, URegistry, Menus, XMLConf, DOM;
     6  Classes, SysUtils, Registry, RegistryEx, Menus, XMLConf, DOM;
    97
    108type
     
    8482destructor TLastOpenedList.Destroy;
    8583begin
    86   Items.Free;
     84  FreeAndNil(Items);
    8785  inherited;
    8886end;
     
    9492begin
    9593  if Assigned(MenuItem) then begin
    96     MenuItem.Clear;
     94    while MenuItem.Count > Items.Count do
     95      MenuItem.Delete(MenuItem.Count - 1);
     96    while MenuItem.Count < Items.Count do begin
     97      NewMenuItem := TMenuItem.Create(MenuItem);
     98      MenuItem.Add(NewMenuItem);
     99    end;
    97100    for I := 0 to Items.Count - 1 do begin
    98       NewMenuItem := TMenuItem.Create(MenuItem);
    99       NewMenuItem.Caption := Items[I];
    100       NewMenuItem.OnClick := ClickAction;
    101       MenuItem.Add(NewMenuItem);
     101      MenuItem.Items[I].Caption := Items[I];
     102      MenuItem.Items[I].OnClick := ClickAction;
    102103    end;
    103104  end;
     
    193194
    194195end.
    195 
  • trunk/Packages/Common/ListViewSort.pas

    r314 r315  
    1 unit UListViewSort;
     1unit ListViewSort;
    22
    33// Date: 2019-05-17
    4 
    5 {$mode delphi}
    64
    75interface
     
    97uses
    108  {$IFDEF Windows}Windows, CommCtrl, LMessages, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,
    11   Controls, DateUtils, Dialogs, fgl, Forms, Grids, StdCtrls, ExtCtrls,
    12   LclIntf, LclType, LResources;
     9  Controls, DateUtils, Dialogs, Forms, Grids, StdCtrls, ExtCtrls,
     10  LclIntf, LclType, LResources, Generics.Collections, Generics.Defaults;
    1311
    1412type
     
    1917  TCompareEvent = function (Item1, Item2: TObject): Integer of object;
    2018  TListFilterEvent = procedure (ListViewSort: TListViewSort) of object;
     19
     20  TObjects = TObjectList<TObject>;
    2121
    2222  { TListViewSort }
     
    5252    {$ENDIF}
    5353  public
    54     List: TFPGObjectList<TObject>;
    55     Source: TFPGObjectList<TObject>;
     54    Source: TObjects;
     55    List: TObjects;
    5656    constructor Create(AOwner: TComponent); override;
    5757    destructor Destroy; override;
     
    136136constructor TListViewEx.Create(TheOwner: TComponent);
    137137begin
    138   inherited Create(TheOwner);
     138  inherited;
    139139  Filter := TListViewFilter.Create(Self);
    140140  Filter.Parent := Self;
     
    149149destructor TListViewEx.Destroy;
    150150begin
    151   inherited Destroy;
     151  inherited;
    152152end;
    153153
     
    172172constructor TListViewFilter.Create(AOwner: TComponent);
    173173begin
    174   inherited Create(AOwner);
     174  inherited;
    175175  FStringGrid1 := TStringGrid.Create(Self);
    176176  FStringGrid1.Align := alClient;
     
    338338  ListViewSortCompare: TCompareEvent;
    339339
    340 function ListViewCompare(const Item1, Item2: TObject): Integer;
     340function ListViewCompare(constref Item1, Item2: TObject): Integer;
    341341begin
    342342  Result := ListViewSortCompare(Item1, Item2);
     
    349349  ListViewSortCompare := Compare;
    350350  if (List.Count > 0) then
    351     List.Sort(ListViewCompare);
     351    List.Sort(TComparer<TObject>.Construct(ListViewCompare));
    352352end;
    353353
     
    355355begin
    356356  if Assigned(FOnFilter) then FOnFilter(Self)
    357   else if Assigned(Source) then
    358     List.Assign(Source) else
     357  else if Assigned(Source) then begin
    359358    List.Clear;
     359    List.AddRange(Source);
     360  end else List.Clear;
    360361  if ListView.Items.Count <> List.Count then
    361362    ListView.Items.Count := List.Count;
     
    412413begin
    413414  inherited;
    414   List := TFPGObjectList<TObject>.Create;
    415   List.FreeObjects := False;
     415  List := TObjects.Create;
     416  List.OwnsObjects := False;
    416417end;
    417418
    418419destructor TListViewSort.Destroy;
    419420begin
    420   List.Free;
     421  FreeAndNil(List);
    421422  inherited;
    422423end;
  • trunk/Packages/Common/Memory.pas

    r314 r315  
    1 unit UMemory;
    2 
    3 {$mode Delphi}{$H+}
     1unit Memory;
    42
    53interface
     
    4442  end;
    4543
     44
    4645implementation
    4746
     
    5049procedure TPositionMemory.SetSize(AValue: Integer);
    5150begin
    52   inherited SetSize(AValue);
     51  inherited;
    5352  if FPosition > FSize then FPosition := FSize;
    5453end;
     
    107106begin
    108107  Size := 0;
    109   inherited Destroy;
     108  inherited;
    110109end;
    111110
     
    121120
    122121end.
    123 
  • trunk/Packages/Common/MetaCanvas.pas

    r314 r315  
    1 unit UMetaCanvas;
    2 
    3 {$mode delphi}
     1unit MetaCanvas;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, Graphics, Types, fgl;
     6  Classes, SysUtils, Graphics, Types, Generics.Collections;
    97
    108type
     
    1917  end;
    2018
    21   TCanvasObjects = class(TFPGObjectList<TCanvasObject>)
     19  TCanvasObjects = class(TObjectList<TCanvasObject>)
    2220  end;
    2321
     
    6563
    6664  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)
    6791    Pen: TPen;
    6892    Brush: TBrush;
     
    135159    procedure DoMoveTo(X, Y: Integer); override;
    136160    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;
    137164  public
    138165    Objects: TCanvasObjects;
     
    143170    procedure TextOut(X,Y: Integer; const Text: String); override;
    144171    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;
    145175    procedure Ellipse(x1, y1, x2, y2: Integer); override;
    146176    procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override;
     
    161191
    162192uses
    163   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;
    164274
    165275{ TCanvasPie }
     
    306416destructor TCanvasPolygon.Destroy;
    307417begin
    308   Brush.Free;
    309   Pen.Free;
     418  FreeAndNil(Brush);
     419  FreeAndNil(Pen);
    310420  inherited;
    311421end;
     
    513623    APoints[I] := Points[I];
    514624  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);
    515643end;
    516644
     
    582710end;
    583711
     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
    584741procedure TMetaCanvas.FillRect(const ARect: TRect);
    585742begin
     
    666823
    667824end.
    668 
  • trunk/Packages/Common/PersistentForm.pas

    r314 r315  
    1 unit UPersistentForm;
    2 
    3 {$mode delphi}
    4 
    5 // Date: 2020-11-26
     1unit PersistentForm;
    62
    73interface
    84
    95uses
    10   Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls,
     6  Classes, SysUtils, Forms, RegistryEx, LCLIntf, Registry, Controls, ComCtrls,
    117  ExtCtrls, LCLType;
    128
     
    2319    procedure SaveControl(Control: TControl);
    2420  public
    25     FormNormalSize: TRect;
    2621    FormRestoredSize: TRect;
    2722    FormWindowState: TWindowState;
     
    157152    RootKey := RegistryContext.RootKey;
    158153    OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True);
    159     // Normal size
    160     FormNormalSize.Left := ReadIntegerWithDefault('NormalLeft', FormNormalSize.Left);
    161     FormNormalSize.Top := ReadIntegerWithDefault('NormalTop', FormNormalSize.Top);
    162     FormNormalSize.Right := ReadIntegerWithDefault('NormalWidth', FormNormalSize.Right - FormNormalSize.Left)
    163       + FormNormalSize.Left;
    164     FormNormalSize.Bottom := ReadIntegerWithDefault('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top)
    165       + FormNormalSize.Top;
     154
    166155    // Restored size
    167156    FormRestoredSize.Left := ReadIntegerWithDefault('RestoredLeft', FormRestoredSize.Left);
     
    171160    FormRestoredSize.Bottom := ReadIntegerWithDefault('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top)
    172161      + FormRestoredSize.Top;
     162
    173163    // Other state
    174164    FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState)));
     
    185175    RootKey := RegistryContext.RootKey;
    186176    OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True);
    187     // Normal state
    188     WriteInteger('NormalWidth', FormNormalSize.Right - FormNormalSize.Left);
    189     WriteInteger('NormalHeight', FormNormalSize.Bottom - FormNormalSize.Top);
    190     WriteInteger('NormalTop', FormNormalSize.Top);
    191     WriteInteger('NormalLeft', FormNormalSize.Left);
    192     // Restored state
     177
     178    // Restored size
    193179    WriteInteger('RestoredWidth', FormRestoredSize.Right - FormRestoredSize.Left);
    194180    WriteInteger('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top);
    195181    WriteInteger('RestoredTop', FormRestoredSize.Top);
    196182    WriteInteger('RestoredLeft', FormRestoredSize.Left);
     183
    197184    // Other state
    198185    WriteInteger('WindowState', Integer(FormWindowState));
     
    259246begin
    260247  Self.Form := Form;
     248
    261249  // Set default
    262   FormNormalSize := Bounds((Screen.Width - Form.Width) div 2,
    263     (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
    264250  FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2,
    265251    (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
     
    269255  LoadFromRegistry(RegistryContext);
    270256
    271   if not EqualRect(FormNormalSize, FormRestoredSize) or
    272     DefaultMaximized then begin
     257  if (FormWindowState = wsMaximized) or DefaultMaximized then begin
    273258    // Restore to maximized state
    274259    Form.WindowState := wsNormal;
     
    279264    // Restore to normal state
    280265    Form.WindowState := wsNormal;
    281     if FEntireVisible then FormNormalSize := CheckEntireVisible(FormNormalSize)
     266    if FEntireVisible then FormRestoredSize := CheckEntireVisible(FormRestoredSize)
    282267      else if FMinVisiblePart > 0 then
    283     FormNormalSize := CheckPartVisible(FormNormalSize, FMinVisiblePart);
    284     if not EqualRect(FormNormalSize, Form.BoundsRect) then
    285       Form.BoundsRect := FormNormalSize;
     268        FormRestoredSize := CheckPartVisible(FormRestoredSize, FMinVisiblePart);
     269    if not EqualRect(FormRestoredSize, Form.BoundsRect) then
     270      Form.BoundsRect := FormRestoredSize;
    286271  end;
    287272  if FormFullScreen then SetFullScreen(True);
     
    292277begin
    293278  Self.Form := Form;
    294   FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
    295   if not FormFullScreen then
    296     FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    297       Form.RestoredHeight);
    298   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;
    299289  SaveToRegistry(RegistryContext);
    300290  SaveControl(Form);
     
    314304  if State then begin
    315305    FormFullScreen := True;
    316     FormNormalSize := Form.BoundsRect;
    317     FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    318       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;
    319313    FormWindowState := Form.WindowState;
     314    Form.WindowState := wsMaximized;
     315    Form.WindowState := wsNormal;
    320316    ShowWindow(Form.Handle, SW_SHOWFULLSCREEN);
    321317    {$IFDEF WINDOWS}
     
    329325    ShowWindow(Form.Handle, SW_SHOWNORMAL);
    330326    if FormWindowState = wsNormal then begin
    331       Form.BoundsRect := FormNormalSize;
     327      Form.WindowState := wsNormal;
     328      Form.BoundsRect := FormRestoredSize;
    332329    end else
    333330    if FormWindowState = wsMaximized then begin
     
    339336
    340337end.
    341 
  • trunk/Packages/Common/PixelPointer.pas

    r314 r315  
    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);
     
    6092  function ColorToColor32(Color: TColor): TColor32;
    6193
     94
    6295implementation
    6396
     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
    64101{ TPixel32 }
    65102
     
    69106end;
    70107
     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
    71124procedure TPixel32.SetRGB(AValue: Cardinal);
    72125begin
    73   R := (AValue shr 16) and $ff;
    74   G := (AValue shr 8) and $ff;
    75   B := (AValue shr 0) and $ff;
     126  ARGB := (ARGB and $ff000000) or (AValue and $ffffff);
    76127end;
    77128
     
    111162end;
    112163
     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
    113279procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect;
    114280  SrcBitmap: TRasterImage; SrcPos: TPoint);
     
    119285  SrcBitmap.BeginUpdate(True);
    120286  DstBitmap.BeginUpdate(True);
    121   SrcPtr := PixelPointer(SrcBitmap, SrcPos.X, SrcPos.Y);
    122   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);
    123289  for Y := 0 to DstRect.Height - 1 do begin
    124290    for X := 0 to DstRect.Width - 1 do begin
    125       DstPtr.Pixel^.ARGB := SrcPtr.Pixel^.ARGB;
     291      DstPtr.PixelARGB := SrcPtr.PixelARGB;
    126292      SrcPtr.NextPixel;
    127293      DstPtr.NextPixel;
     
    149315  SrcBitmap.BeginUpdate(True);
    150316  DstBitmap.BeginUpdate(True);
    151   SrcPtr := PixelPointer(SrcBitmap, SrcRect.Left, SrcRect.Top);
    152   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);
    153319  for Y := 0 to DstRect.Height - 1 do begin
    154320    for X := 0 to DstRect.Width - 1 do begin
     
    159325      DstPtr.SetXY(X, Y);
    160326      SrcPtr.SetXY(R.Left, R.Top);
    161       C := SrcPtr.Pixel^.ARGB;
    162       DstPtr.Pixel^.ARGB := C;
     327      C := SrcPtr.PixelARGB;
     328      DstPtr.PixelARGB := C;
    163329      for YY := 0 to R.Height - 1 do begin
    164330        for XX := 0 to R.Width - 1 do begin
    165           DstPtr.Pixel^.ARGB := C;
     331          DstPtr.PixelARGB := C;
    166332          DstPtr.NextPixel;
    167333        end;
     
    180346begin
    181347  Bitmap.BeginUpdate(True);
    182   Ptr := PixelPointer(Bitmap);
     348  Ptr := TPixelPointer.Create(Bitmap);
    183349  for Y := 0 to Bitmap.Height - 1 do begin
    184350    for X := 0 to Bitmap.Width - 1 do begin
    185       Ptr.Pixel^.ARGB := Color;
     351      Ptr.PixelARGB := Color;
    186352      Ptr.NextPixel;
    187353    end;
     
    197363begin
    198364  Bitmap.BeginUpdate(True);
    199   Ptr := PixelPointer(Bitmap, Rect.Left, Rect.Top);
     365  Ptr := TPixelPointer.Create(Bitmap, Rect.Left, Rect.Top);
    200366  for Y := 0 to Rect.Height - 1 do begin
    201367    for X := 0 to Rect.Width - 1 do begin
    202       Ptr.Pixel^.ARGB := Color;
     368      Ptr.PixelARGB := Color;
    203369      Ptr.NextPixel;
    204370    end;
     
    214380begin
    215381  Bitmap.BeginUpdate(True);
    216   Ptr := PixelPointer(Bitmap);
     382  Ptr := TPixelPointer.Create(Bitmap);
    217383  for Y := 0 to Bitmap.Height - 1 do begin
    218384    for X := 0 to Bitmap.Width - 1 do begin
    219       Ptr.Pixel^.ARGB := SwapRedBlue(Ptr.Pixel^.ARGB);
     385      Ptr.PixelARGB := SwapRedBlue(Ptr.PixelARGB);
    220386      Ptr.NextPixel;
    221387    end;
     
    231397begin
    232398  Bitmap.BeginUpdate(True);
    233   Ptr := PixelPointer(Bitmap);
     399  Ptr := TPixelPointer.Create(Bitmap);
    234400  for Y := 0 to Bitmap.Height - 1 do begin
    235401    for X := 0 to Bitmap.Width - 1 do begin
    236       Ptr.Pixel^.ARGB := Ptr.Pixel^.ARGB xor $ffffff;
     402      Ptr.PixelARGB := Ptr.PixelARGB xor $ffffff;
    237403      Ptr.NextPixel;
    238404    end;
     
    251417  Pixel := Color32ToPixel32(Color);
    252418  Bitmap.BeginUpdate(True);
    253   Ptr := PixelPointer(Bitmap);
     419  Ptr := TPixelPointer.Create(Bitmap);
    254420  for Y := 0 to Bitmap.Height - 1 do begin
    255421    for X := 0 to Bitmap.Width - 1 do begin
    256       A := Ptr.Pixel^.A; //(Ptr.Pixel^.A + Pixel.A) shr 1;
    257       R := (Ptr.Pixel^.R + Pixel.R) shr 1;
    258       G := (Ptr.Pixel^.G + Pixel.G) shr 1;
    259       B := (Ptr.Pixel^.B + Pixel.B) shr 1;
    260       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);
    261427      Ptr.NextPixel;
    262428    end;
     
    294460end;
    295461
    296 function PixelPointer(Bitmap: TRasterImage; BaseX: Integer;
     462class function TPixelPointer.Create(Bitmap: TRasterImage; BaseX: Integer;
    297463  BaseY: Integer): TPixelPointer;
    298464begin
     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]));
    299469  Result.BytesPerLine := Bitmap.RawImage.Description.BytesPerLine;
    300470  Result.BytesPerPixel := Bitmap.RawImage.Description.BitsPerPixel shr 3;
     471  Result.Data := PPixel32(Bitmap.RawImage.Data);
    301472  Result.Base := PPixel32(Bitmap.RawImage.Data + BaseX * Result.BytesPerPixel +
    302473    BaseY * Result.BytesPerLine);
     
    309480end;
    310481
    311 
    312482end.
    313 
  • trunk/Packages/Common/Pool.pas

    r314 r315  
    1 unit UPool;
    2 
    3 {$mode Delphi}{$H+}
     1unit Pool;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, syncobjs, fgl, UThreading;
     6  Classes, SysUtils, syncobjs, Generics.Collections, Threading;
    97
    108type
     
    2220    function NewItemObject: TObject; virtual;
    2321  public
    24     Items: TFPGObjectList<TObject>;
    25     FreeItems: TFPGObjectList<TObject>;
     22    Items: TObjectList<TObject>;
     23    FreeItems: TObjectList<TObject>;
    2624    function Acquire: TObject; virtual;
    2725    procedure Release(Item: TObject); virtual;
     
    5957  try
    6058    Lock.Acquire;
    61     inherited SetTotalCount(AValue);
     59    inherited;
    6260  finally
    6361    Lock.Release;
     
    6967  try
    7068    Lock.Acquire;
    71     Result := inherited GetUsedCount;
     69    Result := inherited;
    7270  finally
    7371    Lock.Release;
     
    9088      end;
    9189    end;
    92     Result := inherited Acquire;
     90    Result := inherited;
    9391  finally
    9492    Lock.Release;
     
    10098  try
    10199    Lock.Acquire;
    102     inherited Release(Item);
     100    inherited;
    103101  finally
    104102    Lock.Release;
     
    108106constructor TThreadedPool.Create;
    109107begin
    110   inherited Create;
     108  inherited;
    111109  Lock := TCriticalSection.Create;
    112110end;
     
    115113begin
    116114  TotalCount := 0;
    117   Lock.Free;
    118   inherited Destroy;
     115  FreeAndNil(Lock);
     116  inherited;
    119117end;
    120118
     
    185183begin
    186184  inherited;
    187   Items := TFPGObjectList<TObject>.Create;
    188   FreeItems := TFPGObjectList<TObject>.Create;
    189   FreeItems.FreeObjects := False;
     185  Items := TObjectList<TObject>.Create;
     186  FreeItems := TObjectList<TObject>.Create;
     187  FreeItems.OwnsObjects := False;
    190188  FReleaseEvent := TEvent.Create(nil, False, False, '');
    191189end;
     
    201199
    202200end.
    203 
  • trunk/Packages/Common/PrefixMultiplier.pas

    r314 r315  
    1 unit UPrefixMultiplier;
     1unit PrefixMultiplier;
    22
    33// Date: 2010-06-01
    4 
    5 {$mode delphi}
    64
    75interface
     
    3331  (
    3432    (ShortText: 'y'; FullText: 'yocto'; Value: 1e-24),
    35           (ShortText: 'z'; FullText: 'zepto'; Value: 1e-21),
     33    (ShortText: 'z'; FullText: 'zepto'; Value: 1e-21),
    3634    (ShortText: 'a'; FullText: 'atto'; Value: 1e-18),
    3735    (ShortText: 'f'; FullText: 'femto'; Value: 1e-15),
     
    5452  (
    5553    (ShortText: 'ys'; FullText: 'yocto'; Value: 1e-24),
    56           (ShortText: 'zs'; FullText: 'zepto'; Value: 1e-21),
     54    (ShortText: 'zs'; FullText: 'zepto'; Value: 1e-21),
    5755    (ShortText: 'as'; FullText: 'atto'; Value: 1e-18),
    5856    (ShortText: 'fs'; FullText: 'femto'; Value: 1e-15),
     
    126124
    127125end.
    128 
  • trunk/Packages/Common/RegistryEx.pas

    r314 r315  
    1 unit URegistry;
    2 
    3 {$MODE delphi}
     1unit RegistryEx;
    42
    53interface
     
    4846    HKEY_CURRENT_CONFIG, HKEY_DYN_DATA);
    4947
     48
    5049implementation
    51 
    5250
    5351{ TRegistryContext }
     
    135133  //CloseKey;
    136134  {$ENDIF}
    137   Result := inherited OpenKey(Key, CanCreate);
     135  Result := inherited;
    138136end;
    139137
  • trunk/Packages/Common/ResetableThread.pas

    r314 r315  
    1 unit UResetableThread;
    2 
    3 {$mode Delphi}{$H+}
     1unit ResetableThread;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, syncobjs, UThreading, UPool;
     6  Classes, SysUtils, syncobjs, Threading, Pool;
    97
    108type
     
    167165  FreeAndNil(FStopEvent);
    168166  FreeAndNil(FLock);
    169   inherited Destroy;
     167  inherited;
    170168end;
    171169
     
    286284constructor TThreadPool.Create;
    287285begin
    288   inherited Create;
     286  inherited;
    289287end;
    290288
     
    293291  TotalCount := 0;
    294292  WaitForEmpty;
    295   inherited Destroy;
     293  inherited;
    296294end;
    297295
    298296end.
    299 
  • trunk/Packages/Common/ScaleDPI.pas

    r314 r315  
    1 unit UScaleDPI;
     1unit ScaleDPI;
    22
    33{ See: http://wiki.lazarus.freepascal.org/High_DPI }
    44
    5 {$mode delphi}{$H+}
    6 
    75interface
    86
    97uses
    10   Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, fgl;
     8  Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils,
     9  Generics.Collections;
    1110
    1211type
     
    2827  end;
    2928
    30   TControlDimensions = class(TFPGObjectList<TControlDimension>)
     29  TControlDimensions = class(TObjectList<TControlDimension>)
    3130  end;
    3231
  • trunk/Packages/Common/StopWatch.pas

    r43 r315  
    55
    66uses
    7   {$IFDEF Windows}Windows,{$ENDIF}
     7  {$IFDEF WINDOWS}Windows,{$ENDIF}
    88  SysUtils, DateUtils;
    99
     
    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;
     33
    3334
    3435implementation
    3536
    36 constructor TStopWatch.Create(const startOnCreate : boolean = false) ;
     37constructor TStopWatch.Create(const StartOnCreate: Boolean = False);
    3738begin
    38   inherited Create;
     39  FIsRunning := False;
    3940
    40   fIsRunning := False;
    41 
    42   {$IFDEF Windows}
     41  {$IFDEF WINDOWS}
    4342  fIsHighResolution := QueryPerformanceFrequency(fFrequency) ;
    4443  {$ELSE}
    45   fIsHighResolution := False;
     44  FIsHighResolution := False;
    4645  {$ENDIF}
    47   if NOT fIsHighResolution then fFrequency := MSecsPerSec;
     46  if NOT FIsHighResolution then FFrequency := MSecsPerSec;
    4847
    4948  if StartOnCreate then Start;
     
    5251function TStopWatch.GetElapsedTicks: TLargeInteger;
    5352begin
    54   Result := fStopCount - fStartCount;
     53  Result := FStopCount - FStartCount;
    5554end;
    5655
    57 procedure TStopWatch.SetTickStamp(var lInt : TLargeInteger) ;
     56procedure TStopWatch.SetTickStamp(var Value: TLargeInteger);
    5857begin
    59   if fIsHighResolution then
     58  if FIsHighResolution then
    6059    {$IFDEF Windows}
    61     QueryPerformanceCounter(lInt)
     60    QueryPerformanceCounter(Value)
    6261    {$ELSE}
    6362    {$ENDIF}
    6463  else
    65     lInt := MilliSecondOf(Now) ;
     64    Value := MilliSecondOf(Now);
    6665end;
    6766
    6867function TStopWatch.GetElapsed: string;
    6968var
    70   dt: TDateTime;
     69  Elapsed: TDateTime;
    7170begin
    72   dt := ElapsedMiliseconds / MSecsPerSec / SecsPerDay;
    73   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))]) ;
    7473end;
    7574
    7675function TStopWatch.GetElapsedMiliseconds: TLargeInteger;
    7776begin
    78   Result := (MSecsPerSec * (fStopCount - fStartCount)) div fFrequency;
     77  Result := (MSecsPerSec * (fStopCount - FStartCount)) div FFrequency;
    7978end;
    8079
    8180procedure TStopWatch.Start;
    8281begin
    83   SetTickStamp(fStartCount);
    84   fIsRunning := True;
     82  SetTickStamp(FStartCount);
     83  FIsRunning := True;
    8584end;
    8685
    8786procedure TStopWatch.Stop;
    8887begin
    89   SetTickStamp(fStopCount);
    90   fIsRunning := False;
     88  SetTickStamp(FStopCount);
     89  FIsRunning := False;
    9190end;
    9291
  • trunk/Packages/Common/StringTable.pas

    r314 r315  
    1 unit UStringTable;
    2 
    3 {$mode objfpc}{$H+}
     1unit StringTable;
    42
    53interface
     
    7169end;
    7270
    73 
    7471end.
    75 
  • trunk/Packages/Common/SyncCounter.pas

    r314 r315  
    1 unit USyncCounter;
    2 
    3 {$mode delphi}
     1unit SyncCounter;
    42
    53interface
     
    2523    procedure Assign(Source: TSyncCounter);
    2624  end;
     25
    2726
    2827implementation
     
    6968begin
    7069  Lock.Free;
    71   inherited Destroy;
     70  inherited;
    7271end;
    7372
     
    7978
    8079end.
    81 
  • trunk/Packages/Common/Theme.pas

    r314 r315  
    1 unit UTheme;
     1unit Theme;
    22
    33interface
     
    55uses
    66  Classes, SysUtils, Graphics, ComCtrls, Controls, ExtCtrls, Menus, StdCtrls,
    7   Spin, Forms, fgl, Grids;
     7  Spin, Forms, Generics.Collections, Grids;
    88
    99type
     
    1919  { TThemes }
    2020
    21   TThemes = class(TFPGObjectList<TTheme>)
     21  TThemes = class(TObjectList<TTheme>)
    2222    function AddNew(Name: string): TTheme;
    2323    function FindByName(Name: string): TTheme;
     
    4242  end;
    4343
     44const
     45  ThemeNameSystem = 'System';
     46  ThemeNameLight = 'Light';
     47  ThemeNameDark = 'Dark';
     48
    4449procedure Register;
     50
    4551
    4652implementation
     
    105111  inherited;
    106112  Themes := TThemes.Create;
    107   with Themes.AddNew('System') do begin
     113  with Themes.AddNew(ThemeNameSystem) do begin
    108114    ColorWindow := clWindow;
    109115    ColorWindowText := clWindowText;
     
    113119  end;
    114120  Theme := TTheme(Themes.First);
    115   with Themes.AddNew('Dark') do begin
     121  with Themes.AddNew(ThemeNameDark) do begin
    116122    ColorWindow := RGBToColor($20, $20, $20);
    117123    ColorWindowText := clWhite;
     
    120126    ColorControlSelected := RGBToColor(96, 125, 155);
    121127  end;
    122   with Themes.AddNew('Light') do begin
     128  with Themes.AddNew(ThemeNameLight) do begin
    123129    ColorWindow := clWhite;
    124130    ColorWindowText := clBlack;
     
    175181procedure TThemeManager.UseTheme(Form: TForm);
    176182begin
    177   if not Used and (FTheme.Name = 'System') then Exit;
     183  if not Used and (FTheme.Name = ThemeNameSystem) then Exit;
    178184  ApplyTheme(Form);
    179185  Used := True;
    180186end;
    181187
    182 
    183188end.
  • trunk/Packages/Common/Threading.pas

    r314 r315  
    1 unit UThreading;
    2 
    3 {$mode delphi}
     1unit Threading;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, Forms, fgl, SyncObjs;
     6  Classes, SysUtils, Forms, Generics.Collections, SyncObjs;
    97
    108type
    119  TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;
    1210  TMethodCall = procedure of object;
    13 
    1411
    1512  { TVirtualThread }
     
    10299  { TThreadList }
    103100
    104   TThreadList = class(TFPGObjectList<TVirtualThread>)
     101  TThreadList = class(TObjectList<TVirtualThread>)
    105102    function FindById(Id: TThreadID): TVirtualThread;
    106103    constructor Create; virtual;
     
    191188constructor TThreadList.Create;
    192189begin
    193   inherited Create;
     190  inherited;
    194191end;
    195192
     
    295292  end;
    296293  FThread.Free;
    297   inherited Destroy;
     294  inherited;
    298295end;
    299296
     
    361358ThreadListLock := TCriticalSection.Create;
    362359ThreadList := TThreadList.Create;
    363 ThreadList.FreeObjects := False;
     360ThreadList.OwnsObjects := False;
    364361
    365362finalization
     
    369366
    370367end.
    371 
  • trunk/Packages/Common/Translator.pas

    r314 r315  
    1 unit UTranslator;
    2 
    3 {$mode delphi}{$H+}
     1unit Translator;
    42
    53interface
    64
    75uses
    8   Classes, SysUtils, Forms, ExtCtrls, Controls, fgl, LazFileUtils, LazUTF8,
    9   Translations, TypInfo, Dialogs, FileUtil, LCLProc, ULanguages, LCLType,
    10   LCLVersion;
     6  Classes, SysUtils, Forms, ExtCtrls, Controls, LazFileUtils, LazUTF8,
     7  Translations, TypInfo, Dialogs, FileUtil, LCLProc, Languages, LCLType,
     8  LCLVersion, Generics.Collections;
    119
    1210type
    1311  THandleStringEvent = function (AValue: string): string of object;
    1412
    15   TPoFiles = class(TFPGObjectList<TPOFile>)
     13  TPoFiles = class(TObjectList<TPOFile>)
    1614  end;
    1715
     
    2725  { TComponentExcludesList }
    2826
    29   TComponentExcludesList = class(TFPGObjectList<TComponentExcludes>)
     27  TComponentExcludesList = class(TObjectList<TComponentExcludes>)
    3028    function FindByClassType(AClassType: TClass): TComponentExcludes;
    3129    procedure DumpToStrings(Strings: TStrings);
     
    5048    procedure TranslateProperty(Component: TPersistent; PropInfo: PPropInfo);
    5149    function IsExcluded(Component: TPersistent; PropertyName: string): Boolean;
    52     function GetLangFileDir: string;
     50    function GetLangFileDirs: TStrings;
    5351  public
    5452    ComponentExcludes: TComponentExcludesList;
     
    7371  end;
    7472
     73const
     74  PoExt = '.po';
     75
    7576procedure Register;
    7677
    7778
    7879implementation
     80
     81uses
     82  Common;
    7983
    8084procedure Register;
     
    163167  FileList: TStringList;
    164168  I: Integer;
     169  J: Integer;
    165170  LocaleShort: string;
    166171  SearchMask: string;
     172  LangDirs: TStrings;
    167173begin
    168174  FPoFiles.Clear;
    169   if Assigned(FLanguage) then
    170   try
     175  if Assigned(FLanguage) then begin
    171176    LocaleShort := GetLocaleShort;
    172     //ShowMessage(ExtractFileDir(Application.ExeName) +
    173     //  DirectorySeparator + 'Languages' + ' ' + '*.' + LocaleShort + '.po');
    174177    SearchMask := '*';
    175178    if LocaleShort <> '' then SearchMask := SearchMask + '.' + LocaleShort;
    176     SearchMask := SearchMask + '.po';
    177     FileList := FindAllFiles(GetLangFileDir, SearchMask);
    178     for I := 0 to FileList.Count - 1 do begin
    179       FileName := FileList[I];
    180       //FileName := FindLocaleFileName('.po');
    181       if FileExists(FileName) and (
    182       ((LocaleShort = '') and (Pos('.', FileName) = Pos('.po', FileName))) or
    183       (LocaleShort <> '')) then FPoFiles.Add(TPOFile.Create(FileName));
    184     end;
    185   finally
    186     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;
    187196  end;
    188197end;
     
    290299  Item := Component.ClassType;
    291300  while Assigned(Item) do begin
    292     //ShowMessage(Component.Name + ', ' + Component.ClassName + ', ' + Item.ClassName + ', ' + PropertyName);
    293301    Excludes := ComponentExcludes.FindByClassType(Item.ClassType);
    294302    if Assigned(Excludes) then begin
     
    302310end;
    303311
    304 function TTranslator.GetLangFileDir: string;
    305 begin
    306   Result := FPoFilesFolder;
    307   if Copy(Result, 1, 1) <> DirectorySeparator then
    308     Result := ExtractFileDir(Application.ExeName) +
    309       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;
    310328end;
    311329
     
    374392var
    375393  I: Integer;
    376   LangDir: string;
    377 begin
    378   LangDir := GetLangFileDir;
     394  J: Integer;
     395  LangDirs: TStrings;
     396begin
     397  LangDirs := GetLangFileDirs;
    379398  Languages.SearchByCode('').Available := True; // Automatic
    380399
    381400  for I := 1 to Languages.Count - 1 do
    382401  with Languages[I] do begin
    383     Available := FileExists(LangDir + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) +
    384       '.' + Code + ExtensionSeparator + 'po') or (Code = 'en');
    385   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;
    386411end;
    387412
     
    572597end;
    573598
    574 
    575599end.
    576 
  • trunk/Packages/Common/URI.pas

    r314 r315  
    1 unit UURI;
     1unit URI;
    22
    33// Date: 2011-04-04
    4 
    5 {$mode delphi}
    64
    75interface
     
    8583  end;
    8684
     85
    8786implementation
    8887
     
    183182begin
    184183  Items.Free;
    185   inherited Destroy;
     184  inherited;
    186185end;
    187186
     
    232231begin
    233232  Path.Free;
    234   inherited Destroy;
     233  inherited;
    235234end;
    236235
     
    243242    Fragment := TURI(Source).Fragment;
    244243    Query := TURI(Source).Query;
    245   end else inherited Assign(Source);
     244  end else inherited;
    246245end;
    247246
     
    291290destructor TURL.Destroy;
    292291begin
    293   inherited Destroy;
     292  inherited;
    294293end;
    295294
     
    344343begin
    345344  Directory.Free;
    346   inherited Destroy;
    347 end;
    348 
     345  inherited;
     346end;
    349347
    350348end.
    351 
  • trunk/Packages/Common/XML.pas

    r314 r315  
    1 unit UXMLUtils;
    2 
    3 {$mode delphi}
     1unit XML;
    42
    53interface
     
    1614procedure WriteString(Node: TDOMNode; Name: string; Value: string);
    1715procedure WriteDateTime(Node: TDOMNode; Name: string; Value: TDateTime);
     16procedure WriteDouble(Node: TDOMNode; Name: string; Value: Double);
    1817function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer;
    1918function ReadInt64(Node: TDOMNode; Name: string; DefaultValue: Int64): Int64;
     
    2120function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string;
    2221function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime;
     22function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double;
    2323procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
    2424
    2525
    2626implementation
     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;
    2737
    2838procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
     
    202212end;
    203213
     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
    204223function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer;
    205224var
     
    254273
    255274end.
    256 
  • trunk/Packages/CoolStreaming/UBitStream.pas

    r185 r315  
    88
    99uses
    10   Classes, SysUtils, RtlConsts, Math, UMemory;
     10  Classes, SysUtils, RtlConsts, Math, Memory;
    1111
    1212type
  • trunk/Packages/PinConnection/UCommThread.pas

    r203 r315  
    66
    77uses
    8   Classes, SysUtils, UCommPin, SyncObjs, UCommon,
    9   DateUtils, UThreading, SpecializedList, UBinarySerializer;
     8  Classes, SysUtils, UCommPin, SyncObjs, Common,
     9  DateUtils, Threading, SpecializedList, UBinarySerializer;
    1010
    1111type
  • trunk/UCore.lfm

    r313 r315  
    18581858    Top = 324
    18591859  end
    1860   object AboutDialog1: TAboutDialog
    1861     ThemeManager = ThemeManager1
    1862     ApplicationInfo = ApplicationInfo
    1863     Left = 404
    1864     Top = 184
    1865   end
    18661860end
  • trunk/UCore.pas

    r313 r315  
    77uses
    88  Classes, SysUtils, XMLConf, FileUtil, ActnList, Controls, Dialogs, Forms,
    9   UGame, UApplicationInfo, UPersistentForm, UScaleDPI, UTranslator, DOM,
    10   URegistry, ULastOpenedList, UTheme, UAboutDialog, Registry, Menus,
     9  UGame, ApplicationInfo, PersistentForm, ScaleDPI, Translator, DOM,
     10  RegistryEx, LastOpenedList, Theme, Registry, Menus,
    1111  UFormClient, UPlayer, UGameServer, UGameClient, fgl, UServerList, UGameSystem,
    1212  Graphics, UUnit;
     
    1818  TCore = class(TDataModule)
    1919    AAbout: TAction;
    20     AboutDialog1: TAboutDialog;
    2120    AFullscreen: TAction;
    2221    AToggleFogOfWar: TAction;
     
    131130
    132131uses
    133   UFormMain, UFormNew, UFormSettings, UClientAI, UFormKeyShortcuts, UCommon,
    134   UFormHelp, UFormCharts, UFormUnitMoves, UFormPlayersStats, UClientGUI;
     132  UFormMain, UFormNew, UFormSettings, UClientAI, UFormKeyShortcuts, Common,
     133  UFormHelp, UFormCharts, UFormUnitMoves, UFormPlayersStats, UClientGUI, FormAbout;
    135134
    136135const
     
    308307
    309308procedure TCore.AAboutExecute(Sender: TObject);
    310 begin
    311   AboutDialog1.Show;
     309var
     310  FormAbout: TFormAbout;
     311begin
     312  FormAbout := TFormAbout.Create(nil);
     313  try
     314    FormAbout.ApplicationInfo := ApplicationInfo;
     315    FormAbout.ShowModal;
     316  finally
     317    FormAbout.Free;
     318  end;
    312319end;
    313320
     
    471478    CoolTranslator1.POFilesFolder := LinuxLanguagesDir;
    472479  {$ENDIF}
    473  
     480
    474481  GameSystems := TGameSystems.Create;
    475482  Server := TServer.Create;
  • trunk/UGame.pas

    r310 r315  
    77uses
    88  Classes, SysUtils, ExtCtrls, Graphics, XMLConf, XMLRead, XMLWrite, Forms,
    9   DOM, Math, LazFileUtils, UXMLUtils, Dialogs, LCLType, LCLIntf, fgl, UBuilding,
     9  DOM, Math, LazFileUtils, XML, Dialogs, LCLType, LCLIntf, fgl, UBuilding,
    1010  UGeometry, UPlayer, UMap, UMapType, UUnit, UGameSystem;
    1111
  • trunk/UGameClient.pas

    r233 r315  
    77uses
    88  Classes, SysUtils, UGame, Forms, fgl, UGameProtocol, UGameServer, UCommThread,
    9   UThreading, UCommFrame, UPlayer;
     9  Threading, UCommFrame, UPlayer;
    1010
    1111type
  • trunk/UGameSystem.pas

    r292 r315  
    66
    77uses
    8   Classes, SysUtils, fgl, UUnit, DOM, XMLRead, XMLWrite, UXMLUtils, XMLConf,
     8  Classes, SysUtils, fgl, UUnit, DOM, XMLRead, XMLWrite, XML, XMLConf,
    99  FileUtil, LazFileUtils, UMapType, UNation, UBuilding;
    1010
  • trunk/UItemList.pas

    r300 r315  
    66
    77uses
    8   Classes, SysUtils, fgl, DOM, UXMLUtils, UCommon, Graphics;
     8  Classes, SysUtils, fgl, DOM, XML, Common, Graphics;
    99
    1010type
  • trunk/UMap.pas

    r307 r315  
    77uses
    88  Classes, SysUtils, Graphics, ExtCtrls, UGeometry, DOM, fgl, UBuilding,
    9   UXMLUtils, UUnit;
     9  XML, UUnit;
    1010
    1111const
  • trunk/UNation.pas

    r296 r315  
    3535
    3636uses
    37   UCommon;
     37  Common;
    3838
    3939{ TNation }
  • trunk/UPlayer.pas

    r307 r315  
    66
    77uses
    8   Classes, SysUtils, Graphics, UMap, DOM, fgl, XMLConf, UXMLUtils, Math,
     8  Classes, SysUtils, Graphics, UMap, DOM, fgl, XMLConf, XML, Math,
    99  UGeometry, UUnit, UNation, UItemList;
    1010
  • trunk/UUnit.pas

    r296 r315  
    66
    77uses
    8   Classes, SysUtils, fgl, UGeometry, DOM, UXMLUtils, UItemList;
     8  Classes, SysUtils, fgl, UGeometry, DOM, XML, UItemList;
    99
    1010type
  • trunk/xtactics.lpi

    r313 r315  
    353353    <Linking>
    354354      <Debugging>
     355        <DebugInfoType Value="dsDwarf2Set"/>
    355356        <UseHeaptrc Value="True"/>
    356357        <UseExternalDbgSyms Value="True"/>
Note: See TracChangeset for help on using the changeset viewer.