Changeset 219
- Timestamp:
- Jan 17, 2025, 9:05:54 PM (4 days ago)
- Location:
- trunk
- Files:
-
- 45 added
- 6 deleted
- 7 edited
- 1 copied
- 92 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Acronym.pas
r218 r219 1 unit UAcronym; 2 3 {$mode delphi}{$H+} 1 unit Acronym; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Contnrs, XMLRead, XMLWrite, DOM, UXMLUtils,9 fphttpclient2, Dialogs, odbcconn, sqldb, LazUTF8, fgl;6 Classes, SysUtils, XMLRead, XMLWrite, DOM, XML, fphttpclient2, Dialogs, 7 odbcconn, sqldb, LazUTF8, Generics.Collections, ListViewSort; 10 8 11 9 type … … 34 32 { TAcronyms } 35 33 36 TAcronyms = class(TObjectList )34 TAcronyms = class(TObjectList<TAcronym>) 37 35 Db: TAcronymDb; 38 36 procedure SaveToNode(Node: TDOMNode); … … 61 59 { TAcronymMeanings } 62 60 63 TAcronymMeanings = class(TObjectList )61 TAcronymMeanings = class(TObjectList<TAcronymMeaning>) 64 62 public 65 63 Acronym: TAcronym; … … 80 78 ImportSources: TImportSources; 81 79 Enabled: Boolean; 80 procedure Assign(Source: TAcronymCategory); 82 81 procedure SaveToNode(Node: TDOMNode); 83 82 procedure LoadFromNode(Node: TDOMNode); … … 88 87 { TAcronymCategories } 89 88 90 TAcronymCategories = class(TObjectList )89 TAcronymCategories = class(TObjectList<TAcronymCategory>) 91 90 Db: TAcronymDb; 92 91 procedure UpdateIds; … … 101 100 procedure AssignFromStrings(Strings: TStrings); 102 101 procedure AddFromStrings(Strings: TStrings); 103 procedure AssignToList(List: TFPGObjectList<TObject>); 102 procedure AssignToList(List: TObjects); 103 procedure Assign(Source: TAcronymCategories); 104 104 function GetString: string; 105 105 procedure UpdateLinkImportSources(Item: TImportSource); … … 138 138 { TImportPatterns } 139 139 140 TImportPatterns = class(TObjectList )140 TImportPatterns = class(TObjectList<TImportPattern>) 141 141 procedure SaveToNode(Node: TDOMNode); 142 142 procedure LoadFromNode(Node: TDOMNode); … … 163 163 { TImportFormats } 164 164 165 TImportFormats = class(TObjectList )165 TImportFormats = class(TObjectList<TImportFormat>) 166 166 procedure UpdateIds; 167 167 procedure SaveToNode(Node: TDOMNode); … … 204 204 { TImportSources } 205 205 206 TImportSources = class(TObjectList )206 TImportSources = class(TObjectList<TImportSource>) 207 207 AcronymDb: TAcronymDb; 208 208 procedure UpdateIds; … … 214 214 procedure SaveToNode(Node: TDOMNode); 215 215 procedure LoadFromNode(Node: TDOMNode); 216 procedure AssignToList(List: T FPGObjectList<TObject>);216 procedure AssignToList(List: TObjects); 217 217 end; 218 218 … … 230 230 Modified: Boolean; 231 231 AddedCount: Integer; 232 OnUpdate: T FPGList<TNotifyEvent>;232 OnUpdate: TList<TNotifyEvent>; 233 233 constructor Create; 234 234 destructor Destroy; override; … … 243 243 procedure RemoveMeaning(Meaning: TAcronymMeaning); 244 244 procedure RemoveAcronym(AcronymName, MeaningName: string); 245 procedure AssignToList(List: T FPGObjectList<TObject>; EnabledCategoryOnly: Boolean = False);245 procedure AssignToList(List: TObjects; EnabledCategoryOnly: Boolean = False); 246 246 procedure BeginUpdate; 247 247 procedure EndUpdate; … … 249 249 end; 250 250 251 function AcronymComparer(Item1, Item2: Pointer): Integer;252 253 251 var 254 252 ImportVariableString: array [TImportVariable] of string; … … 256 254 257 255 procedure Translate; 256 258 257 259 258 implementation … … 285 284 ImportPatternFlagString[ipfSkip] := SSkip; 286 285 ImportPatternFlagString[ipfRemove] := SRemoveOnStart; 287 end;288 289 function AcronymComparer(Item1, Item2: Pointer): Integer;290 begin291 Result := CompareStr(TAcronym(Item1).Name, TAcronym(Item2).Name);292 286 end; 293 287 … … 372 366 begin 373 367 for I := 0 to Count - 1 do 374 with TImportPattern(Items[I])do begin368 with Items[I] do begin 375 369 NewNode2 := Node.OwnerDocument.CreateElement('Pattern'); 376 370 Node.AppendChild(NewNode2); … … 476 470 LastLength := Length(S); 477 471 for I := 0 to Format.ItemPatterns.Count - 1 do 478 with TImportPattern(Format.ItemPatterns[I])do472 with Format.ItemPatterns[I] do 479 473 if Flag = ipfRemove then begin 480 474 P := Pos(StartString, S); … … 494 488 I := 0; 495 489 while I < Format.ItemPatterns.Count do 496 with TImportPattern(Format.ItemPatterns[I])do begin490 with Format.ItemPatterns[I] do begin 497 491 if Flag <> ipfRemove then begin 498 492 if Length(StartString) > 0 then begin … … 559 553 P1 := Pos(StartString, S); 560 554 if P1 > 0 then begin 561 P2 := Pos(TImportPattern(Format.ItemPatterns[(I + 1) mod Format.ItemPatterns.Count]).StartString, S); 555 P2 := Pos(TImportPattern(Format.ItemPatterns[(I + 1) mod 556 Format.ItemPatterns.Count]).StartString, S); 562 557 if (P2 > 0) and (P1 < P2) then Continue; 563 558 end; … … 594 589 end; 595 590 596 procedure TImportSources.AssignToList(List: T FPGObjectList<TObject>);591 procedure TImportSources.AssignToList(List: TObjects); 597 592 var 598 593 I: Integer; … … 600 595 List.Clear; 601 596 for I := 0 to Count - 1 do 602 List.Add( TImportSource(Items[I]))597 List.Add(Items[I]); 603 598 end; 604 599 … … 614 609 LastImportTime := Now; 615 610 end; 616 617 611 618 612 { TImportFormat } … … 631 625 ItemPatterns.Count := Source.ItemPatterns.Count; 632 626 for I := 0 to ItemPatterns.Count - 1 do begin 633 TImportPattern(ItemPatterns[I]).Assign(TImportPattern(Source.ItemPatterns[I]));627 ItemPatterns[I].Assign(Source.ItemPatterns[I]); 634 628 end; 635 629 end; … … 673 667 destructor TImportFormat.Destroy; 674 668 begin 675 Block.Free;676 ItemPatterns.Free;677 inherited Destroy;669 FreeAndNil(Block); 670 FreeAndNil(ItemPatterns); 671 inherited; 678 672 end; 679 673 … … 688 682 LastId := 0; 689 683 for I := 0 to Count - 1 do begin 690 if TImportSource(Items[I]).Id > LastId then LastId := TImportSource(Items[I]).Id;684 if Items[I].Id > LastId then LastId := Items[I].Id; 691 685 end; 692 686 // Add ID to new items without ID 693 687 for I := 0 to Count - 1 do begin 694 if TImportSource(Items[I]).Id = 0 then begin688 if Items[I].Id = 0 then begin 695 689 Inc(LastId); 696 TImportSource(Items[I]).Id := LastId;690 Items[I].Id := LastId; 697 691 end; 698 692 end; … … 704 698 begin 705 699 I := 0; 706 while (I < Count) and ( TImportSource(Items[I]).Id <> Id) do Inc(I);707 if I < Count then Result := TImportSource(Items[I])700 while (I < Count) and (Items[I].Id <> Id) do Inc(I); 701 if I < Count then Result := Items[I] 708 702 else Result := nil; 709 703 end; … … 717 711 NewNode := Node.OwnerDocument.CreateElement('Ref'); 718 712 Node.AppendChild(NewNode); 719 NewNode.TextContent := WideString(IntToStr( TImportSource(Items[I]).Id));713 NewNode.TextContent := WideString(IntToStr(Items[I].Id)); 720 714 end; 721 715 end; … … 745 739 Strings.Clear; 746 740 for I := 0 to Count - 1 do 747 Strings.AddObject( TImportSource(Items[I]).Name, Items[I]);741 Strings.AddObject(Items[I].Name, Items[I]); 748 742 end; 749 743 … … 753 747 begin 754 748 I := 0; 755 while (I < Count) and ( TImportSource(Items[I]).Name <> Name) do Inc(I);756 if I < Count then Result := TImportSource(Items[I])749 while (I < Count) and (Items[I].Name <> Name) do Inc(I); 750 if I < Count then Result := Items[I] 757 751 else Result := nil; 758 752 end; … … 765 759 UpdateIds; 766 760 for I := 0 to Count - 1 do 767 with TImportSource(Items[I])do begin761 with Items[I] do begin 768 762 NewNode2 := Node.OwnerDocument.CreateElement('ImportSource'); 769 763 Node.AppendChild(NewNode2); … … 796 790 begin 797 791 I := 0; 798 while (I < Count) and ( TImportFormat(Items[I]).Name <> Name) do Inc(I);799 if I < Count then Result := TImportFormat(Items[I])792 while (I < Count) and (Items[I].Name <> Name) do Inc(I); 793 if I < Count then Result := Items[I] 800 794 else Result := nil; 801 795 end; … … 809 803 LastId := 0; 810 804 for I := 0 to Count - 1 do begin 811 if TImportFormat(Items[I]).Id > LastId then LastId := TImportFormat(Items[I]).Id;805 if Items[I].Id > LastId then LastId := Items[I].Id; 812 806 end; 813 807 // Add ID to new items without ID 814 808 for I := 0 to Count - 1 do begin 815 if TImportFormat(Items[I]).Id = 0 then begin809 if Items[I].Id = 0 then begin 816 810 Inc(LastId); 817 TImportFormat(Items[I]).Id := LastId;811 Items[I].Id := LastId; 818 812 end; 819 813 end; … … 827 821 UpdateIds; 828 822 for I := 0 to Count - 1 do 829 with TImportFormat(Items[I])do begin823 with Items[I] do begin 830 824 NewNode2 := Node.OwnerDocument.CreateElement('ImportFormat'); 831 825 Node.AppendChild(NewNode2); … … 855 849 begin 856 850 I := 0; 857 while (I < Count) and ( TImportFormat(Items[I]).Id <> Id) do Inc(I);858 if I < Count then Result := TImportFormat(Items[I])851 while (I < Count) and (Items[I].Id <> Id) do Inc(I); 852 if I < Count then Result := Items[I] 859 853 else Result := nil; 860 854 end; … … 869 863 if DownloadHTTP(URL, ResponseStream) then begin 870 864 ResponseStream.Position := 0; 865 S := default(string); 871 866 SetLength(S, ResponseStream.Size); 872 867 ResponseStream.Read(S[1], Length(S)); … … 942 937 // Add reverse references 943 938 for I := 0 to Categories.Count - 1 do 944 TAcronymCategory(Categories[I]).ImportSources.Add(Self);939 Categories[I].ImportSources.Add(Self); 945 940 end; 946 941 … … 959 954 begin 960 955 for I := 0 to Categories.Count - 1 do 961 TAcronymCategory(Categories[I]).ImportSources.Remove(Self);956 Categories[I].ImportSources.Remove(Self); 962 957 FreeAndNil(Categories); 963 958 FreeAndNil(ResponseStream); 964 inherited Destroy;959 inherited; 965 960 end; 966 961 … … 980 975 FreeAndNil(Categories); 981 976 FreeAndNil(Sources); 982 inherited Destroy;977 inherited; 983 978 end; 984 979 … … 993 988 LastId := 0; 994 989 for I := 0 to Count - 1 do begin 995 if TAcronymMeaning(Items[I]).Id > LastId then LastId := TAcronymMeaning(Items[I]).Id;990 if Items[I].Id > LastId then LastId := Items[I].Id; 996 991 end; 997 992 // Add ID to new items without ID 998 993 for I := 0 to Count - 1 do begin 999 if TAcronymMeaning(Items[I]).Id = 0 then begin994 if Items[I].Id = 0 then begin 1000 995 Inc(LastId); 1001 TAcronymMeaning(Items[I]).Id := LastId;996 Items[I].Id := LastId; 1002 997 end; 1003 998 end; … … 1011 1006 UpdateIds; 1012 1007 for I := 0 to Count - 1 do 1013 with TAcronymMeaning(Items[I])do begin1008 with Items[I] do begin 1014 1009 NewNode2 := Node.OwnerDocument.CreateElement('Meaning'); 1015 1010 Node.AppendChild(NewNode2); … … 1042 1037 I := 0; 1043 1038 if sfCaseInsensitive in Flags then begin 1044 while (I < Count) and (LowerCase( TAcronymMeaning(Items[I]).Name) <> LowerCase(Name)) do Inc(I);1039 while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I); 1045 1040 end else begin 1046 while (I < Count) and ( TAcronymMeaning(Items[I]).Name <> Name) do Inc(I);1047 end; 1048 if I < Count then Result := TAcronymMeaning(Items[I])1041 while (I < Count) and (Items[I].Name <> Name) do Inc(I); 1042 end; 1043 if I < Count then Result := Items[I] 1049 1044 else Result := nil; 1050 1045 end; … … 1063 1058 Result := ''; 1064 1059 for I := 0 to Count - 1 do 1065 Result := Result + ', "' + TAcronymMeaning(Items[I]).Name + '"';1060 Result := Result + ', "' + Items[I].Name + '"'; 1066 1061 System.Delete(Result, 1, 2); 1067 1062 end; … … 1076 1071 if Categories.IndexOf(MergedCategories[I]) = -1 then begin 1077 1072 Categories.Add(MergedCategories[I]); 1078 TAcronymCategory(MergedCategories[I]).AcronymMeanings.Add(Self);1073 MergedCategories[I].AcronymMeanings.Add(Self); 1079 1074 end; 1080 1075 end; … … 1113 1108 // Add reverse references 1114 1109 for I := 0 to Categories.Count - 1 do 1115 TAcronymCategory(Categories[I]).AcronymMeanings.Add(Self);1110 Categories[I].AcronymMeanings.Add(Self); 1116 1111 end; 1117 1112 … … 1134 1129 begin 1135 1130 for I := 0 to Categories.Count - 1 do 1136 TAcronymCategory(Categories[I]).AcronymMeanings.Remove(Self);1131 Categories[I].AcronymMeanings.Remove(Self); 1137 1132 FreeAndNil(Categories); 1138 1133 FreeAndNil(Sources); 1139 inherited Destroy;1134 inherited; 1140 1135 end; 1141 1136 … … 1148 1143 begin 1149 1144 for I := 0 to Count - 1 do 1150 with TAcronym(Items[I])do begin1145 with Items[I] do begin 1151 1146 NewNode2 := Node.OwnerDocument.CreateElement('Acronym'); 1152 1147 Node.AppendChild(NewNode2); … … 1177 1172 I := 0; 1178 1173 if sfCaseInsensitive in Flags then begin 1179 while (I < Count) and (LowerCase( TAcronym(Items[I]).Name) <> LowerCase(Name)) do Inc(I);1174 while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I); 1180 1175 end else begin 1181 while (I < Count) and ( TAcronym(Items[I]).Name <> Name) do Inc(I);1182 end; 1183 if I < Count then Result := TAcronym(Items[I])1176 while (I < Count) and (Items[I].Name <> Name) do Inc(I); 1177 end; 1178 if I < Count then Result := Items[I] 1184 1179 else Result := nil; 1185 1180 end; … … 1202 1197 LastId := 0; 1203 1198 for I := 0 to Count - 1 do begin 1204 if TAcronymCategory(Items[I]).Id > LastId then LastId := TAcronymCategory(Items[I]).Id;1199 if Items[I].Id > LastId then LastId := Items[I].Id; 1205 1200 end; 1206 1201 // Add ID to new items without ID 1207 1202 for I := 0 to Count - 1 do begin 1208 if TAcronymCategory(Items[I]).Id = 0 then begin1203 if Items[I].Id = 0 then begin 1209 1204 Inc(LastId); 1210 TAcronymCategory(Items[I]).Id := LastId;1205 Items[I].Id := LastId; 1211 1206 end; 1212 1207 end; … … 1220 1215 UpdateIds; 1221 1216 for I := 0 to Count - 1 do 1222 with TAcronymCategory(Items[I])do begin1217 with Items[I] do begin 1223 1218 NewNode2 := Node.OwnerDocument.CreateElement('Category'); 1224 1219 Node.AppendChild(NewNode2); … … 1251 1246 NewNode := Node.OwnerDocument.CreateElement('Ref'); 1252 1247 Node.AppendChild(NewNode); 1253 NewNode.TextContent := WideString(IntToStr( TAcronymCategory(Items[I]).Id));1248 NewNode.TextContent := WideString(IntToStr(Items[I].Id)); 1254 1249 end; 1255 1250 end; … … 1289 1284 begin 1290 1285 I := 0; 1291 while (I < Count) and ( TAcronymCategory(Items[I]).Name <> Name) do Inc(I);1292 if I < Count then Result := TAcronymCategory(Items[I])1286 while (I < Count) and (Items[I].Name <> Name) do Inc(I); 1287 if I < Count then Result := Items[I] 1293 1288 else Result := nil; 1294 1289 end; … … 1299 1294 begin 1300 1295 I := 0; 1301 while (I < Count) and ( TAcronymCategory(Items[I]).Id <> Id) do Inc(I);1302 if I < Count then Result := TAcronymCategory(Items[I])1296 while (I < Count) and (Items[I].Id <> Id) do Inc(I); 1297 if I < Count then Result := Items[I] 1303 1298 else Result := nil; 1304 1299 end; … … 1317 1312 Strings.Clear; 1318 1313 for I := 0 to Count - 1 do 1319 Strings.AddObject( TAcronymCategory(Items[I]).Name, Items[I]);1314 Strings.AddObject(Items[I].Name, Items[I]); 1320 1315 end; 1321 1316 … … 1335 1330 end; 1336 1331 1337 procedure TAcronymCategories.AssignToList(List: T FPGObjectList<TObject>);1332 procedure TAcronymCategories.AssignToList(List: TObjects); 1338 1333 var 1339 1334 I: Integer; … … 1341 1336 List.Clear; 1342 1337 for I := 0 to Count - 1 do 1343 List.Add(TAcronymCategory(Items[I])) 1338 List.Add(Items[I]); 1339 end; 1340 1341 procedure TAcronymCategories.Assign(Source: TAcronymCategories); 1342 var 1343 I: Integer; 1344 NewCategory: TAcronymCategory; 1345 begin 1346 Clear; 1347 for I := 0 to Source.Count - 1 do begin 1348 NewCategory := TAcronymCategory.Create; 1349 NewCategory.Assign(Source[I]); 1350 Add(NewCategory); 1351 end; 1344 1352 end; 1345 1353 … … 1350 1358 Result := ''; 1351 1359 for I := 0 to Count - 1 do 1352 Result := Result + TAcronymCategory(Items[I]).Name + ',';1360 Result := Result + Items[I].Name + ','; 1353 1361 System.Delete(Result, Length(Result), 1); 1354 1362 end; … … 1359 1367 begin 1360 1368 for I := 0 to Count - 1 do 1361 if TAcronymCategory(Items[I]).ImportSources.IndexOf(Item) = -1 then1362 TAcronymCategory(Items[I]).ImportSources.Add(Item);1369 if Items[I].ImportSources.IndexOf(Item) = -1 then 1370 Items[I].ImportSources.Add(Item); 1363 1371 end; 1364 1372 … … 1368 1376 begin 1369 1377 for I := 0 to Count - 1 do 1370 if TAcronymCategory(Items[I]).AcronymMeanings.IndexOf(Item) = -1 then1371 TAcronymCategory(Items[I]).AcronymMeanings.Add(Item);1378 if Items[I].AcronymMeanings.IndexOf(Item) = -1 then 1379 Items[I].AcronymMeanings.Add(Item); 1372 1380 end; 1373 1381 … … 1378 1386 Result := False; 1379 1387 for I := 0 to Count - 1 do 1380 if TAcronymCategory(Items[I]).Enabled then begin1388 if Items[I].Enabled then begin 1381 1389 Result := True; 1382 1390 Break; … … 1417 1425 begin 1418 1426 FreeAndNil(Meanings); 1419 inherited Destroy;1427 inherited; 1420 1428 end; 1421 1429 1422 1430 { TAcronymCategory } 1431 1432 procedure TAcronymCategory.Assign(Source: TAcronymCategory); 1433 begin 1434 Id := Source.Id; 1435 Name := Source.Name; 1436 // AcronymMeanings.Assign(Source.AcronymMeanings); 1437 // ImportSources.Assign(Source.ImportSources); 1438 Enabled := Source.Enabled; 1439 end; 1423 1440 1424 1441 procedure TAcronymCategory.SaveToNode(Node: TDOMNode); … … 1450 1467 begin 1451 1468 for I := 0 to AcronymMeanings.Count - 1 do 1452 TAcronymMeaning(AcronymMeanings[I]).Categories.Remove(Self);1469 AcronymMeanings[I].Categories.Remove(Self); 1453 1470 FreeAndNil(AcronymMeanings); 1454 1471 for I := 0 to ImportSources.Count - 1 do 1455 TImportSource(ImportSources[I]).Categories.Remove(Self);1472 ImportSources[I].Categories.Remove(Self); 1456 1473 FreeAndNil(ImportSources); 1457 inherited Destroy;1474 inherited; 1458 1475 end; 1459 1476 … … 1470 1487 ImportFormats := TImportFormats.Create; 1471 1488 FUpdateCount := 0; 1472 OnUpdate := T FPGList<TNotifyEvent>.Create;1489 OnUpdate := TList<TNotifyEvent>.Create; 1473 1490 end; 1474 1491 … … 1480 1497 FreeAndNil(Acronyms); 1481 1498 FreeAndNil(Categories); 1482 inherited Destroy;1499 inherited; 1483 1500 end; 1484 1501 … … 1636 1653 Line.Clear; 1637 1654 for I := 0 to Acronyms.Count - 1 do 1638 with TAcronym(Acronyms[I])do begin1655 with Acronyms[I] do begin 1639 1656 for K := 0 to Meanings.Count - 1 do 1640 with TAcronymMeaning(Meanings[K])do begin1657 with Meanings[K] do begin 1641 1658 Line.Clear; 1642 1659 Line.Add(Acronym.Name); … … 1644 1661 Context.Clear; 1645 1662 for J := 0 to Categories.Count - 1 do 1646 Context.Add( TAcronymCategory(Categories[J]).Name);1663 Context.Add(Categories[J].Name); 1647 1664 Line.Add(Context.DelimitedText); 1648 1665 F.Add(Line.CommaText); … … 1666 1683 Items.Clear; 1667 1684 for I := 0 to Acronyms.Count - 1 do 1668 with TAcronym(Acronyms[I])do begin1685 with Acronyms[I] do begin 1669 1686 for J := 0 to Meanings.Count - 1 do 1670 with TAcronymMeaning(Meanings[J])do begin1671 if (AName = '') or (Pos(AName, LowerCase( TAcronym(Acronyms[I]).Name)) > 0)1672 or (Pos(AName, LowerCase(Name)) > 0) then Items.Add( TAcronymMeaning(Meanings[J]))1687 with Meanings[J] do begin 1688 if (AName = '') or (Pos(AName, LowerCase(Acronyms[I].Name)) > 0) 1689 or (Pos(AName, LowerCase(Name)) > 0) then Items.Add(Meanings[J]) 1673 1690 end; 1674 1691 end; … … 1681 1698 Result := 0; 1682 1699 for I := 0 to Acronyms.Count - 1 do 1683 Result := Result + TAcronym(Acronyms[I]).Meanings.Count;1700 Result := Result + Acronyms[I].Meanings.Count; 1684 1701 end; 1685 1702 … … 1746 1763 end; 1747 1764 1748 procedure TAcronymDb.AssignToList(List: T FPGObjectList<TObject>; EnabledCategoryOnly: Boolean = False);1765 procedure TAcronymDb.AssignToList(List: TObjects; EnabledCategoryOnly: Boolean = False); 1749 1766 var 1750 1767 I: Integer; … … 1753 1770 List.Clear; 1754 1771 for I := 0 to Acronyms.Count - 1 do 1755 with TAcronym(Acronyms[I])do begin1772 with Acronyms[I] do begin 1756 1773 for J := 0 to Meanings.Count - 1 do 1757 with TAcronymMeaning(Meanings[J])do1774 with Meanings[J] do 1758 1775 if not EnabledCategoryOnly or (EnabledCategoryOnly and Categories.IsAnyEnabled) then begin 1759 List.Add( TAcronymMeaning(Meanings[J]));1776 List.Add(Meanings[J]); 1760 1777 end; 1761 1778 end; -
trunk/AcronymDecoder.lpi
r215 r219 105 105 </Unit0> 106 106 <Unit1> 107 <Filename Value=" UAcronym.pas"/>107 <Filename Value="Acronym.pas"/> 108 108 <IsPartOfProject Value="True"/> 109 109 </Unit1> 110 110 <Unit2> 111 <Filename Value="Forms\ UFormCategorySelect.pas"/>111 <Filename Value="Forms\FormCategorySelect.pas"/> 112 112 <IsPartOfProject Value="True"/> 113 113 <ComponentName Value="FormCategorySelect"/> … … 116 116 </Unit2> 117 117 <Unit3> 118 <Filename Value="Forms\ UFormCategories.pas"/>118 <Filename Value="Forms\FormCategories.pas"/> 119 119 <IsPartOfProject Value="True"/> 120 120 <ComponentName Value="FormCategories"/> … … 123 123 </Unit3> 124 124 <Unit4> 125 <Filename Value="Forms\ UFormAcronym.pas"/>125 <Filename Value="Forms\FormAcronym.pas"/> 126 126 <IsPartOfProject Value="True"/> 127 127 <ComponentName Value="FormAcronym"/> … … 130 130 </Unit4> 131 131 <Unit5> 132 <Filename Value="Forms\ UFormImport.pas"/>132 <Filename Value="Forms\FormImport.pas"/> 133 133 <IsPartOfProject Value="True"/> 134 134 <ComponentName Value="FormImport"/> … … 137 137 </Unit5> 138 138 <Unit6> 139 <Filename Value="Forms\ UFormMain.pas"/>139 <Filename Value="Forms\FormMain.pas"/> 140 140 <IsPartOfProject Value="True"/> 141 141 <ComponentName Value="FormMain"/> … … 144 144 </Unit6> 145 145 <Unit7> 146 <Filename Value="Forms\ UFormSettings.pas"/>146 <Filename Value="Forms\FormSettings.pas"/> 147 147 <IsPartOfProject Value="True"/> 148 148 <ComponentName Value="FormSettings"/> … … 151 151 </Unit7> 152 152 <Unit8> 153 <Filename Value="Forms\ UFormAcronyms.pas"/>153 <Filename Value="Forms\FormAcronyms.pas"/> 154 154 <IsPartOfProject Value="True"/> 155 155 <ComponentName Value="FormAcronyms"/> … … 158 158 </Unit8> 159 159 <Unit9> 160 <Filename Value="Forms\ UFormImportSource.pas"/>160 <Filename Value="Forms\FormImportSource.pas"/> 161 161 <IsPartOfProject Value="True"/> 162 162 <ComponentName Value="FormImportSource"/> … … 165 165 </Unit9> 166 166 <Unit10> 167 <Filename Value="Forms\ UFormImportSources.pas"/>167 <Filename Value="Forms\FormImportSources.pas"/> 168 168 <IsPartOfProject Value="True"/> 169 169 <ComponentName Value="FormImportSources"/> … … 172 172 </Unit10> 173 173 <Unit11> 174 <Filename Value="Forms\ UFormImportFormat.pas"/>174 <Filename Value="Forms\FormImportFormat.pas"/> 175 175 <IsPartOfProject Value="True"/> 176 176 <ComponentName Value="FormImportFormat"/> … … 179 179 </Unit11> 180 180 <Unit12> 181 <Filename Value="Forms\ UFormImportFormats.pas"/>181 <Filename Value="Forms\FormImportFormats.pas"/> 182 182 <IsPartOfProject Value="True"/> 183 183 <ComponentName Value="FormImportFormats"/> … … 186 186 </Unit12> 187 187 <Unit13> 188 <Filename Value="Forms\ UFormImportPattern.pas"/>188 <Filename Value="Forms\FormImportPattern.pas"/> 189 189 <IsPartOfProject Value="True"/> 190 190 <ComponentName Value="FormImportPattern"/> … … 193 193 </Unit13> 194 194 <Unit14> 195 <Filename Value=" UCore.pas"/>195 <Filename Value="Core.pas"/> 196 196 <IsPartOfProject Value="True"/> 197 197 <ComponentName Value="Core"/> … … 200 200 </Unit14> 201 201 <Unit15> 202 <Filename Value="Forms\ UFormExport.pas"/>202 <Filename Value="Forms\FormExport.pas"/> 203 203 <IsPartOfProject Value="True"/> 204 204 <ComponentName Value="FormExport"/> … … 207 207 </Unit15> 208 208 <Unit16> 209 <Filename Value="Forms\ UFormCheck.pas"/>209 <Filename Value="Forms\FormCheck.pas"/> 210 210 <IsPartOfProject Value="True"/> 211 211 <ComponentName Value="FormCheck"/> … … 246 246 <Linking> 247 247 <Debugging> 248 <DebugInfoType Value="dsDwarf2Set"/> 248 249 <UseHeaptrc Value="True"/> 249 250 <UseExternalDbgSyms Value="True"/> -
trunk/AcronymDecoder.lpr
r215 r219 1 1 program AcronymDecoder; 2 3 {$mode delphi}{$H+}4 2 5 3 uses … … 8 6 {$ENDIF} 9 7 Interfaces, // this includes the LCL widgetset 10 Forms, UAcronym, Common, SysUtils,11 UFormMain, UCore, UFormCheck8 Forms, Acronym, Common, SysUtils, 9 FormMain, Core, FormCheck 12 10 { you can add units after this }; 13 11 … … 26 24 {$ENDIF} 27 25 28 Application.Title :='Acronym Decoder';26 Application.Title:='Acronym Decoder'; 29 27 RequireDerivedFormResource := True; 30 28 Application.Initialize; 31 Application.CreateForm(TCore, Core); 32 Application.CreateForm(TFormMain, FormMain); 29 Application.CreateForm(TCore, Core.Core); 33 30 Application.Run; 34 31 end. -
trunk/Core.lfm
r218 r219 9 9 PPI = 144 10 10 object Translator: TTranslator 11 POFilesFolder = 'Languages '11 POFilesFolder = 'Languages;Packages/Common/Languages' 12 12 OnTranslate = TranslatorTranslate 13 13 Left = 228 … … 1505 1505 AppName = 'Acronym Decoder' 1506 1506 Description = 'A simple tool for quick searching of meaning for various acronyms and abbreviations.' 1507 ReleaseDate = 4 45821507 ReleaseDate = 45674 1508 1508 RegistryKey = '\Software\Chronosoft\Acronym Decoder' 1509 1509 RegistryRoot = rrKeyCurrentUser -
trunk/Core.pas
r218 r219 1 unit UCore; 2 3 {$mode delphi} 1 unit Core; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, FileUtil, UAcronym, UTranslator, UPersistentForm,9 UJobProgressView, UScaleDPI, Forms, Controls, ExtCtrls, Menus, LazFileUtils,10 URegistry, UApplicationInfo, Registry, UTheme;6 Classes, SysUtils, FileUtil, Acronym, Translator, PersistentForm, 7 JobProgressView, ScaleDPI, Forms, Controls, ExtCtrls, Menus, LazFileUtils, 8 RegistryEx, ApplicationInfo, Registry, Theme, FormMain; 11 9 12 10 type … … 43 41 procedure WriteLnConsole(Text: string); 44 42 public 43 FormMain: TFormMain; 45 44 AcronymDb: TAcronymDb; 46 45 StartOnLogon: Boolean; … … 54 53 procedure SaveConfig; 55 54 procedure ScaleDPI; 55 function CompareStrings(Strings1, Strings2: TStrings): Boolean; 56 56 property AlwaysOnTop: Boolean read FAlwaysOnTop write SetAlwaysOnTop; 57 57 end; … … 62 62 63 63 implementation 64 65 uses66 UFormMain;67 64 68 65 const … … 87 84 InitializeFinished := False; 88 85 StoredDimension := TControlDimension.Create; 86 Application.CreateForm(TFormMain, FormMain); 89 87 end; 90 88 … … 95 93 end; 96 94 95 function TCore.CompareStrings(Strings1, Strings2: TStrings): Boolean; 96 var 97 I: Integer; 98 begin 99 Result := Strings1.Count = Strings2.Count; 100 if not Result then Exit; 101 for I := 0 to Strings1.Count - 1 do 102 if (Strings1[I] <> Strings2[I]) or (Strings1.Objects[I] <> Strings2.Objects[I]) then begin 103 Result := False; 104 Exit; 105 end; 106 end; 107 97 108 procedure TCore.TrayIcon1Click(Sender: TObject); 98 109 begin … … 103 114 procedure TCore.TranslatorTranslate(Sender: TObject); 104 115 begin 105 UAcronym.Translate;116 Acronym.Translate; 106 117 end; 107 118 … … 276 287 end; 277 288 278 279 280 289 end. 281 290 -
trunk/Forms/FormAcronym.lfm
r218 r219 1 1 object FormAcronym: TFormAcronym 2 2 Left = 845 3 Height = 7444 Top = 5285 Width = 8583 Height = 893 4 Top = 480 5 Width = 1030 6 6 Caption = 'Acronym' 7 ClientHeight = 744 8 ClientWidth = 858 9 DesignTimePPI = 120 10 OnClose = FormClose 11 OnCreate = FormCreate 7 ClientHeight = 893 8 ClientWidth = 1030 9 DesignTimePPI = 144 12 10 OnShow = FormShow 13 11 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'12 LCLVersion = '3.6.0.0' 15 13 object Label1: TLabel 16 Left = 1 017 Height = 2 018 Top = 2 019 Width = 4314 Left = 12 15 Height = 26 16 Top = 24 17 Width = 56 20 18 Caption = 'Name:' 21 19 ParentColor = False … … 23 21 end 24 22 object EditAcronym: TEdit 25 Left = 191 26 Height = 28 27 Top = 19 28 Width = 652 29 Anchors = [akTop, akLeft, akRight] 30 OnKeyPress = EditMeaningKeyPress 23 Left = 229 24 Height = 43 25 Top = 23 26 Width = 783 27 Anchors = [akTop, akLeft, akRight] 31 28 ParentFont = False 32 29 TabOrder = 0 30 OnKeyPress = EditMeaningKeyPress 33 31 end 34 32 object Label2: TLabel 35 Left = 1 036 Height = 2 037 Top = 6138 Width = 6133 Left = 12 34 Height = 26 35 Top = 73 36 Width = 79 39 37 Caption = 'Meaning:' 40 38 ParentColor = False … … 42 40 end 43 41 object EditMeaning: TEdit 44 Left = 191 45 Height = 28 46 Top = 61 47 Width = 652 48 Anchors = [akTop, akLeft, akRight] 49 OnKeyPress = EditMeaningKeyPress 42 Left = 229 43 Height = 43 44 Top = 73 45 Width = 783 46 Anchors = [akTop, akLeft, akRight] 50 47 ParentFont = False 51 48 TabOrder = 1 49 OnKeyPress = EditMeaningKeyPress 52 50 end 53 51 object ButtonOk: TButton 54 Left = 73355 Height = 3 156 Top = 69457 Width = 9452 Left = 880 53 Height = 37 54 Top = 833 55 Width = 113 58 56 Anchors = [akRight, akBottom] 59 57 Caption = 'Ok' 60 58 ModalResult = 1 61 OnKeyPress = EditMeaningKeyPress62 59 ParentFont = False 63 60 TabOrder = 7 61 OnKeyPress = EditMeaningKeyPress 64 62 end 65 63 object ButtonCancel: TButton 66 Left = 61367 Height = 3 168 Top = 69469 Width = 9464 Left = 736 65 Height = 37 66 Top = 833 67 Width = 113 70 68 Anchors = [akRight, akBottom] 71 69 Caption = 'Cancel' 72 70 ModalResult = 2 73 OnKeyPress = EditMeaningKeyPress74 71 ParentFont = False 75 72 TabOrder = 6 73 OnKeyPress = EditMeaningKeyPress 76 74 end 77 75 object Label3: TLabel 78 Left = 1 079 Height = 2 080 Top = 1 1081 Width = 7976 Left = 12 77 Height = 26 78 Top = 132 79 Width = 102 82 80 Caption = 'Description:' 83 81 ParentColor = False … … 85 83 end 86 84 object MemoDescription: TMemo 87 Left = 191 88 Height = 142 89 Top = 110 90 Width = 652 91 Anchors = [akTop, akLeft, akRight] 92 OnKeyPress = EditMeaningKeyPress 85 Left = 229 86 Height = 170 87 Top = 132 88 Width = 783 89 Anchors = [akTop, akLeft, akRight] 93 90 ParentFont = False 94 91 ScrollBars = ssAutoBoth 95 92 TabOrder = 2 93 OnKeyPress = EditMeaningKeyPress 96 94 end 97 95 object Label4: TLabel 98 Left = 1 599 Height = 2 0100 Top = 260101 Width = 7496 Left = 18 97 Height = 26 98 Top = 312 99 Width = 95 102 100 Caption = 'Categories:' 103 101 ParentColor = False … … 105 103 end 106 104 object ListBoxCategories: TListBox 107 Left = 191108 Height = 176109 Top = 260110 Width = 651105 Left = 229 106 Height = 211 107 Top = 312 108 Width = 782 111 109 Anchors = [akTop, akLeft, akRight] 112 110 ItemHeight = 0 113 111 MultiSelect = True 114 OnKeyPress = EditMeaningKeyPress115 OnSelectionChange = ListBoxCategoriesSelectionChange116 112 ParentFont = False 117 113 PopupMenu = PopupMenuCategory 118 114 ScrollWidth = 518 119 115 TabOrder = 3 116 TopIndex = -1 117 OnKeyPress = EditMeaningKeyPress 118 OnSelectionChange = ListBoxCategoriesSelectionChange 120 119 end 121 120 object Button1: TButton 122 Left = 191123 Height = 3 1124 Top = 450125 Width = 1 09121 Left = 229 122 Height = 37 123 Top = 540 124 Width = 131 126 125 Action = ACategoryAdd 127 OnKeyPress = EditMeaningKeyPress128 126 ParentFont = False 129 127 TabOrder = 4 128 OnKeyPress = EditMeaningKeyPress 130 129 end 131 130 object Button2: TButton 132 Left = 320 133 Height = 31 134 Top = 450 131 Left = 384 132 Height = 37 133 Top = 540 134 Width = 156 135 Action = ACategoryRemove 136 ParentFont = False 137 TabOrder = 5 138 OnKeyPress = EditMeaningKeyPress 139 end 140 object Label5: TLabel 141 Left = 12 142 Height = 26 143 Top = 588 135 144 Width = 130 136 Action = ACategoryRemove137 OnKeyPress = EditMeaningKeyPress138 ParentFont = False139 TabOrder = 5140 end141 object Label5: TLabel142 Left = 10143 Height = 20144 Top = 490145 Width = 101146 145 Caption = 'Imported from:' 147 146 ParentColor = False … … 149 148 end 150 149 object ListBoxImportSources: TListBox 151 Left = 191152 Height = 1 40153 Top = 490154 Width = 652150 Left = 229 151 Height = 168 152 Top = 588 153 Width = 783 155 154 Anchors = [akTop, akLeft, akRight] 156 155 ItemHeight = 0 157 156 MultiSelect = True 158 OnKeyPress = EditMeaningKeyPress159 OnSelectionChange = ListBoxCategoriesSelectionChange160 157 ParentFont = False 161 158 ScrollWidth = 519 162 159 TabOrder = 8 160 TopIndex = -1 161 OnKeyPress = EditMeaningKeyPress 162 OnSelectionChange = ListBoxCategoriesSelectionChange 163 163 end 164 164 object ActionList1: TActionList 165 left = 451166 top = 300165 Left = 541 166 Top = 360 167 167 object ACategoryRemove: TAction 168 168 Caption = 'Remove' … … 177 177 end 178 178 object PopupMenuCategory: TPopupMenu 179 left = 240180 top = 305179 Left = 288 180 Top = 366 181 181 object MenuItem2: TMenuItem 182 182 Action = ACategoryAdd -
trunk/Forms/FormAcronym.pas
r218 r219 1 unit UFormAcronym; 2 3 {$mode delphi} 1 unit FormAcronym; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus, 9 StdCtrls, ActnList, UAcronym;7 StdCtrls, ActnList, Acronym, FormEx; 10 8 11 9 type … … 13 11 { TFormAcronym } 14 12 15 TFormAcronym = class(TForm )13 TFormAcronym = class(TFormEx) 16 14 ACategoryRemove: TAction; 17 15 ACategoryAdd: TAction; … … 37 35 procedure ACategoryRemoveExecute(Sender: TObject); 38 36 procedure EditMeaningKeyPress(Sender: TObject; var Key: char); 39 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);40 procedure FormCreate(Sender: TObject);41 37 procedure FormShow(Sender: TObject); 42 38 procedure ListBoxCategoriesSelectionChange(Sender: TObject; User: boolean); … … 48 44 end; 49 45 50 var51 FormAcronym: TFormAcronym;52 46 53 47 implementation … … 56 50 57 51 uses 58 UCore, UFormCategorySelect;52 FormCategorySelect; 59 53 60 54 { TFormAcronym } 61 62 procedure TFormAcronym.FormClose(Sender: TObject; var CloseAction: TCloseAction63 );64 begin65 Core.PersistentForm1.Save(Self);66 end;67 68 procedure TFormAcronym.FormCreate(Sender: TObject);69 begin70 Core.Translator.TranslateComponentRecursive(Self);71 Core.ThemeManager.UseTheme(Self);72 end;73 55 74 56 procedure TFormAcronym.ACategoryAddExecute(Sender: TObject); 75 57 var 76 58 I: Integer; 59 FormCategorySelect: TFormCategorySelect; 77 60 begin 78 61 FormCategorySelect := TFormCategorySelect.Create(Self); … … 111 94 procedure TFormAcronym.FormShow(Sender: TObject); 112 95 begin 113 Core.PersistentForm1.Load(Self);114 96 UpdateInterface; 115 97 end; -
trunk/Forms/FormAcronyms.lfm
r218 r219 1 1 object FormAcronyms: TFormAcronyms 2 Left = 4263 Height = 5584 Top = 2 515 Width = 7402 Left = 755 3 Height = 670 4 Top = 284 5 Width = 888 6 6 Caption = 'Acronyms' 7 ClientHeight = 558 8 ClientWidth = 740 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 670 8 ClientWidth = 888 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnShow = FormShow 13 12 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object ListViewAcronyms: TListView 16 Left = 417 Height = 46618 Top = 3419 Width = 73215 Left = 5 16 Height = 563 17 Top = 41 18 Width = 878 20 19 Align = alClient 21 BorderSpacing.Left = 422 BorderSpacing.Right = 423 BorderSpacing.Bottom = 420 BorderSpacing.Left = 5 21 BorderSpacing.Right = 5 22 BorderSpacing.Bottom = 5 24 23 Columns = < 25 24 item 26 25 Caption = 'Name' 27 Width = 1 0026 Width = 120 28 27 end 29 28 item 30 29 Caption = 'Description' 31 Width = 3 0030 Width = 360 32 31 end 33 32 item 34 33 Caption = 'Categories' 35 Width = 3 1234 Width = 383 36 35 end> 37 36 MultiSelect = True … … 49 48 end 50 49 object ListViewFilter1: TListViewFilter 51 Left = 452 Height = 3 053 Top = 454 Width = 73250 Left = 5 51 Height = 36 52 Top = 5 53 Width = 878 55 54 OnChange = ListViewFilter1Change 56 55 Align = alTop 57 BorderSpacing.Left = 4 58 BorderSpacing.Top = 4 59 BorderSpacing.Right = 4 60 end 61 object StatusBar1: TStatusBar 62 Left = 0 63 Height = 28 64 Top = 530 65 Width = 740 66 Panels = < 67 item 68 Width = 120 69 end 70 item 71 Width = 120 72 end> 73 SimplePanel = False 56 BorderSpacing.Left = 5 57 BorderSpacing.Top = 5 58 BorderSpacing.Right = 5 74 59 end 75 60 object ToolBar1: TToolBar 61 AnchorSideBottom.Control = StatusBar1 76 62 Left = 0 77 Height = 2678 Top = 50479 Width = 74063 Height = 33 64 Top = 609 65 Width = 888 80 66 Align = alBottom 81 67 Caption = 'ToolBar1' … … 83 69 ParentShowHint = False 84 70 ShowHint = True 85 TabOrder = 371 TabOrder = 2 86 72 object ToolButton1: TToolButton 87 73 Left = 1 … … 90 76 end 91 77 object ToolButton2: TToolButton 92 Left = 3 078 Left = 36 93 79 Top = 2 94 80 Action = AModify 95 81 end 96 82 object ToolButton3: TToolButton 97 Left = 5983 Left = 71 98 84 Top = 2 99 85 Action = ARemove 100 86 end 87 end 88 object StatusBar1: TStatusBar 89 Left = 0 90 Height = 28 91 Top = 642 92 Width = 888 93 Panels = < 94 item 95 Width = 144 96 end 97 item 98 Width = 144 99 end> 100 SimplePanel = False 101 101 end 102 102 object ListViewSort1: TListViewSort … … 107 107 Column = 0 108 108 Order = soUp 109 left = 248110 top = 168109 Left = 298 110 Top = 202 111 111 end 112 112 object ActionList1: TActionList 113 113 Images = Core.ImageList1 114 left = 248115 top = 232114 Left = 298 115 Top = 278 116 116 object AAdd: TAction 117 117 Caption = 'Add' … … 140 140 object PopupMenuAcronym: TPopupMenu 141 141 Images = Core.ImageList1 142 left = 248143 top = 296142 Left = 298 143 Top = 355 144 144 object MenuItem4: TMenuItem 145 145 Action = AAdd -
trunk/Forms/FormAcronyms.pas
r218 r219 1 unit UFormAcronyms; 2 3 {$mode delphi} 1 unit FormAcronyms; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 Menus, ActnList, UListViewSort, UAcronym, LazUTF8, fgl; 7 Menus, ActnList, ListViewSort, Acronym, LazUTF8, Generics.Collections, 8 Generics.Defaults, FormEx; 10 9 11 10 type … … 13 12 { TFormAcronyms } 14 13 15 TFormAcronyms = class(TForm )14 TFormAcronyms = class(TFormEx) 16 15 AAdd: TAction; 17 16 ASelectAll: TAction; … … 36 35 procedure ARemoveExecute(Sender: TObject); 37 36 procedure ASelectAllExecute(Sender: TObject); 38 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);39 37 procedure FormCreate(Sender: TObject); 40 38 procedure FormShow(Sender: TObject); … … 52 50 FAcronyms: TAcronyms; 53 51 MeaningCount: Integer; 54 procedure FilterList(List: TFPGObjectList<TObject>); 52 function AcronymComparer(constref Item1, Item2: TAcronym): Integer; 53 procedure FilterList(List: TObjectList<TObject>); 55 54 procedure SetAcronyms(AValue: TAcronyms); 56 55 procedure UpdateAcronymsList; … … 61 60 end; 62 61 63 var64 FormAcronyms: TFormAcronyms;65 62 66 63 implementation … … 69 66 70 67 uses 71 UCore, UFormMain, UFormAcronym;68 Core, FormAcronym; 72 69 73 70 resourcestring … … 117 114 I: Integer; 118 115 begin 119 Core.PersistentForm1.Load(Self);120 116 ListViewFilter1.UpdateFromListView(ListViewAcronyms); 121 117 UpdateAcronymsList; 122 Core. ScaleDPI1.ScaleControl(ToolBar1,Core.ScaleDPI1.DesignDPI);118 Core.Core.ScaleDPI1.ScaleControl(ToolBar1, Core.Core.ScaleDPI1.DesignDPI); 123 119 124 120 // Focus line with acronym … … 140 136 Meaning: TAcronymMeaning; 141 137 I: Integer; 138 FormAcronym: TFormAcronym; 142 139 begin 143 140 TempEntry := TAcronymEntry.Create; … … 175 172 Meaning: TAcronymMeaning; 176 173 I: Integer; 174 FormAcronym: TFormAcronym; 177 175 begin 178 176 if Assigned(ListViewAcronyms.Selected) then … … 194 192 (TempEntry.Meaning <> Name) or 195 193 (TempEntry.Description <> Description) or 196 not FormMain.CompareStrings(TempEntry.Categories, TempCategories) then begin194 not Core.Core.CompareStrings(TempEntry.Categories, TempCategories) then begin 197 195 // TODO: Update item inplace if possible 198 196 Acronyms.Db.RemoveMeaning(TAcronymMeaning(ListViewAcronyms.Selected.Data)); … … 246 244 end; 247 245 248 procedure TFormAcronyms.FormClose(Sender: TObject; var CloseAction: TCloseAction249 );250 begin251 Core.PersistentForm1.Save(Self);252 end;253 254 246 procedure TFormAcronyms.FormCreate(Sender: TObject); 255 247 var … … 258 250 FocusAcronym := nil; 259 251 MeaningCount := 0; 260 Core.Translator.TranslateComponentRecursive(Self);261 Core.ThemeManager.UseTheme(Self);262 252 for I := 0 to ToolBar1.ButtonCount - 1 do 263 253 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption; … … 288 278 end; 289 279 280 function TFormAcronyms.AcronymComparer(constref Item1, Item2: TAcronym): Integer; 281 begin 282 Result := CompareStr(TAcronym(Item1).Name, TAcronym(Item2).Name); 283 end; 284 290 285 procedure TFormAcronyms.ListViewSort1Filter(ListViewSort: TListViewSort); 291 286 begin 292 Acronyms.Db.Acronyms.Sort( AcronymComparer);287 Acronyms.Db.Acronyms.Sort(TComparer<TAcronym>.Construct(AcronymComparer)); 293 288 Acronyms.Db.AssignToList(ListViewSort1.List); 294 289 MeaningCount := ListViewSort1.List.Count; … … 296 291 end; 297 292 298 procedure TFormAcronyms.FilterList(List: T FPGObjectList<TObject>);293 procedure TFormAcronyms.FilterList(List: TObjectList<TObject>); 299 294 var 300 295 I: Integer; -
trunk/Forms/FormCategories.lfm
r218 r219 1 1 object FormCategories: TFormCategories 2 2 Left = 516 3 Height = 4293 Height = 515 4 4 Top = 439 5 Width = 7845 Width = 941 6 6 Caption = 'Acronym categories' 7 ClientHeight = 429 8 ClientWidth = 784 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 515 8 ClientWidth = 941 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnShow = FormShow 13 12 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object ListViewCategories: TListView 16 Left = 417 Height = 39518 Top = 419 Width = 77615 Left = 5 16 Height = 472 17 Top = 5 18 Width = 931 20 19 Align = alClient 21 BorderSpacing.Around = 420 BorderSpacing.Around = 5 22 21 Checkboxes = True 23 22 Columns = < 24 23 item 25 24 Caption = 'Name' 26 Width = 3 0025 Width = 360 27 26 end 28 27 item 29 28 Caption = 'Used count' 30 Width = 45629 Width = 556 31 30 end> 32 31 MultiSelect = True … … 45 44 object ToolBar1: TToolBar 46 45 Left = 0 47 Height = 2648 Top = 4 0349 Width = 78446 Height = 33 47 Top = 482 48 Width = 941 50 49 Align = alBottom 51 50 Images = Core.ImageList1 … … 59 58 end 60 59 object ToolButton2: TToolButton 61 Left = 3 060 Left = 36 62 61 Top = 2 63 62 Action = AModify 64 63 end 65 64 object ToolButton3: TToolButton 66 Left = 5965 Left = 71 67 66 Top = 2 68 67 Action = ARemove … … 71 70 object ActionList1: TActionList 72 71 Images = Core.ImageList1 73 left = 38074 top = 19672 Left = 456 73 Top = 235 75 74 object AAdd: TAction 76 75 Caption = 'Add' … … 107 106 object PopupMenuCategory: TPopupMenu 108 107 Images = Core.ImageList1 109 left = 119110 top = 192108 Left = 143 109 Top = 230 111 110 object MenuItem1: TMenuItem 112 111 Action = AAdd … … 137 136 Column = 0 138 137 Order = soNone 139 left = 536140 top = 184138 Left = 643 139 Top = 221 141 140 end 142 141 end -
trunk/Forms/FormCategories.pas
r218 r219 1 unit UFormCategories; 2 3 {$mode delphi} 1 unit FormCategories; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 ActnList, Menus, UAcronym, UListViewSort;7 ActnList, Menus, Acronym, ListViewSort, FormEx; 10 8 11 9 type … … 13 11 { TFormCategories } 14 12 15 TFormCategories = class(TForm )13 TFormCategories = class(TFormEx) 16 14 AAdd: TAction; 17 15 AEnable: TAction; … … 41 39 procedure ARemoveExecute(Sender: TObject); 42 40 procedure ASelectAllExecute(Sender: TObject); 43 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);44 41 procedure FormCreate(Sender: TObject); 45 42 procedure FormShow(Sender: TObject); … … 53 50 function ListViewSort1CompareItem(Item1, Item2: TObject): Integer; 54 51 procedure ListViewSort1Filter(ListViewSort: TListViewSort); 55 private56 { private declarations }57 52 public 58 53 Categories: TAcronymCategories; … … 61 56 end; 62 57 63 var64 FormCategories: TFormCategories;65 58 66 59 implementation … … 69 62 70 63 uses 71 UCore;64 Core; 72 65 73 66 resourcestring … … 82 75 procedure TFormCategories.FormShow(Sender: TObject); 83 76 begin 84 Core.PersistentForm1.Load(Self);85 77 UpdateList; 86 Core. ScaleDPI1.ScaleControl(ToolBar1,Core.ScaleDPI1.DesignDPI);78 Core.Core.ScaleDPI1.ScaleControl(ToolBar1, Core.Core.ScaleDPI1.DesignDPI); 87 79 end; 88 80 … … 92 84 if Assigned(Item) and (Change = ctState) then begin 93 85 TAcronymCategory(Item.Data).Enabled := Item.Checked; 94 Core. AcronymDb.Modified := True;86 Core.Core.AcronymDb.Modified := True; 95 87 end; 96 88 end; … … 102 94 S := InputBox(SCategory, SCategoryQuery, ''); 103 95 if S <> '' then begin 104 if not Assigned(Core. AcronymDb.Categories.SearchByName(S)) then begin;105 TAcronymCategory(Core. AcronymDb.Categories[Core.AcronymDb.Categories.Add(TAcronymCategory.Create)]).Name := S;106 Core. AcronymDb.Modified := True;107 Core. AcronymDb.Update;96 if not Assigned(Core.Core.AcronymDb.Categories.SearchByName(S)) then begin; 97 TAcronymCategory(Core.Core.AcronymDb.Categories[Core.Core.AcronymDb.Categories.Add(TAcronymCategory.Create)]).Name := S; 98 Core.Core.AcronymDb.Modified := True; 99 Core.Core.AcronymDb.Update; 108 100 UpdateList; 109 101 end else ShowMessage(Format(SCategoryAlreadyExists, [S])); … … 118 110 if ListViewCategories.Items[I].Selected then begin 119 111 TAcronymCategory(ListViewCategories.Items[I].Data).Enabled := False; 120 Core. AcronymDb.Modified := True;112 Core.Core.AcronymDb.Modified := True; 121 113 end; 122 114 UpdateList; … … 130 122 if ListViewCategories.Items[I].Selected then begin 131 123 TAcronymCategory(ListViewCategories.Items[I].Data).Enabled := True; 132 Core. AcronymDb.Modified := True;124 Core.Core.AcronymDb.Modified := True; 133 125 end; 134 126 UpdateList; … … 142 134 S := InputBox(SCategory, SCategoryQuery, ListViewCategories.Selected.Caption); 143 135 if S <> ListViewCategories.Selected.Caption then begin 144 if not Assigned(Core. AcronymDb.Categories.SearchByName(S)) then begin;136 if not Assigned(Core.Core.AcronymDb.Categories.SearchByName(S)) then begin; 145 137 TAcronymCategory(ListViewCategories.Selected.Data).Name := S; 146 Core. AcronymDb.Modified := True;147 Core. AcronymDb.Update;138 Core.Core.AcronymDb.Modified := True; 139 Core.Core.AcronymDb.Update; 148 140 UpdateList; 149 141 end else ShowMessage(Format(SCategoryAlreadyExists, [S])); … … 177 169 end; 178 170 179 procedure TFormCategories.FormClose(Sender: TObject;180 var CloseAction: TCloseAction);181 begin182 Core.PersistentForm1.Save(Self);183 end;184 185 171 procedure TFormCategories.FormCreate(Sender: TObject); 186 172 var 187 173 I: Integer; 188 174 begin 189 Core.Translator.TranslateComponentRecursive(Self);190 Core.ThemeManager.UseTheme(Self);191 175 for I := 0 to ToolBar1.ButtonCount - 1 do 192 176 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption; … … 237 221 procedure TFormCategories.ListViewSort1Filter(ListViewSort: TListViewSort); 238 222 begin 239 Core. AcronymDb.Categories.AssignToList(ListViewSort1.List);223 Core.Core.AcronymDb.Categories.AssignToList(ListViewSort1.List); 240 224 end; 241 225 … … 243 227 begin 244 228 ListViewSort1.Refresh; 245 ListViewCategories.Items.Count := Core. AcronymDb.Categories.Count;229 ListViewCategories.Items.Count := Core.Core.AcronymDb.Categories.Count; 246 230 ListViewCategories.Refresh; 247 231 UpdateInterface; -
trunk/Forms/FormCategorySelect.lfm
r218 r219 1 1 object FormCategorySelect: TFormCategorySelect 2 2 Left = 500 3 Height = 5843 Height = 701 4 4 Top = 253 5 Width = 7915 Width = 949 6 6 Caption = 'Select categories' 7 ClientHeight = 584 8 ClientWidth = 791 9 DesignTimePPI = 120 10 OnCreate = FormCreate 11 OnShow = FormShow 7 ClientHeight = 701 8 ClientWidth = 949 9 DesignTimePPI = 144 12 10 Position = poScreenCenter 13 LCLVersion = ' 2.0.2.0'11 LCLVersion = '3.6.0.0' 14 12 object ListBox1: TListBox 15 Left = 1 616 Height = 51817 Top = 818 Width = 76113 Left = 19 14 Height = 621 15 Top = 10 16 Width = 913 19 17 Anchors = [akTop, akLeft, akRight, akBottom] 20 18 ItemHeight = 0 21 19 MultiSelect = True 20 ScrollWidth = 762 21 TabOrder = 0 22 TopIndex = -1 22 23 OnDblClick = ListBox1DblClick 23 24 OnKeyPress = ListBox1KeyPress 24 ScrollWidth = 76225 TabOrder = 026 25 end 27 26 object ButtonOk: TButton 28 Left = 70129 Height = 2530 Top = 54131 Width = 7527 Left = 841 28 Height = 30 29 Top = 649 30 Width = 90 32 31 Anchors = [akRight, akBottom] 33 32 Caption = 'Select' … … 36 35 end 37 36 object ButtonCancel: TButton 38 Left = 60539 Height = 2540 Top = 54241 Width = 7537 Left = 726 38 Height = 30 39 Top = 651 40 Width = 90 42 41 Anchors = [akRight, akBottom] 43 42 Caption = 'Cancel' -
trunk/Forms/FormCategorySelect.pas
r218 r219 1 unit UFormCategorySelect; 2 3 {$mode delphi} 1 unit FormCategorySelect; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 UAcronym;7 Acronym, FormEx; 10 8 11 9 type … … 13 11 { TFormCategorySelect } 14 12 15 TFormCategorySelect = class(TForm )13 TFormCategorySelect = class(TFormeX) 16 14 ButtonOk: TButton; 17 15 ButtonCancel: TButton; 18 16 ListBox1: TListBox; 19 procedure FormCreate(Sender: TObject);20 procedure FormShow(Sender: TObject);21 17 procedure ListBox1DblClick(Sender: TObject); 22 18 procedure ListBox1KeyPress(Sender: TObject; var Key: char); 23 private24 { private declarations }25 19 public 26 20 procedure Load(RemoveItems: TStrings); 27 21 end; 28 29 var30 FormCategorySelect: TFormCategorySelect;31 22 32 23 resourcestring … … 35 26 SRemoveCategoryQuery = 'Do you really want to remove selected categories?'; 36 27 28 37 29 implementation 38 30 … … 40 32 41 33 uses 42 UCore;34 Core; 43 35 44 36 { TFormCategorySelect } 45 46 procedure TFormCategorySelect.FormShow(Sender: TObject);47 begin48 end;49 50 procedure TFormCategorySelect.FormCreate(Sender: TObject);51 begin52 Core.Translator.TranslateComponentRecursive(Self);53 Core.ThemeManager.UseTheme(Self);54 end;55 37 56 38 procedure TFormCategorySelect.ListBox1DblClick(Sender: TObject); … … 69 51 I: Integer; 70 52 begin 71 with Core. AcronymDb do begin53 with Core.Core.AcronymDb do begin 72 54 ListBox1.Sorted := False; 73 55 while ListBox1.Items.Count < Categories.Count do … … 76 58 ListBox1.Items.Delete(ListBox1.Items.Count - 1); 77 59 for I := 0 to Categories.Count - 1 do begin 78 ListBox1.Items.Strings[I] := TAcronymCategory(Categories[I]).Name;60 ListBox1.Items.Strings[I] := Categories[I].Name; 79 61 ListBox1.Items.Objects[I] := Categories[I]; 80 62 ListBox1.Selected[I] := False; -
trunk/Forms/FormCheck.lfm
r218 r219 1 1 object FormCheck: TFormCheck 2 2 Left = 483 3 Height = 6353 Height = 762 4 4 Top = 257 5 Width = 8915 Width = 1069 6 6 Caption = 'Check document' 7 ClientHeight = 635 8 ClientWidth = 891 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 762 8 ClientWidth = 1069 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnDestroy = FormDestroy 13 12 OnShow = FormShow 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object Panel1: TPanel 16 15 Left = 0 17 Height = 63516 Height = 762 18 17 Top = 0 19 Width = 2 2418 Width = 269 20 19 Align = alLeft 21 20 BevelOuter = bvNone 22 ClientHeight = 63523 ClientWidth = 2 2421 ClientHeight = 762 22 ClientWidth = 269 24 23 TabOrder = 0 25 24 object ButtonCheck: TButton 26 Left = 1 127 Height = 3 128 Top = 1 329 Width = 9425 Left = 13 26 Height = 37 27 Top = 16 28 Width = 113 30 29 Caption = 'Check' 30 TabOrder = 0 31 31 OnClick = ButtonCheckClick 32 TabOrder = 033 32 end 34 33 object GroupBox1: TGroupBox 35 Left = 1 136 Height = 2 1737 Top = 19938 Width = 2 0634 Left = 13 35 Height = 260 36 Top = 239 37 Width = 248 39 38 Anchors = [akTop, akLeft, akRight] 40 39 Caption = 'Summary section' 41 ClientHeight = 19242 ClientWidth = 2 0240 ClientHeight = 233 41 ClientWidth = 246 43 42 TabOrder = 1 44 43 object ButtonAcronymsSummary: TButton 45 Left = 646 Height = 3 147 Top = 848 Width = 1 5044 Left = 7 45 Height = 37 46 Top = 10 47 Width = 180 49 48 Caption = 'Acronyms' 49 TabOrder = 0 50 50 OnClick = ButtonAcronymsSummaryClick 51 TabOrder = 052 51 end 53 52 object LabelAcronymCountSummary: TLabel 54 Left = 655 Height = 2 056 Top = 4857 Width = 1 0353 Left = 7 54 Height = 26 55 Top = 58 56 Width = 134 58 57 Caption = 'Acronym count:' 59 58 ParentColor = False 60 59 end 61 60 object Label1: TLabel 62 Left = 863 Height = 2 064 Top = 7265 Width = 7561 Left = 10 62 Height = 26 63 Top = 86 64 Width = 98 66 65 Caption = 'Start string:' 67 66 ParentColor = False 68 67 end 69 68 object EditSummaryStart: TEdit 70 Left = 871 Height = 2872 Top = 9673 Width = 18469 Left = 10 70 Height = 43 71 Top = 115 72 Width = 224 74 73 Anchors = [akTop, akLeft, akRight] 75 74 TabOrder = 1 76 75 end 77 76 object Label2: TLabel 78 Left = 879 Height = 2 080 Top = 1 2881 Width = 6977 Left = 10 78 Height = 26 79 Top = 154 80 Width = 91 82 81 Caption = 'End string:' 83 82 ParentColor = False 84 83 end 85 84 object EditSummaryEnd: TEdit 86 Left = 887 Height = 2888 Top = 1 5289 Width = 18485 Left = 10 86 Height = 43 87 Top = 182 88 Width = 224 90 89 Anchors = [akTop, akLeft, akRight] 91 90 TabOrder = 2 … … 93 92 end 94 93 object GroupBox2: TGroupBox 95 Left = 1 196 Height = 9997 Top = 9698 Width = 2 0794 Left = 13 95 Height = 119 96 Top = 115 97 Width = 249 99 98 Anchors = [akTop, akLeft, akRight] 100 99 Caption = 'Content' 101 ClientHeight = 74102 ClientWidth = 2 03100 ClientHeight = 92 101 ClientWidth = 247 103 102 TabOrder = 2 104 103 object ButtonAcronymsContent: TButton 105 Left = 8106 Height = 3 1104 Left = 10 105 Height = 37 107 106 Top = 0 108 Width = 1 50107 Width = 180 109 108 Caption = 'Acronyms' 109 TabOrder = 0 110 110 OnClick = ButtonAcronymsContentClick 111 TabOrder = 0112 111 end 113 112 object LabelAcronymCountContent: TLabel 114 Left = 8115 Height = 2 0116 Top = 4 0117 Width = 1 03113 Left = 10 114 Height = 26 115 Top = 48 116 Width = 134 118 117 Caption = 'Acronym count:' 119 118 ParentColor = False … … 121 120 end 122 121 object ButtonLoadFromFile: TButton 123 Left = 1 1124 Height = 3 1125 Top = 48126 Width = 1 34122 Left = 13 123 Height = 37 124 Top = 58 125 Width = 161 127 126 Caption = 'Load from file' 127 TabOrder = 3 128 128 OnClick = ButtonLoadFromFileClick 129 TabOrder = 3130 129 end 131 130 object CheckBoxCaseSensitive: TCheckBox 132 Left = 1 1133 Height = 24134 Top = 424135 Width = 197131 Left = 13 132 Height = 30 133 Top = 509 134 Width = 251 136 135 Caption = 'Case sensitive comparison' 137 136 TabOrder = 4 … … 139 138 end 140 139 object Splitter1: TSplitter 141 Left = 2 24142 Height = 635140 Left = 269 141 Height = 762 143 142 Top = 0 144 Width = 6143 Width = 7 145 144 end 146 145 object Panel2: TPanel 147 Left = 2 30148 Height = 635146 Left = 276 147 Height = 762 149 148 Top = 0 150 Width = 661149 Width = 793 151 150 Align = alClient 152 151 BevelOuter = bvNone 153 ClientHeight = 635154 ClientWidth = 661152 ClientHeight = 762 153 ClientWidth = 793 155 154 TabOrder = 2 156 155 object PageControl1: TPageControl 157 Left = 8158 Height = 619159 Top = 8160 Width = 645156 Left = 10 157 Height = 742 158 Top = 10 159 Width = 773 161 160 ActivePage = TabSheetReport 162 161 Align = alClient 163 BorderSpacing.Around = 8162 BorderSpacing.Around = 10 164 163 TabIndex = 1 165 164 TabOrder = 0 166 165 object TabSheetSource: TTabSheet 167 166 Caption = 'Source' 168 ClientHeight = 586169 ClientWidth = 637167 ClientHeight = 702 168 ClientWidth = 763 170 169 object MemoDocument: TMemo 171 Left = 8172 Height = 570173 Top = 8174 Width = 620170 Left = 10 171 Height = 682 172 Top = 10 173 Width = 742 175 174 Anchors = [akTop, akLeft, akRight, akBottom] 176 175 ScrollBars = ssAutoBoth … … 181 180 object TabSheetReport: TTabSheet 182 181 Caption = 'Report' 183 ClientHeight = 586184 ClientWidth = 637182 ClientHeight = 702 183 ClientWidth = 763 185 184 object ListViewReport: TListView 186 Left = 7187 Height = 564188 Top = 1 3189 Width = 625185 Left = 8 186 Height = 675 187 Top = 16 188 Width = 749 190 189 Anchors = [akTop, akLeft, akRight, akBottom] 191 190 Columns = < 192 191 item 193 192 Caption = 'Position' 194 Width = 80193 Width = 96 195 194 end 196 195 item 197 196 Caption = 'Type' 198 Width = 1 00197 Width = 120 199 198 end 200 199 item 201 200 Caption = 'Message' 202 Width = 800201 Width = 960 203 202 end> 204 203 OwnerData = True … … 216 215 DefaultExt = '.txt' 217 216 Filter = 'Text files (.txt)|*.txt|Any file|*.*' 218 left = 544219 top = 288217 Left = 653 218 Top = 346 220 219 end 221 220 object PopupMenuReport: TPopupMenu 222 left = 376223 top = 202221 Left = 451 222 Top = 242 224 223 object MenuItemGoTo: TMenuItem 225 224 Action = AGoToLocation … … 231 230 end 232 231 object ActionList1: TActionList 233 left = 546234 top = 203232 Left = 655 233 Top = 244 235 234 object ASaveToCsv: TAction 236 235 Caption = 'Save to CSV...' … … 243 242 end 244 243 object SaveDialog1: TSaveDialog 245 left = 378246 top = 288244 Left = 454 245 Top = 346 247 246 end 248 247 end -
trunk/Forms/FormCheck.pas
r218 r219 1 unit UFormCheck; 2 3 {$mode delphi} 1 unit FormCheck; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, LazFileUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 ExtCtrls, ComCtrls, Menus, ActnList, UAcronym, URegistry, Registry, UCommon,10 fgl;7 ExtCtrls, ComCtrls, Menus, ActnList, Acronym, RegistryEx, Registry, Common, 8 Generics.Collections; 11 9 12 10 type … … 21 19 { TReportItems } 22 20 23 TReportItems = class(T FPGObjectList<TReportItem>)21 TReportItems = class(TObjectList<TReportItem>) 24 22 function AddNew(Message: string; Position: TPoint; 25 23 Kind: TReportType = rtNone): TReportItem; … … 65 63 procedure ButtonCheckClick(Sender: TObject); 66 64 procedure ButtonLoadFromFileClick(Sender: TObject); 67 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);68 65 procedure FormCreate(Sender: TObject); 69 66 procedure FormDestroy(Sender: TObject); … … 98 95 end; 99 96 100 var101 FormCheck: TFormCheck;102 103 97 const 104 98 ReportTypeString: array[TReportType] of string = ('', 'Note', 'Warning', 'Error'); … … 110 104 111 105 uses 112 UFormAcronyms, UCore;106 FormAcronyms, Core; 113 107 114 108 resourcestring … … 198 192 end; 199 193 200 procedure TFormCheck.FormClose(Sender: TObject; var CloseAction: TCloseAction);201 begin202 Core.PersistentForm1.Save(Self);203 end;204 205 194 procedure TFormCheck.FormCreate(Sender: TObject); 206 195 begin 207 196 AcronymDbSummary := TAcronymDb.Create; 208 197 AcronymDbContent := TAcronymDb.Create; 209 Core.Translator.TranslateComponentRecursive(Self);210 Core.ThemeManager.UseTheme(Self);211 198 ReportItems := TReportItems.Create; 212 199 end; … … 214 201 procedure TFormCheck.FormDestroy(Sender: TObject); 215 202 begin 216 ReportItems.Free;217 AcronymDbSummary.Free;218 AcronymDbContent.Free;203 FreeAndNil(ReportItems); 204 FreeAndNil(AcronymDbSummary); 205 FreeAndNil(AcronymDbContent); 219 206 end; 220 207 … … 222 209 begin 223 210 PageControl1.TabIndex := 0; 224 Core.PersistentForm1.Load(Self);225 211 if FileExists(LastDocumentFileName) then 226 212 MemoDocument.Lines.LoadFromFile(LastDocumentFileName); … … 724 710 with TRegistryEx.Create do 725 711 try 726 RootKey := RegistryRootHKEY[Core. ApplicationInfo1.RegistryRoot];727 OpenKey(Core. ApplicationInfo1.RegistryKey, True);712 RootKey := RegistryRootHKEY[Core.Core.ApplicationInfo1.RegistryRoot]; 713 OpenKey(Core.Core.ApplicationInfo1.RegistryKey, True); 728 714 EditSummaryStart.Text := ReadStringWithDefault('SummaryStart', 'ACRONYMS AND ABBREVIATIONS'); 729 715 EditSummaryEnd.Text := ReadStringWithDefault('SummaryEnd', 'Appendix'); … … 739 725 with TRegistryEx.Create do 740 726 try 741 RootKey := RegistryRootHKEY[Core. ApplicationInfo1.RegistryRoot];742 OpenKey(Core. ApplicationInfo1.RegistryKey, True);727 RootKey := RegistryRootHKEY[Core.Core.ApplicationInfo1.RegistryRoot]; 728 OpenKey(Core.Core.ApplicationInfo1.RegistryKey, True); 743 729 WriteString('SummaryStart', EditSummaryStart.Text); 744 730 WriteString('SummaryEnd', EditSummaryEnd.Text); -
trunk/Forms/FormExport.lfm
r218 r219 1 1 object FormExport: TFormExport 2 2 Left = 281 3 Height = 6543 Height = 785 4 4 Top = 221 5 Width = 8505 Width = 1020 6 6 Caption = 'Export' 7 ClientHeight = 654 8 ClientWidth = 850 9 DesignTimePPI = 120 10 OnClose = FormClose 11 OnCreate = FormCreate 12 OnShow = FormShow 7 ClientHeight = 785 8 ClientWidth = 1020 9 DesignTimePPI = 144 13 10 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'11 LCLVersion = '3.6.0.0' 15 12 object ButtonProcess: TButton 16 Left = 1817 Height = 3318 Top = 919 Width = 1 3913 Left = 22 14 Height = 40 15 Top = 11 16 Width = 167 20 17 Caption = 'Process' 18 TabOrder = 0 21 19 OnClick = ButtonProcessClick 22 TabOrder = 023 20 end 24 21 object ComboBoxDataFormat: TComboBox 25 Left = 34126 Height = 2827 Top = 528 Width = 18229 ItemHeight = 2022 Left = 409 23 Height = 38 24 Top = 6 25 Width = 218 26 ItemHeight = 0 30 27 ItemIndex = 0 31 28 Items.Strings = ( … … 39 36 end 40 37 object ButtonSaveToFile: TButton 41 Left = 65342 Height = 3343 Top = 944 Width = 18138 Left = 784 39 Height = 40 40 Top = 11 41 Width = 217 45 42 Anchors = [akTop, akRight] 46 43 Caption = 'Save to file' 44 TabOrder = 2 47 45 OnClick = ButtonSaveToFileClick 48 TabOrder = 249 46 end 50 47 object Memo1: TMemo 51 Left = 852 Height = 59753 Top = 5154 Width = 83048 Left = 10 49 Height = 717 50 Top = 61 51 Width = 996 55 52 Anchors = [akTop, akLeft, akRight, akBottom] 56 53 ScrollBars = ssAutoBoth … … 58 55 end 59 56 object SaveDialog1: TSaveDialog 60 left = 39561 top = 12457 Left = 474 58 Top = 149 62 59 end 63 60 end -
trunk/Forms/FormExport.pas
r218 r219 1 unit UFormExport; 2 3 {$mode delphi} 1 unit FormExport; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 UJobProgressView;7 JobProgressView; 10 8 11 9 type … … 21 19 procedure ButtonProcessClick(Sender: TObject); 22 20 procedure ButtonSaveToFileClick(Sender: TObject); 23 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);24 procedure FormCreate(Sender: TObject);25 procedure FormShow(Sender: TObject);26 21 private 27 22 ItemCount: Integer; … … 30 25 procedure JobExportMediaWiki(Job: TJob); 31 26 procedure JobExportMediaWikiTable(Job: TJob); 32 public33 { public declarations }34 27 end; 35 28 36 var37 FormExport: TFormExport;38 29 39 30 implementation … … 42 33 43 34 uses 44 UCore, UAcronym;35 Core, Acronym; 45 36 46 37 resourcestring … … 60 51 end; 61 52 62 procedure TFormExport.FormClose(Sender: TObject; var CloseAction: TCloseAction);63 begin64 Core.PersistentForm1.Save(Self);65 end;66 67 procedure TFormExport.FormCreate(Sender: TObject);68 begin69 Core.Translator.TranslateComponentRecursive(Self);70 Core.ThemeManager.UseTheme(Self);71 end;72 73 procedure TFormExport.FormShow(Sender: TObject);74 begin75 Core.PersistentForm1.Load(Self);76 end;77 78 53 procedure TFormExport.JobExportCSV(Job: TJob); 79 54 var … … 81 56 J: Integer; 82 57 begin 83 Job.Progress.Max := Core. AcronymDb.Acronyms.Count;58 Job.Progress.Max := Core.Core.AcronymDb.Acronyms.Count; 84 59 ItemCount := 0; 85 60 Content := ''; 86 for I := 0 to Core. AcronymDb.Acronyms.Count - 1 do87 with TAcronym(Core.AcronymDb.Acronyms[I])do begin61 for I := 0 to Core.Core.AcronymDb.Acronyms.Count - 1 do 62 with Core.Core.AcronymDb.Acronyms[I] do begin 88 63 for J := 0 to Meanings.Count - 1 do 89 with TAcronymMeaning(Meanings[J])do begin64 with Meanings[J] do begin 90 65 Content := Content + '"' + Acronym.Name + '","' + Name + '","' + Description + '","' + Categories.GetString + '"' + LineEnding; 91 66 Inc(ItemCount); … … 101 76 J: Integer; 102 77 begin 103 Job.Progress.Max := Core. AcronymDb.Acronyms.Count;78 Job.Progress.Max := Core.Core.AcronymDb.Acronyms.Count; 104 79 ItemCount := 0; 105 80 Content := ''; 106 for I := 0 to Core. AcronymDb.Acronyms.Count - 1 do107 with TAcronym(Core.AcronymDb.Acronyms[I])do begin81 for I := 0 to Core.Core.AcronymDb.Acronyms.Count - 1 do 82 with Core.Core.AcronymDb.Acronyms[I] do begin 108 83 Content := Content + '; ' + Name + LineEnding; 109 84 for J := 0 to Meanings.Count - 1 do 110 with TAcronymMeaning(Meanings[J])do begin85 with Meanings[J] do begin 111 86 Content := Content + ': ' + Name + LineEnding; 112 87 Inc(ItemCount); … … 122 97 J: Integer; 123 98 begin 124 Job.Progress.Max := Core. AcronymDb.Acronyms.Count;99 Job.Progress.Max := Core.Core.AcronymDb.Acronyms.Count; 125 100 ItemCount := 0; 126 101 Content := '{| class="wikitable sortable"' + LineEnding + 127 102 '! Name !! Meaning !! Description !! Categories' + LineEnding; 128 for I := 0 to Core. AcronymDb.Acronyms.Count - 1 do129 with TAcronym(Core.AcronymDb.Acronyms[I])do begin103 for I := 0 to Core.Core.AcronymDb.Acronyms.Count - 1 do 104 with Core.Core.AcronymDb.Acronyms[I] do begin 130 105 for J := 0 to Meanings.Count - 1 do 131 with TAcronymMeaning(Meanings[J])do begin106 with Meanings[J] do begin 132 107 Content := Content + '|-' + LineEnding + 133 108 '| ' + Acronym.Name + LineEnding + '| ' + Name + LineEnding + … … 144 119 begin 145 120 if ComboBoxDataFormat.ItemIndex = 0 then 146 Core. JobProgressView1.AddJob(SExporting, JobExportCSV);121 Core.Core.JobProgressView1.AddJob(SExporting, JobExportCSV); 147 122 if ComboBoxDataFormat.ItemIndex = 1 then 148 Core. JobProgressView1.AddJob(SExporting, JobExportMediaWiki);123 Core.Core.JobProgressView1.AddJob(SExporting, JobExportMediaWiki); 149 124 if ComboBoxDataFormat.ItemIndex = 2 then 150 Core. JobProgressView1.AddJob(SExporting, JobExportMediaWikiTable);151 Core. JobProgressView1.Start;125 Core.Core.JobProgressView1.AddJob(SExporting, JobExportMediaWikiTable); 126 Core.Core.JobProgressView1.Start; 152 127 Memo1.Lines.Text := Content; 153 128 ShowMessage(Format(SExportedAcronyms, [ItemCount])); -
trunk/Forms/FormImport.lfm
r218 r219 8 8 ClientWidth = 782 9 9 DesignTimePPI = 144 10 OnClose = FormClose11 OnCreate = FormCreate12 OnShow = FormShow13 10 Position = poScreenCenter 14 LCLVersion = ' 2.0.12.0'11 LCLVersion = '3.6.0.0' 15 12 object ButtonProcess: TButton 16 13 Left = 19 … … 19 16 Width = 128 20 17 Caption = 'Process' 21 OnClick = ButtonProcessClick22 18 ParentFont = False 23 19 TabOrder = 0 20 OnClick = ButtonProcessClick 24 21 end 25 22 object Memo1: TMemo … … 51 48 object Label1: TLabel 52 49 Left = 184 53 Height = 2 450 Height = 26 54 51 Top = 11 55 52 Width = 106 … … 65 62 Anchors = [akTop, akRight] 66 63 Caption = 'Load from file' 67 OnClick = ButtonLoadFromFileClick68 64 ParentFont = False 69 65 TabOrder = 2 66 OnClick = ButtonLoadFromFileClick 70 67 end 71 68 object OpenDialog1: TOpenDialog -
trunk/Forms/FormImport.pas
r218 r219 1 unit UFormImport; 2 3 {$mode delphi}{$H+} 1 unit FormImport; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 UAcronym;7 Acronym, FormEx; 10 8 11 9 type … … 13 11 { TFormImport } 14 12 15 TFormImport = class(TForm )13 TFormImport = class(TFormEx) 16 14 ButtonLoadFromFile: TButton; 17 15 ButtonProcess: TButton; … … 22 20 procedure ButtonProcessClick(Sender: TObject); 23 21 procedure ButtonLoadFromFileClick(Sender: TObject); 24 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);25 procedure FormCreate(Sender: TObject);26 procedure FormShow(Sender: TObject);27 22 private 28 23 procedure ImportMediaWiki; 29 24 procedure ImportCSV; 30 public31 { public declarations }32 25 end; 33 26 34 var35 FormImport: TFormImport;36 27 37 28 implementation … … 40 31 41 32 uses 42 UCore;33 Core; 43 34 44 35 resourcestring 45 36 SImportedNewAcronyms = 'Imported %d new acronyms.'; 46 47 37 48 38 { TFormImport } … … 60 50 if OpenDialog1.Execute then 61 51 Memo1.Lines.LoadFromFile(OpenDialog1.FileName); 62 end;63 64 procedure TFormImport.FormClose(Sender: TObject; var CloseAction: TCloseAction);65 begin66 Core.PersistentForm1.Save(Self);67 end;68 69 procedure TFormImport.FormCreate(Sender: TObject);70 begin71 Core.Translator.TranslateComponentRecursive(Self);72 Core.ThemeManager.UseTheme(Self);73 end;74 75 procedure TFormImport.FormShow(Sender: TObject);76 begin77 Core.PersistentForm1.Load(Self);78 52 end; 79 53 … … 101 75 AcronymMeaning := Trim(Copy(Line, 2, Length(Line))); 102 76 if (AcronymName <> '') and (AcronymMeaning <> '') then begin 103 Acronym := Core. AcronymDb.Acronyms.SearchByName(AcronymName);77 Acronym := Core.Core.AcronymDb.Acronyms.SearchByName(AcronymName); 104 78 if not Assigned(Acronym) then begin 105 79 Acronym := TAcronym.Create; 106 80 Acronym.Name := AcronymName; 107 Core. AcronymDb.Acronyms.Add(Acronym);81 Core.Core.AcronymDb.Acronyms.Add(Acronym); 108 82 end; 109 83 Meaning := Acronym.Meanings.SearchByName(AcronymMeaning); … … 118 92 end; 119 93 end; 120 if AddedCount > 0 then Core. AcronymDb.Modified := True;94 if AddedCount > 0 then Core.Core.AcronymDb.Modified := True; 121 95 ShowMessage(Format(SImportedNewAcronyms, [AddedCount])); 122 96 end; … … 147 121 else AcronymDescription := ''; 148 122 if (AcronymName <> '') and (AcronymDescription <> '') then begin 149 Acronym := Core. AcronymDb.Acronyms.SearchByName(AcronymName);123 Acronym := Core.Core.AcronymDb.Acronyms.SearchByName(AcronymName); 150 124 if not Assigned(Acronym) then begin 151 125 Acronym := TAcronym.Create; 152 126 Acronym.Name := AcronymName; 153 Core. AcronymDb.Acronyms.Add(Acronym);127 Core.Core.AcronymDb.Acronyms.Add(Acronym); 154 128 end; 155 129 Meaning := Acronym.Meanings.SearchByName(AcronymDescription); … … 165 139 end; 166 140 Columns.Free; 167 if AddedCount > 0 then Core. AcronymDb.Modified := True;141 if AddedCount > 0 then Core.Core.AcronymDb.Modified := True; 168 142 ShowMessage(Format(SImportedNewAcronyms, [AddedCount])); 169 143 end; -
trunk/Forms/FormImportFormat.lfm
r218 r219 1 1 object FormImportFormat: TFormImportFormat 2 2 Left = 462 3 Height = 4393 Height = 527 4 4 Top = 322 5 Width = 6295 Width = 755 6 6 Caption = 'Import format' 7 ClientHeight = 439 8 ClientWidth = 629 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 527 8 ClientWidth = 755 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnShow = FormShow 13 12 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object ButtonOk: TButton 16 Left = 52517 Height = 2518 Top = 39019 Width = 7515 Left = 630 16 Height = 30 17 Top = 468 18 Width = 90 20 19 Anchors = [akRight, akBottom] 21 20 Caption = 'Ok' … … 24 23 end 25 24 object ButtonCancel: TButton 26 Left = 42927 Height = 2528 Top = 39029 Width = 7525 Left = 515 26 Height = 30 27 Top = 468 28 Width = 90 30 29 Anchors = [akRight, akBottom] 31 30 Caption = 'Cancel' … … 34 33 end 35 34 object Label1: TLabel 36 Left = 2 037 Height = 2 038 Top = 5339 Width = 4335 Left = 24 36 Height = 26 37 Top = 64 38 Width = 56 40 39 Caption = 'Name:' 41 40 ParentColor = False 42 41 end 43 42 object EditName: TEdit 44 Left = 17945 Height = 2846 Top = 4847 Width = 42643 Left = 215 44 Height = 43 45 Top = 58 46 Width = 511 48 47 Anchors = [akTop, akLeft, akRight] 49 48 TabOrder = 1 50 49 end 51 50 object Label8: TLabel 52 Left = 2 053 Height = 2 054 Top = 9055 Width = 7251 Left = 24 52 Height = 26 53 Top = 108 54 Width = 95 56 55 Caption = 'Block start:' 57 56 ParentColor = False 58 57 end 59 58 object EditBlockStart: TEdit 60 Left = 17961 Height = 2862 Top = 8563 Width = 42659 Left = 215 60 Height = 43 61 Top = 102 62 Width = 511 64 63 Anchors = [akTop, akLeft, akRight] 65 64 TabOrder = 2 66 65 end 67 66 object Label9: TLabel 68 Left = 2 069 Height = 2 070 Top = 1 3071 Width = 6867 Left = 24 68 Height = 26 69 Top = 156 70 Width = 89 72 71 Caption = 'Block end:' 73 72 ParentColor = False 74 73 end 75 74 object EditBlockEnd: TEdit 76 Left = 17977 Height = 2878 Top = 1 2579 Width = 42675 Left = 215 76 Height = 43 77 Top = 150 78 Width = 511 80 79 Anchors = [akTop, akLeft, akRight] 81 80 TabOrder = 3 82 81 end 83 82 object ListViewItemRules: TListView 84 Left = 2 085 Height = 19886 Top = 18187 Width = 58583 Left = 24 84 Height = 238 85 Top = 217 86 Width = 702 88 87 Anchors = [akTop, akLeft, akRight, akBottom] 89 88 Columns = < 90 89 item 91 90 Caption = 'Start string' 92 Width = 1 0091 Width = 120 93 92 end 94 93 item 95 94 Caption = 'End string' 96 Width = 1 0095 Width = 120 97 96 end 98 97 item 99 98 Caption = 'Action' 100 Width = 1 0099 Width = 120 101 100 end 102 101 item 103 102 Caption = 'Variable' 104 Width = 1 00103 Width = 120 105 104 end 106 105 item 107 106 Caption = 'Repetition' 108 Width = 165107 Width = 207 109 108 end> 110 109 OwnerData = True … … 118 117 end 119 118 object Label2: TLabel 120 Left = 2 0121 Height = 2 0122 Top = 1 57123 Width = 68119 Left = 24 120 Height = 26 121 Top = 188 122 Width = 91 124 123 Caption = 'Item rules:' 125 124 ParentColor = False 126 125 end 127 126 object Label3: TLabel 128 Left = 2 0129 Height = 2 0130 Top = 1 3131 Width = 35127 Left = 24 128 Height = 26 129 Top = 16 130 Width = 45 132 131 Caption = 'Type:' 133 132 ParentColor = False 134 133 end 135 134 object ComboBoxType: TComboBox 136 Left = 179137 Height = 28138 Top = 1 3139 Width = 197140 ItemHeight = 20135 Left = 215 136 Height = 38 137 Top = 16 138 Width = 236 139 ItemHeight = 0 141 140 Items.Strings = ( 142 141 'Text parse HTTP' … … 148 147 end 149 148 object PopupMenu1: TPopupMenu 150 left = 181151 top = 277149 Left = 217 150 Top = 332 152 151 object MenuItem1: TMenuItem 153 152 Action = AAdd … … 275 274 end 276 275 object ActionList1: TActionList 277 left = 383278 top = 282276 Left = 460 277 Top = 338 279 278 object AAdd: TAction 280 279 Caption = 'Add' -
trunk/Forms/FormImportFormat.pas
r218 r219 1 unit UFormImportFormat; 2 3 {$mode delphi} 1 unit FormImportFormat; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 ComCtrls, Menus, ActnList, UAcronym;7 ComCtrls, Menus, ActnList, Acronym; 10 8 11 9 type … … 43 41 procedure AMoveUpExecute(Sender: TObject); 44 42 procedure ARemoveExecute(Sender: TObject); 45 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);46 43 procedure FormCreate(Sender: TObject); 47 44 procedure FormShow(Sender: TObject); 48 45 procedure ListViewItemRulesData(Sender: TObject; Item: TListItem); 49 private50 { private declarations }51 46 public 52 47 ImportFormat: TImportFormat; … … 64 59 65 60 uses 66 UCore, UFormImportPattern;61 Core, FormImportPattern; 67 62 68 63 {$R *.lfm} … … 80 75 var 81 76 NewImportPattern: TImportPattern; 77 FormImportPattern: TFormImportPattern; 82 78 begin 83 79 FormImportPattern := TFormImportPattern.Create(Self); … … 100 96 var 101 97 NewImportPattern: TImportPattern; 98 FormImportPattern: TFormImportPattern; 102 99 begin 103 100 FormImportPattern := TFormImportPattern.Create(Self); … … 152 149 end; 153 150 154 procedure TFormImportFormat.FormClose(Sender: TObject;155 var CloseAction: TCloseAction);156 begin157 Core.PersistentForm1.Save(Self);158 end;159 160 151 procedure TFormImportFormat.FormCreate(Sender: TObject); 161 152 begin 162 Core.Translator.TranslateComponentRecursive(Self);163 Core.ThemeManager.UseTheme(Self);164 153 YesNoString[False] := SNo; 165 154 YesNoString[True] := SYes; … … 168 157 procedure TFormImportFormat.FormShow(Sender: TObject); 169 158 begin 170 Core.PersistentForm1.Load(Self);171 159 ReloadList; 172 160 end; -
trunk/Forms/FormImportFormats.lfm
r218 r219 1 1 object FormImportFormats: TFormImportFormats 2 2 Left = 473 3 Height = 5183 Height = 622 4 4 Top = 327 5 Width = 7395 Width = 887 6 6 Caption = 'Import formats' 7 ClientHeight = 518 8 ClientWidth = 739 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 622 8 ClientWidth = 887 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnShow = FormShow 13 12 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object ListView1: TListView 16 Left = 517 Height = 47618 Top = 519 Width = 72915 Left = 6 16 Height = 577 17 Top = 6 18 Width = 875 20 19 Align = alClient 21 BorderSpacing.Around = 520 BorderSpacing.Around = 6 22 21 Columns = < 23 22 item 24 23 Caption = 'Name' 25 Width = 70424 Width = 860 26 25 end> 27 26 MultiSelect = True … … 40 39 object ToolBar1: TToolBar 41 40 Left = 0 42 Top = 486 43 Width = 739 41 Height = 33 42 Top = 589 43 Width = 887 44 44 Align = alBottom 45 Images = Core.ImageList146 45 ParentFont = False 47 46 ParentShowHint = False … … 54 53 end 55 54 object ToolButton2: TToolButton 56 Left = 3 055 Left = 36 57 56 Top = 2 58 57 Action = AModify 59 58 end 60 59 object ToolButton3: TToolButton 61 Left = 5960 Left = 71 62 61 Top = 2 63 62 Action = ARemove … … 65 64 end 66 65 object ActionList1: TActionList 67 Images = Core.ImageList1 68 left = 510 69 top = 280 66 Left = 612 67 Top = 336 70 68 object AAdd: TAction 71 69 Caption = 'Add' … … 88 86 end 89 87 object PopupMenuImportSource: TPopupMenu 90 Images = Core.ImageList1 91 left = 184 92 top = 275 88 Left = 221 89 Top = 330 93 90 object MenuItem1: TMenuItem 94 91 Action = AAdd -
trunk/Forms/FormImportFormats.pas
r218 r219 1 unit UFormImportFormats; 2 3 {$mode delphi} 1 unit FormImportFormats; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 ActnList, Menus, UAcronym;7 ActnList, Menus, Acronym, FormEx; 10 8 11 9 type … … 13 11 { TFormImportFormats } 14 12 15 TFormImportFormats = class(TForm )13 TFormImportFormats = class(TFormEx) 16 14 AAdd: TAction; 17 15 ActionList1: TActionList; … … 30 28 procedure AModifyExecute(Sender: TObject); 31 29 procedure ARemoveExecute(Sender: TObject); 32 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);33 30 procedure FormCreate(Sender: TObject); 34 31 procedure FormShow(Sender: TObject); … … 38 35 procedure ListView1SelectItem(Sender: TObject; Item: TListItem; 39 36 Selected: Boolean); 40 private41 { private declarations }42 37 public 43 38 ImportFormats: TImportFormats; … … 46 41 end; 47 42 48 var49 FormImportFormats: TFormImportFormats;50 43 51 44 implementation … … 54 47 55 48 uses 56 UCore, UFormImportFormat;49 Core, FormImportFormat; 57 50 58 51 resourcestring … … 104 97 procedure TFormImportFormats.FormShow(Sender: TObject); 105 98 begin 106 Core.PersistentForm1.Load(Self);107 99 UpdateList; 108 Core. ScaleDPI1.ScaleControl(ToolBar1,Core.ScaleDPI1.DesignDPI);100 Core.Core.ScaleDPI1.ScaleControl(ToolBar1, Core.Core.ScaleDPI1.DesignDPI); 109 101 end; 110 102 … … 112 104 var 113 105 NewImportFormat: TImportFormat; 106 FormImportFormat: TFormImportFormat; 114 107 begin 115 108 NewImportFormat := TImportFormat.Create; … … 123 116 ImportFormats.Add(NewImportFormat); 124 117 NewImportFormat := nil; 125 Core. AcronymDb.Modified := True;118 Core.Core.AcronymDb.Modified := True; 126 119 UpdateList; 127 120 end else ShowMessage(Format(SImportFormatAlreadyExists, [NewImportFormat.Name])); … … 136 129 var 137 130 NewImportFormat: TImportFormat; 131 FormImportFormat: TFormImportFormat; 138 132 begin 139 133 if Assigned(ListView1.Selected) then begin … … 148 142 if not Assigned(ImportFormats.SearchByName(NewImportFormat.Name)) then begin; 149 143 TImportFormat(ListView1.Selected.Data).Assign(NewImportFormat); 150 Core. AcronymDb.Modified := True;144 Core.Core.AcronymDb.Modified := True; 151 145 UpdateList; 152 146 end else ShowMessage(Format(SImportFormatAlreadyExists, [NewImportFormat.Name])); 153 147 end else begin 154 148 TImportFormat(ListView1.Selected.Data).Assign(NewImportFormat); 155 Core. AcronymDb.Modified := True;149 Core.Core.AcronymDb.Modified := True; 156 150 UpdateList; 157 151 end; … … 179 173 end; 180 174 181 procedure TFormImportFormats.FormClose(Sender: TObject;182 var CloseAction: TCloseAction);183 begin184 Core.PersistentForm1.Save(Self);185 end;186 187 175 procedure TFormImportFormats.FormCreate(Sender: TObject); 188 176 var 189 177 I: Integer; 190 178 begin 191 Core.Translator.TranslateComponentRecursive(Self);192 Core.ThemeManager.UseTheme(Self);193 179 for I := 0 to ToolBar1.ButtonCount - 1 do 194 180 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption; -
trunk/Forms/FormImportPattern.lfm
r218 r219 1 1 object FormImportPattern: TFormImportPattern 2 2 Left = 459 3 Height = 4313 Height = 517 4 4 Top = 235 5 Width = 6625 Width = 794 6 6 Caption = 'Import pattern' 7 ClientHeight = 4318 ClientWidth = 6629 DesignTimePPI = 1 207 ClientHeight = 517 8 ClientWidth = 794 9 DesignTimePPI = 144 10 10 OnCreate = FormCreate 11 11 OnShow = FormShow 12 12 Position = poScreenCenter 13 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 14 14 object Label8: TLabel 15 Left = 2 416 Height = 2 017 Top = 1 318 Width = 7515 Left = 29 16 Height = 26 17 Top = 16 18 Width = 98 19 19 Caption = 'Start string:' 20 20 ParentColor = False 21 21 end 22 22 object Label9: TLabel 23 Left = 2 424 Height = 2 025 Top = 5326 Width = 6923 Left = 29 24 Height = 26 25 Top = 64 26 Width = 91 27 27 Caption = 'End string:' 28 28 ParentColor = False 29 29 end 30 30 object EditBlockEnd: TEdit 31 Left = 18332 Height = 2833 Top = 4834 Width = 46131 Left = 220 32 Height = 43 33 Top = 58 34 Width = 552 35 35 Anchors = [akTop, akLeft, akRight] 36 36 TabOrder = 1 37 37 end 38 38 object EditBlockStart: TEdit 39 Left = 18340 Height = 2841 Top = 842 Width = 46139 Left = 220 40 Height = 43 41 Top = 10 42 Width = 552 43 43 Anchors = [akTop, akLeft, akRight] 44 44 TabOrder = 0 45 45 end 46 46 object ButtonCancel: TButton 47 Left = 46448 Height = 2549 Top = 38450 Width = 7547 Left = 556 48 Height = 30 49 Top = 461 50 Width = 90 51 51 Anchors = [akRight, akBottom] 52 52 Caption = 'Cancel' … … 55 55 end 56 56 object ButtonOk: TButton 57 Left = 56058 Height = 2559 Top = 38460 Width = 7557 Left = 672 58 Height = 30 59 Top = 461 60 Width = 90 61 61 Anchors = [akRight, akBottom] 62 62 Caption = 'Ok' … … 65 65 end 66 66 object Label10: TLabel 67 Left = 2 468 Height = 2 069 Top = 8870 Width = 4667 Left = 29 68 Height = 26 69 Top = 106 70 Width = 59 71 71 Caption = 'Action:' 72 72 ParentColor = False 73 73 end 74 74 object Label11: TLabel 75 Left = 2 476 Height = 2 077 Top = 1 2078 Width = 5875 Left = 29 76 Height = 26 77 Top = 144 78 Width = 73 79 79 Caption = 'Variable:' 80 80 ParentColor = False 81 81 end 82 82 object ComboBoxAction: TComboBox 83 Left = 18384 Height = 2885 Top = 8786 Width = 46183 Left = 220 84 Height = 42 85 Top = 104 86 Width = 552 87 87 Anchors = [akTop, akLeft, akRight] 88 ItemHeight = 2088 ItemHeight = 0 89 89 Style = csDropDownList 90 90 TabOrder = 2 91 91 end 92 92 object ComboBoxVariable: TComboBox 93 Left = 18394 Height = 2895 Top = 1 2096 Width = 46193 Left = 220 94 Height = 38 95 Top = 144 96 Width = 552 97 97 Anchors = [akTop, akLeft, akRight] 98 ItemHeight = 2098 ItemHeight = 0 99 99 Items.Strings = ( 100 100 '' … … 104 104 end 105 105 object CheckBoxRepetition: TCheckBox 106 Left = 2 4107 Height = 24108 Top = 1 60109 Width = 93106 Left = 29 107 Height = 30 108 Top = 192 109 Width = 112 110 110 Caption = 'Repetition' 111 111 TabOrder = 4 -
trunk/Forms/FormImportPattern.pas
r218 r219 1 unit UFormImportPattern; 2 3 {$mode delphi} 1 unit FormImportPattern; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 UAcronym;7 Acronym; 10 8 11 9 type … … 34 32 end; 35 33 36 var37 FormImportPattern: TFormImportPattern;38 34 39 35 implementation … … 42 38 43 39 uses 44 UCore;40 Core; 45 41 46 42 { TFormImportPattern } … … 53 49 procedure TFormImportPattern.FormCreate(Sender: TObject); 54 50 begin 55 Core.Translator.TranslateComponentRecursive(Self);56 Core.ThemeManager.UseTheme(Self);57 51 InitControls; 58 52 end; -
trunk/Forms/FormImportSource.lfm
r218 r219 1 1 object FormImportSource: TFormImportSource 2 2 Left = 493 3 Height = 4593 Height = 551 4 4 Top = 315 5 Width = 6205 Width = 744 6 6 Caption = 'Import source' 7 ClientHeight = 459 8 ClientWidth = 620 9 DesignTimePPI = 120 10 OnClose = FormClose 11 OnCreate = FormCreate 7 ClientHeight = 551 8 ClientWidth = 744 9 DesignTimePPI = 144 12 10 OnShow = FormShow 13 11 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'12 LCLVersion = '3.6.0.0' 15 13 object EditName: TEdit 16 Left = 1 3517 Height = 2818 Top = 1 019 Width = 47114 Left = 162 15 Height = 43 16 Top = 12 17 Width = 565 20 18 Anchors = [akTop, akLeft, akRight] 21 19 TabOrder = 0 22 20 end 23 21 object Label1: TLabel 24 Left = 1 025 Height = 2 026 Top = 927 Width = 4322 Left = 12 23 Height = 26 24 Top = 11 25 Width = 56 28 26 Caption = 'Name:' 29 27 ParentColor = False 30 28 end 31 29 object Label2: TLabel 32 Left = 1 033 Height = 2 034 Top = 4935 Width = 7830 Left = 12 31 Height = 26 32 Top = 59 33 Width = 101 36 34 Caption = 'Source URL:' 37 35 ParentColor = False 38 36 end 39 37 object EditURL: TEdit 40 Left = 1 3641 Height = 2842 Top = 4943 Width = 35038 Left = 163 39 Height = 43 40 Top = 59 41 Width = 420 44 42 Anchors = [akTop, akLeft, akRight] 45 43 TabOrder = 1 46 44 end 47 45 object ButtonOk: TButton 48 Left = 53149 Height = 2550 Top = 42151 Width = 7546 Left = 637 47 Height = 30 48 Top = 505 49 Width = 90 52 50 Anchors = [akRight, akBottom] 53 51 Caption = 'Ok' … … 56 54 end 57 55 object ButtonCancel: TButton 58 Left = 42959 Height = 2560 Top = 42161 Width = 7556 Left = 515 57 Height = 30 58 Top = 505 59 Width = 90 62 60 Anchors = [akRight, akBottom] 63 61 Caption = 'Cancel' … … 66 64 end 67 65 object Label3: TLabel 68 Left = 1 069 Height = 2 070 Top = 9671 Width = 8466 Left = 12 67 Height = 26 68 Top = 115 69 Width = 106 72 70 Caption = 'Data format:' 73 71 ParentColor = False 74 72 end 75 73 object ComboBox1: TComboBox 76 Left = 1 3577 Height = 2878 Top = 9179 Width = 35080 Anchors = [akTop, akLeft, akRight] 81 ItemHeight = 2074 Left = 162 75 Height = 42 76 Top = 109 77 Width = 420 78 Anchors = [akTop, akLeft, akRight] 79 ItemHeight = 0 82 80 Style = csDropDownList 83 81 TabOrder = 2 84 82 end 85 83 object ButtonShowFormat: TButton 86 Left = 49387 Height = 2588 Top = 9189 Width = 1 1284 Left = 592 85 Height = 30 86 Top = 109 87 Width = 134 90 88 Anchors = [akTop, akRight] 91 89 Caption = 'Configure' 90 TabOrder = 3 92 91 OnClick = ButtonShowFormatClick 93 TabOrder = 394 92 end 95 93 object CheckBoxEnabled: TCheckBox 96 Left = 1 097 Height = 2498 Top = 1 2899 Width = 7894 Left = 12 95 Height = 30 96 Top = 154 97 Width = 94 100 98 Caption = 'Enabled' 101 99 TabOrder = 4 102 100 end 103 101 object Label4: TLabel 104 Left = 1 0105 Height = 2 0106 Top = 1 60107 Width = 74102 Left = 12 103 Height = 26 104 Top = 192 105 Width = 95 108 106 Caption = 'Categories:' 109 107 ParentColor = False 110 108 end 111 109 object ListBox1: TListBox 112 Left = 1 35113 Height = 1 41114 Top = 1 60115 Width = 471110 Left = 162 111 Height = 169 112 Top = 192 113 Width = 565 116 114 Anchors = [akTop, akLeft, akRight] 117 115 ItemHeight = 0 … … 120 118 ScrollWidth = 469 121 119 TabOrder = 5 120 TopIndex = -1 122 121 end 123 122 object Button1: TButton 124 Left = 1 35125 Height = 25126 Top = 3 12127 Width = 75123 Left = 162 124 Height = 30 125 Top = 374 126 Width = 90 128 127 Action = ACategoryAdd 129 128 TabOrder = 6 130 129 end 131 130 object Button2: TButton 132 Left = 2 31133 Height = 25134 Top = 3 12135 Width = 75131 Left = 277 132 Height = 30 133 Top = 374 134 Width = 90 136 135 Action = ACategoryRemove 137 136 TabOrder = 7 138 137 end 139 138 object Bevel1: TBevel 140 Left = 1 0139 Left = 12 141 140 Height = 2 142 Top = 4 08143 Width = 597141 Top = 490 142 Width = 716 144 143 Anchors = [akLeft, akRight, akBottom] 145 144 end 146 145 object Label5: TLabel 147 Left = 1 0148 Height = 2 0149 Top = 352150 Width = 73146 Left = 12 147 Height = 26 148 Top = 422 149 Width = 97 151 150 Caption = 'User name:' 152 151 ParentColor = False 153 152 end 154 153 object Label6: TLabel 155 Left = 3 05156 Height = 2 0157 Top = 351158 Width = 65154 Left = 366 155 Height = 26 156 Top = 421 157 Width = 87 159 158 Caption = 'Password:' 160 159 ParentColor = False 161 160 end 162 161 object EditUserName: TEdit 163 Left = 1 36164 Height = 28165 Top = 351166 Width = 1 53162 Left = 163 163 Height = 43 164 Top = 421 165 Width = 184 167 166 TabOrder = 8 168 167 end 169 168 object EditPassword: TEdit 170 Left = 436171 Height = 28172 Top = 351173 Width = 1 53169 Left = 523 170 Height = 43 171 Top = 421 172 Width = 184 174 173 EchoMode = emPassword 175 174 PasswordChar = '*' … … 177 176 end 178 177 object ButtonOpenURL: TButton 179 Left = 493180 Height = 25181 Top = 52182 Width = 1 12178 Left = 592 179 Height = 30 180 Top = 62 181 Width = 134 183 182 Anchors = [akTop, akRight] 184 183 Caption = 'Open URL' 184 TabOrder = 12 185 185 OnClick = ButtonOpenURLClick 186 TabOrder = 12187 186 end 188 187 object ActionList1: TActionList 189 left = 384190 top = 208188 Left = 461 189 Top = 250 191 190 object ACategoryRemove: TAction 192 191 Caption = 'Remove' … … 201 200 end 202 201 object PopupMenuCategory: TPopupMenu 203 left = 208204 top = 208202 Left = 250 203 Top = 250 205 204 object MenuItem2: TMenuItem 206 205 Action = ACategoryAdd -
trunk/Forms/FormImportSource.pas
r218 r219 1 unit UFormImportSource; 2 3 {$mode delphi} 1 unit FormImportSource; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 ActnList, Menus, ExtCtrls, UAcronym, LCLIntf;7 ActnList, Menus, ExtCtrls, Acronym, LCLIntf; 10 8 11 9 type … … 44 42 procedure ButtonOpenURLClick(Sender: TObject); 45 43 procedure ButtonShowFormatClick(Sender: TObject); 46 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);47 procedure FormCreate(Sender: TObject);48 44 procedure FormShow(Sender: TObject); 49 private50 { private declarations }51 45 public 52 46 procedure UpdateInterface; … … 55 49 end; 56 50 57 var58 FormImportSource: TFormImportSource;59 51 60 52 implementation … … 63 55 64 56 uses 65 UCore, UFormImportFormat, UFormCategorySelect;57 Core, FormImportFormat, FormCategorySelect; 66 58 67 59 { TFormImportSource } … … 70 62 var 71 63 NewImportFormat: TImportFormat; 64 FormImportFormat: TFormImportFormat; 72 65 begin 73 66 if ComboBox1.ItemIndex <> -1 then begin … … 80 73 FormImportFormat.Save(NewImportFormat); 81 74 TImportFormat(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).Assign(NewImportFormat); 82 Core. AcronymDb.Modified := True;75 Core.Core.AcronymDb.Modified := True; 83 76 ComboBox1.Items.Strings[ComboBox1.ItemIndex] := NewImportFormat.Name; 84 77 end; … … 90 83 end; 91 84 92 procedure TFormImportSource.FormClose(Sender: TObject;93 var CloseAction: TCloseAction);94 begin95 Core.PersistentForm1.Save(Self);96 end;97 98 procedure TFormImportSource.FormCreate(Sender: TObject);99 begin100 Core.Translator.TranslateComponentRecursive(Self);101 Core.ThemeManager.UseTheme(Self);102 end;103 104 85 procedure TFormImportSource.FormShow(Sender: TObject); 105 86 begin 106 Core.PersistentForm1.Load(Self);107 87 UpdateInterface; 108 88 end; … … 116 96 var 117 97 I: Integer; 98 FormCategorySelect: TFormCategorySelect; 118 99 begin 119 100 FormCategorySelect := TFormCategorySelect.Create(Self); … … 155 136 EditName.Text := ImportSource.Name; 156 137 EditURL.Text := ImportSource.URL; 157 while ComboBox1.Items.Count > Core. AcronymDb.ImportFormats.Count do138 while ComboBox1.Items.Count > Core.Core.AcronymDb.ImportFormats.Count do 158 139 ComboBox1.Items.Delete(ComboBox1.Items.Count - 1); 159 while ComboBox1.Items.Count < Core. AcronymDb.ImportFormats.Count do140 while ComboBox1.Items.Count < Core.Core.AcronymDb.ImportFormats.Count do 160 141 ComboBox1.Items.Add(''); 161 for I := 0 to Core. AcronymDb.ImportFormats.Count - 1 do begin162 ComboBox1.Items[I] := TImportFormat(Core. AcronymDb.ImportFormats[I]).Name;163 ComboBox1.Items.Objects[I] := Core. AcronymDb.ImportFormats[I];142 for I := 0 to Core.Core.AcronymDb.ImportFormats.Count - 1 do begin 143 ComboBox1.Items[I] := TImportFormat(Core.Core.AcronymDb.ImportFormats[I]).Name; 144 ComboBox1.Items.Objects[I] := Core.Core.AcronymDb.ImportFormats[I]; 164 145 end; 165 146 ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(ImportSource.Format); -
trunk/Forms/FormImportSources.lfm
r218 r219 1 1 object FormImportSources: TFormImportSources 2 2 Left = 475 3 Height = 4 143 Height = 497 4 4 Top = 329 5 Width = 8125 Width = 974 6 6 Caption = 'Import sources' 7 ClientHeight = 414 8 ClientWidth = 812 9 DesignTimePPI = 120 10 OnClose = FormClose 7 ClientHeight = 497 8 ClientWidth = 974 9 DesignTimePPI = 144 11 10 OnCreate = FormCreate 12 11 OnShow = FormShow 13 12 Position = poScreenCenter 14 LCLVersion = ' 2.0.2.0'13 LCLVersion = '3.6.0.0' 15 14 object ToolBar1: TToolBar 16 15 Left = 0 17 Height = 2618 Top = 38819 Width = 81216 Height = 33 17 Top = 464 18 Width = 974 20 19 Align = alBottom 21 20 Caption = 'ToolBar1' … … 30 29 end 31 30 object ToolButton2: TToolButton 32 Left = 3 031 Left = 36 33 32 Top = 2 34 33 Action = AModify 35 34 end 36 35 object ToolButton3: TToolButton 37 Left = 5936 Left = 71 38 37 Top = 2 39 38 Action = ARemove 40 39 end 41 40 object ToolButton4: TToolButton 42 Left = 8841 Left = 106 43 42 Top = 2 44 43 Action = AProcess … … 46 45 end 47 46 object ListView1: TListView 48 Left = 449 Height = 35150 Top = 3351 Width = 80447 Left = 5 48 Height = 419 49 Top = 40 50 Width = 964 52 51 Align = alClient 53 BorderSpacing.Left = 454 BorderSpacing.Right = 455 BorderSpacing.Bottom = 452 BorderSpacing.Left = 5 53 BorderSpacing.Right = 5 54 BorderSpacing.Bottom = 5 56 55 Checkboxes = True 57 56 Columns = < 58 57 item 59 58 Caption = 'Name' 60 Width = 1 5059 Width = 180 61 60 end 62 61 item 63 62 Caption = 'URL' 64 Width = 25063 Width = 300 65 64 end 66 65 item 67 66 Caption = 'Categories' 68 Width = 2 0067 Width = 240 69 68 end 70 69 item 71 70 Caption = 'Count' 72 Width = 7071 Width = 84 73 72 end 74 73 item 75 74 Caption = 'Date' 76 Width = 1 1475 Width = 145 77 76 end> 78 77 MultiSelect = True … … 91 90 end 92 91 object ListViewFilter1: TListViewFilter 93 Left = 494 Height = 2995 Top = 496 Width = 80492 Left = 5 93 Height = 35 94 Top = 5 95 Width = 964 97 96 OnChange = ListViewFilter1Change 98 97 Align = alTop 99 BorderSpacing.Left = 4100 BorderSpacing.Top = 4101 BorderSpacing.Right = 498 BorderSpacing.Left = 5 99 BorderSpacing.Top = 5 100 BorderSpacing.Right = 5 102 101 end 103 102 object ActionList1: TActionList 104 103 Images = Core.ImageList1 105 left = 408106 top = 224104 Left = 490 105 Top = 269 107 106 object AAdd: TAction 108 107 Caption = 'Add' … … 139 138 object PopupMenuImportSource: TPopupMenu 140 139 Images = Core.ImageList1 141 left = 147142 top = 220140 Left = 176 141 Top = 264 143 142 object MenuItem1: TMenuItem 144 143 Action = AAdd … … 167 166 ShowDelay = 0 168 167 AutoClose = False 169 left = 299170 top = 119168 Left = 359 169 Top = 143 171 170 end 172 171 object ListViewSort1: TListViewSort … … 177 176 Column = 0 178 177 Order = soNone 179 left = 547180 top = 172178 Left = 656 179 Top = 206 181 180 end 182 181 end -
trunk/Forms/FormImportSources.pas
r218 r219 1 unit UFormImportSources; 2 3 {$mode delphi} 1 unit FormImportSources; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 ActnList, Menus, UAcronym, UJobProgressView, UListViewSort, LazUTF8, fgl; 7 ActnList, Menus, Acronym, JobProgressView, ListViewSort, LazUTF8, 8 Generics.Collections; 10 9 11 10 type … … 44 43 procedure AProcessExecute(Sender: TObject); 45 44 procedure ARemoveExecute(Sender: TObject); 46 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);47 45 procedure FormCreate(Sender: TObject); 48 46 procedure FormShow(Sender: TObject); 49 47 procedure ListView1Change(Sender: TObject; Item: TListItem; 50 48 Change: TItemChange); 51 procedure ListView1Click(Sender: TObject);52 49 procedure ListView1Data(Sender: TObject; Item: TListItem); 53 50 procedure ListView1DblClick(Sender: TObject); … … 62 59 private 63 60 procedure ProcessImportJob(Job: TJob); 64 procedure FilterList(List: T FPGObjectList<TObject>);61 procedure FilterList(List: TObjectList<TObject>); 65 62 public 66 63 ImportSources: TImportSources; … … 69 66 end; 70 67 71 var72 FormImportSources: TFormImportSources;73 68 74 69 implementation … … 77 72 78 73 uses 79 UCore, UFormMain, UFormImportSource;74 Core, FormMain, FormImportSource; 80 75 81 76 resourcestring … … 172 167 procedure TFormImportSources.FormShow(Sender: TObject); 173 168 begin 174 Core.PersistentForm1.Load(Self);175 169 UpdateList; 176 Core. ScaleDPI1.ScaleControl(ToolBar1,Core.ScaleDPI1.DesignDPI);170 Core.Core.ScaleDPI1.ScaleControl(ToolBar1, Core.Core.ScaleDPI1.DesignDPI); 177 171 end; 178 172 … … 182 176 if Assigned(Item) and (Change = ctState) then begin 183 177 TImportSource(Item.Data).Enabled := Item.Checked; 184 Core.AcronymDb.Modified := True; 185 end; 186 end; 187 188 procedure TFormImportSources.ListView1Click(Sender: TObject); 189 begin 190 178 Core.Core.AcronymDb.Modified := True; 179 end; 191 180 end; 192 181 … … 194 183 var 195 184 NewImportSource: TImportSource; 185 FormImportSource: TFormImportSource; 196 186 I: Integer; 197 187 begin … … 212 202 213 203 NewImportSource := nil; 214 Core. AcronymDb.Modified := True;204 Core.Core.AcronymDb.Modified := True; 215 205 UpdateList; 216 206 end else ShowMessage(Format(SImportSourceAlreadyExists, [NewImportSource.Name])); … … 229 219 if ListView1.Items[I].Selected then begin 230 220 TImportSource(ListView1.Items[I].Data).Enabled := False; 231 Core. AcronymDb.Modified := True;221 Core.Core.AcronymDb.Modified := True; 232 222 end; 233 223 UpdateList; … … 241 231 if ListView1.Items[I].Selected then begin 242 232 TImportSource(ListView1.Items[I].Data).Enabled := True; 243 Core. AcronymDb.Modified := True;233 Core.Core.AcronymDb.Modified := True; 244 234 end; 245 235 UpdateList; … … 249 239 var 250 240 NewImportSource: TImportSource; 241 FormImportSource: TFormImportSource; 251 242 begin 252 243 if Assigned(ListView1.Selected) then begin … … 261 252 if not Assigned(ImportSources.SearchByName(NewImportSource.Name)) then begin; 262 253 TImportSource(ListView1.Selected.Data).Assign(NewImportSource); 263 Core. AcronymDb.Modified := True;254 Core.Core.AcronymDb.Modified := True; 264 255 end else ShowMessage(Format(SImportSourceAlreadyExists, [NewImportSource.Name])); 265 256 end else begin 266 257 TImportSource(ListView1.Selected.Data).Assign(NewImportSource); 267 Core. AcronymDb.Modified := True;258 Core.Core.AcronymDb.Modified := True; 268 259 end; 269 260 … … 283 274 begin 284 275 if Assigned(ListView1.Selected) then begin 285 Core. AcronymDb.AddedCount := 0;276 Core.Core.AcronymDb.AddedCount := 0; 286 277 JobProgressView1.AddJob(SProcessSelectedSource, ProcessImportJob); 287 278 JobProgressView1.Start; 288 279 ShowMessage(Format(SAddedCount, [TImportSource(ListView1.Selected.Data).ItemCount, 289 Core. AcronymDb.AddedCount]));280 Core.Core.AcronymDb.AddedCount])); 290 281 end; 291 282 end; … … 296 287 end; 297 288 298 procedure TFormImportSources.FilterList(List: T FPGObjectList<TObject>);289 procedure TFormImportSources.FilterList(List: TObjectList<TObject>); 299 290 var 300 291 I: Integer; … … 344 335 end; 345 336 346 procedure TFormImportSources.FormClose(Sender: TObject;347 var CloseAction: TCloseAction);348 begin349 Core.PersistentForm1.Save(Self);350 end;351 352 337 procedure TFormImportSources.FormCreate(Sender: TObject); 353 338 var 354 339 I: Integer; 355 340 begin 356 Core.Translator.TranslateComponentRecursive(Self);357 Core.ThemeManager.UseTheme(Self);358 341 for I := 0 to ToolBar1.ButtonCount - 1 do 359 342 ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption; -
trunk/Forms/FormMain.lfm
r218 r219 1 1 object FormMain: TFormMain 2 2 Left = 417 3 Height = 7 473 Height = 713 4 4 Top = 453 5 5 Width = 1106 … … 12 12 OnCloseQuery = FormCloseQuery 13 13 OnCreate = FormCreate 14 OnDestroy = FormDestroy15 14 OnHide = FormHide 16 15 OnResize = FormResize 17 16 OnShow = FormShow 18 LCLVersion = ' 2.0.12.0'17 LCLVersion = '3.6.0.0' 19 18 object PanelMain: TPanel 20 19 Left = 0 21 Height = 60 520 Height = 604 22 21 Top = 81 23 22 Width = 1106 24 23 Align = alClient 25 24 BevelOuter = bvNone 26 ClientHeight = 60 525 ClientHeight = 604 27 26 ClientWidth = 1106 28 27 ParentFont = False … … 38 37 object ListViewAcronyms: TListView 39 38 Left = 5 40 Height = 54 939 Height = 548 41 40 Top = 50 42 41 Width = 1095 … … 317 316 object StatusBar1: TStatusBar 318 317 Left = 0 319 Height = 2 7320 Top = 68 6318 Height = 28 319 Top = 685 321 320 Width = 1106 322 321 Panels = < … … 605 604 end 606 605 end 607 object AboutDialog1: TAboutDialog608 Translator = Core.Translator609 ThemeManager = Core.ThemeManager610 ApplicationInfo = Core.ApplicationInfo1611 Left = 392612 Top = 448613 end614 606 end -
trunk/Forms/FormMain.pas
r218 r219 1 unit UFormMain; 2 3 {$mode delphi}{$H+} 1 unit FormMain; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus, 9 ComCtrls, StdCtrls, ExtCtrls, ActnList, Grids, UAcronym, UPersistentForm,10 URegistry, ULastOpenedList, UListViewSort, UJobProgressView, UAboutDialog,11 Registry, fgl, LazUTF8, LazFileUtils;7 ComCtrls, StdCtrls, ExtCtrls, ActnList, Grids, Acronym, PersistentForm, 8 RegistryEx, LastOpenedList, ListViewSort, JobProgressView, FormAbout, 9 Registry, Generics.Collections, LazUTF8, LazFileUtils, FormEx; 12 10 13 11 type … … 15 13 { TFormMain } 16 14 17 TFormMain = class(TForm) 18 AboutDialog1: TAboutDialog; 15 TFormMain = class(TFormEx) 19 16 AFilterShowItemsWithoutFilter: TAction; 20 17 ADocumentCheck: TAction; … … 138 135 procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); 139 136 procedure FormCreate(Sender: TObject); 140 procedure FormDestroy(Sender: TObject);141 137 procedure LastOpenedList1Change(Sender: TObject); 142 138 procedure ListViewAcronymsData(Sender: TObject; Item: TListItem); … … 158 154 function FilterCell(Text1, Text2: string): Boolean; 159 155 procedure ProcessImportsJob(Job: TJob); 160 procedure FilterList(List: T FPGObjectList<TObject>);156 procedure FilterList(List: TObjectList<TObject>); 161 157 procedure OpenRecentClick(Sender: TObject); 162 158 procedure SetToolbarHints; … … 167 163 procedure UpdateInterface; 168 164 procedure ProjectOpen(FileName: string); 169 function CompareStrings(Strings1, Strings2: TStrings): Boolean; 170 end; 171 172 var 173 FormMain: TFormMain; 165 end; 174 166 175 167 resourcestring … … 186 178 187 179 uses 188 UFormImport, UFormSettings, UFormCategories, UFormAcronyms, UFormExport,189 UFormImportSources, UFormImportFormats, UCore, UFormCheck;180 FormImport, FormSettings, FormCategories, FormAcronyms, FormExport, 181 FormImportSources, FormImportFormats, Core, FormCheck; 190 182 191 183 resourcestring … … 232 224 procedure TFormMain.FormHide(Sender: TObject); 233 225 begin 234 if Core. InitializeFinished thenCore.PersistentForm1.Save(Self);226 if Core.Core.InitializeFinished then Core.Core.PersistentForm1.Save(Self); 235 227 UpdateInterface; 236 228 end; … … 243 235 procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction); 244 236 begin 245 Core.PersistentForm1.Save(Self); 246 Core.SaveConfig; 237 Core.Core.SaveConfig; 247 238 end; 248 239 … … 260 251 261 252 procedure TFormMain.ADocumentCheckExecute(Sender: TObject); 253 var 254 FormCheck: TFormCheck; 262 255 begin 263 256 FormCheck := TFormCheck.Create(Self); … … 272 265 273 266 procedure TFormMain.AExportExecute(Sender: TObject); 267 var 268 FormExport: TFormExport; 274 269 begin 275 270 FormExport := TFormExport.Create(Self); … … 287 282 begin 288 283 DoClose := False; 289 if Assigned(Core. AcronymDb) then begin290 if Core. AcronymDb.Modified then begin284 if Assigned(Core.Core.AcronymDb) then begin 285 if Core.Core.AcronymDb.Modified then begin 291 286 ModalResult := MessageDlg(SAppExit, SAppExitQuery, 292 287 mtConfirmation, [mbYes, mbNo, mbCancel], 0); … … 301 296 end; 302 297 if DoClose then begin 303 FreeAndNil(Core. AcronymDb);298 FreeAndNil(Core.Core.AcronymDb); 304 299 UpdateAcronymsList; 305 300 UpdateInterface; … … 311 306 begin 312 307 AFileClose.Execute; 313 if not Assigned(Core. AcronymDb) then begin314 Core. AcronymDb := TAcronymDb.Create;315 Core. AcronymDb.FileName := DefaultFileName;316 Core. AcronymDb.Acronyms.Clear;317 Core. AcronymDb.OnUpdate.Add(AcronymDbUpdate);308 if not Assigned(Core.Core.AcronymDb) then begin 309 Core.Core.AcronymDb := TAcronymDb.Create; 310 Core.Core.AcronymDb.FileName := DefaultFileName; 311 Core.Core.AcronymDb.Acronyms.Clear; 312 Core.Core.AcronymDb.OnUpdate.Add(AcronymDbUpdate); 318 313 UpdateAcronymsList; 319 314 UpdateInterface; … … 324 319 begin 325 320 OpenDialog1.DefaultExt := ProjectExt; 326 if Assigned(Core. AcronymDb) then begin327 OpenDialog1.InitialDir := ExtractFileDir(Core. AcronymDb.FileName);321 if Assigned(Core.Core.AcronymDb) then begin 322 OpenDialog1.InitialDir := ExtractFileDir(Core.Core.AcronymDb.FileName); 328 323 OpenDialog1.Filter := SFileFilter; 329 OpenDialog1.FileName := ExtractFileName(Core. AcronymDb.FileName);324 OpenDialog1.FileName := ExtractFileName(Core.Core.AcronymDb.FileName); 330 325 end; 331 326 if OpenDialog1.Execute then begin … … 337 332 begin 338 333 SaveDialog1.DefaultExt := ProjectExt; 339 SaveDialog1.InitialDir := ExtractFileDir(Core. AcronymDb.FileName);334 SaveDialog1.InitialDir := ExtractFileDir(Core.Core.AcronymDb.FileName); 340 335 SaveDialog1.Filter := SFileFilter; 341 SaveDialog1.FileName := ExtractFileName(Core. AcronymDb.FileName);336 SaveDialog1.FileName := ExtractFileName(Core.Core.AcronymDb.FileName); 342 337 if SaveDialog1.Execute then begin 343 Core. AcronymDb.SaveToFile(SaveDialog1.FileName);338 Core.Core.AcronymDb.SaveToFile(SaveDialog1.FileName); 344 339 LastOpenedList1.AddItem(SaveDialog1.FileName); 345 340 UpdateInterface; … … 349 344 procedure TFormMain.AFileSaveExecute(Sender: TObject); 350 345 begin 351 if FileExists(Core. AcronymDb.FileName) then begin352 Core. AcronymDb.SaveToFile(Core.AcronymDb.FileName);353 LastOpenedList1.AddItem(Core. AcronymDb.FileName);346 if FileExists(Core.Core.AcronymDb.FileName) then begin 347 Core.Core.AcronymDb.SaveToFile(Core.Core.AcronymDb.FileName); 348 LastOpenedList1.AddItem(Core.Core.AcronymDb.FileName); 354 349 UpdateInterface; 355 350 end else AFileSaveAs.Execute; … … 382 377 383 378 procedure TFormMain.AImportExecute(Sender: TObject); 379 var 380 FormImport: TFormImport; 384 381 begin 385 382 FormImport := TFormImport.Create(Self); … … 394 391 395 392 procedure TFormMain.AManageAcronymExecute(Sender: TObject); 393 var 394 FormAcronyms: TFormAcronyms; 396 395 begin 397 396 FormAcronyms := TFormAcronyms.Create(Self); … … 399 398 if Assigned(ListViewAcronyms.Selected) then 400 399 FormAcronyms.FocusAcronym := ListViewAcronyms.Selected.Data; 401 FormAcronyms.Acronyms := Core. AcronymDb.Acronyms;400 FormAcronyms.Acronyms := Core.Core.AcronymDb.Acronyms; 402 401 FormAcronyms.ShowModal; 403 402 UpdateAcronymsList; … … 411 410 begin 412 411 ImportTotalItemCount := 0; 413 Core. AcronymDb.AddedCount := 0;414 Core. JobProgressView1.AddJob(SProcessImportSources, ProcessImportsJob);415 Core. JobProgressView1.Start;416 ShowMessage(Format(SAddedCount, [ImportTotalItemCount, Core. AcronymDb.AddedCount]));412 Core.Core.AcronymDb.AddedCount := 0; 413 Core.Core.JobProgressView1.AddJob(SProcessImportSources, ProcessImportsJob); 414 Core.Core.JobProgressView1.Start; 415 ShowMessage(Format(SAddedCount, [ImportTotalItemCount, Core.Core.AcronymDb.AddedCount])); 417 416 UpdateAcronymsList; 418 417 UpdateInterface; … … 423 422 I: Integer; 424 423 begin 425 for I := 0 to Core. AcronymDb.ImportSources.Count - 1 do426 with TImportSource(Core.AcronymDb.ImportSources[I])do424 for I := 0 to Core.Core.AcronymDb.ImportSources.Count - 1 do 425 with Core.Core.AcronymDb.ImportSources[I] do 427 426 if Enabled then begin 428 427 Process; 429 428 ImportTotalItemCount := ImportTotalItemCount + ItemCount; 430 Job.Progress.Max := Core. AcronymDb.ImportSources.Count;429 Job.Progress.Max := Core.Core.AcronymDb.ImportSources.Count; 431 430 Job.Progress.Value := I; 432 431 if Job.Terminate then Break; … … 435 434 436 435 procedure TFormMain.ASettingsExecute(Sender: TObject); 436 var 437 FormSettings: TFormSettings; 437 438 begin 438 439 FormSettings := TFormSettings.Create(Self); … … 441 442 if FormSettings.ShowModal = mrOk then begin 442 443 FormSettings.Save; 443 Core. SaveConfig;444 Core. ThemeManager.UseTheme(Self);444 Core.Core.SaveConfig; 445 Core.Core.ThemeManager.UseTheme(Self); 445 446 end; 446 447 finally … … 450 451 451 452 procedure TFormMain.AShowAboutExecute(Sender: TObject); 452 begin 453 AboutDialog1.Show; 453 var 454 FormAbout: TFormAbout; 455 begin 456 FormAbout := TFormAbout.Create(nil); 457 try 458 FormAbout.ApplicationInfo := Core.Core.ApplicationInfo1; 459 FormAbout.ShowModal; 460 finally 461 FormAbout.Free; 462 end; 454 463 end; 455 464 456 465 procedure TFormMain.AShowAcronymsExecute(Sender: TObject); 466 var 467 FormAcronyms: TFormAcronyms; 457 468 begin 458 469 FormAcronyms := TFormAcronyms.Create(Self); 459 470 try 460 FormAcronyms.Acronyms := Core. AcronymDb.Acronyms;471 FormAcronyms.Acronyms := Core.Core.AcronymDb.Acronyms; 461 472 FormAcronyms.ShowModal; 462 473 UpdateAcronymsList; … … 468 479 469 480 procedure TFormMain.AShowCategoriesExecute(Sender: TObject); 481 var 482 FormCategories: TFormCategories; 470 483 begin 471 484 FormCategories := TFormCategories.Create(Self); 472 485 try 473 FormCategories.Categories := Core. AcronymDb.Categories;486 FormCategories.Categories := Core.Core.AcronymDb.Categories; 474 487 FormCategories.ShowModal; 475 488 UpdateAcronymsList; … … 487 500 488 501 procedure TFormMain.AShowImportFormatsExecute(Sender: TObject); 502 var 503 FormImportFormats: TFormImportFormats; 489 504 begin 490 505 FormImportFormats := TFormImportFormats.Create(Self); 491 506 try 492 FormImportFormats.ImportFormats := Core. AcronymDb.ImportFormats;507 FormImportFormats.ImportFormats := Core.Core.AcronymDb.ImportFormats; 493 508 FormImportFormats.ShowModal; 494 509 UpdateInterface; … … 499 514 500 515 procedure TFormMain.AShowImportSourcesExecute(Sender: TObject); 516 var 517 FormImportSources: TFormImportSources; 501 518 begin 502 519 FormImportSources := TFormImportSources.Create(Self); 503 520 try 504 FormImportSources.ImportSources := Core. AcronymDb.ImportSources;521 FormImportSources.ImportSources := Core.Core.AcronymDb.ImportSources; 505 522 FormImportSources.ShowModal; 506 523 UpdateAcronymsList; … … 511 528 end; 512 529 513 procedure TFormMain.FormDestroy(Sender: TObject);514 begin515 end;516 517 530 procedure TFormMain.FormShow(Sender: TObject); 518 531 begin 519 Core. Initialize;532 Core.Core.Initialize; 520 533 521 534 if Visible then begin 522 Core.PersistentForm1.Load(Self);523 Core.ThemeManager.UseTheme(Self);524 535 ListViewFilter1.UpdateFromListView(ListViewAcronyms); 525 536 UpdateInterface; … … 529 540 ListViewFilter1.StringGrid.SetFocus; 530 541 end; 531 Core. ScaleDPI1.ScaleControl(CoolBar1,Core.ScaleDPI1.DesignDPI);542 Core.Core.ScaleDPI1.ScaleControl(CoolBar1, Core.Core.ScaleDPI1.DesignDPI); 532 543 CoolBar1.AutosizeBands; 533 544 end; … … 587 598 procedure TFormMain.ListViewSort1Filter(ListViewSort: TListViewSort); 588 599 begin 589 Core. AcronymDb.AssignToList(ListViewSort1.List, AFilterEnabledCategories.Checked);600 Core.Core.AcronymDb.AssignToList(ListViewSort1.List, AFilterEnabledCategories.Checked); 590 601 FilterList(ListViewSort1.List); 591 602 end; … … 628 639 begin 629 640 AFileClose.Execute; 630 if not Assigned(Core. AcronymDb) then begin641 if not Assigned(Core.Core.AcronymDb) then begin 631 642 try 632 643 AFileNew.Execute; 633 Core. AcronymDb.LoadFromFile(FileName);644 Core.Core.AcronymDb.LoadFromFile(FileName); 634 645 LastOpenedList1.AddItem(FileName); 635 646 finally … … 640 651 end; 641 652 642 function TFormMain.CompareStrings(Strings1, Strings2: TStrings): Boolean; 643 var 644 I: Integer; 645 begin 646 Result := Strings1.Count = Strings2.Count; 647 if not Result then Exit; 648 for I := 0 to Strings1.Count - 1 do 649 if (Strings1[I] <> Strings2[I]) or (Strings1.Objects[I] <> Strings2.Objects[I]) then begin 650 Result := False; 651 Exit; 652 end; 653 end; 654 655 procedure TFormMain.FilterList(List: TFPGObjectList<TObject>); 653 procedure TFormMain.FilterList(List: TObjectList<TObject>); 656 654 var 657 655 I: Integer; … … 686 684 begin 687 685 AFileClose.Execute; 688 if not Assigned(Core. AcronymDb) then begin686 if not Assigned(Core.Core.AcronymDb) then begin 689 687 AFileNew.Execute; 690 Core. AcronymDb.LoadFromFile(TMenuItem(Sender).Caption);688 Core.Core.AcronymDb.LoadFromFile(TMenuItem(Sender).Caption); 691 689 LastOpenedList1.AddItem(TMenuItem(Sender).Caption); 692 690 UpdateAcronymsList; … … 697 695 procedure TFormMain.UpdateAcronymsList; 698 696 begin 699 if Assigned(Core. AcronymDb) then begin697 if Assigned(Core.Core.AcronymDb) then begin 700 698 ListViewSort1.Refresh; 701 699 end else begin … … 710 708 Title: string; 711 709 begin 712 ListViewAcronyms.Enabled := Assigned(Core. AcronymDb);713 AFileClose.Enabled := Assigned(Core. AcronymDb);714 AFileSave.Enabled := Assigned(Core. AcronymDb) andCore.AcronymDb.Modified;715 AFileSaveAs.Enabled := Assigned(Core. AcronymDb);716 AImport.Enabled := Assigned(Core. AcronymDb);717 AExport.Enabled := Assigned(Core. AcronymDb);718 AProcessImports.Enabled := Assigned(Core. AcronymDb);719 AShowCategories.Enabled := Assigned(Core. AcronymDb);720 AShowAcronyms.Enabled := Assigned(Core. AcronymDb);721 AShowCategories.Enabled := Assigned(Core. AcronymDb);722 AShowImportSources.Enabled := Assigned(Core. AcronymDb);723 AShowImportFormats.Enabled := Assigned(Core. AcronymDb);710 ListViewAcronyms.Enabled := Assigned(Core.Core.AcronymDb); 711 AFileClose.Enabled := Assigned(Core.Core.AcronymDb); 712 AFileSave.Enabled := Assigned(Core.Core.AcronymDb) and Core.Core.AcronymDb.Modified; 713 AFileSaveAs.Enabled := Assigned(Core.Core.AcronymDb); 714 AImport.Enabled := Assigned(Core.Core.AcronymDb); 715 AExport.Enabled := Assigned(Core.Core.AcronymDb); 716 AProcessImports.Enabled := Assigned(Core.Core.AcronymDb); 717 AShowCategories.Enabled := Assigned(Core.Core.AcronymDb); 718 AShowAcronyms.Enabled := Assigned(Core.Core.AcronymDb); 719 AShowCategories.Enabled := Assigned(Core.Core.AcronymDb); 720 AShowImportSources.Enabled := Assigned(Core.Core.AcronymDb); 721 AShowImportFormats.Enabled := Assigned(Core.Core.AcronymDb); 724 722 CoolBar1.Visible := MenuItemToolbar.Checked; 725 723 PanelParam.Visible := MenuItemParam.Checked; 726 AHide.Enabled := FormMain.Visible;724 AHide.Enabled := Visible; 727 725 AManageAcronym.Enabled := Assigned(ListViewAcronyms.Selected); 728 726 StatusBar1.Visible := MenuItemStatusBar.Checked; 729 727 730 728 Title := ''; 731 if Assigned(Core. AcronymDb) and (ExtractFileNameWithoutExt(ExtractFileName(Core.AcronymDb.FileName)) <> '') then begin732 Title := ExtractFileNameWithoutExt(ExtractFileName(Core. AcronymDb.FileName));733 if Core. AcronymDb.Modified then Title := Title + ' (' + SModified + ')';729 if Assigned(Core.Core.AcronymDb) and (ExtractFileNameWithoutExt(ExtractFileName(Core.Core.AcronymDb.FileName)) <> '') then begin 730 Title := ExtractFileNameWithoutExt(ExtractFileName(Core.Core.AcronymDb.FileName)); 731 if Core.Core.AcronymDb.Modified then Title := Title + ' (' + SModified + ')'; 734 732 end; 735 733 if Title <> '' then Title := Title + ' - '; 736 Title := Title + Core. ApplicationInfo1.AppName;734 Title := Title + Core.Core.ApplicationInfo1.AppName; 737 735 {$IFDEF WINDOWS} 738 736 // Under Linux title would affect reg.xml path for storing registry settings … … 740 738 {$ENDIF} 741 739 Caption := Title; 742 if Assigned(Core. AcronymDb) then begin740 if Assigned(Core.Core.AcronymDb) then begin 743 741 StatusBar1.Panels[0].Text := Format(SAcronymsCount, [ 744 Core. AcronymDb.Acronyms.Count]);742 Core.Core.AcronymDb.Acronyms.Count]); 745 743 StatusBar1.Panels[1].Text := Format(SMeaningsCount, [ 746 Core. AcronymDb.GetMeaningsCount]);744 Core.Core.AcronymDb.GetMeaningsCount]); 747 745 end else begin 748 746 StatusBar1.Panels[0].Text := ''; … … 753 751 procedure TFormMain.LoadConfig; 754 752 begin 755 Core. PersistentForm1.RegistryContext :=Core.ApplicationInfo1.GetRegistryContext;756 RegistryContext := TRegistryContext.Create(Core. ApplicationInfo1.RegistryRoot,757 Core. ApplicationInfo1.RegistryKey + '\RecentFiles');753 Core.Core.PersistentForm1.RegistryContext := Core.Core.ApplicationInfo1.GetRegistryContext; 754 RegistryContext := TRegistryContext.Create(Core.Core.ApplicationInfo1.RegistryRoot, 755 Core.Core.ApplicationInfo1.RegistryKey + '\RecentFiles'); 758 756 LastOpenedList1.LoadFromRegistry(RegistryContext); 759 757 … … 761 759 // If installed in Linux system then use installation directory for po files 762 760 if Application.ExeName = '/usr/bin/' + ExtractFileNameOnly(Application.ExeName) then 763 Core. Translator.POFilesFolder := '/usr/share/' + ExtractFileNameOnly(Application.ExeName) + '/languages';761 Core.Core.Translator.POFilesFolder := '/usr/share/' + ExtractFileNameOnly(Application.ExeName) + '/languages'; 764 762 {$ENDIF} 765 763 766 764 with TRegistryEx.Create do 767 765 try 768 RootKey := RegistryRootHKEY[Core. ApplicationInfo1.RegistryRoot];769 OpenKey(Core. ApplicationInfo1.RegistryKey, True);766 RootKey := RegistryRootHKEY[Core.Core.ApplicationInfo1.RegistryRoot]; 767 OpenKey(Core.Core.ApplicationInfo1.RegistryKey, True); 770 768 AFilterSameLength.Checked := ReadBoolWithDefault('SameLength', False); 771 769 AFilterSameLetterCase.Checked := ReadBoolWithDefault('SameLetterCase', False); … … 784 782 RootKey := HKEY_CURRENT_USER; 785 783 OpenKey(RegistryRunKey, True); 786 Core. StartOnLogon := ValueExists('Acronym Decoder');784 Core.Core.StartOnLogon := ValueExists('Acronym Decoder'); 787 785 finally 788 786 Free; … … 792 790 procedure TFormMain.SaveConfig; 793 791 begin 794 RegistryContext := TRegistryContext.Create(Core. ApplicationInfo1.RegistryRoot,795 Core. ApplicationInfo1.RegistryKey + '\RecentFiles');792 RegistryContext := TRegistryContext.Create(Core.Core.ApplicationInfo1.RegistryRoot, 793 Core.Core.ApplicationInfo1.RegistryKey + '\RecentFiles'); 796 794 LastOpenedList1.SaveToRegistry(RegistryContext); 797 795 798 796 with TRegistryEx.Create do 799 797 try 800 RootKey := RegistryRootHKEY[Core. ApplicationInfo1.RegistryRoot];801 OpenKey(Core. ApplicationInfo1.RegistryKey, True);798 RootKey := RegistryRootHKEY[Core.Core.ApplicationInfo1.RegistryRoot]; 799 OpenKey(Core.Core.ApplicationInfo1.RegistryKey, True); 802 800 WriteBool('SameLength', AFilterSameLength.Checked); 803 801 WriteBool('SameLetterCase', AFilterSameLetterCase.Checked); … … 815 813 RootKey := HKEY_CURRENT_USER; 816 814 OpenKey(RegistryRunKey, True); 817 if Core. StartOnLogon then begin818 if Core. StartMinimizedToTray then WriteString('Acronym Decoder', Application.ExeName + ' ' + Application.OptionChar + 't')815 if Core.Core.StartOnLogon then begin 816 if Core.Core.StartMinimizedToTray then WriteString('Acronym Decoder', Application.ExeName + ' ' + Application.OptionChar + 't') 819 817 else WriteString('Acronym Decoder', Application.ExeName) 820 818 end else DeleteValue('Acronym Decoder'); -
trunk/Forms/FormSettings.lfm
r218 r219 1 1 object FormSettings: TFormSettings 2 2 Left = 798 3 Height = 3 713 Height = 394 4 4 Top = 367 5 5 Width = 590 6 6 Caption = 'Settings' 7 ClientHeight = 3 717 ClientHeight = 394 8 8 ClientWidth = 590 9 Constraints.MinHeight = 328 10 Constraints.MinWidth = 389 11 DesignTimePPI = 120 12 OnClose = FormClose 9 Constraints.MinHeight = 394 10 Constraints.MinWidth = 467 11 DesignTimePPI = 144 13 12 OnCreate = FormCreate 14 OnShow = FormShow15 13 Position = poScreenCenter 16 LCLVersion = ' 1.8.2.0'14 LCLVersion = '3.6.0.0' 17 15 object ComboBoxLanguage: TComboBox 18 Left = 1 5219 Height = 2820 Top = 2 421 Width = 2 0822 ItemHeight = 2016 Left = 182 17 Height = 42 18 Top = 29 19 Width = 250 20 ItemHeight = 0 23 21 Style = csDropDownList 24 22 TabOrder = 0 25 23 end 26 24 object Label1: TLabel 27 Left = 1 628 Height = 2 029 Top = 2 430 Width = 6825 Left = 19 26 Height = 26 27 Top = 29 28 Width = 88 31 29 Caption = 'Language:' 32 30 ParentColor = False 33 31 end 34 32 object ButtonOk: TButton 35 Left = 50636 Height = 2537 Top = 3 2638 Width = 7533 Left = 489 34 Height = 30 35 Top = 340 36 Width = 90 39 37 Anchors = [akRight, akBottom] 40 38 Caption = 'Ok' 41 39 ModalResult = 1 42 OnClick = ButtonOkClick43 40 TabOrder = 3 44 41 end 45 42 object ButtonCancel: TButton 46 Left = 41047 Height = 2548 Top = 3 2649 Width = 7543 Left = 374 44 Height = 30 45 Top = 340 46 Width = 90 50 47 Anchors = [akRight, akBottom] 51 48 Caption = 'Cancel' … … 54 51 end 55 52 object CheckBoxAlwaysOnTop: TCheckBox 56 Left = 1 657 Height = 2458 Top = 6459 Width = 1 1853 Left = 19 54 Height = 30 55 Top = 77 56 Width = 145 60 57 Caption = 'Always on top' 61 58 TabOrder = 1 62 59 end 63 60 object CheckBoxStartOnLogon: TCheckBox 64 Left = 1 665 Height = 2466 Top = 9667 Width = 1 5061 Left = 19 62 Height = 30 63 Top = 115 64 Width = 188 68 65 Caption = 'Start on user logon' 69 66 Color = clDefault 70 OnChange = CheckBoxStartOnLogonChange71 67 ParentColor = False 72 68 ParentFont = False 73 69 TabOrder = 4 70 OnChange = CheckBoxStartOnLogonChange 74 71 end 75 72 object CheckBoxStartMinimizedToTray: TCheckBox 76 Left = 4877 Height = 2478 Top = 1 2879 Width = 17673 Left = 58 74 Height = 30 75 Top = 154 76 Width = 218 80 77 Caption = 'Start minimized to tray' 81 78 TabOrder = 5 82 79 end 83 80 object CheckBoxAutomaticDPI: TCheckBox 84 Left = 1 685 Height = 2486 Top = 19287 Width = 1 2081 Left = 19 82 Height = 30 83 Top = 230 84 Width = 148 88 85 Caption = 'Automatic DPI' 89 OnChange = CheckBoxAutomaticDPIChange90 86 TabOrder = 6 91 87 Visible = False 88 OnChange = CheckBoxAutomaticDPIChange 92 89 end 93 90 object SpinEditDPI: TSpinEdit 94 Left = 9495 Height = 2896 Top = 2 2297 Width = 9791 Left = 113 92 Height = 43 93 Top = 266 94 Width = 116 98 95 MaxValue = 300 99 96 MinValue = 96 … … 103 100 end 104 101 object Label2: TLabel 105 Left = 46106 Height = 2 0107 Top = 2 22108 Width = 26102 Left = 55 103 Height = 26 104 Top = 266 105 Width = 35 109 106 Caption = 'DPI:' 110 107 ParentColor = False … … 112 109 end 113 110 object CheckBoxReopenLastFileOnStart: TCheckBox 114 Left = 1 6115 Height = 24116 Top = 1 60117 Width = 181111 Left = 19 112 Height = 30 113 Top = 192 114 Width = 226 118 115 Caption = 'Reopen last file on start' 119 116 TabOrder = 8 120 117 end 121 118 object Bevel1: TBevel 122 Left = 8119 Left = 10 123 120 Height = 2 124 Top = 3 09125 Width = 5 70121 Top = 320 122 Width = 566 126 123 Anchors = [akLeft, akRight, akBottom] 127 124 end 128 125 object Label3: TLabel 129 Left = 1 6130 Height = 2 0131 Top = 264132 Width = 48126 Left = 19 127 Height = 26 128 Top = 317 129 Width = 63 133 130 Caption = 'Theme:' 134 131 ParentColor = False 135 132 end 136 133 object ComboBoxTheme: TComboBox 137 Left = 1 52138 Height = 28139 Top = 264140 Width = 2 08141 ItemHeight = 20134 Left = 182 135 Height = 42 136 Top = 317 137 Width = 250 138 ItemHeight = 0 142 139 Style = csDropDownList 143 140 TabOrder = 9 -
trunk/Forms/FormSettings.pas
r218 r219 1 unit UFormSettings; 2 3 {$mode delphi} 1 unit FormSettings; 4 2 5 3 interface … … 7 5 uses 8 6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 Menus, Spin, ExtCtrls, ULanguages;7 Menus, Spin, ExtCtrls, Languages, FormEx; 10 8 11 9 type … … 13 11 { TFormSettings } 14 12 15 TFormSettings = class(TForm )13 TFormSettings = class(TFormEx) 16 14 Bevel1: TBevel; 17 15 ButtonOk: TButton; … … 28 26 Label3: TLabel; 29 27 SpinEditDPI: TSpinEdit; 30 procedure ButtonOkClick(Sender: TObject);31 28 procedure CheckBoxAutomaticDPIChange(Sender: TObject); 32 29 procedure CheckBoxStartOnLogonChange(Sender: TObject); 33 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);34 30 procedure FormCreate(Sender: TObject); 35 procedure FormShow(Sender: TObject);36 private37 { private declarations }38 31 public 39 32 procedure Load; … … 42 35 end; 43 36 44 var45 FormSettings: TFormSettings;46 37 47 38 implementation … … 50 41 51 42 uses 52 UCore, UTheme;43 Core, Theme; 53 44 54 45 { TFormSettings } 55 56 procedure TFormSettings.FormShow(Sender: TObject);57 begin58 Core.PersistentForm1.Load(Self);59 end;60 61 procedure TFormSettings.ButtonOkClick(Sender: TObject);62 begin63 end;64 46 65 47 procedure TFormSettings.CheckBoxAutomaticDPIChange(Sender: TObject); … … 73 55 end; 74 56 75 procedure TFormSettings.FormClose(Sender: TObject; var CloseAction: TCloseAction76 );77 begin78 Core.PersistentForm1.Save(Self);79 end;80 81 57 procedure TFormSettings.FormCreate(Sender: TObject); 82 58 begin 83 Core.Translator.TranslateComponentRecursive(Self); 84 Core.ThemeManager.UseTheme(Self); 85 Core.ThemeManager.Themes.LoadToStrings(ComboBoxTheme.Items); 86 Core.Translator.LanguageListToStrings(ComboBoxLanguage.Items); 59 Core.Core.Translator.TranslateComponentRecursive(Self); 60 Core.Core.ThemeManager.Themes.LoadToStrings(ComboBoxTheme.Items); 61 Core.Core.Translator.LanguageListToStrings(ComboBoxLanguage.Items); 87 62 end; 88 63 89 64 procedure TFormSettings.Load; 90 65 begin 91 ComboBoxLanguage.ItemIndex := ComboBoxLanguage.Items.IndexOfObject(Core. Translator.Language);66 ComboBoxLanguage.ItemIndex := ComboBoxLanguage.Items.IndexOfObject(Core.Core.Translator.Language); 92 67 if ComboBoxLanguage.ItemIndex = -1 then ComboBoxLanguage.ItemIndex := 0; 93 ComboBoxTheme.ItemIndex := ComboBoxTheme.Items.IndexOfObject(Core. ThemeManager.Theme);68 ComboBoxTheme.ItemIndex := ComboBoxTheme.Items.IndexOfObject(Core.Core.ThemeManager.Theme); 94 69 if ComboBoxTheme.ItemIndex = -1 then ComboBoxTheme.ItemIndex := 0; 95 CheckBoxAlwaysOnTop.Checked := Core. AlwaysOnTop;96 CheckBoxStartOnLogon.Checked := Core. StartOnLogon;97 CheckBoxStartMinimizedToTray.Checked := Core. StartMinimizedToTray;98 CheckBoxAutomaticDPI.Checked := Core. ScaleDPI1.AutoDetect;99 SpinEditDPI.Value := Core. ScaleDPI1.DPI.X;100 CheckBoxReopenLastFileOnStart.Checked := Core. ReopenLastFileOnStart;70 CheckBoxAlwaysOnTop.Checked := Core.Core.AlwaysOnTop; 71 CheckBoxStartOnLogon.Checked := Core.Core.StartOnLogon; 72 CheckBoxStartMinimizedToTray.Checked := Core.Core.StartMinimizedToTray; 73 CheckBoxAutomaticDPI.Checked := Core.Core.ScaleDPI1.AutoDetect; 74 SpinEditDPI.Value := Core.Core.ScaleDPI1.DPI.X; 75 CheckBoxReopenLastFileOnStart.Checked := Core.Core.ReopenLastFileOnStart; 101 76 UpdateInterface; 102 77 end; … … 105 80 begin 106 81 if ComboBoxLanguage.ItemIndex <> -1 then 107 Core. Translator.Language := TLanguage(ComboBoxLanguage.Items.Objects[ComboBoxLanguage.ItemIndex]);82 Core.Core.Translator.Language := TLanguage(ComboBoxLanguage.Items.Objects[ComboBoxLanguage.ItemIndex]); 108 83 if ComboBoxTheme.ItemIndex <> -1 then 109 Core. ThemeManager.Theme := TTheme(ComboBoxTheme.Items.Objects[ComboBoxTheme.ItemIndex]);110 Core. AlwaysOnTop := CheckBoxAlwaysOnTop.Checked;111 Core. StartOnLogon := CheckBoxStartOnLogon.Checked;112 Core. StartMinimizedToTray := CheckBoxStartMinimizedToTray.Checked;113 Core. ScaleDPI1.AutoDetect := CheckBoxAutomaticDPI.Checked;114 Core. ScaleDPI1.DPI := Point(SpinEditDPI.Value, SpinEditDPI.Value);115 Core. ReopenLastFileOnStart := CheckBoxReopenLastFileOnStart.Checked;84 Core.Core.ThemeManager.Theme := TTheme(ComboBoxTheme.Items.Objects[ComboBoxTheme.ItemIndex]); 85 Core.Core.AlwaysOnTop := CheckBoxAlwaysOnTop.Checked; 86 Core.Core.StartOnLogon := CheckBoxStartOnLogon.Checked; 87 Core.Core.StartMinimizedToTray := CheckBoxStartMinimizedToTray.Checked; 88 Core.Core.ScaleDPI1.AutoDetect := CheckBoxAutomaticDPI.Checked; 89 Core.Core.ScaleDPI1.DPI := Point(SpinEditDPI.Value, SpinEditDPI.Value); 90 Core.Core.ReopenLastFileOnStart := CheckBoxReopenLastFileOnStart.Checked; 116 91 end; 117 92 -
trunk/Languages/AcronymDecoder.cs.po
r215 r219 12 12 "X-Generator: Poedit 3.0\n" 13 13 14 #: acronym.sacronym 15 #, fuzzy 16 msgctxt "acronym.sacronym" 17 msgid "Acronym" 18 msgstr "Zkratka" 19 20 #: acronym.scategory 21 #, fuzzy 22 msgctxt "acronym.scategory" 23 msgid "Category" 24 msgstr "Kategorie" 25 26 #: acronym.sdescription 27 #, fuzzy 28 msgctxt "acronym.sdescription" 29 msgid "Description" 30 msgstr "Popis" 31 32 #: acronym.sfilenotfound 33 #, object-pascal-format, fuzzy 34 msgctxt "acronym.sfilenotfound" 35 msgid "File %s not found" 36 msgstr "Soubor %s nenalezen" 37 38 #: acronym.smeaning 39 #, fuzzy 40 msgctxt "acronym.smeaning" 41 msgid "Meaning" 42 msgstr "Význam" 43 44 #: acronym.snewitem 45 #, fuzzy 46 msgctxt "acronym.snewitem" 47 msgid "New item" 48 msgstr "Nová položka" 49 50 #: acronym.snone 51 #, fuzzy 52 msgctxt "acronym.snone" 53 msgid "None" 54 msgstr "Žádný" 55 56 #: acronym.sremoveonstart 57 #, fuzzy 58 msgctxt "acronym.sremoveonstart" 59 msgid "Remove on start" 60 msgstr "Odebrat při startu" 61 62 #: acronym.sskip 63 #, fuzzy 64 msgctxt "acronym.sskip" 65 msgid "Skip" 66 msgstr "Přeskočit" 67 68 #: acronym.sunsupportedauthmethod 69 #, fuzzy 70 msgctxt "acronym.sunsupportedauthmethod" 71 msgid "Unsupported HTTP authorization method" 72 msgstr "Nepodporovaná metoda HTTP autorizace" 73 74 #: acronym.sunsupportedimportformat 75 #, fuzzy 76 msgctxt "acronym.sunsupportedimportformat" 77 msgid "Unsupported import format" 78 msgstr "Nepodporovaný formát importu" 79 80 #: acronym.swrongfileformat 81 #, fuzzy 82 msgctxt "acronym.swrongfileformat" 83 msgid "Wrong file format" 84 msgstr "Špatný formát souboru" 85 86 #: core.soptions 87 #, fuzzy 88 msgctxt "core.soptions" 89 msgid "options" 90 msgstr "volby" 91 92 #: core.sprojectfile 93 #, fuzzy 94 msgctxt "core.sprojectfile" 95 msgid "project file" 96 msgstr "projektový soubor" 97 98 #: core.sshowthishelp 99 #, fuzzy 100 msgctxt "core.sshowthishelp" 101 msgid "Show this help" 102 msgstr "Ukázat tuto nápovědu" 103 104 #: core.sstartminimizedintray 105 #, fuzzy 106 msgctxt "core.sstartminimizedintray" 107 msgid "Start minimized in system tray" 108 msgstr "Startovat zmenšený do oznamovací oblasti" 109 110 #: formacronyms.sfiltered 111 #, fuzzy 112 msgctxt "formacronyms.sfiltered" 113 msgid "Filtered" 114 msgstr "Filtrováno" 115 116 #: formacronyms.sremoveacronym 117 #, fuzzy 118 msgctxt "formacronyms.sremoveacronym" 119 msgid "Remove acronyms" 120 msgstr "Odebrat zkratky" 121 122 #: formacronyms.sremoveacronymquery 123 #, fuzzy 124 msgctxt "formacronyms.sremoveacronymquery" 125 msgid "Do you want to remove selected acronyms?" 126 msgstr "Chcete odebrat vybrané zkratky?" 127 128 #: formacronyms.stotal 129 #, fuzzy 130 msgctxt "formacronyms.stotal" 131 msgid "Total" 132 msgstr "Celkem" 133 134 #: formcategories.scategory 135 #, fuzzy 136 msgctxt "formcategories.scategory" 137 msgid "Category" 138 msgstr "Kategorie" 139 140 #: formcategories.scategoryalreadyexists 141 #, object-pascal-format, fuzzy 142 msgctxt "formcategories.scategoryalreadyexists" 143 msgid "Category %s already exists!" 144 msgstr "Kategorie %s již existuje!" 145 146 #: formcategories.scategoryquery 147 #, fuzzy 148 msgctxt "formcategories.scategoryquery" 149 msgid "Enter name of category" 150 msgstr "Zadejte jméno kategorie" 151 152 #: formcategories.sremovecategory 153 #, fuzzy 154 msgctxt "formcategories.sremovecategory" 155 msgid "Remove categories" 156 msgstr "Odebrat kategorie" 157 158 #: formcategories.sremovecategoryquery 159 #, fuzzy 160 msgctxt "formcategories.sremovecategoryquery" 161 msgid "Do you really want to remove selected categories?" 162 msgstr "Opravdu chcete odebrat vybrabé kategorie?" 163 164 #: formcategoryselect.scategory 165 #, fuzzy 166 msgctxt "formcategoryselect.scategory" 167 msgid "Category" 168 msgstr "Kategorie" 169 170 #: formcategoryselect.sremovecategory 171 #, fuzzy 172 msgctxt "formcategoryselect.sremovecategory" 173 msgid "Remove categories" 174 msgstr "Odebrat kategorie" 175 176 #: formcategoryselect.sremovecategoryquery 177 #, fuzzy 178 msgctxt "formcategoryselect.sremovecategoryquery" 179 msgid "Do you really want to remove selected categories?" 180 msgstr "Opravdu chcete odebrat vybrané kategorie?" 181 182 #: formcheck.sacronymcontentmultiplemeanings 183 #, object-pascal-format, fuzzy 184 msgctxt "formcheck.sacronymcontentmultiplemeanings" 185 msgid "Content acronym %s has multiple meanings: %s." 186 msgstr "Zkratka těla dokumentu %s má více významů: %s." 187 188 #: formcheck.sacronymcountcontent 189 #, fuzzy 190 msgctxt "formcheck.sacronymcountcontent" 191 msgid "Content acronym count:" 192 msgstr "Počet zkratek obsahu:" 193 194 #: formcheck.sacronymcountsummary 195 #, fuzzy 196 msgctxt "formcheck.sacronymcountsummary" 197 msgid "Summary acronym count:" 198 msgstr "Počet zkratek přehledu:" 199 200 #: formcheck.sacronymsummarymultiplemeanings 201 #, object-pascal-format, fuzzy 202 msgctxt "formcheck.sacronymsummarymultiplemeanings" 203 msgid "Summary acronym %s has multiple meanings: %s." 204 msgstr "Zkratka přehledu dokumentu %s má více významů: %s." 205 206 #: formcheck.sacronymusedbeforedefined 207 #, object-pascal-format, fuzzy 208 msgctxt "formcheck.sacronymusedbeforedefined" 209 msgid "Acronym %s used before it was defined." 210 msgstr "Zkratka %s použita před určením jejího významu." 211 212 #: formcheck.sacronymwithdifferentmeaning 213 #, object-pascal-format, fuzzy 214 msgctxt "formcheck.sacronymwithdifferentmeaning" 215 msgid "Acronym %s has different meaning for content \"%s\" and for summary \"%s\"." 216 msgstr "Zkratka %s má odlišný význam pro tělo dokumentu \"%s\" a pro přehled \"%s\"." 217 218 #: formcheck.sacronymwithdifferentmeaningcount 219 #, object-pascal-format, fuzzy 220 msgctxt "formcheck.sacronymwithdifferentmeaningcount" 221 msgid "Acronym %s has different meaning count for content (%d) and for summary (%d)." 222 msgstr "Zkratka %s má odlišný počet významů pro tělo dokumentu (%d) a pro přehled (%d)." 223 224 #: formcheck.scontentacronyms 225 #, fuzzy 226 msgctxt "formcheck.scontentacronyms" 227 msgid "Content acronyms" 228 msgstr "Zkratky těla dokumentu" 229 230 #: formcheck.scsvfilter 231 #, fuzzy 232 msgctxt "formcheck.scsvfilter" 233 msgid "CSV file (.csv)|*.csv|Any file|*.*" 234 msgstr "CSV soubor (.csv)|*.csv|Jakýkoliv soubor|*.*" 235 236 #: formcheck.sduplicateacronymcontent 237 #, object-pascal-format, fuzzy 238 msgctxt "formcheck.sduplicateacronymcontent" 239 msgid "Duplicate acronym %s with \"%s\" in document body." 240 msgstr "Zdvojená zkratka %s s významem \"%s\" v těle dokumentu." 241 242 #: formcheck.sduplicateacronymsummary 243 #, object-pascal-format, fuzzy 244 msgctxt "formcheck.sduplicateacronymsummary" 245 msgid "Duplicate acronym %s with \"%s\" in acronym summary." 246 msgstr "Zdvojená zkratka %s s významem \"%s\" v přehledu zkratek." 247 248 #: formcheck.smissingacronymcontent 249 #, object-pascal-format, fuzzy 250 msgctxt "formcheck.smissingacronymcontent" 251 msgid "Document body acronym %s with meaning \"%s\" missing from acronym summary." 252 msgstr "V zkratkách přehledu chybí zkratka těla dokumentu %s s významem \"%s\"." 253 254 #: formcheck.smissingacronymsummary 255 #, object-pascal-format, fuzzy 256 msgctxt "formcheck.smissingacronymsummary" 257 msgid "Summary acronym %s with meaning \"%s\" missing from document body." 258 msgstr "Ve zkratkách těla dokumentu chybí zkratka přehledu %s s významem \"%s\"." 259 260 #: formcheck.spluralacronym 261 #, object-pascal-format, fuzzy 262 msgctxt "formcheck.spluralacronym" 263 msgid "Acronym %s is defined as plural in document body." 264 msgstr "Zkratka %s je definována v těle dokumentu v množném čísle." 265 266 #: formcheck.spluralacronymused 267 #, object-pascal-format, fuzzy 268 msgctxt "formcheck.spluralacronymused" 269 msgid "Acronym %s is used as plural in document body." 270 msgstr "Zkratka %s je použita v množném čísle v těle dokumentu." 271 272 #: formcheck.ssummaryacronyms 273 #, fuzzy 274 msgctxt "formcheck.ssummaryacronyms" 275 msgid "Summary acronyms" 276 msgstr "Zkratky přehledu" 277 278 #: formexport.sexportedacronyms 279 #, object-pascal-format, fuzzy 280 msgctxt "formexport.sexportedacronyms" 281 msgid "Exported %d acronyms" 282 msgstr "Exportováno %d zkratek" 283 284 #: formexport.sexporting 285 #, fuzzy 286 msgctxt "formexport.sexporting" 287 msgid "Exporting" 288 msgstr "Exportování" 289 290 #: formimport.simportednewacronyms 291 #, object-pascal-format, fuzzy 292 msgctxt "formimport.simportednewacronyms" 293 msgid "Imported %d new acronyms." 294 msgstr "Importováno %d nových zkratek." 295 296 #: formimportformat.sno 297 #, fuzzy 298 msgctxt "formimportformat.sno" 299 msgid "No" 300 msgstr "Ne" 301 302 #: formimportformat.sremoveimportpattern 303 #, fuzzy 304 msgctxt "formimportformat.sremoveimportpattern" 305 msgid "Remove import pattern" 306 msgstr "Odstranit vzory importu" 307 308 #: formimportformat.sremoveimportpatternquery 309 #, fuzzy 310 msgctxt "formimportformat.sremoveimportpatternquery" 311 msgid "Do you really want to remove selected import patterns?" 312 msgstr "Opravdu chcete odstranit vybrané vzory importu?" 313 314 #: formimportformat.syes 315 #, fuzzy 316 msgctxt "formimportformat.syes" 317 msgid "Yes" 318 msgstr "Ano" 319 320 #: formimportformats.simportformatalreadyexists 321 #, object-pascal-format, fuzzy 322 msgctxt "formimportformats.simportformatalreadyexists" 323 msgid "Import format %s already exists!" 324 msgstr "Formát importu %s již existuje!" 325 326 #: formimportformats.sremoveimportformat 327 #, fuzzy 328 msgctxt "formimportformats.sremoveimportformat" 329 msgid "Remove import formats" 330 msgstr "Odebrat formáty importu" 331 332 #: formimportformats.sremoveimportformatquery 333 #, fuzzy 334 msgctxt "formimportformats.sremoveimportformatquery" 335 msgid "Do you really want to remove selected import formats?" 336 msgstr "Opravdu chcete odebrat vybrané formáty importu?" 337 338 #: formimportsources.simportsourcealreadyexists 339 #, object-pascal-format, fuzzy 340 msgctxt "formimportsources.simportsourcealreadyexists" 341 msgid "Import source %s already exists!" 342 msgstr "Zdroj importu %s již existuje!" 343 344 #: formimportsources.sprocessselectedsource 345 #, fuzzy 346 msgctxt "formimportsources.sprocessselectedsource" 347 msgid "Process selected import source" 348 msgstr "Zpracovat vybrané zdroje importu" 349 350 #: formimportsources.sremoveimportsource 351 #, fuzzy 352 msgctxt "formimportsources.sremoveimportsource" 353 msgid "Remove import sources" 354 msgstr "Odstranit zdroje importu" 355 356 #: formimportsources.sremoveimportsourcequery 357 #, fuzzy 358 msgctxt "formimportsources.sremoveimportsourcequery" 359 msgid "Do you really want to remove selected import sources?" 360 msgstr "Opravdu chcete odebrat vybrané zdroje importu?" 361 362 #: formmain.sacronymscount 363 #, object-pascal-format, fuzzy 364 msgctxt "formmain.sacronymscount" 365 msgid "Acronyms count: %d" 366 msgstr "Počet zkratek: %d" 367 368 #: formmain.saddedcount 369 #, object-pascal-format, fuzzy 370 msgctxt "formmain.saddedcount" 371 msgid "Imported %d acronyms. Added %d new." 372 msgstr "Importováno %d zkratek. Přidáno %d nových." 373 374 #: formmain.sappexit 375 #, fuzzy 376 msgctxt "formmain.sappexit" 377 msgid "Application exit" 378 msgstr "Ukončení aplikace" 379 380 #: formmain.sappexitquery 381 #, fuzzy 382 msgctxt "formmain.sappexitquery" 383 msgid "Acronyms were modified. Do you want to save them to file before exit?" 384 msgstr "Zkratky byly upraveny. Chcete je před odchodem uložit do souboru?" 385 386 #: formmain.sfilefilter 387 #, fuzzy 388 msgctxt "formmain.sfilefilter" 389 msgid "Acronym Decoder project (.adp)|*.adp|All files|*.*" 390 msgstr "Acronym Decoder projekt (.adp)|*.adp|Všechny soubory|*.*" 391 392 #: formmain.smeaningscount 393 #, object-pascal-format, fuzzy 394 msgctxt "formmain.smeaningscount" 395 msgid "Meanings count: %d" 396 msgstr "Počet významů: %d" 397 398 #: formmain.smodified 399 #, fuzzy 400 msgctxt "formmain.smodified" 401 msgid "modified" 402 msgstr "upraveno" 403 404 #: formmain.sprocessimportsources 405 #, fuzzy 406 msgctxt "formmain.sprocessimportsources" 407 msgid "Process import sources" 408 msgstr "Zpracovat zdroje importu" 409 14 410 #: tcore.applicationinfo1.description 15 411 msgid "A simple tool for quick searching of meaning for various acronyms and abbreviations." … … 763 1159 msgstr "Téma:" 764 1160 765 #: uacronym.sacronym766 msgctxt "uacronym.sacronym"767 msgid "Acronym"768 msgstr "Zkratka"769 770 #: uacronym.scategory771 msgctxt "uacronym.scategory"772 msgid "Category"773 msgstr "Kategorie"774 775 #: uacronym.sdescription776 msgctxt "uacronym.sdescription"777 msgid "Description"778 msgstr "Popis"779 780 #: uacronym.sfilenotfound781 #, object-pascal-format782 msgid "File %s not found"783 msgstr "Soubor %s nenalezen"784 785 #: uacronym.smeaning786 msgctxt "uacronym.smeaning"787 msgid "Meaning"788 msgstr "Význam"789 790 #: uacronym.snewitem791 msgid "New item"792 msgstr "Nová položka"793 794 #: uacronym.snone795 msgid "None"796 msgstr "Žádný"797 798 #: uacronym.sremoveonstart799 msgid "Remove on start"800 msgstr "Odebrat při startu"801 802 #: uacronym.sskip803 msgid "Skip"804 msgstr "Přeskočit"805 806 #: uacronym.sunsupportedauthmethod807 msgid "Unsupported HTTP authorization method"808 msgstr "Nepodporovaná metoda HTTP autorizace"809 810 #: uacronym.sunsupportedimportformat811 msgid "Unsupported import format"812 msgstr "Nepodporovaný formát importu"813 814 #: uacronym.swrongfileformat815 msgid "Wrong file format"816 msgstr "Špatný formát souboru"817 818 #: ucore.soptions819 msgid "options"820 msgstr "volby"821 822 #: ucore.sprojectfile823 msgid "project file"824 msgstr "projektový soubor"825 826 #: ucore.sshowthishelp827 msgid "Show this help"828 msgstr "Ukázat tuto nápovědu"829 830 #: ucore.sstartminimizedintray831 msgid "Start minimized in system tray"832 msgstr "Startovat zmenšený do oznamovací oblasti"833 834 #: uformacronyms.sfiltered835 msgid "Filtered"836 msgstr "Filtrováno"837 838 #: uformacronyms.sremoveacronym839 msgctxt "uformacronyms.sremoveacronym"840 msgid "Remove acronyms"841 msgstr "Odebrat zkratky"842 843 #: uformacronyms.sremoveacronymquery844 msgctxt "uformacronyms.sremoveacronymquery"845 msgid "Do you want to remove selected acronyms?"846 msgstr "Chcete odebrat vybrané zkratky?"847 848 #: uformacronyms.stotal849 msgid "Total"850 msgstr "Celkem"851 852 #: uformcategories.scategory853 msgctxt "uformcategories.scategory"854 msgid "Category"855 msgstr "Kategorie"856 857 #: uformcategories.scategoryalreadyexists858 #, object-pascal-format859 msgid "Category %s already exists!"860 msgstr "Kategorie %s již existuje!"861 862 #: uformcategories.scategoryquery863 msgid "Enter name of category"864 msgstr "Zadejte jméno kategorie"865 866 #: uformcategories.sremovecategory867 msgctxt "uformcategories.sremovecategory"868 msgid "Remove categories"869 msgstr "Odebrat kategorie"870 871 #: uformcategories.sremovecategoryquery872 msgctxt "uformcategories.sremovecategoryquery"873 msgid "Do you really want to remove selected categories?"874 msgstr "Opravdu chcete odebrat vybrabé kategorie?"875 876 #: uformcategoryselect.scategory877 msgctxt "uformcategoryselect.scategory"878 msgid "Category"879 msgstr "Kategorie"880 881 #: uformcategoryselect.sremovecategory882 msgctxt "uformcategoryselect.sremovecategory"883 msgid "Remove categories"884 msgstr "Odebrat kategorie"885 886 #: uformcategoryselect.sremovecategoryquery887 msgctxt "uformcategoryselect.sremovecategoryquery"888 msgid "Do you really want to remove selected categories?"889 msgstr "Opravdu chcete odebrat vybrané kategorie?"890 891 #: uformcheck.sacronymcontentmultiplemeanings892 #, object-pascal-format893 msgid "Content acronym %s has multiple meanings: %s."894 msgstr "Zkratka těla dokumentu %s má více významů: %s."895 896 #: uformcheck.sacronymcountcontent897 msgctxt "uformcheck.sacronymcountcontent"898 msgid "Content acronym count:"899 msgstr "Počet zkratek obsahu:"900 901 #: uformcheck.sacronymcountsummary902 msgctxt "uformcheck.sacronymcountsummary"903 msgid "Summary acronym count:"904 msgstr "Počet zkratek přehledu:"905 906 #: uformcheck.sacronymsummarymultiplemeanings907 #, object-pascal-format908 msgid "Summary acronym %s has multiple meanings: %s."909 msgstr "Zkratka přehledu dokumentu %s má více významů: %s."910 911 #: uformcheck.sacronymusedbeforedefined912 #, object-pascal-format913 msgid "Acronym %s used before it was defined."914 msgstr "Zkratka %s použita před určením jejího významu."915 916 #: uformcheck.sacronymwithdifferentmeaning917 #, object-pascal-format918 msgid "Acronym %s has different meaning for content \"%s\" and for summary \"%s\"."919 msgstr "Zkratka %s má odlišný význam pro tělo dokumentu \"%s\" a pro přehled \"%s\"."920 921 #: uformcheck.sacronymwithdifferentmeaningcount922 #, object-pascal-format923 msgid "Acronym %s has different meaning count for content (%d) and for summary (%d)."924 msgstr "Zkratka %s má odlišný počet významů pro tělo dokumentu (%d) a pro přehled (%d)."925 926 #: uformcheck.scontentacronyms927 msgid "Content acronyms"928 msgstr "Zkratky těla dokumentu"929 930 #: uformcheck.scsvfilter931 msgid "CSV file (.csv)|*.csv|Any file|*.*"932 msgstr "CSV soubor (.csv)|*.csv|Jakýkoliv soubor|*.*"933 934 #: uformcheck.sduplicateacronymcontent935 #, object-pascal-format936 msgid "Duplicate acronym %s with \"%s\" in document body."937 msgstr "Zdvojená zkratka %s s významem \"%s\" v těle dokumentu."938 939 #: uformcheck.sduplicateacronymsummary940 #, object-pascal-format941 msgid "Duplicate acronym %s with \"%s\" in acronym summary."942 msgstr "Zdvojená zkratka %s s významem \"%s\" v přehledu zkratek."943 944 #: uformcheck.smissingacronymcontent945 #, object-pascal-format946 msgid "Document body acronym %s with meaning \"%s\" missing from acronym summary."947 msgstr "V zkratkách přehledu chybí zkratka těla dokumentu %s s významem \"%s\"."948 949 #: uformcheck.smissingacronymsummary950 #, object-pascal-format951 msgid "Summary acronym %s with meaning \"%s\" missing from document body."952 msgstr "Ve zkratkách těla dokumentu chybí zkratka přehledu %s s významem \"%s\"."953 954 #: uformcheck.spluralacronym955 #, object-pascal-format956 msgid "Acronym %s is defined as plural in document body."957 msgstr "Zkratka %s je definována v těle dokumentu v množném čísle."958 959 #: uformcheck.spluralacronymused960 #, object-pascal-format961 msgid "Acronym %s is used as plural in document body."962 msgstr "Zkratka %s je použita v množném čísle v těle dokumentu."963 964 #: uformcheck.ssummaryacronyms965 msgid "Summary acronyms"966 msgstr "Zkratky přehledu"967 968 #: uformexport.sexportedacronyms969 #, object-pascal-format970 msgctxt "uformexport.sexportedacronyms"971 msgid "Exported %d acronyms"972 msgstr "Exportováno %d zkratek"973 974 #: uformexport.sexporting975 msgid "Exporting"976 msgstr "Exportování"977 978 #: uformimport.simportednewacronyms979 #, object-pascal-format980 msgid "Imported %d new acronyms."981 msgstr "Importováno %d nových zkratek."982 983 #: uformimportformat.sno984 msgid "No"985 msgstr "Ne"986 987 #: uformimportformat.sremoveimportpattern988 msgid "Remove import pattern"989 msgstr "Odstranit vzory importu"990 991 #: uformimportformat.sremoveimportpatternquery992 msgid "Do you really want to remove selected import patterns?"993 msgstr "Opravdu chcete odstranit vybrané vzory importu?"994 995 #: uformimportformat.syes996 msgid "Yes"997 msgstr "Ano"998 999 #: uformimportformats.simportformatalreadyexists1000 #, object-pascal-format1001 msgid "Import format %s already exists!"1002 msgstr "Formát importu %s již existuje!"1003 1004 #: uformimportformats.sremoveimportformat1005 msgid "Remove import formats"1006 msgstr "Odebrat formáty importu"1007 1008 #: uformimportformats.sremoveimportformatquery1009 msgid "Do you really want to remove selected import formats?"1010 msgstr "Opravdu chcete odebrat vybrané formáty importu?"1011 1012 #: uformimportsources.simportsourcealreadyexists1013 #, object-pascal-format1014 msgctxt "uformimportsources.simportsourcealreadyexists"1015 msgid "Import source %s already exists!"1016 msgstr "Zdroj importu %s již existuje!"1017 1018 #: uformimportsources.sprocessselectedsource1019 msgid "Process selected import source"1020 msgstr "Zpracovat vybrané zdroje importu"1021 1022 #: uformimportsources.sremoveimportsource1023 msgctxt "uformimportsources.sremoveimportsource"1024 msgid "Remove import sources"1025 msgstr "Odstranit zdroje importu"1026 1027 #: uformimportsources.sremoveimportsourcequery1028 msgctxt "uformimportsources.sremoveimportsourcequery"1029 msgid "Do you really want to remove selected import sources?"1030 msgstr "Opravdu chcete odebrat vybrané zdroje importu?"1031 1032 #: uformmain.sacronymscount1033 #, object-pascal-format1034 msgid "Acronyms count: %d"1035 msgstr "Počet zkratek: %d"1036 1037 #: uformmain.saddedcount1038 #, object-pascal-format1039 msgid "Imported %d acronyms. Added %d new."1040 msgstr "Importováno %d zkratek. Přidáno %d nových."1041 1042 #: uformmain.sappexit1043 msgid "Application exit"1044 msgstr "Ukončení aplikace"1045 1046 #: uformmain.sappexitquery1047 msgid "Acronyms were modified. Do you want to save them to file before exit?"1048 msgstr "Zkratky byly upraveny. Chcete je před odchodem uložit do souboru?"1049 1050 #: uformmain.sfilefilter1051 msgid "Acronym Decoder project (.adp)|*.adp|All files|*.*"1052 msgstr "Acronym Decoder projekt (.adp)|*.adp|Všechny soubory|*.*"1053 1054 #: uformmain.smeaningscount1055 #, object-pascal-format1056 msgid "Meanings count: %d"1057 msgstr "Počet významů: %d"1058 1059 #: uformmain.smodified1060 msgid "modified"1061 msgstr "upraveno"1062 1063 #: uformmain.sprocessimportsources1064 msgid "Process import sources"1065 msgstr "Zpracovat zdroje importu" -
trunk/Languages/AcronymDecoder.pot
r218 r219 1 1 msgid "" 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 4 #: acronym.sacronym 5 msgctxt "acronym.sacronym" 6 msgid "Acronym" 7 msgstr "" 8 9 #: acronym.scategory 10 msgctxt "acronym.scategory" 11 msgid "Category" 12 msgstr "" 13 14 #: acronym.sdescription 15 msgctxt "acronym.sdescription" 16 msgid "Description" 17 msgstr "" 18 19 #: acronym.sfilenotfound 20 #, object-pascal-format 21 msgctxt "acronym.sfilenotfound" 22 msgid "File %s not found" 23 msgstr "" 24 25 #: acronym.smeaning 26 msgctxt "acronym.smeaning" 27 msgid "Meaning" 28 msgstr "" 29 30 #: acronym.snewitem 31 msgctxt "acronym.snewitem" 32 msgid "New item" 33 msgstr "" 34 35 #: acronym.snone 36 msgctxt "acronym.snone" 37 msgid "None" 38 msgstr "" 39 40 #: acronym.sremoveonstart 41 msgctxt "acronym.sremoveonstart" 42 msgid "Remove on start" 43 msgstr "" 44 45 #: acronym.sskip 46 msgctxt "acronym.sskip" 47 msgid "Skip" 48 msgstr "" 49 50 #: acronym.sunsupportedauthmethod 51 msgctxt "acronym.sunsupportedauthmethod" 52 msgid "Unsupported HTTP authorization method" 53 msgstr "" 54 55 #: acronym.sunsupportedimportformat 56 msgctxt "acronym.sunsupportedimportformat" 57 msgid "Unsupported import format" 58 msgstr "" 59 60 #: acronym.swrongfileformat 61 msgctxt "acronym.swrongfileformat" 62 msgid "Wrong file format" 63 msgstr "" 64 65 #: core.soptions 66 msgctxt "core.soptions" 67 msgid "options" 68 msgstr "" 69 70 #: core.sprojectfile 71 msgctxt "core.sprojectfile" 72 msgid "project file" 73 msgstr "" 74 75 #: core.sshowthishelp 76 msgctxt "core.sshowthishelp" 77 msgid "Show this help" 78 msgstr "" 79 80 #: core.sstartminimizedintray 81 msgctxt "core.sstartminimizedintray" 82 msgid "Start minimized in system tray" 83 msgstr "" 84 85 #: formacronyms.sfiltered 86 msgctxt "formacronyms.sfiltered" 87 msgid "Filtered" 88 msgstr "" 89 90 #: formacronyms.sremoveacronym 91 msgctxt "formacronyms.sremoveacronym" 92 msgid "Remove acronyms" 93 msgstr "" 94 95 #: formacronyms.sremoveacronymquery 96 msgctxt "formacronyms.sremoveacronymquery" 97 msgid "Do you want to remove selected acronyms?" 98 msgstr "" 99 100 #: formacronyms.stotal 101 msgctxt "formacronyms.stotal" 102 msgid "Total" 103 msgstr "" 104 105 #: formcategories.scategory 106 msgctxt "formcategories.scategory" 107 msgid "Category" 108 msgstr "" 109 110 #: formcategories.scategoryalreadyexists 111 #, object-pascal-format 112 msgctxt "formcategories.scategoryalreadyexists" 113 msgid "Category %s already exists!" 114 msgstr "" 115 116 #: formcategories.scategoryquery 117 msgctxt "formcategories.scategoryquery" 118 msgid "Enter name of category" 119 msgstr "" 120 121 #: formcategories.sremovecategory 122 msgctxt "formcategories.sremovecategory" 123 msgid "Remove categories" 124 msgstr "" 125 126 #: formcategories.sremovecategoryquery 127 msgctxt "formcategories.sremovecategoryquery" 128 msgid "Do you really want to remove selected categories?" 129 msgstr "" 130 131 #: formcategoryselect.scategory 132 msgctxt "formcategoryselect.scategory" 133 msgid "Category" 134 msgstr "" 135 136 #: formcategoryselect.sremovecategory 137 msgctxt "formcategoryselect.sremovecategory" 138 msgid "Remove categories" 139 msgstr "" 140 141 #: formcategoryselect.sremovecategoryquery 142 msgctxt "formcategoryselect.sremovecategoryquery" 143 msgid "Do you really want to remove selected categories?" 144 msgstr "" 145 146 #: formcheck.sacronymcontentmultiplemeanings 147 #, object-pascal-format 148 msgctxt "formcheck.sacronymcontentmultiplemeanings" 149 msgid "Content acronym %s has multiple meanings: %s." 150 msgstr "" 151 152 #: formcheck.sacronymcountcontent 153 msgctxt "formcheck.sacronymcountcontent" 154 msgid "Content acronym count:" 155 msgstr "" 156 157 #: formcheck.sacronymcountsummary 158 msgctxt "formcheck.sacronymcountsummary" 159 msgid "Summary acronym count:" 160 msgstr "" 161 162 #: formcheck.sacronymsummarymultiplemeanings 163 #, object-pascal-format 164 msgctxt "formcheck.sacronymsummarymultiplemeanings" 165 msgid "Summary acronym %s has multiple meanings: %s." 166 msgstr "" 167 168 #: formcheck.sacronymusedbeforedefined 169 #, object-pascal-format 170 msgctxt "formcheck.sacronymusedbeforedefined" 171 msgid "Acronym %s used before it was defined." 172 msgstr "" 173 174 #: formcheck.sacronymwithdifferentmeaning 175 #, object-pascal-format 176 msgctxt "formcheck.sacronymwithdifferentmeaning" 177 msgid "Acronym %s has different meaning for content \"%s\" and for summary \"%s\"." 178 msgstr "" 179 180 #: formcheck.sacronymwithdifferentmeaningcount 181 #, object-pascal-format 182 msgctxt "formcheck.sacronymwithdifferentmeaningcount" 183 msgid "Acronym %s has different meaning count for content (%d) and for summary (%d)." 184 msgstr "" 185 186 #: formcheck.scontentacronyms 187 msgctxt "formcheck.scontentacronyms" 188 msgid "Content acronyms" 189 msgstr "" 190 191 #: formcheck.scsvfilter 192 msgctxt "formcheck.scsvfilter" 193 msgid "CSV file (.csv)|*.csv|Any file|*.*" 194 msgstr "" 195 196 #: formcheck.sduplicateacronymcontent 197 #, object-pascal-format 198 msgctxt "formcheck.sduplicateacronymcontent" 199 msgid "Duplicate acronym %s with \"%s\" in document body." 200 msgstr "" 201 202 #: formcheck.sduplicateacronymsummary 203 #, object-pascal-format 204 msgctxt "formcheck.sduplicateacronymsummary" 205 msgid "Duplicate acronym %s with \"%s\" in acronym summary." 206 msgstr "" 207 208 #: formcheck.smissingacronymcontent 209 #, object-pascal-format 210 msgctxt "formcheck.smissingacronymcontent" 211 msgid "Document body acronym %s with meaning \"%s\" missing from acronym summary." 212 msgstr "" 213 214 #: formcheck.smissingacronymsummary 215 #, object-pascal-format 216 msgctxt "formcheck.smissingacronymsummary" 217 msgid "Summary acronym %s with meaning \"%s\" missing from document body." 218 msgstr "" 219 220 #: formcheck.spluralacronym 221 #, object-pascal-format 222 msgctxt "formcheck.spluralacronym" 223 msgid "Acronym %s is defined as plural in document body." 224 msgstr "" 225 226 #: formcheck.spluralacronymused 227 #, object-pascal-format 228 msgctxt "formcheck.spluralacronymused" 229 msgid "Acronym %s is used as plural in document body." 230 msgstr "" 231 232 #: formcheck.ssummaryacronyms 233 msgctxt "formcheck.ssummaryacronyms" 234 msgid "Summary acronyms" 235 msgstr "" 236 237 #: formexport.sexportedacronyms 238 #, object-pascal-format 239 msgctxt "formexport.sexportedacronyms" 240 msgid "Exported %d acronyms" 241 msgstr "" 242 243 #: formexport.sexporting 244 msgctxt "formexport.sexporting" 245 msgid "Exporting" 246 msgstr "" 247 248 #: formimport.simportednewacronyms 249 #, object-pascal-format 250 msgctxt "formimport.simportednewacronyms" 251 msgid "Imported %d new acronyms." 252 msgstr "" 253 254 #: formimportformat.sno 255 msgctxt "formimportformat.sno" 256 msgid "No" 257 msgstr "" 258 259 #: formimportformat.sremoveimportpattern 260 msgctxt "formimportformat.sremoveimportpattern" 261 msgid "Remove import pattern" 262 msgstr "" 263 264 #: formimportformat.sremoveimportpatternquery 265 msgctxt "formimportformat.sremoveimportpatternquery" 266 msgid "Do you really want to remove selected import patterns?" 267 msgstr "" 268 269 #: formimportformat.syes 270 msgctxt "formimportformat.syes" 271 msgid "Yes" 272 msgstr "" 273 274 #: formimportformats.simportformatalreadyexists 275 #, object-pascal-format 276 msgctxt "formimportformats.simportformatalreadyexists" 277 msgid "Import format %s already exists!" 278 msgstr "" 279 280 #: formimportformats.sremoveimportformat 281 msgctxt "formimportformats.sremoveimportformat" 282 msgid "Remove import formats" 283 msgstr "" 284 285 #: formimportformats.sremoveimportformatquery 286 msgctxt "formimportformats.sremoveimportformatquery" 287 msgid "Do you really want to remove selected import formats?" 288 msgstr "" 289 290 #: formimportsources.simportsourcealreadyexists 291 #, object-pascal-format 292 msgctxt "formimportsources.simportsourcealreadyexists" 293 msgid "Import source %s already exists!" 294 msgstr "" 295 296 #: formimportsources.sprocessselectedsource 297 msgctxt "formimportsources.sprocessselectedsource" 298 msgid "Process selected import source" 299 msgstr "" 300 301 #: formimportsources.sremoveimportsource 302 msgctxt "formimportsources.sremoveimportsource" 303 msgid "Remove import sources" 304 msgstr "" 305 306 #: formimportsources.sremoveimportsourcequery 307 msgctxt "formimportsources.sremoveimportsourcequery" 308 msgid "Do you really want to remove selected import sources?" 309 msgstr "" 310 311 #: formmain.sacronymscount 312 #, object-pascal-format 313 msgctxt "formmain.sacronymscount" 314 msgid "Acronyms count: %d" 315 msgstr "" 316 317 #: formmain.saddedcount 318 #, object-pascal-format 319 msgctxt "formmain.saddedcount" 320 msgid "Imported %d acronyms. Added %d new." 321 msgstr "" 322 323 #: formmain.sappexit 324 msgctxt "formmain.sappexit" 325 msgid "Application exit" 326 msgstr "" 327 328 #: formmain.sappexitquery 329 msgctxt "formmain.sappexitquery" 330 msgid "Acronyms were modified. Do you want to save them to file before exit?" 331 msgstr "" 332 333 #: formmain.sfilefilter 334 msgctxt "formmain.sfilefilter" 335 msgid "Acronym Decoder project (.adp)|*.adp|All files|*.*" 336 msgstr "" 337 338 #: formmain.smeaningscount 339 #, object-pascal-format 340 msgctxt "formmain.smeaningscount" 341 msgid "Meanings count: %d" 342 msgstr "" 343 344 #: formmain.smodified 345 msgctxt "formmain.smodified" 346 msgid "modified" 347 msgstr "" 348 349 #: formmain.sprocessimportsources 350 msgctxt "formmain.sprocessimportsources" 351 msgid "Process import sources" 352 msgstr "" 3 353 4 354 #: tcore.applicationinfo1.description … … 744 1094 msgstr "" 745 1095 746 #: uacronym.sacronym747 msgctxt "uacronym.sacronym"748 msgid "Acronym"749 msgstr ""750 751 #: uacronym.scategory752 msgctxt "uacronym.scategory"753 msgid "Category"754 msgstr ""755 756 #: uacronym.sdescription757 msgctxt "uacronym.sdescription"758 msgid "Description"759 msgstr ""760 761 #: uacronym.sfilenotfound762 #, object-pascal-format763 msgid "File %s not found"764 msgstr ""765 766 #: uacronym.smeaning767 msgctxt "uacronym.smeaning"768 msgid "Meaning"769 msgstr ""770 771 #: uacronym.snewitem772 msgid "New item"773 msgstr ""774 775 #: uacronym.snone776 msgid "None"777 msgstr ""778 779 #: uacronym.sremoveonstart780 msgid "Remove on start"781 msgstr ""782 783 #: uacronym.sskip784 msgid "Skip"785 msgstr ""786 787 #: uacronym.sunsupportedauthmethod788 msgid "Unsupported HTTP authorization method"789 msgstr ""790 791 #: uacronym.sunsupportedimportformat792 msgid "Unsupported import format"793 msgstr ""794 795 #: uacronym.swrongfileformat796 msgid "Wrong file format"797 msgstr ""798 799 #: ucore.soptions800 msgid "options"801 msgstr ""802 803 #: ucore.sprojectfile804 msgid "project file"805 msgstr ""806 807 #: ucore.sshowthishelp808 msgid "Show this help"809 msgstr ""810 811 #: ucore.sstartminimizedintray812 msgid "Start minimized in system tray"813 msgstr ""814 815 #: uformacronyms.sfiltered816 msgid "Filtered"817 msgstr ""818 819 #: uformacronyms.sremoveacronym820 msgid "Remove acronyms"821 msgstr ""822 823 #: uformacronyms.sremoveacronymquery824 msgid "Do you want to remove selected acronyms?"825 msgstr ""826 827 #: uformacronyms.stotal828 msgid "Total"829 msgstr ""830 831 #: uformcategories.scategory832 msgctxt "uformcategories.scategory"833 msgid "Category"834 msgstr ""835 836 #: uformcategories.scategoryalreadyexists837 #, object-pascal-format838 msgid "Category %s already exists!"839 msgstr ""840 841 #: uformcategories.scategoryquery842 msgid "Enter name of category"843 msgstr ""844 845 #: uformcategories.sremovecategory846 msgctxt "uformcategories.sremovecategory"847 msgid "Remove categories"848 msgstr ""849 850 #: uformcategories.sremovecategoryquery851 msgctxt "uformcategories.sremovecategoryquery"852 msgid "Do you really want to remove selected categories?"853 msgstr ""854 855 #: uformcategoryselect.scategory856 msgctxt "uformcategoryselect.scategory"857 msgid "Category"858 msgstr ""859 860 #: uformcategoryselect.sremovecategory861 msgctxt "uformcategoryselect.sremovecategory"862 msgid "Remove categories"863 msgstr ""864 865 #: uformcategoryselect.sremovecategoryquery866 msgctxt "uformcategoryselect.sremovecategoryquery"867 msgid "Do you really want to remove selected categories?"868 msgstr ""869 870 #: uformcheck.sacronymcontentmultiplemeanings871 #, object-pascal-format872 msgid "Content acronym %s has multiple meanings: %s."873 msgstr ""874 875 #: uformcheck.sacronymcountcontent876 msgid "Content acronym count:"877 msgstr ""878 879 #: uformcheck.sacronymcountsummary880 msgid "Summary acronym count:"881 msgstr ""882 883 #: uformcheck.sacronymsummarymultiplemeanings884 #, object-pascal-format885 msgid "Summary acronym %s has multiple meanings: %s."886 msgstr ""887 888 #: uformcheck.sacronymusedbeforedefined889 #, object-pascal-format890 msgid "Acronym %s used before it was defined."891 msgstr ""892 893 #: uformcheck.sacronymwithdifferentmeaning894 #, object-pascal-format895 msgid "Acronym %s has different meaning for content \"%s\" and for summary \"%s\"."896 msgstr ""897 898 #: uformcheck.sacronymwithdifferentmeaningcount899 #, object-pascal-format900 msgid "Acronym %s has different meaning count for content (%d) and for summary (%d)."901 msgstr ""902 903 #: uformcheck.scontentacronyms904 msgid "Content acronyms"905 msgstr ""906 907 #: uformcheck.scsvfilter908 msgid "CSV file (.csv)|*.csv|Any file|*.*"909 msgstr ""910 911 #: uformcheck.sduplicateacronymcontent912 #, object-pascal-format913 msgid "Duplicate acronym %s with \"%s\" in document body."914 msgstr ""915 916 #: uformcheck.sduplicateacronymsummary917 #, object-pascal-format918 msgid "Duplicate acronym %s with \"%s\" in acronym summary."919 msgstr ""920 921 #: uformcheck.smissingacronymcontent922 #, object-pascal-format923 msgid "Document body acronym %s with meaning \"%s\" missing from acronym summary."924 msgstr ""925 926 #: uformcheck.smissingacronymsummary927 #, object-pascal-format928 msgid "Summary acronym %s with meaning \"%s\" missing from document body."929 msgstr ""930 931 #: uformcheck.spluralacronym932 #, object-pascal-format933 msgid "Acronym %s is defined as plural in document body."934 msgstr ""935 936 #: uformcheck.spluralacronymused937 #, object-pascal-format938 msgid "Acronym %s is used as plural in document body."939 msgstr ""940 941 #: uformcheck.ssummaryacronyms942 msgid "Summary acronyms"943 msgstr ""944 945 #: uformexport.sexportedacronyms946 #, object-pascal-format947 msgid "Exported %d acronyms"948 msgstr ""949 950 #: uformexport.sexporting951 msgid "Exporting"952 msgstr ""953 954 #: uformimport.simportednewacronyms955 #, object-pascal-format956 msgid "Imported %d new acronyms."957 msgstr ""958 959 #: uformimportformat.sno960 msgid "No"961 msgstr ""962 963 #: uformimportformat.sremoveimportpattern964 msgid "Remove import pattern"965 msgstr ""966 967 #: uformimportformat.sremoveimportpatternquery968 msgid "Do you really want to remove selected import patterns?"969 msgstr ""970 971 #: uformimportformat.syes972 msgid "Yes"973 msgstr ""974 975 #: uformimportformats.simportformatalreadyexists976 #, object-pascal-format977 msgid "Import format %s already exists!"978 msgstr ""979 980 #: uformimportformats.sremoveimportformat981 msgid "Remove import formats"982 msgstr ""983 984 #: uformimportformats.sremoveimportformatquery985 msgid "Do you really want to remove selected import formats?"986 msgstr ""987 988 #: uformimportsources.simportsourcealreadyexists989 #, object-pascal-format990 msgid "Import source %s already exists!"991 msgstr ""992 993 #: uformimportsources.sprocessselectedsource994 msgid "Process selected import source"995 msgstr ""996 997 #: uformimportsources.sremoveimportsource998 msgid "Remove import sources"999 msgstr ""1000 1001 #: uformimportsources.sremoveimportsourcequery1002 msgid "Do you really want to remove selected import sources?"1003 msgstr ""1004 1005 #: uformmain.sacronymscount1006 #, object-pascal-format1007 msgid "Acronyms count: %d"1008 msgstr ""1009 1010 #: uformmain.saddedcount1011 #, object-pascal-format1012 msgid "Imported %d acronyms. Added %d new."1013 msgstr ""1014 1015 #: uformmain.sappexit1016 msgid "Application exit"1017 msgstr ""1018 1019 #: uformmain.sappexitquery1020 msgid "Acronyms were modified. Do you want to save them to file before exit?"1021 msgstr ""1022 1023 #: uformmain.sfilefilter1024 msgid "Acronym Decoder project (.adp)|*.adp|All files|*.*"1025 msgstr ""1026 1027 #: uformmain.smeaningscount1028 #, object-pascal-format1029 msgid "Meanings count: %d"1030 msgstr ""1031 1032 #: uformmain.smodified1033 msgid "modified"1034 msgstr ""1035 1036 #: uformmain.sprocessimportsources1037 msgid "Process import sources"1038 msgstr ""1039 -
trunk/Packages/Common/ApplicationInfo.pas
r218 r219 1 unit UApplicationInfo; 2 3 {$mode delphi} 1 unit ApplicationInfo; 4 2 5 3 interface 6 4 7 5 uses 8 SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType;6 SysUtils, Classes, Forms, RegistryEx, Controls, Graphics, LCLType; 9 7 10 8 type … … 59 57 procedure Register; 60 58 59 61 60 implementation 62 61 -
trunk/Packages/Common/Common.Delay.pas
r218 r219 1 unit UDelay; 2 3 {$mode delphi} 1 unit Common.Delay; 4 2 5 3 interface … … 73 71 74 72 end. 75 -
trunk/Packages/Common/Common.lpk
r215 r219 11 11 <PathDelim Value="\"/> 12 12 <SearchPaths> 13 <OtherUnitFiles Value="Forms"/> 13 14 <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)-$(BuildMode)"/> 14 15 </SearchPaths> … … 33 34 <Other> 34 35 <CompilerMessages> 35 <IgnoredMessages idx6058="True" idx50 24="True" idx3124="True" idx3123="True"/>36 <IgnoredMessages idx6058="True" idx5071="True" idx5024="True" idx3124="True" idx3123="True"/> 36 37 </CompilerMessages> 37 38 </Other> … … 41 42 Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/> 42 43 <License Value="Copy left."/> 43 <Version Minor=" 9"/>44 <Files Count=" 29">44 <Version Minor="12"/> 45 <Files Count="40"> 45 46 <Item1> 46 47 <Filename Value="StopWatch.pas"/> … … 48 49 </Item1> 49 50 <Item2> 50 <Filename Value=" UCommon.pas"/>51 <UnitName Value=" UCommon"/>51 <Filename Value="Common.pas"/> 52 <UnitName Value="Common"/> 52 53 </Item2> 53 54 <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"/> 57 58 </Item3> 58 59 <Item4> 59 <Filename Value=" UDelay.pas"/>60 <UnitName Value=" UDelay"/>60 <Filename Value="Common.Delay.pas"/> 61 <UnitName Value="Common.Delay"/> 61 62 </Item4> 62 63 <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"/> 66 67 </Item5> 67 68 <Item6> 68 <Filename Value="U URI.pas"/>69 <UnitName Value="U URI"/>69 <Filename Value="URI.pas"/> 70 <UnitName Value="URI"/> 70 71 </Item6> 71 72 <Item7> 72 <Filename Value=" UThreading.pas"/>73 <UnitName Value=" UThreading"/>73 <Filename Value="Threading.pas"/> 74 <UnitName Value="Threading"/> 74 75 </Item7> 75 76 <Item8> 76 <Filename Value=" UMemory.pas"/>77 <UnitName Value=" UMemory"/>77 <Filename Value="Memory.pas"/> 78 <UnitName Value="Memory"/> 78 79 </Item8> 79 80 <Item9> 80 <Filename Value=" UResetableThread.pas"/>81 <UnitName Value=" UResetableThread"/>81 <Filename Value="ResetableThread.pas"/> 82 <UnitName Value="ResetableThread"/> 82 83 </Item9> 83 84 <Item10> 84 <Filename Value=" UPool.pas"/>85 <UnitName Value=" UPool"/>85 <Filename Value="Pool.pas"/> 86 <UnitName Value="Pool"/> 86 87 </Item10> 87 88 <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"/> 91 92 </Item11> 92 93 <Item12> 93 <Filename Value=" URegistry.pas"/>94 <UnitName Value=" URegistry"/>94 <Filename Value="RegistryEx.pas"/> 95 <UnitName Value="RegistryEx"/> 95 96 </Item12> 96 97 <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"/> 100 101 </Item13> 101 102 <Item14> 102 <Filename Value=" UXMLUtils.pas"/>103 <UnitName Value=" UXMLUtils"/>103 <Filename Value="XML.pas"/> 104 <UnitName Value="XML"/> 104 105 </Item14> 105 106 <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"/> 109 110 </Item15> 110 111 <Item16> 111 <Filename Value=" USyncCounter.pas"/>112 <UnitName Value=" USyncCounter"/>112 <Filename Value="SyncCounter.pas"/> 113 <UnitName Value="SyncCounter"/> 113 114 </Item16> 114 115 <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"/> 118 119 </Item17> 119 120 <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"/> 123 124 </Item18> 124 125 <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"/> 128 129 </Item19> 129 130 <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"/> 133 134 </Item20> 134 135 <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"/> 138 139 </Item21> 139 140 <Item22> 140 <Filename Value=" UStringTable.pas"/>141 <UnitName Value=" UStringTable"/>141 <Filename Value="StringTable.pas"/> 142 <UnitName Value="StringTable"/> 142 143 </Item22> 143 144 <Item23> 144 <Filename Value=" UMetaCanvas.pas"/>145 <UnitName Value=" UMetaCanvas"/>145 <Filename Value="MetaCanvas.pas"/> 146 <UnitName Value="MetaCanvas"/> 146 147 </Item23> 147 148 <Item24> 148 <Filename Value=" UGeometric.pas"/>149 <UnitName Value=" UGeometric"/>149 <Filename Value="Geometric.pas"/> 150 <UnitName Value="Geometric"/> 150 151 </Item24> 151 152 <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"/> 155 156 </Item25> 156 157 <Item26> 157 <Filename Value=" ULanguages.pas"/>158 <UnitName Value=" ULanguages"/>158 <Filename Value="Languages.pas"/> 159 <UnitName Value="Languages"/> 159 160 </Item26> 160 161 <Item27> 161 <Filename Value=" UFormAbout.pas"/>162 <UnitName Value=" UFormAbout"/>162 <Filename Value="PixelPointer.pas"/> 163 <UnitName Value="PixelPointer"/> 163 164 </Item27> 164 165 <Item28> 165 <Filename Value="UAboutDialog.pas"/> 166 <HasRegisterProc Value="True"/> 167 <UnitName Value="UAboutDialog"/> 166 <Filename Value="DataFile.pas"/> 167 <UnitName Value="DataFile"/> 168 168 </Item28> 169 169 <Item29> 170 <Filename Value=" UPixelPointer.pas"/>171 <UnitName Value=" UPixelPointer"/>170 <Filename Value="TestCase.pas"/> 171 <UnitName Value="TestCase"/> 172 172 </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> 203 <Item37> 204 <Filename Value="Forms\FormKeyShortcuts.pas"/> 205 <UnitName Value="FormKeyShortcuts"/> 206 </Item37> 207 <Item38> 208 <Filename Value="ItemList.pas"/> 209 <UnitName Value="ItemList"/> 210 </Item38> 211 <Item39> 212 <Filename Value="Forms\FormItem.pas"/> 213 <UnitName Value="FormItem"/> 214 </Item39> 215 <Item40> 216 <Filename Value="Forms\FormList.pas"/> 217 <UnitName Value="FormList"/> 218 </Item40> 173 219 </Files> 174 220 <CompatibilityMode Value="True"/> -
trunk/Packages/Common/Common.pas
r218 r219 1 unit UCommon; 2 3 {$mode delphi} 1 unit Common; 4 2 5 3 interface … … 8 6 {$IFDEF WINDOWS}Windows,{$ENDIF} 9 7 {$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; 12 10 13 11 type 14 12 TArrayOfByte = array of Byte; 15 TArrayOfString = array of string;16 13 TExceptionEvent = procedure(Sender: TObject; E: Exception) of object; 17 14 … … 35 32 DLLHandle1: HModule; 36 33 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 39 const 40 clLightBlue = TColor($FF8080); 41 clLightGreen = TColor($80FF80); 42 clLightRed = TColor($8080FF); 41 43 42 44 function AddLeadingZeroes(const aNumber, Length : integer) : string; … … 51 53 function ComputerName: string; 52 54 procedure DeleteFiles(APath, AFileSpec: string); 53 procedure ExecuteProgram(Executable: string; Parameters: array of string); 55 function EndsWith(Text, What: string): Boolean; 56 function Explode(Separator: Char; Data: string): TStringArray; 57 procedure ExecuteProgram(Executable: string; Parameters: array of string; 58 Environment: array of string; CurrentDirectory: string = ''); 59 procedure ExecuteProgramOutput(Executable: string; Parameters: array of string; 60 Environment: array of string; out Output, Error: string; 61 out ExitCode: Integer; CurrentDirectory: string = ''); 54 62 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog); 55 63 procedure FreeThenNil(var Obj); … … 59 67 function GetBit(Variable: QWord; Index: Byte): Boolean; 60 68 function GetStringPart(var Text: string; Separator: string): string; 69 function GetEnvironmentVariables: TStringArray; 61 70 function GenerateNewName(OldName: string): string; 62 71 function GetFileFilterItemExt(Filter: string; Index: Integer): string; 63 72 function IntToBin(Data: Int64; Count: Byte): string; 73 function Implode(Separator: string; List: TList<string>): string; overload; 74 function Implode(Separator: string; List: array of string): string; overload; 75 function Implode(Separator: string; List: TStringList; Around: string = ''): string; overload; 64 76 function LastPos(const SubStr: String; const S: String): Integer; 65 77 function LoadFileToStr(const FileName: TFileName): AnsiString; 66 78 function LoggedOnUserNameEx(Format: TUserNameFormat): string; 67 function MergeArray(A, B: array of string): T ArrayOfString;79 function MergeArray(A, B: array of string): TStringArray; 68 80 function OccurenceOfChar(What: Char; Where: string): Integer; 69 81 procedure OpenWebPage(URL: string); 82 procedure OpenEmail(Email: string); 70 83 procedure OpenFileInShell(FileName: string); 71 84 function PosFromIndex(SubStr: string; Text: string; … … 81 94 procedure SearchFiles(AList: TStrings; Dir: string; 82 95 FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil); 96 procedure SortStrings(Strings: TStrings); 83 97 function SplitString(var Text: string; Count: Word): string; 84 98 function StripTags(const S: string): string; 85 function TryHexToInt(Data: string; var Value: Integer): Boolean;86 function Try BinToInt(Data: string; varValue: Integer): Boolean;87 procedure SortStrings(Strings: TStrings);99 function StartsWith(Text, What: string): Boolean; 100 function TryHexToInt(Data: string; out Value: Integer): Boolean; 101 function TryBinToInt(Data: string; out Value: Integer): Boolean; 88 102 89 103 90 104 implementation 91 105 92 function BinToInt(BinStr : string) : Int64; 93 var 94 i : byte; 95 RetVar : Int64; 106 resourcestring 107 SExecutionError = 'Excution error: %s (exit code: %d)'; 108 109 function StartsWith(Text, What: string): Boolean; 110 begin 111 Result := Copy(Text, 1, Length(Text)) = What; 112 end; 113 114 function EndsWith(Text, What: string): Boolean; 115 begin 116 Result := Copy(Text, Length(Text) - Length(What) + 1, MaxInt) = What; 117 end; 118 119 function BinToInt(BinStr: string): Int64; 120 var 121 I: Byte; 122 RetVar: Int64; 96 123 begin 97 124 BinStr := UpperCase(BinStr); 98 if BinStr[length(BinStr)] = 'B' then Delete(BinStr, length(BinStr),1);125 if BinStr[length(BinStr)] = 'B' then Delete(BinStr, Length(BinStr), 1); 99 126 RetVar := 0; 100 for i := 1 to length(BinStr) do begin101 if not (BinStr[ i] in ['0','1']) then begin127 for I := 1 to Length(BinStr) do begin 128 if not (BinStr[I] in ['0','1']) then begin 102 129 RetVar := 0; 103 130 Break; 104 131 end; 105 RetVar := (RetVar shl 1) + ( byte(BinStr[i]) and 1);132 RetVar := (RetVar shl 1) + (Byte(BinStr[I]) and 1); 106 133 end; 107 134 … … 118 145 end; 119 146 end; 120 121 147 122 148 procedure DeleteFiles(APath, AFileSpec: string); … … 136 162 FindClose(SearchRec); 137 163 end; 138 139 164 140 165 function GetFileFilterItemExt(Filter: string; Index: Integer): string; … … 159 184 if FileExt <> '.*' then 160 185 FileDialog.FileName := ChangeFileExt(FileDialog.FileName, FileExt) 186 end; 187 188 function GetEnvironmentVariables: TStringArray; 189 var 190 I: Integer; 191 begin 192 Result := Default(TStringArray); 193 SetLength(Result, GetEnvironmentVariableCount); 194 for I := 0 to GetEnvironmentVariableCount - 1 do 195 Result[I] := GetEnvironmentString(I); 161 196 end; 162 197 … … 201 236 end;*) 202 237 238 function Implode(Separator: string; List: array of string): string; 239 var 240 I: Integer; 241 begin 242 Result := ''; 243 for I := 0 to Length(List) - 1 do begin 244 Result := Result + List[I]; 245 if I < Length(List) - 1 then Result := Result + Separator; 246 end; 247 end; 248 249 function Implode(Separator: string; List: TStringList; Around: string = ''): string; 250 var 251 I: Integer; 252 begin 253 Result := ''; 254 for I := 0 to List.Count - 1 do begin 255 Result := Result + Around + List[I] + Around; 256 if I < List.Count - 1 then Result := Result + Separator; 257 end; 258 end; 259 203 260 function LastPos(const SubStr: String; const S: String): Integer; 204 261 begin … … 246 303 end; 247 304 248 function TryHexToInt(Data: string; varValue: Integer): Boolean;305 function TryHexToInt(Data: string; out Value: Integer): Boolean; 249 306 var 250 307 I: Integer; … … 262 319 end; 263 320 264 function TryBinToInt(Data: string; varValue: Integer): Boolean;321 function TryBinToInt(Data: string; out Value: Integer): Boolean; 265 322 var 266 323 I: Integer; … … 290 347 end; 291 348 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 349 function Explode(Separator: Char; Data: string): TStringArray; 350 var 351 Index: Integer; 352 begin 353 Result := Default(TStringArray); 354 repeat 355 Index := Pos(Separator, Data); 356 if Index > 0 then begin 357 SetLength(Result, Length(Result) + 1); 358 Result[High(Result)] := Copy(Data, 1, Index - 1); 359 Delete(Data, 1, Index); 360 end else Break; 361 until False; 362 if Data <> '' then begin 297 363 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} 364 Result[High(Result)] := Data; 365 end; 366 end; 367 368 function Implode(Separator: string; List: TList<string>): string; 369 var 370 I: Integer; 371 begin 372 Result := ''; 373 for I := 0 to List.Count - 1 do begin 374 Result := Result + List[I]; 375 if I < List.Count - 1 then Result := Result + Separator; 376 end; 377 end; 378 379 {$IFDEF WINDOWS} 306 380 function GetUserName: string; 307 381 const … … 311 385 begin 312 386 L := MAX_USERNAME_LENGTH + 2; 387 Result := Default(string); 313 388 SetLength(Result, L); 314 389 if Windows.GetUserName(PChar(Result), L) and (L > 0) then begin … … 324 399 end; 325 400 end; 326 {$ endif}401 {$ENDIF} 327 402 328 403 function ComputerName: string; 329 {$ ifdef mswindows}404 {$IFDEF WINDOWS} 330 405 const 331 406 INFO_BUFFER_SIZE = 32767; … … 342 417 end; 343 418 end; 344 {$ endif}345 {$ ifdef unix}419 {$ENDIF} 420 {$IFDEF UNIX} 346 421 var 347 422 Name: UtsName; … … 351 426 Result := Name.Nodename; 352 427 end; 353 {$ endif}354 355 {$ ifdef windows}428 {$ENDIF} 429 430 {$IFDEF WINDOWS} 356 431 function LoggedOnUserNameEx(Format: TUserNameFormat): string; 357 432 const … … 431 506 procedure LoadLibraries; 432 507 begin 433 {$IFDEF W indows}508 {$IFDEF WINDOWS} 434 509 DLLHandle1 := LoadLibrary('secur32.dll'); 435 510 if DLLHandle1 <> 0 then … … 442 517 procedure FreeLibraries; 443 518 begin 444 {$IFDEF W indows}519 {$IFDEF WINDOWS} 445 520 if DLLHandle1 <> 0 then FreeLibrary(DLLHandle1); 446 521 {$ENDIF} 447 522 end; 448 523 449 procedure ExecuteProgram(Executable: string; Parameters: array of string); 524 procedure ExecuteProgram(Executable: string; Parameters: array of string; 525 Environment: array of string; CurrentDirectory: string = ''); 450 526 var 451 527 Process: TProcess; 452 528 I: Integer; 453 529 begin 530 Process := TProcess.Create(nil); 454 531 try 455 Process := TProcess.Create(nil);456 532 Process.Executable := Executable; 457 533 for I := 0 to Length(Parameters) - 1 do 458 534 Process.Parameters.Add(Parameters[I]); 535 for I := 0 to Length(Environment) - 1 do 536 Process.Environment.Add(Environment[I]); 537 Process.CurrentDirectory := CurrentDirectory; 538 Process.ShowWindow := swoHIDE; 459 539 Process.Options := [poNoConsole]; 460 540 Process.Execute; … … 464 544 end; 465 545 546 procedure ExecuteProgramOutput(Executable: string; Parameters: array of string; 547 Environment: array of string; out Output, Error: string; out ExitCode: Integer; 548 CurrentDirectory: string); 549 var 550 Process: TProcess; 551 I: Integer; 552 ReadCount: Integer; 553 Buffer: string; 554 const 555 BufferSize = 1000; 556 begin 557 Process := TProcess.Create(nil); 558 try 559 Process.Executable := Executable; 560 for I := 0 to Length(Parameters) - 1 do 561 Process.Parameters.Add(Parameters[I]); 562 for I := 0 to Length(Environment) - 1 do 563 Process.Environment.Add(Environment[I]); 564 Process.CurrentDirectory := CurrentDirectory; 565 Process.ShowWindow := swoHIDE; 566 Process.Options := [poNoConsole, poUsePipes]; 567 Process.Execute; 568 569 Output := ''; 570 Error := ''; 571 Buffer := ''; 572 SetLength(Buffer, BufferSize); 573 while Process.Running do begin 574 if Process.Output.NumBytesAvailable > 0 then begin 575 ReadCount := Process.Output.Read(Buffer[1], Length(Buffer)); 576 Output := Output + Copy(Buffer, 1, ReadCount); 577 end; 578 579 if Process.Stderr.NumBytesAvailable > 0 then begin 580 ReadCount := Process.Stderr.Read(Buffer[1], Length(Buffer)); 581 Error := Error + Copy(Buffer, 1, ReadCount) 582 end; 583 584 Sleep(10); 585 end; 586 587 if Process.Output.NumBytesAvailable > 0 then begin 588 ReadCount := Process.Output.Read(Buffer[1], Length(Buffer)); 589 Output := Output + Copy(Buffer, 1, ReadCount); 590 end; 591 592 if Process.Stderr.NumBytesAvailable > 0 then begin 593 ReadCount := Process.Stderr.Read(Buffer[1], Length(Buffer)); 594 Error := Error + Copy(Buffer, 1, ReadCount); 595 end; 596 597 ExitCode := Process.ExitCode; 598 599 if (ExitCode <> 0) or (Error <> '') then 600 raise Exception.Create(Format(SExecutionError, [Output + Error, ExitCode])); 601 finally 602 Process.Free; 603 end; 604 end; 605 466 606 procedure FreeThenNil(var Obj); 467 607 begin … … 475 615 end; 476 616 617 procedure OpenEmail(Email: string); 618 begin 619 OpenURL('mailto:' + Email); 620 end; 621 477 622 procedure OpenFileInShell(FileName: string); 478 623 begin 479 ExecuteProgram('cmd.exe', ['/c', 'start', FileName] );624 ExecuteProgram('cmd.exe', ['/c', 'start', FileName], []); 480 625 end; 481 626 … … 503 648 end; 504 649 505 function MergeArray(A, B: array of string): T ArrayOfString;506 var 507 I: Integer; 508 begin 509 Result := Default(T ArrayOfString);650 function MergeArray(A, B: array of string): TStringArray; 651 var 652 I: Integer; 653 begin 654 Result := Default(TStringArray); 510 655 SetLength(Result, Length(A) + Length(B)); 511 656 for I := 0 to Length(A) - 1 do -
trunk/Packages/Common/CommonPackage.pas
r218 r219 3 3 } 4 4 5 unit Common ;5 unit CommonPackage; 6 6 7 7 {$warn 5023 off : no warning about unused units} … … 9 9 10 10 uses 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, FormKeyShortcuts, ItemList, FormItem, FormList, 17 LazarusPackageIntf; 17 18 18 19 implementation … … 20 21 procedure Register; 21 22 begin 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);23 RegisterUnit('DebugLog', @DebugLog.Register); 24 RegisterUnit('PrefixMultiplier', @PrefixMultiplier.Register); 25 RegisterUnit('LastOpenedList', @LastOpenedList.Register); 26 RegisterUnit('JobProgressView', @JobProgressView.Register); 27 RegisterUnit('ApplicationInfo', @ApplicationInfo.Register); 28 RegisterUnit('ListViewSort', @ListViewSort.Register); 29 RegisterUnit('PersistentForm', @PersistentForm.Register); 30 RegisterUnit('FindFile', @FindFile.Register); 31 RegisterUnit('ScaleDPI', @ScaleDPI.Register); 32 RegisterUnit('Theme', @Theme.Register); 33 RegisterUnit('Translator', @Translator.Register); 34 RegisterUnit('FormEx', @FormEx.Register); 34 35 end; 35 36 -
trunk/Packages/Common/DebugLog.pas
r218 r219 1 unit UDebugLog; 2 3 {$mode delphi} 1 unit DebugLog; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, FileUtil, fgl, SyncObjs;6 Classes, SysUtils, FileUtil, Generics.Collections, SyncObjs; 9 7 10 8 type … … 15 13 Group: string; 16 14 Text: string; 15 end; 16 17 TDebugLogItems = class(TObjectList<TDebugLogItem>) 17 18 end; 18 19 … … 29 30 procedure SetMaxCount(const AValue: Integer); 30 31 public 31 Items: T FPGObjectList<TDebugLogItem>;32 Items: TDebugLogItems; 32 33 Lock: TCriticalSection; 33 34 procedure Add(Text: string; Group: string = ''); … … 44 45 45 46 procedure Register; 47 46 48 47 49 implementation … … 117 119 begin 118 120 inherited; 119 Items := T FPGObjectList<TDebugLogItem>.Create;121 Items := TDebugLogItems.Create; 120 122 Lock := TCriticalSection.Create; 121 123 MaxCount := 100; … … 126 128 destructor TDebugLog.Destroy; 127 129 begin 128 Items.Free;129 Lock.Free;130 FreeAndNil(Items); 131 FreeAndNil(Lock); 130 132 inherited; 131 133 end; 132 134 133 135 end. 134 -
trunk/Packages/Common/FindFile.pas
r218 r219 19 19 } 20 20 21 unit UFindFile;21 unit FindFile; 22 22 23 23 interface … … 35 35 private 36 36 s : TStringList; 37 38 37 fSubFolder : boolean; 39 38 fAttr: TFileAttrib; 40 39 fPath : string; 41 40 fFileMask : string; 42 43 41 procedure SetPath(Value: string); 44 42 procedure FileSearch(const inPath : string); … … 46 44 constructor Create(AOwner: TComponent); override; 47 45 destructor Destroy; override; 48 49 46 function SearchForFiles: TStringList; 50 47 published … … 65 62 procedure Register; 66 63 64 67 65 implementation 68 66 … … 77 75 constructor TFindFile.Create(AOwner: TComponent); 78 76 begin 79 inherited Create(AOwner);77 inherited; 80 78 Path := IncludeTrailingBackslash(UTF8Encode(GetCurrentDir)); 81 79 FileMask := FilterAll; … … 87 85 begin 88 86 s.Free; 89 inherited Destroy;87 inherited; 90 88 end; 91 89 … … 145 143 SysUtils.FindClose(Rec); 146 144 end; 147 end; 145 end; 148 146 149 147 end. 150 -
trunk/Packages/Common/Geometric.pas
r218 r219 1 unit UGeometric; 2 3 {$mode delphi} 1 unit Geometric; 4 2 5 3 interface … … 10 8 type 11 9 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; 12 21 13 22 function Distance(P1, P2: TPoint): Integer; … … 15 24 function AddPoint(const P1, P2: TPoint): TPoint; 16 25 function SubPoint(const P1, P2: TPoint): TPoint; 17 function PointToLineDistance(const P, V, W: TPoint ): Integer;26 function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer; 18 27 function ComparePoint(P1, P2: TPoint): Boolean; 19 28 function RotatePoint(Center, P: TPoint; Angle: Double): TPoint; … … 27 36 function ShiftRect(ARect: TRect; Delta: TPoint): TRect; 28 37 38 29 39 implementation 30 40 … … 51 61 end; 52 62 53 function PointToLineDistance(const P, V, W: TPoint ): Integer;63 function PointToLineDistance(const P, V, W: TPoint; out Intersect: TPoint): Integer; 54 64 var 55 65 l2, t: Double; … … 69 79 if T < 0 then begin 70 80 Result := Distance(P, V); // Beyond the 'v' end of the segment 71 exit; 81 Intersect := V; 82 Exit; 72 83 end 73 84 else if T > 1 then begin 74 85 Result := Distance(P, W); // Beyond the 'w' end of the segment 86 Intersect := W; 75 87 Exit; 76 88 end; … … 78 90 TT.Y := Trunc(V.Y + T * (W.Y - V.Y)); 79 91 Result := Distance(P, TT); 92 Intersect := TT; 80 93 end; 81 94 … … 163 176 end; 164 177 178 { TVector } 179 180 function TVector.GetLength: Double; 181 begin 182 Result := Sqrt(Sqr(Direction.X) + Sqr(Direction.Y)); 183 end; 184 185 function TVector.GetAngle: Double; 186 begin 187 Result := ArcTan2(Direction.Y, Direction.X); 188 end; 189 190 procedure TVector.SetLength(Value: Double); 191 var 192 Angle: Double; 193 begin 194 Angle := GetAngle; 195 Direction := Point(Round(Cos(Angle) * Value), 196 Round(Sin(Angle) * Value)); 197 end; 198 199 class function TVector.Create(P1, P2: TPoint): TVector; 200 begin 201 Result.Position := P1; 202 Result.Direction := Point(P2.X - P1.X, P2.Y - P1.Y); 203 end; 165 204 166 205 end. 167 -
trunk/Packages/Common/JobProgressView.pas
r218 r219 1 unit UJobProgressView; 2 3 {$MODE Delphi} 1 unit JobProgressView; 4 2 5 3 interface … … 7 5 uses 8 6 SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs, 9 Dialogs, ComCtrls, StdCtrls, ExtCtrls, fgl, UThreading, Math,7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Generics.Collections, Threading, Math, 10 8 DateUtils; 11 9 … … 71 69 end; 72 70 73 TJobs = class(T FPGObjectList<TJob>)71 TJobs = class(TObjectList<TJob>) 74 72 end; 75 73 … … 156 154 end; 157 155 158 //var159 // FormJobProgressView: TFormJobProgressView;160 161 156 procedure Register; 162 157 163 158 resourcestring 164 159 SExecuted = 'Executed'; 160 165 161 166 162 implementation … … 186 182 try 187 183 try 188 //raise Exception.Create('Exception in job');189 184 ProgressView.CurrentJob.Method(Job); 190 185 except … … 642 637 begin 643 638 FLock.Free; 644 inherited Destroy;639 inherited; 645 640 end; 646 641 -
trunk/Packages/Common/Languages.pas
r218 r219 1 unit ULanguages; 2 3 {$mode delphi}{$H+} 1 unit Languages; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, fgl;6 Classes, SysUtils, Generics.Collections; 9 7 10 8 type … … 17 15 { TLanguages } 18 16 19 TLanguages = class(T FPGObjectList<TLanguage>)17 TLanguages = class(TObjectList<TLanguage>) 20 18 function SearchByCode(ACode: string): TLanguage; 21 19 procedure AddNew(Code: string; Name: string); … … 218 216 SLang_za = 'Zhuang'; 219 217 SLang_zh = 'Chinese'; 218 SLang_zh_Hans = 'Simplified Chinese'; 219 SLang_zh_Hant = 'Traditional Chinese'; 220 220 SLang_zu = 'Zulu'; 221 221 222 222 223 implementation … … 230 231 begin 231 232 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] 234 235 else Result := nil; 235 236 end; … … 441 442 AddNew('za', SLang_za); 442 443 AddNew('zh', SLang_zh); 444 AddNew('zh-Hant', SLang_zh_Hant); 445 AddNew('zh-Hans', SLang_zh_Hans); 443 446 AddNew('zu', SLang_zu); 444 447 end; 445 448 446 449 end. 447 -
trunk/Packages/Common/Languages/DebugLog.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Jiří Hajda <robie@centrum.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 12 "X-Generator: Poedit 3.0.1\n" 11 13 12 #: udebuglog.sfilenamenotdefined 14 #: debuglog.sfilenamenotdefined 15 msgctxt "debuglog.sfilenamenotdefined" 13 16 msgid "Filename not defined" 14 17 msgstr "Neurčen soubor" -
trunk/Packages/Common/Languages/DebugLog.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: udebuglog.sfilenamenotdefined4 #: debuglog.sfilenamenotdefined 5 5 msgid "Filename not defined" 6 6 msgstr "" -
trunk/Packages/Common/Languages/FindFile.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: \n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "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" 13 13 14 #: ufindfile.sdirnotfound 14 #: findfile.sdirnotfound 15 msgctxt "findfile.sdirnotfound" 15 16 msgid "Directory not found" 16 17 msgstr "Adresář nenalezen" -
trunk/Packages/Common/Languages/FindFile.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: ufindfile.sdirnotfound4 #: findfile.sdirnotfound 5 5 msgid "Directory not found" 6 6 msgstr "" -
trunk/Packages/Common/Languages/FormAbout.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Chronos <robie@centrum.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 11 "Language: cs\n" 12 "X-Generator: Poedit 2.4.1\n" 12 "X-Generator: Poedit 3.4.2\n" 13 13 14 #: uformabout.slicense 14 #: formabout.sclose 15 msgid "Close" 16 msgstr "Zavřít" 17 18 #: formabout.shomepage 19 msgid "Home page" 20 msgstr "Domovská stránka" 21 22 #: formabout.slicense 23 msgctxt "formabout.slicense" 15 24 msgid "License" 16 25 msgstr "Licence" 17 26 18 #: uformabout.sreleasedate 27 #: formabout.sreleasedate 28 msgctxt "formabout.sreleasedate" 19 29 msgid "Release date" 20 30 msgstr "Datum uvolnění" 21 31 22 #: uformabout.sversion 32 #: formabout.sversion 33 msgctxt "formabout.sversion" 23 34 msgid "Version" 24 35 msgstr "Verze" -
trunk/Packages/Common/Languages/FormAbout.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: uformabout.slicense 4 #: formabout.sclose 5 msgid "Close" 6 msgstr "" 7 8 #: formabout.shomepage 9 msgid "Home page" 10 msgstr "" 11 12 #: formabout.slicense 5 13 msgid "License" 6 14 msgstr "" 7 15 8 #: uformabout.sreleasedate16 #: formabout.sreleasedate 9 17 msgid "Release date" 10 18 msgstr "" 11 19 12 #: uformabout.sversion20 #: formabout.sversion 13 21 msgid "Version" 14 22 msgstr "" -
trunk/Packages/Common/Languages/JobProgressView.cs.po
r218 r219 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "X-Generator: Poedit 2.2\n"12 "X-Generator: Poedit 3.0.1\n" 13 13 14 #: ujobprogressview.sestimatedtime14 #: jobprogressview.sestimatedtime 15 15 #, object-pascal-format 16 msgctxt "jobprogressview.sestimatedtime" 16 17 msgid "Estimated time: %s" 17 18 msgstr "Odhadovaný čas: %s" 18 19 19 #: ujobprogressview.sexecuted 20 #: jobprogressview.sexecuted 21 msgctxt "jobprogressview.sexecuted" 20 22 msgid "Executed" 21 23 msgstr "Vykonané" 22 24 23 #: ujobprogressview.sfinished 25 #: jobprogressview.sfinished 26 msgctxt "jobprogressview.sfinished" 24 27 msgid "Finished" 25 28 msgstr "Dokončené" 26 29 27 #: ujobprogressview.spleasewait 30 #: jobprogressview.spleasewait 31 msgctxt "jobprogressview.spleasewait" 28 32 msgid "Please wait..." 29 33 msgstr "Prosím čekejte..." 30 34 31 #: ujobprogressview.sterminate 35 #: jobprogressview.sterminate 36 msgctxt "jobprogressview.sterminate" 32 37 msgid "Termination" 33 38 msgstr "Přerušení" 34 39 35 #: ujobprogressview.stotalestimatedtime40 #: jobprogressview.stotalestimatedtime 36 41 #, object-pascal-format 42 msgctxt "jobprogressview.stotalestimatedtime" 37 43 msgid "Total estimated time: %s" 38 44 msgstr "Celkový odhadovaný čas: %s" -
trunk/Packages/Common/Languages/JobProgressView.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: ujobprogressview.sestimatedtime4 #: jobprogressview.sestimatedtime 5 5 #, object-pascal-format 6 6 msgid "Estimated time: %s" 7 7 msgstr "" 8 8 9 #: ujobprogressview.sexecuted9 #: jobprogressview.sexecuted 10 10 msgid "Executed" 11 11 msgstr "" 12 12 13 #: ujobprogressview.sfinished13 #: jobprogressview.sfinished 14 14 msgid "Finished" 15 15 msgstr "" 16 16 17 #: ujobprogressview.spleasewait17 #: jobprogressview.spleasewait 18 18 msgid "Please wait..." 19 19 msgstr "" 20 20 21 #: ujobprogressview.sterminate21 #: jobprogressview.sterminate 22 22 msgid "Termination" 23 23 msgstr "" 24 24 25 #: ujobprogressview.stotalestimatedtime25 #: jobprogressview.stotalestimatedtime 26 26 #, object-pascal-format 27 27 msgid "Total estimated time: %s" -
trunk/Packages/Common/Languages/Languages.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Jiří Hajda <software@mezservis.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 11 12 #: ulanguages.slangauto 12 "X-Generator: Poedit 3.0.1\n" 13 14 #: languages.slangauto 15 msgctxt "languages.slangauto" 13 16 msgid "Automatic" 14 17 msgstr "Automaticky" 15 18 16 #: ulanguages.slang_aa 19 #: languages.slang_aa 20 msgctxt "languages.slang_aa" 17 21 msgid "Afar" 18 22 msgstr "" 19 23 20 #: ulanguages.slang_ab 24 #: languages.slang_ab 25 msgctxt "languages.slang_ab" 21 26 msgid "Abkhazian" 22 27 msgstr "Abcházština" 23 28 24 #: ulanguages.slang_ae 29 #: languages.slang_ae 30 msgctxt "languages.slang_ae" 25 31 msgid "Avestan" 26 32 msgstr "" 27 33 28 #: ulanguages.slang_af 34 #: languages.slang_af 35 msgctxt "languages.slang_af" 29 36 msgid "Afrikaans" 30 37 msgstr "Afrikánština" 31 38 32 #: ulanguages.slang_ak 39 #: languages.slang_ak 40 msgctxt "languages.slang_ak" 33 41 msgid "Akan" 34 42 msgstr "" 35 43 36 #: ulanguages.slang_am 44 #: languages.slang_am 45 msgctxt "languages.slang_am" 37 46 msgid "Amharic" 38 47 msgstr "" 39 48 40 #: ulanguages.slang_an 49 #: languages.slang_an 50 msgctxt "languages.slang_an" 41 51 msgid "Aragonese" 42 52 msgstr "" 43 53 44 #: ulanguages.slang_ar 54 #: languages.slang_ar 55 msgctxt "languages.slang_ar" 45 56 msgid "Arabic" 46 57 msgstr "Arabština" 47 58 48 #: ulanguages.slang_as 59 #: languages.slang_as 60 msgctxt "languages.slang_as" 49 61 msgid "Assamese" 50 62 msgstr "" 51 63 52 #: ulanguages.slang_av 64 #: languages.slang_av 65 msgctxt "languages.slang_av" 53 66 msgid "Avaric" 54 67 msgstr "" 55 68 56 #: ulanguages.slang_ay 69 #: languages.slang_ay 70 msgctxt "languages.slang_ay" 57 71 msgid "Aymara" 58 72 msgstr "" 59 73 60 #: ulanguages.slang_az 74 #: languages.slang_az 75 msgctxt "languages.slang_az" 61 76 msgid "Azerbaijani" 62 77 msgstr "" 63 78 64 #: ulanguages.slang_ba 79 #: languages.slang_ba 80 msgctxt "languages.slang_ba" 65 81 msgid "Bashkir" 66 82 msgstr "" 67 83 68 #: ulanguages.slang_be 84 #: languages.slang_be 85 msgctxt "languages.slang_be" 69 86 msgid "Belarusian" 70 87 msgstr "" 71 88 72 #: ulanguages.slang_bg 89 #: languages.slang_bg 90 msgctxt "languages.slang_bg" 73 91 msgid "Bulgarian" 74 92 msgstr "Maďarština" 75 93 76 #: ulanguages.slang_bh 94 #: languages.slang_bh 95 msgctxt "languages.slang_bh" 77 96 msgid "Bihari" 78 97 msgstr "" 79 98 80 #: ulanguages.slang_bi 99 #: languages.slang_bi 100 msgctxt "languages.slang_bi" 81 101 msgid "Bislama" 82 102 msgstr "" 83 103 84 #: ulanguages.slang_bm 104 #: languages.slang_bm 105 msgctxt "languages.slang_bm" 85 106 msgid "Bambara" 86 107 msgstr "" 87 108 88 #: ulanguages.slang_bn 109 #: languages.slang_bn 110 msgctxt "languages.slang_bn" 89 111 msgid "Bengali" 90 112 msgstr "" 91 113 92 #: ulanguages.slang_bo 114 #: languages.slang_bo 115 msgctxt "languages.slang_bo" 93 116 msgid "Tibetan" 94 117 msgstr "Tibetština" 95 118 96 #: ulanguages.slang_br 119 #: languages.slang_br 120 msgctxt "languages.slang_br" 97 121 msgid "Breton" 98 122 msgstr "" 99 123 100 #: ulanguages.slang_bs 124 #: languages.slang_bs 125 msgctxt "languages.slang_bs" 101 126 msgid "Bosnian" 102 127 msgstr "" 103 128 104 #: ulanguages.slang_ca 129 #: languages.slang_ca 130 msgctxt "languages.slang_ca" 105 131 msgid "Catalan" 106 132 msgstr "Katalánština" 107 133 108 #: ulanguages.slang_ce 134 #: languages.slang_ce 135 msgctxt "languages.slang_ce" 109 136 msgid "Chechen" 110 137 msgstr "" 111 138 112 #: ulanguages.slang_ch 139 #: languages.slang_ch 140 msgctxt "languages.slang_ch" 113 141 msgid "Chamorro" 114 142 msgstr "" 115 143 116 #: ulanguages.slang_co 144 #: languages.slang_co 145 msgctxt "languages.slang_co" 117 146 msgid "Corsican" 118 147 msgstr "" 119 148 120 #: ulanguages.slang_cr 149 #: languages.slang_cr 150 msgctxt "languages.slang_cr" 121 151 msgid "Cree" 122 152 msgstr "Kríjština" 123 153 124 #: ulanguages.slang_cs 154 #: languages.slang_cs 155 msgctxt "languages.slang_cs" 125 156 msgid "Czech" 126 157 msgstr "Čeština" 127 158 128 #: ulanguages.slang_cv 159 #: languages.slang_cv 160 msgctxt "languages.slang_cv" 129 161 msgid "Chuvash" 130 162 msgstr "" 131 163 132 #: ulanguages.slang_cy 164 #: languages.slang_cy 165 msgctxt "languages.slang_cy" 133 166 msgid "Welsh" 134 167 msgstr "" 135 168 136 #: ulanguages.slang_da 169 #: languages.slang_da 170 msgctxt "languages.slang_da" 137 171 msgid "Danish" 138 172 msgstr "Dánština" 139 173 140 #: ulanguages.slang_de 174 #: languages.slang_de 175 msgctxt "languages.slang_de" 141 176 msgid "German" 142 177 msgstr "Němčina" 143 178 144 #: ulanguages.slang_de_at 179 #: languages.slang_de_at 180 msgctxt "languages.slang_de_at" 145 181 msgid "Austrian German" 146 182 msgstr "Australská němčina" 147 183 148 #: ulanguages.slang_de_ch 184 #: languages.slang_de_ch 185 msgctxt "languages.slang_de_ch" 149 186 msgid "Swiss German" 150 187 msgstr "Švédská němčina" 151 188 152 #: ulanguages.slang_dv 189 #: languages.slang_dv 190 msgctxt "languages.slang_dv" 153 191 msgid "Divehi" 154 192 msgstr "" 155 193 156 #: ulanguages.slang_dz 194 #: languages.slang_dz 195 msgctxt "languages.slang_dz" 157 196 msgid "Dzongkha" 158 197 msgstr "" 159 198 160 #: ulanguages.slang_ee 199 #: languages.slang_ee 200 msgctxt "languages.slang_ee" 161 201 msgid "Ewe" 162 202 msgstr "" 163 203 164 #: ulanguages.slang_el 204 #: languages.slang_el 205 msgctxt "languages.slang_el" 165 206 msgid "Greek" 166 207 msgstr "Řečtina" 167 208 168 #: ulanguages.slang_en 209 #: languages.slang_en 210 msgctxt "languages.slang_en" 169 211 msgid "English" 170 212 msgstr "Angličtina" 171 213 172 #: ulanguages.slang_en_au 214 #: languages.slang_en_au 215 msgctxt "languages.slang_en_au" 173 216 msgid "Australian English" 174 217 msgstr "Australská angličtina" 175 218 176 #: ulanguages.slang_en_ca 219 #: languages.slang_en_ca 220 msgctxt "languages.slang_en_ca" 177 221 msgid "Canadian English" 178 222 msgstr "Kanadská angličtina" 179 223 180 #: ulanguages.slang_en_gb 224 #: languages.slang_en_gb 225 msgctxt "languages.slang_en_gb" 181 226 msgid "British English" 182 227 msgstr "Britská angličtina" 183 228 184 #: ulanguages.slang_en_us 229 #: languages.slang_en_us 230 msgctxt "languages.slang_en_us" 185 231 msgid "American English" 186 232 msgstr "Americká angličtina" 187 233 188 #: ulanguages.slang_eo 234 #: languages.slang_eo 235 msgctxt "languages.slang_eo" 189 236 msgid "Esperanto" 190 237 msgstr "Esperanto" 191 238 192 #: ulanguages.slang_es 239 #: languages.slang_es 240 msgctxt "languages.slang_es" 193 241 msgid "Spanish" 194 242 msgstr "Španělština" 195 243 196 #: ulanguages.slang_et 244 #: languages.slang_et 245 msgctxt "languages.slang_et" 197 246 msgid "Estonian" 198 247 msgstr "Estonština" 199 248 200 #: ulanguages.slang_eu 249 #: languages.slang_eu 250 msgctxt "languages.slang_eu" 201 251 msgid "Basque" 202 252 msgstr "" 203 253 204 #: ulanguages.slang_fa 254 #: languages.slang_fa 255 msgctxt "languages.slang_fa" 205 256 msgid "Persian" 206 257 msgstr "Perština" 207 258 208 #: ulanguages.slang_ff 259 #: languages.slang_ff 260 msgctxt "languages.slang_ff" 209 261 msgid "Fulah" 210 262 msgstr "" 211 263 212 #: ulanguages.slang_fi 264 #: languages.slang_fi 265 msgctxt "languages.slang_fi" 213 266 msgid "Finnish" 214 267 msgstr "Finština" 215 268 216 #: ulanguages.slang_fj 269 #: languages.slang_fj 270 msgctxt "languages.slang_fj" 217 271 msgid "Fijian" 218 272 msgstr "" 219 273 220 #: ulanguages.slang_fo 274 #: languages.slang_fo 275 msgctxt "languages.slang_fo" 221 276 msgid "Faroese" 222 277 msgstr "" 223 278 224 #: ulanguages.slang_fr 279 #: languages.slang_fr 280 msgctxt "languages.slang_fr" 225 281 msgid "French" 226 282 msgstr "Francouzština" 227 283 228 #: ulanguages.slang_fr_be229 msgctxt " ulanguages.slang_fr_be"284 #: languages.slang_fr_be 285 msgctxt "languages.slang_fr_be" 230 286 msgid "Walloon" 231 287 msgstr "" 232 288 233 #: ulanguages.slang_fy 289 #: languages.slang_fy 290 msgctxt "languages.slang_fy" 234 291 msgid "Frisian" 235 292 msgstr "" 236 293 237 #: ulanguages.slang_ga 294 #: languages.slang_ga 295 msgctxt "languages.slang_ga" 238 296 msgid "Irish" 239 297 msgstr "Irština" 240 298 241 #: ulanguages.slang_gd 299 #: languages.slang_gd 300 msgctxt "languages.slang_gd" 242 301 msgid "Gaelic" 243 302 msgstr "" 244 303 245 #: ulanguages.slang_gl 304 #: languages.slang_gl 305 msgctxt "languages.slang_gl" 246 306 msgid "Gallegan" 247 307 msgstr "" 248 308 249 #: ulanguages.slang_gn 309 #: languages.slang_gn 310 msgctxt "languages.slang_gn" 250 311 msgid "Guarani" 251 312 msgstr "" 252 313 253 #: ulanguages.slang_gu 314 #: languages.slang_gu 315 msgctxt "languages.slang_gu" 254 316 msgid "Gujarati" 255 317 msgstr "" 256 318 257 #: ulanguages.slang_gv 319 #: languages.slang_gv 320 msgctxt "languages.slang_gv" 258 321 msgid "Manx" 259 322 msgstr "" 260 323 261 #: ulanguages.slang_ha 324 #: languages.slang_ha 325 msgctxt "languages.slang_ha" 262 326 msgid "Hausa" 263 327 msgstr "" 264 328 265 #: ulanguages.slang_he 329 #: languages.slang_he 330 msgctxt "languages.slang_he" 266 331 msgid "Hebrew" 267 332 msgstr "Hebrejština" 268 333 269 #: ulanguages.slang_hi 334 #: languages.slang_hi 335 msgctxt "languages.slang_hi" 270 336 msgid "Hindi" 271 337 msgstr "" 272 338 273 #: ulanguages.slang_ho 339 #: languages.slang_ho 340 msgctxt "languages.slang_ho" 274 341 msgid "Hiri Motu" 275 342 msgstr "" 276 343 277 #: ulanguages.slang_hr 344 #: languages.slang_hr 345 msgctxt "languages.slang_hr" 278 346 msgid "Croatian" 279 347 msgstr "Chorvatština" 280 348 281 #: ulanguages.slang_ht 349 #: languages.slang_ht 350 msgctxt "languages.slang_ht" 282 351 msgid "Haitian" 283 352 msgstr "" 284 353 285 #: ulanguages.slang_hu 354 #: languages.slang_hu 355 msgctxt "languages.slang_hu" 286 356 msgid "Hungarian" 287 357 msgstr "Maďarština" 288 358 289 #: ulanguages.slang_hy 359 #: languages.slang_hy 360 msgctxt "languages.slang_hy" 290 361 msgid "Armenian" 291 362 msgstr "Arménština" 292 363 293 #: ulanguages.slang_hz 364 #: languages.slang_hz 365 msgctxt "languages.slang_hz" 294 366 msgid "Herero" 295 367 msgstr "" 296 368 297 #: ulanguages.slang_ia 369 #: languages.slang_ia 370 msgctxt "languages.slang_ia" 298 371 msgid "Interlingua" 299 372 msgstr "" 300 373 301 #: ulanguages.slang_id 374 #: languages.slang_id 375 msgctxt "languages.slang_id" 302 376 msgid "Indonesian" 303 377 msgstr "" 304 378 305 #: ulanguages.slang_ie 379 #: languages.slang_ie 380 msgctxt "languages.slang_ie" 306 381 msgid "Interlingue" 307 382 msgstr "" 308 383 309 #: ulanguages.slang_ig 384 #: languages.slang_ig 385 msgctxt "languages.slang_ig" 310 386 msgid "Igbo" 311 387 msgstr "" 312 388 313 #: ulanguages.slang_ii 389 #: languages.slang_ii 390 msgctxt "languages.slang_ii" 314 391 msgid "Sichuan Yi" 315 392 msgstr "" 316 393 317 #: ulanguages.slang_ik 394 #: languages.slang_ik 395 msgctxt "languages.slang_ik" 318 396 msgid "Inupiaq" 319 397 msgstr "" 320 398 321 #: ulanguages.slang_io 399 #: languages.slang_io 400 msgctxt "languages.slang_io" 322 401 msgid "Ido" 323 402 msgstr "" 324 403 325 #: ulanguages.slang_is 404 #: languages.slang_is 405 msgctxt "languages.slang_is" 326 406 msgid "Icelandic" 327 407 msgstr "Islandština" 328 408 329 #: ulanguages.slang_it 409 #: languages.slang_it 410 msgctxt "languages.slang_it" 330 411 msgid "Italian" 331 412 msgstr "Italština" 332 413 333 #: ulanguages.slang_iu 414 #: languages.slang_iu 415 msgctxt "languages.slang_iu" 334 416 msgid "Inuktitut" 335 417 msgstr "" 336 418 337 #: ulanguages.slang_ja 419 #: languages.slang_ja 420 msgctxt "languages.slang_ja" 338 421 msgid "Japanese" 339 422 msgstr "Japonština" 340 423 341 #: ulanguages.slang_jv 424 #: languages.slang_jv 425 msgctxt "languages.slang_jv" 342 426 msgid "Javanese" 343 427 msgstr "" 344 428 345 #: ulanguages.slang_ka 429 #: languages.slang_ka 430 msgctxt "languages.slang_ka" 346 431 msgid "Georgian" 347 432 msgstr "Gruzínština" 348 433 349 #: ulanguages.slang_kg 434 #: languages.slang_kg 435 msgctxt "languages.slang_kg" 350 436 msgid "Kongo" 351 437 msgstr "Konžština" 352 438 353 #: ulanguages.slang_ki 439 #: languages.slang_ki 440 msgctxt "languages.slang_ki" 354 441 msgid "Kikuyu" 355 442 msgstr "" 356 443 357 #: ulanguages.slang_kj 444 #: languages.slang_kj 445 msgctxt "languages.slang_kj" 358 446 msgid "Kuanyama" 359 447 msgstr "" 360 448 361 #: ulanguages.slang_kk 449 #: languages.slang_kk 450 msgctxt "languages.slang_kk" 362 451 msgid "Kazakh" 363 452 msgstr "" 364 453 365 #: ulanguages.slang_kl 454 #: languages.slang_kl 455 msgctxt "languages.slang_kl" 366 456 msgid "Greenlandic" 367 457 msgstr "Grónština" 368 458 369 #: ulanguages.slang_km 459 #: languages.slang_km 460 msgctxt "languages.slang_km" 370 461 msgid "Khmer" 371 462 msgstr "" 372 463 373 #: ulanguages.slang_kn 464 #: languages.slang_kn 465 msgctxt "languages.slang_kn" 374 466 msgid "Kannada" 375 467 msgstr "Kannadština" 376 468 377 #: ulanguages.slang_ko 469 #: languages.slang_ko 470 msgctxt "languages.slang_ko" 378 471 msgid "Korean" 379 472 msgstr "Korejština" 380 473 381 #: ulanguages.slang_kr 474 #: languages.slang_kr 475 msgctxt "languages.slang_kr" 382 476 msgid "Kanuri" 383 477 msgstr "" 384 478 385 #: ulanguages.slang_ks 479 #: languages.slang_ks 480 msgctxt "languages.slang_ks" 386 481 msgid "Kashmiri" 387 482 msgstr "" 388 483 389 #: ulanguages.slang_ku 484 #: languages.slang_ku 485 msgctxt "languages.slang_ku" 390 486 msgid "Kurdish" 391 487 msgstr "" 392 488 393 #: ulanguages.slang_kv 489 #: languages.slang_kv 490 msgctxt "languages.slang_kv" 394 491 msgid "Komi" 395 492 msgstr "" 396 493 397 #: ulanguages.slang_kw 494 #: languages.slang_kw 495 msgctxt "languages.slang_kw" 398 496 msgid "Cornish" 399 497 msgstr "Kornština" 400 498 401 #: ulanguages.slang_ky 499 #: languages.slang_ky 500 msgctxt "languages.slang_ky" 402 501 msgid "Kirghiz" 403 502 msgstr "" 404 503 405 #: ulanguages.slang_la 504 #: languages.slang_la 505 msgctxt "languages.slang_la" 406 506 msgid "Latin" 407 507 msgstr "Latina" 408 508 409 #: ulanguages.slang_lb 509 #: languages.slang_lb 510 msgctxt "languages.slang_lb" 410 511 msgid "Luxembourgish" 411 512 msgstr "Lucemburština" 412 513 413 #: ulanguages.slang_lg 514 #: languages.slang_lg 515 msgctxt "languages.slang_lg" 414 516 msgid "Ganda" 415 517 msgstr "" 416 518 417 #: ulanguages.slang_li 519 #: languages.slang_li 520 msgctxt "languages.slang_li" 418 521 msgid "Limburgan" 419 522 msgstr "" 420 523 421 #: ulanguages.slang_ln 524 #: languages.slang_ln 525 msgctxt "languages.slang_ln" 422 526 msgid "Lingala" 423 527 msgstr "" 424 528 425 #: ulanguages.slang_lo 529 #: languages.slang_lo 530 msgctxt "languages.slang_lo" 426 531 msgid "Lao" 427 532 msgstr "Laoština" 428 533 429 #: ulanguages.slang_lt 534 #: languages.slang_lt 535 msgctxt "languages.slang_lt" 430 536 msgid "Lithuanian" 431 537 msgstr "Litevština" 432 538 433 #: ulanguages.slang_lu 539 #: languages.slang_lu 540 msgctxt "languages.slang_lu" 434 541 msgid "Luba-Katanga" 435 542 msgstr "" 436 543 437 #: ulanguages.slang_lv 544 #: languages.slang_lv 545 msgctxt "languages.slang_lv" 438 546 msgid "Latvian" 439 547 msgstr "Lotyština" 440 548 441 #: ulanguages.slang_mg 549 #: languages.slang_mg 550 msgctxt "languages.slang_mg" 442 551 msgid "Malagasy" 443 552 msgstr "" 444 553 445 #: ulanguages.slang_mh 554 #: languages.slang_mh 555 msgctxt "languages.slang_mh" 446 556 msgid "Marshallese" 447 557 msgstr "" 448 558 449 #: ulanguages.slang_mi 559 #: languages.slang_mi 560 msgctxt "languages.slang_mi" 450 561 msgid "Maori" 451 562 msgstr "" 452 563 453 #: ulanguages.slang_mk 564 #: languages.slang_mk 565 msgctxt "languages.slang_mk" 454 566 msgid "Macedonian" 455 567 msgstr "Makedonština" 456 568 457 #: ulanguages.slang_ml 569 #: languages.slang_ml 570 msgctxt "languages.slang_ml" 458 571 msgid "Malayalam" 459 572 msgstr "" 460 573 461 #: ulanguages.slang_mn 574 #: languages.slang_mn 575 msgctxt "languages.slang_mn" 462 576 msgid "Mongolian" 463 577 msgstr "Mongolština" 464 578 465 #: ulanguages.slang_mo 579 #: languages.slang_mo 580 msgctxt "languages.slang_mo" 466 581 msgid "Moldavian" 467 582 msgstr "Moldavština" 468 583 469 #: ulanguages.slang_mr 584 #: languages.slang_mr 585 msgctxt "languages.slang_mr" 470 586 msgid "Marathi" 471 587 msgstr "" 472 588 473 #: ulanguages.slang_ms 589 #: languages.slang_ms 590 msgctxt "languages.slang_ms" 474 591 msgid "Malay" 475 592 msgstr "" 476 593 477 #: ulanguages.slang_mt 594 #: languages.slang_mt 595 msgctxt "languages.slang_mt" 478 596 msgid "Maltese" 479 597 msgstr "" 480 598 481 #: ulanguages.slang_my 599 #: languages.slang_my 600 msgctxt "languages.slang_my" 482 601 msgid "Burmese" 483 602 msgstr "" 484 603 485 #: ulanguages.slang_na 604 #: languages.slang_na 605 msgctxt "languages.slang_na" 486 606 msgid "Nauru" 487 607 msgstr "" 488 608 489 #: ulanguages.slang_nb 609 #: languages.slang_nb 610 msgctxt "languages.slang_nb" 490 611 msgid "Norwegian Bokmaal" 491 612 msgstr "" 492 613 493 #: ulanguages.slang_nd 614 #: languages.slang_nd 615 msgctxt "languages.slang_nd" 494 616 msgid "Ndebele, North" 495 617 msgstr "" 496 618 497 #: ulanguages.slang_ne 619 #: languages.slang_ne 620 msgctxt "languages.slang_ne" 498 621 msgid "Nepali" 499 622 msgstr "" 500 623 501 #: ulanguages.slang_ng 624 #: languages.slang_ng 625 msgctxt "languages.slang_ng" 502 626 msgid "Ndonga" 503 627 msgstr "" 504 628 505 #: ulanguages.slang_nl 629 #: languages.slang_nl 630 msgctxt "languages.slang_nl" 506 631 msgid "Dutch" 507 632 msgstr "Němčina" 508 633 509 #: ulanguages.slang_nl_be 634 #: languages.slang_nl_be 635 msgctxt "languages.slang_nl_be" 510 636 msgid "Flemish" 511 637 msgstr "" 512 638 513 #: ulanguages.slang_nn 639 #: languages.slang_nn 640 msgctxt "languages.slang_nn" 514 641 msgid "Norwegian Nynorsk" 515 642 msgstr "" 516 643 517 #: ulanguages.slang_no 644 #: languages.slang_no 645 msgctxt "languages.slang_no" 518 646 msgid "Norwegian" 519 647 msgstr "Norština" 520 648 521 #: ulanguages.slang_nr 649 #: languages.slang_nr 650 msgctxt "languages.slang_nr" 522 651 msgid "Ndebele, South" 523 652 msgstr "" 524 653 525 #: ulanguages.slang_nv 654 #: languages.slang_nv 655 msgctxt "languages.slang_nv" 526 656 msgid "Navajo" 527 657 msgstr "Navažština" 528 658 529 #: ulanguages.slang_ny 659 #: languages.slang_ny 660 msgctxt "languages.slang_ny" 530 661 msgid "Chichewa" 531 662 msgstr "" 532 663 533 #: ulanguages.slang_oc 664 #: languages.slang_oc 665 msgctxt "languages.slang_oc" 534 666 msgid "Occitan" 535 667 msgstr "" 536 668 537 #: ulanguages.slang_oj 669 #: languages.slang_oj 670 msgctxt "languages.slang_oj" 538 671 msgid "Ojibwa" 539 672 msgstr "" 540 673 541 #: ulanguages.slang_om 674 #: languages.slang_om 675 msgctxt "languages.slang_om" 542 676 msgid "Oromo" 543 677 msgstr "" 544 678 545 #: ulanguages.slang_or 679 #: languages.slang_or 680 msgctxt "languages.slang_or" 546 681 msgid "Oriya" 547 682 msgstr "" 548 683 549 #: ulanguages.slang_os 684 #: languages.slang_os 685 msgctxt "languages.slang_os" 550 686 msgid "Ossetian" 551 687 msgstr "" 552 688 553 #: ulanguages.slang_pa 689 #: languages.slang_pa 690 msgctxt "languages.slang_pa" 554 691 msgid "Panjabi" 555 692 msgstr "" 556 693 557 #: ulanguages.slang_pi 694 #: languages.slang_pi 695 msgctxt "languages.slang_pi" 558 696 msgid "Pali" 559 697 msgstr "" 560 698 561 #: ulanguages.slang_pl 699 #: languages.slang_pl 700 msgctxt "languages.slang_pl" 562 701 msgid "Polish" 563 702 msgstr "Polština" 564 703 565 #: ulanguages.slang_ps 704 #: languages.slang_ps 705 msgctxt "languages.slang_ps" 566 706 msgid "Pushto" 567 707 msgstr "" 568 708 569 #: ulanguages.slang_pt 709 #: languages.slang_pt 710 msgctxt "languages.slang_pt" 570 711 msgid "Portuguese" 571 712 msgstr "Portugalština" 572 713 573 #: ulanguages.slang_pt_br 714 #: languages.slang_pt_br 715 msgctxt "languages.slang_pt_br" 574 716 msgid "Brazilian Portuguese" 575 717 msgstr "Brazislká portugalština" 576 718 577 #: ulanguages.slang_qu 719 #: languages.slang_qu 720 msgctxt "languages.slang_qu" 578 721 msgid "Quechua" 579 722 msgstr "" 580 723 581 #: ulanguages.slang_rm 724 #: languages.slang_rm 725 msgctxt "languages.slang_rm" 582 726 msgid "Raeto-Romance" 583 727 msgstr "" 584 728 585 #: ulanguages.slang_rn 729 #: languages.slang_rn 730 msgctxt "languages.slang_rn" 586 731 msgid "Rundi" 587 732 msgstr "" 588 733 589 #: ulanguages.slang_ro 734 #: languages.slang_ro 735 msgctxt "languages.slang_ro" 590 736 msgid "Romanian" 591 737 msgstr "Romština" 592 738 593 #: ulanguages.slang_ru 739 #: languages.slang_ru 740 msgctxt "languages.slang_ru" 594 741 msgid "Russian" 595 742 msgstr "Ruština" 596 743 597 #: ulanguages.slang_rw 744 #: languages.slang_rw 745 msgctxt "languages.slang_rw" 598 746 msgid "Kinyarwanda" 599 747 msgstr "" 600 748 601 #: ulanguages.slang_sa 749 #: languages.slang_sa 750 msgctxt "languages.slang_sa" 602 751 msgid "Sanskrit" 603 752 msgstr "" 604 753 605 #: ulanguages.slang_sc 754 #: languages.slang_sc 755 msgctxt "languages.slang_sc" 606 756 msgid "Sardinian" 607 757 msgstr "" 608 758 609 #: ulanguages.slang_sd 759 #: languages.slang_sd 760 msgctxt "languages.slang_sd" 610 761 msgid "Sindhi" 611 762 msgstr "" 612 763 613 #: ulanguages.slang_se 764 #: languages.slang_se 765 msgctxt "languages.slang_se" 614 766 msgid "Northern Sami" 615 767 msgstr "" 616 768 617 #: ulanguages.slang_sg 769 #: languages.slang_sg 770 msgctxt "languages.slang_sg" 618 771 msgid "Sango" 619 772 msgstr "" 620 773 621 #: ulanguages.slang_si 774 #: languages.slang_si 775 msgctxt "languages.slang_si" 622 776 msgid "Sinhalese" 623 777 msgstr "" 624 778 625 #: ulanguages.slang_sk 779 #: languages.slang_sk 780 msgctxt "languages.slang_sk" 626 781 msgid "Slovak" 627 782 msgstr "Slovenština" 628 783 629 #: ulanguages.slang_sl 784 #: languages.slang_sl 785 msgctxt "languages.slang_sl" 630 786 msgid "Slovenian" 631 787 msgstr "Slovinština" 632 788 633 #: ulanguages.slang_sm 789 #: languages.slang_sm 790 msgctxt "languages.slang_sm" 634 791 msgid "Samoan" 635 792 msgstr "" 636 793 637 #: ulanguages.slang_sn 794 #: languages.slang_sn 795 msgctxt "languages.slang_sn" 638 796 msgid "Shona" 639 797 msgstr "" 640 798 641 #: ulanguages.slang_so 799 #: languages.slang_so 800 msgctxt "languages.slang_so" 642 801 msgid "Somali" 643 802 msgstr "" 644 803 645 #: ulanguages.slang_sq 804 #: languages.slang_sq 805 msgctxt "languages.slang_sq" 646 806 msgid "Albanian" 647 807 msgstr "Albánština" 648 808 649 #: ulanguages.slang_sr 809 #: languages.slang_sr 810 msgctxt "languages.slang_sr" 650 811 msgid "Serbian" 651 812 msgstr "" 652 813 653 #: ulanguages.slang_ss 814 #: languages.slang_ss 815 msgctxt "languages.slang_ss" 654 816 msgid "Swati" 655 817 msgstr "" 656 818 657 #: ulanguages.slang_st 819 #: languages.slang_st 820 msgctxt "languages.slang_st" 658 821 msgid "Sotho, Southern" 659 822 msgstr "" 660 823 661 #: ulanguages.slang_su 824 #: languages.slang_su 825 msgctxt "languages.slang_su" 662 826 msgid "Sundanese" 663 827 msgstr "Sundština" 664 828 665 #: ulanguages.slang_sv 829 #: languages.slang_sv 830 msgctxt "languages.slang_sv" 666 831 msgid "Swedish" 667 832 msgstr "Švédština" 668 833 669 #: ulanguages.slang_sw 834 #: languages.slang_sw 835 msgctxt "languages.slang_sw" 670 836 msgid "Swahili" 671 837 msgstr "" 672 838 673 #: ulanguages.slang_ta 839 #: languages.slang_ta 840 msgctxt "languages.slang_ta" 674 841 msgid "Tamil" 675 842 msgstr "" 676 843 677 #: ulanguages.slang_te 844 #: languages.slang_te 845 msgctxt "languages.slang_te" 678 846 msgid "Telugu" 679 847 msgstr "" 680 848 681 #: ulanguages.slang_tg 849 #: languages.slang_tg 850 msgctxt "languages.slang_tg" 682 851 msgid "Tajik" 683 852 msgstr "" 684 853 685 #: ulanguages.slang_th 854 #: languages.slang_th 855 msgctxt "languages.slang_th" 686 856 msgid "Thai" 687 857 msgstr "" 688 858 689 #: ulanguages.slang_ti 859 #: languages.slang_ti 860 msgctxt "languages.slang_ti" 690 861 msgid "Tigrinya" 691 862 msgstr "" 692 863 693 #: ulanguages.slang_tk 864 #: languages.slang_tk 865 msgctxt "languages.slang_tk" 694 866 msgid "Turkmen" 695 867 msgstr "" 696 868 697 #: ulanguages.slang_tl 869 #: languages.slang_tl 870 msgctxt "languages.slang_tl" 698 871 msgid "Tagalog" 699 872 msgstr "" 700 873 701 #: ulanguages.slang_tn 874 #: languages.slang_tn 875 msgctxt "languages.slang_tn" 702 876 msgid "Tswana" 703 877 msgstr "" 704 878 705 #: ulanguages.slang_to 879 #: languages.slang_to 880 msgctxt "languages.slang_to" 706 881 msgid "Tonga" 707 882 msgstr "" 708 883 709 #: ulanguages.slang_tr 884 #: languages.slang_tr 885 msgctxt "languages.slang_tr" 710 886 msgid "Turkish" 711 887 msgstr "Turečtina" 712 888 713 #: ulanguages.slang_ts 889 #: languages.slang_ts 890 msgctxt "languages.slang_ts" 714 891 msgid "Tsonga" 715 892 msgstr "" 716 893 717 #: ulanguages.slang_tt 894 #: languages.slang_tt 895 msgctxt "languages.slang_tt" 718 896 msgid "Tatar" 719 897 msgstr "Tatarština" 720 898 721 #: ulanguages.slang_tw 899 #: languages.slang_tw 900 msgctxt "languages.slang_tw" 722 901 msgid "Twi" 723 902 msgstr "" 724 903 725 #: ulanguages.slang_ty 904 #: languages.slang_ty 905 msgctxt "languages.slang_ty" 726 906 msgid "Tahitian" 727 907 msgstr "" 728 908 729 #: ulanguages.slang_ug 909 #: languages.slang_ug 910 msgctxt "languages.slang_ug" 730 911 msgid "Uighur" 731 912 msgstr "" 732 913 733 #: ulanguages.slang_uk 914 #: languages.slang_uk 915 msgctxt "languages.slang_uk" 734 916 msgid "Ukrainian" 735 917 msgstr "Ukrajinština" 736 918 737 #: ulanguages.slang_ur 919 #: languages.slang_ur 920 msgctxt "languages.slang_ur" 738 921 msgid "Urdu" 739 922 msgstr "" 740 923 741 #: ulanguages.slang_uz 924 #: languages.slang_uz 925 msgctxt "languages.slang_uz" 742 926 msgid "Uzbek" 743 927 msgstr "" 744 928 745 #: ulanguages.slang_ve 929 #: languages.slang_ve 930 msgctxt "languages.slang_ve" 746 931 msgid "Venda" 747 932 msgstr "" 748 933 749 #: ulanguages.slang_vi 934 #: languages.slang_vi 935 msgctxt "languages.slang_vi" 750 936 msgid "Vietnamese" 751 937 msgstr "Vietnamština" 752 938 753 #: ulanguages.slang_vo 939 #: languages.slang_vo 940 msgctxt "languages.slang_vo" 754 941 msgid "Volapuk" 755 942 msgstr "" 756 943 757 #: ulanguages.slang_wa758 msgctxt " ulanguages.slang_wa"944 #: languages.slang_wa 945 msgctxt "languages.slang_wa" 759 946 msgid "Walloon" 760 947 msgstr "" 761 948 762 #: ulanguages.slang_wo 949 #: languages.slang_wo 950 msgctxt "languages.slang_wo" 763 951 msgid "Wolof" 764 952 msgstr "" 765 953 766 #: ulanguages.slang_xh 954 #: languages.slang_xh 955 msgctxt "languages.slang_xh" 767 956 msgid "Xhosa" 768 957 msgstr "" 769 958 770 #: ulanguages.slang_yi 959 #: languages.slang_yi 960 msgctxt "languages.slang_yi" 771 961 msgid "Yiddish" 772 962 msgstr "" 773 963 774 #: ulanguages.slang_yo 964 #: languages.slang_yo 965 msgctxt "languages.slang_yo" 775 966 msgid "Yoruba" 776 967 msgstr "" 777 968 778 #: ulanguages.slang_za 969 #: languages.slang_za 970 msgctxt "languages.slang_za" 779 971 msgid "Zhuang" 780 972 msgstr "" 781 973 782 #: ulanguages.slang_zh 974 #: languages.slang_zh 975 msgctxt "languages.slang_zh" 783 976 msgid "Chinese" 784 977 msgstr "Čínština" 785 978 786 #: ulanguages.slang_zu 979 #: languages.slang_zh_hans 980 msgid "Simplified Chinese" 981 msgstr "" 982 983 #: languages.slang_zh_hant 984 msgid "Traditional Chinese" 985 msgstr "" 986 987 #: languages.slang_zu 988 msgctxt "languages.slang_zu" 787 989 msgid "Zulu" 788 990 msgstr "Zuluština" -
trunk/Packages/Common/Languages/Languages.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: ulanguages.slangauto4 #: languages.slangauto 5 5 msgid "Automatic" 6 6 msgstr "" 7 7 8 #: ulanguages.slang_aa8 #: languages.slang_aa 9 9 msgid "Afar" 10 10 msgstr "" 11 11 12 #: ulanguages.slang_ab12 #: languages.slang_ab 13 13 msgid "Abkhazian" 14 14 msgstr "" 15 15 16 #: ulanguages.slang_ae16 #: languages.slang_ae 17 17 msgid "Avestan" 18 18 msgstr "" 19 19 20 #: ulanguages.slang_af20 #: languages.slang_af 21 21 msgid "Afrikaans" 22 22 msgstr "" 23 23 24 #: ulanguages.slang_ak24 #: languages.slang_ak 25 25 msgid "Akan" 26 26 msgstr "" 27 27 28 #: ulanguages.slang_am28 #: languages.slang_am 29 29 msgid "Amharic" 30 30 msgstr "" 31 31 32 #: ulanguages.slang_an32 #: languages.slang_an 33 33 msgid "Aragonese" 34 34 msgstr "" 35 35 36 #: ulanguages.slang_ar36 #: languages.slang_ar 37 37 msgid "Arabic" 38 38 msgstr "" 39 39 40 #: ulanguages.slang_as40 #: languages.slang_as 41 41 msgid "Assamese" 42 42 msgstr "" 43 43 44 #: ulanguages.slang_av44 #: languages.slang_av 45 45 msgid "Avaric" 46 46 msgstr "" 47 47 48 #: ulanguages.slang_ay48 #: languages.slang_ay 49 49 msgid "Aymara" 50 50 msgstr "" 51 51 52 #: ulanguages.slang_az52 #: languages.slang_az 53 53 msgid "Azerbaijani" 54 54 msgstr "" 55 55 56 #: ulanguages.slang_ba56 #: languages.slang_ba 57 57 msgid "Bashkir" 58 58 msgstr "" 59 59 60 #: ulanguages.slang_be60 #: languages.slang_be 61 61 msgid "Belarusian" 62 62 msgstr "" 63 63 64 #: ulanguages.slang_bg64 #: languages.slang_bg 65 65 msgid "Bulgarian" 66 66 msgstr "" 67 67 68 #: ulanguages.slang_bh68 #: languages.slang_bh 69 69 msgid "Bihari" 70 70 msgstr "" 71 71 72 #: ulanguages.slang_bi72 #: languages.slang_bi 73 73 msgid "Bislama" 74 74 msgstr "" 75 75 76 #: ulanguages.slang_bm76 #: languages.slang_bm 77 77 msgid "Bambara" 78 78 msgstr "" 79 79 80 #: ulanguages.slang_bn80 #: languages.slang_bn 81 81 msgid "Bengali" 82 82 msgstr "" 83 83 84 #: ulanguages.slang_bo84 #: languages.slang_bo 85 85 msgid "Tibetan" 86 86 msgstr "" 87 87 88 #: ulanguages.slang_br88 #: languages.slang_br 89 89 msgid "Breton" 90 90 msgstr "" 91 91 92 #: ulanguages.slang_bs92 #: languages.slang_bs 93 93 msgid "Bosnian" 94 94 msgstr "" 95 95 96 #: ulanguages.slang_ca96 #: languages.slang_ca 97 97 msgid "Catalan" 98 98 msgstr "" 99 99 100 #: ulanguages.slang_ce100 #: languages.slang_ce 101 101 msgid "Chechen" 102 102 msgstr "" 103 103 104 #: ulanguages.slang_ch104 #: languages.slang_ch 105 105 msgid "Chamorro" 106 106 msgstr "" 107 107 108 #: ulanguages.slang_co108 #: languages.slang_co 109 109 msgid "Corsican" 110 110 msgstr "" 111 111 112 #: ulanguages.slang_cr112 #: languages.slang_cr 113 113 msgid "Cree" 114 114 msgstr "" 115 115 116 #: ulanguages.slang_cs116 #: languages.slang_cs 117 117 msgid "Czech" 118 118 msgstr "" 119 119 120 #: ulanguages.slang_cv120 #: languages.slang_cv 121 121 msgid "Chuvash" 122 122 msgstr "" 123 123 124 #: ulanguages.slang_cy124 #: languages.slang_cy 125 125 msgid "Welsh" 126 126 msgstr "" 127 127 128 #: ulanguages.slang_da128 #: languages.slang_da 129 129 msgid "Danish" 130 130 msgstr "" 131 131 132 #: ulanguages.slang_de132 #: languages.slang_de 133 133 msgid "German" 134 134 msgstr "" 135 135 136 #: ulanguages.slang_de_at136 #: languages.slang_de_at 137 137 msgid "Austrian German" 138 138 msgstr "" 139 139 140 #: ulanguages.slang_de_ch140 #: languages.slang_de_ch 141 141 msgid "Swiss German" 142 142 msgstr "" 143 143 144 #: ulanguages.slang_dv144 #: languages.slang_dv 145 145 msgid "Divehi" 146 146 msgstr "" 147 147 148 #: ulanguages.slang_dz148 #: languages.slang_dz 149 149 msgid "Dzongkha" 150 150 msgstr "" 151 151 152 #: ulanguages.slang_ee152 #: languages.slang_ee 153 153 msgid "Ewe" 154 154 msgstr "" 155 155 156 #: ulanguages.slang_el156 #: languages.slang_el 157 157 msgid "Greek" 158 158 msgstr "" 159 159 160 #: ulanguages.slang_en160 #: languages.slang_en 161 161 msgid "English" 162 162 msgstr "" 163 163 164 #: ulanguages.slang_en_au164 #: languages.slang_en_au 165 165 msgid "Australian English" 166 166 msgstr "" 167 167 168 #: ulanguages.slang_en_ca168 #: languages.slang_en_ca 169 169 msgid "Canadian English" 170 170 msgstr "" 171 171 172 #: ulanguages.slang_en_gb172 #: languages.slang_en_gb 173 173 msgid "British English" 174 174 msgstr "" 175 175 176 #: ulanguages.slang_en_us176 #: languages.slang_en_us 177 177 msgid "American English" 178 178 msgstr "" 179 179 180 #: ulanguages.slang_eo180 #: languages.slang_eo 181 181 msgid "Esperanto" 182 182 msgstr "" 183 183 184 #: ulanguages.slang_es184 #: languages.slang_es 185 185 msgid "Spanish" 186 186 msgstr "" 187 187 188 #: ulanguages.slang_et188 #: languages.slang_et 189 189 msgid "Estonian" 190 190 msgstr "" 191 191 192 #: ulanguages.slang_eu192 #: languages.slang_eu 193 193 msgid "Basque" 194 194 msgstr "" 195 195 196 #: ulanguages.slang_fa196 #: languages.slang_fa 197 197 msgid "Persian" 198 198 msgstr "" 199 199 200 #: ulanguages.slang_ff200 #: languages.slang_ff 201 201 msgid "Fulah" 202 202 msgstr "" 203 203 204 #: ulanguages.slang_fi204 #: languages.slang_fi 205 205 msgid "Finnish" 206 206 msgstr "" 207 207 208 #: ulanguages.slang_fj208 #: languages.slang_fj 209 209 msgid "Fijian" 210 210 msgstr "" 211 211 212 #: ulanguages.slang_fo212 #: languages.slang_fo 213 213 msgid "Faroese" 214 214 msgstr "" 215 215 216 #: ulanguages.slang_fr216 #: languages.slang_fr 217 217 msgid "French" 218 218 msgstr "" 219 219 220 #: ulanguages.slang_fr_be221 msgctxt " ulanguages.slang_fr_be"220 #: languages.slang_fr_be 221 msgctxt "languages.slang_fr_be" 222 222 msgid "Walloon" 223 223 msgstr "" 224 224 225 #: ulanguages.slang_fy225 #: languages.slang_fy 226 226 msgid "Frisian" 227 227 msgstr "" 228 228 229 #: ulanguages.slang_ga229 #: languages.slang_ga 230 230 msgid "Irish" 231 231 msgstr "" 232 232 233 #: ulanguages.slang_gd233 #: languages.slang_gd 234 234 msgid "Gaelic" 235 235 msgstr "" 236 236 237 #: ulanguages.slang_gl237 #: languages.slang_gl 238 238 msgid "Gallegan" 239 239 msgstr "" 240 240 241 #: ulanguages.slang_gn241 #: languages.slang_gn 242 242 msgid "Guarani" 243 243 msgstr "" 244 244 245 #: ulanguages.slang_gu245 #: languages.slang_gu 246 246 msgid "Gujarati" 247 247 msgstr "" 248 248 249 #: ulanguages.slang_gv249 #: languages.slang_gv 250 250 msgid "Manx" 251 251 msgstr "" 252 252 253 #: ulanguages.slang_ha253 #: languages.slang_ha 254 254 msgid "Hausa" 255 255 msgstr "" 256 256 257 #: ulanguages.slang_he257 #: languages.slang_he 258 258 msgid "Hebrew" 259 259 msgstr "" 260 260 261 #: ulanguages.slang_hi261 #: languages.slang_hi 262 262 msgid "Hindi" 263 263 msgstr "" 264 264 265 #: ulanguages.slang_ho265 #: languages.slang_ho 266 266 msgid "Hiri Motu" 267 267 msgstr "" 268 268 269 #: ulanguages.slang_hr269 #: languages.slang_hr 270 270 msgid "Croatian" 271 271 msgstr "" 272 272 273 #: ulanguages.slang_ht273 #: languages.slang_ht 274 274 msgid "Haitian" 275 275 msgstr "" 276 276 277 #: ulanguages.slang_hu277 #: languages.slang_hu 278 278 msgid "Hungarian" 279 279 msgstr "" 280 280 281 #: ulanguages.slang_hy281 #: languages.slang_hy 282 282 msgid "Armenian" 283 283 msgstr "" 284 284 285 #: ulanguages.slang_hz285 #: languages.slang_hz 286 286 msgid "Herero" 287 287 msgstr "" 288 288 289 #: ulanguages.slang_ia289 #: languages.slang_ia 290 290 msgid "Interlingua" 291 291 msgstr "" 292 292 293 #: ulanguages.slang_id293 #: languages.slang_id 294 294 msgid "Indonesian" 295 295 msgstr "" 296 296 297 #: ulanguages.slang_ie297 #: languages.slang_ie 298 298 msgid "Interlingue" 299 299 msgstr "" 300 300 301 #: ulanguages.slang_ig301 #: languages.slang_ig 302 302 msgid "Igbo" 303 303 msgstr "" 304 304 305 #: ulanguages.slang_ii305 #: languages.slang_ii 306 306 msgid "Sichuan Yi" 307 307 msgstr "" 308 308 309 #: ulanguages.slang_ik309 #: languages.slang_ik 310 310 msgid "Inupiaq" 311 311 msgstr "" 312 312 313 #: ulanguages.slang_io313 #: languages.slang_io 314 314 msgid "Ido" 315 315 msgstr "" 316 316 317 #: ulanguages.slang_is317 #: languages.slang_is 318 318 msgid "Icelandic" 319 319 msgstr "" 320 320 321 #: ulanguages.slang_it321 #: languages.slang_it 322 322 msgid "Italian" 323 323 msgstr "" 324 324 325 #: ulanguages.slang_iu325 #: languages.slang_iu 326 326 msgid "Inuktitut" 327 327 msgstr "" 328 328 329 #: ulanguages.slang_ja329 #: languages.slang_ja 330 330 msgid "Japanese" 331 331 msgstr "" 332 332 333 #: ulanguages.slang_jv333 #: languages.slang_jv 334 334 msgid "Javanese" 335 335 msgstr "" 336 336 337 #: ulanguages.slang_ka337 #: languages.slang_ka 338 338 msgid "Georgian" 339 339 msgstr "" 340 340 341 #: ulanguages.slang_kg341 #: languages.slang_kg 342 342 msgid "Kongo" 343 343 msgstr "" 344 344 345 #: ulanguages.slang_ki345 #: languages.slang_ki 346 346 msgid "Kikuyu" 347 347 msgstr "" 348 348 349 #: ulanguages.slang_kj349 #: languages.slang_kj 350 350 msgid "Kuanyama" 351 351 msgstr "" 352 352 353 #: ulanguages.slang_kk353 #: languages.slang_kk 354 354 msgid "Kazakh" 355 355 msgstr "" 356 356 357 #: ulanguages.slang_kl357 #: languages.slang_kl 358 358 msgid "Greenlandic" 359 359 msgstr "" 360 360 361 #: ulanguages.slang_km361 #: languages.slang_km 362 362 msgid "Khmer" 363 363 msgstr "" 364 364 365 #: ulanguages.slang_kn365 #: languages.slang_kn 366 366 msgid "Kannada" 367 367 msgstr "" 368 368 369 #: ulanguages.slang_ko369 #: languages.slang_ko 370 370 msgid "Korean" 371 371 msgstr "" 372 372 373 #: ulanguages.slang_kr373 #: languages.slang_kr 374 374 msgid "Kanuri" 375 375 msgstr "" 376 376 377 #: ulanguages.slang_ks377 #: languages.slang_ks 378 378 msgid "Kashmiri" 379 379 msgstr "" 380 380 381 #: ulanguages.slang_ku381 #: languages.slang_ku 382 382 msgid "Kurdish" 383 383 msgstr "" 384 384 385 #: ulanguages.slang_kv385 #: languages.slang_kv 386 386 msgid "Komi" 387 387 msgstr "" 388 388 389 #: ulanguages.slang_kw389 #: languages.slang_kw 390 390 msgid "Cornish" 391 391 msgstr "" 392 392 393 #: ulanguages.slang_ky393 #: languages.slang_ky 394 394 msgid "Kirghiz" 395 395 msgstr "" 396 396 397 #: ulanguages.slang_la397 #: languages.slang_la 398 398 msgid "Latin" 399 399 msgstr "" 400 400 401 #: ulanguages.slang_lb401 #: languages.slang_lb 402 402 msgid "Luxembourgish" 403 403 msgstr "" 404 404 405 #: ulanguages.slang_lg405 #: languages.slang_lg 406 406 msgid "Ganda" 407 407 msgstr "" 408 408 409 #: ulanguages.slang_li409 #: languages.slang_li 410 410 msgid "Limburgan" 411 411 msgstr "" 412 412 413 #: ulanguages.slang_ln413 #: languages.slang_ln 414 414 msgid "Lingala" 415 415 msgstr "" 416 416 417 #: ulanguages.slang_lo417 #: languages.slang_lo 418 418 msgid "Lao" 419 419 msgstr "" 420 420 421 #: ulanguages.slang_lt421 #: languages.slang_lt 422 422 msgid "Lithuanian" 423 423 msgstr "" 424 424 425 #: ulanguages.slang_lu425 #: languages.slang_lu 426 426 msgid "Luba-Katanga" 427 427 msgstr "" 428 428 429 #: ulanguages.slang_lv429 #: languages.slang_lv 430 430 msgid "Latvian" 431 431 msgstr "" 432 432 433 #: ulanguages.slang_mg433 #: languages.slang_mg 434 434 msgid "Malagasy" 435 435 msgstr "" 436 436 437 #: ulanguages.slang_mh437 #: languages.slang_mh 438 438 msgid "Marshallese" 439 439 msgstr "" 440 440 441 #: ulanguages.slang_mi441 #: languages.slang_mi 442 442 msgid "Maori" 443 443 msgstr "" 444 444 445 #: ulanguages.slang_mk445 #: languages.slang_mk 446 446 msgid "Macedonian" 447 447 msgstr "" 448 448 449 #: ulanguages.slang_ml449 #: languages.slang_ml 450 450 msgid "Malayalam" 451 451 msgstr "" 452 452 453 #: ulanguages.slang_mn453 #: languages.slang_mn 454 454 msgid "Mongolian" 455 455 msgstr "" 456 456 457 #: ulanguages.slang_mo457 #: languages.slang_mo 458 458 msgid "Moldavian" 459 459 msgstr "" 460 460 461 #: ulanguages.slang_mr461 #: languages.slang_mr 462 462 msgid "Marathi" 463 463 msgstr "" 464 464 465 #: ulanguages.slang_ms465 #: languages.slang_ms 466 466 msgid "Malay" 467 467 msgstr "" 468 468 469 #: ulanguages.slang_mt469 #: languages.slang_mt 470 470 msgid "Maltese" 471 471 msgstr "" 472 472 473 #: ulanguages.slang_my473 #: languages.slang_my 474 474 msgid "Burmese" 475 475 msgstr "" 476 476 477 #: ulanguages.slang_na477 #: languages.slang_na 478 478 msgid "Nauru" 479 479 msgstr "" 480 480 481 #: ulanguages.slang_nb481 #: languages.slang_nb 482 482 msgid "Norwegian Bokmaal" 483 483 msgstr "" 484 484 485 #: ulanguages.slang_nd485 #: languages.slang_nd 486 486 msgid "Ndebele, North" 487 487 msgstr "" 488 488 489 #: ulanguages.slang_ne489 #: languages.slang_ne 490 490 msgid "Nepali" 491 491 msgstr "" 492 492 493 #: ulanguages.slang_ng493 #: languages.slang_ng 494 494 msgid "Ndonga" 495 495 msgstr "" 496 496 497 #: ulanguages.slang_nl497 #: languages.slang_nl 498 498 msgid "Dutch" 499 499 msgstr "" 500 500 501 #: ulanguages.slang_nl_be501 #: languages.slang_nl_be 502 502 msgid "Flemish" 503 503 msgstr "" 504 504 505 #: ulanguages.slang_nn505 #: languages.slang_nn 506 506 msgid "Norwegian Nynorsk" 507 507 msgstr "" 508 508 509 #: ulanguages.slang_no509 #: languages.slang_no 510 510 msgid "Norwegian" 511 511 msgstr "" 512 512 513 #: ulanguages.slang_nr513 #: languages.slang_nr 514 514 msgid "Ndebele, South" 515 515 msgstr "" 516 516 517 #: ulanguages.slang_nv517 #: languages.slang_nv 518 518 msgid "Navajo" 519 519 msgstr "" 520 520 521 #: ulanguages.slang_ny521 #: languages.slang_ny 522 522 msgid "Chichewa" 523 523 msgstr "" 524 524 525 #: ulanguages.slang_oc525 #: languages.slang_oc 526 526 msgid "Occitan" 527 527 msgstr "" 528 528 529 #: ulanguages.slang_oj529 #: languages.slang_oj 530 530 msgid "Ojibwa" 531 531 msgstr "" 532 532 533 #: ulanguages.slang_om533 #: languages.slang_om 534 534 msgid "Oromo" 535 535 msgstr "" 536 536 537 #: ulanguages.slang_or537 #: languages.slang_or 538 538 msgid "Oriya" 539 539 msgstr "" 540 540 541 #: ulanguages.slang_os541 #: languages.slang_os 542 542 msgid "Ossetian" 543 543 msgstr "" 544 544 545 #: ulanguages.slang_pa545 #: languages.slang_pa 546 546 msgid "Panjabi" 547 547 msgstr "" 548 548 549 #: ulanguages.slang_pi549 #: languages.slang_pi 550 550 msgid "Pali" 551 551 msgstr "" 552 552 553 #: ulanguages.slang_pl553 #: languages.slang_pl 554 554 msgid "Polish" 555 555 msgstr "" 556 556 557 #: ulanguages.slang_ps557 #: languages.slang_ps 558 558 msgid "Pushto" 559 559 msgstr "" 560 560 561 #: ulanguages.slang_pt561 #: languages.slang_pt 562 562 msgid "Portuguese" 563 563 msgstr "" 564 564 565 #: ulanguages.slang_pt_br565 #: languages.slang_pt_br 566 566 msgid "Brazilian Portuguese" 567 567 msgstr "" 568 568 569 #: ulanguages.slang_qu569 #: languages.slang_qu 570 570 msgid "Quechua" 571 571 msgstr "" 572 572 573 #: ulanguages.slang_rm573 #: languages.slang_rm 574 574 msgid "Raeto-Romance" 575 575 msgstr "" 576 576 577 #: ulanguages.slang_rn577 #: languages.slang_rn 578 578 msgid "Rundi" 579 579 msgstr "" 580 580 581 #: ulanguages.slang_ro581 #: languages.slang_ro 582 582 msgid "Romanian" 583 583 msgstr "" 584 584 585 #: ulanguages.slang_ru585 #: languages.slang_ru 586 586 msgid "Russian" 587 587 msgstr "" 588 588 589 #: ulanguages.slang_rw589 #: languages.slang_rw 590 590 msgid "Kinyarwanda" 591 591 msgstr "" 592 592 593 #: ulanguages.slang_sa593 #: languages.slang_sa 594 594 msgid "Sanskrit" 595 595 msgstr "" 596 596 597 #: ulanguages.slang_sc597 #: languages.slang_sc 598 598 msgid "Sardinian" 599 599 msgstr "" 600 600 601 #: ulanguages.slang_sd601 #: languages.slang_sd 602 602 msgid "Sindhi" 603 603 msgstr "" 604 604 605 #: ulanguages.slang_se605 #: languages.slang_se 606 606 msgid "Northern Sami" 607 607 msgstr "" 608 608 609 #: ulanguages.slang_sg609 #: languages.slang_sg 610 610 msgid "Sango" 611 611 msgstr "" 612 612 613 #: ulanguages.slang_si613 #: languages.slang_si 614 614 msgid "Sinhalese" 615 615 msgstr "" 616 616 617 #: ulanguages.slang_sk617 #: languages.slang_sk 618 618 msgid "Slovak" 619 619 msgstr "" 620 620 621 #: ulanguages.slang_sl621 #: languages.slang_sl 622 622 msgid "Slovenian" 623 623 msgstr "" 624 624 625 #: ulanguages.slang_sm625 #: languages.slang_sm 626 626 msgid "Samoan" 627 627 msgstr "" 628 628 629 #: ulanguages.slang_sn629 #: languages.slang_sn 630 630 msgid "Shona" 631 631 msgstr "" 632 632 633 #: ulanguages.slang_so633 #: languages.slang_so 634 634 msgid "Somali" 635 635 msgstr "" 636 636 637 #: ulanguages.slang_sq637 #: languages.slang_sq 638 638 msgid "Albanian" 639 639 msgstr "" 640 640 641 #: ulanguages.slang_sr641 #: languages.slang_sr 642 642 msgid "Serbian" 643 643 msgstr "" 644 644 645 #: ulanguages.slang_ss645 #: languages.slang_ss 646 646 msgid "Swati" 647 647 msgstr "" 648 648 649 #: ulanguages.slang_st649 #: languages.slang_st 650 650 msgid "Sotho, Southern" 651 651 msgstr "" 652 652 653 #: ulanguages.slang_su653 #: languages.slang_su 654 654 msgid "Sundanese" 655 655 msgstr "" 656 656 657 #: ulanguages.slang_sv657 #: languages.slang_sv 658 658 msgid "Swedish" 659 659 msgstr "" 660 660 661 #: ulanguages.slang_sw661 #: languages.slang_sw 662 662 msgid "Swahili" 663 663 msgstr "" 664 664 665 #: ulanguages.slang_ta665 #: languages.slang_ta 666 666 msgid "Tamil" 667 667 msgstr "" 668 668 669 #: ulanguages.slang_te669 #: languages.slang_te 670 670 msgid "Telugu" 671 671 msgstr "" 672 672 673 #: ulanguages.slang_tg673 #: languages.slang_tg 674 674 msgid "Tajik" 675 675 msgstr "" 676 676 677 #: ulanguages.slang_th677 #: languages.slang_th 678 678 msgid "Thai" 679 679 msgstr "" 680 680 681 #: ulanguages.slang_ti681 #: languages.slang_ti 682 682 msgid "Tigrinya" 683 683 msgstr "" 684 684 685 #: ulanguages.slang_tk685 #: languages.slang_tk 686 686 msgid "Turkmen" 687 687 msgstr "" 688 688 689 #: ulanguages.slang_tl689 #: languages.slang_tl 690 690 msgid "Tagalog" 691 691 msgstr "" 692 692 693 #: ulanguages.slang_tn693 #: languages.slang_tn 694 694 msgid "Tswana" 695 695 msgstr "" 696 696 697 #: ulanguages.slang_to697 #: languages.slang_to 698 698 msgid "Tonga" 699 699 msgstr "" 700 700 701 #: ulanguages.slang_tr701 #: languages.slang_tr 702 702 msgid "Turkish" 703 703 msgstr "" 704 704 705 #: ulanguages.slang_ts705 #: languages.slang_ts 706 706 msgid "Tsonga" 707 707 msgstr "" 708 708 709 #: ulanguages.slang_tt709 #: languages.slang_tt 710 710 msgid "Tatar" 711 711 msgstr "" 712 712 713 #: ulanguages.slang_tw713 #: languages.slang_tw 714 714 msgid "Twi" 715 715 msgstr "" 716 716 717 #: ulanguages.slang_ty717 #: languages.slang_ty 718 718 msgid "Tahitian" 719 719 msgstr "" 720 720 721 #: ulanguages.slang_ug721 #: languages.slang_ug 722 722 msgid "Uighur" 723 723 msgstr "" 724 724 725 #: ulanguages.slang_uk725 #: languages.slang_uk 726 726 msgid "Ukrainian" 727 727 msgstr "" 728 728 729 #: ulanguages.slang_ur729 #: languages.slang_ur 730 730 msgid "Urdu" 731 731 msgstr "" 732 732 733 #: ulanguages.slang_uz733 #: languages.slang_uz 734 734 msgid "Uzbek" 735 735 msgstr "" 736 736 737 #: ulanguages.slang_ve737 #: languages.slang_ve 738 738 msgid "Venda" 739 739 msgstr "" 740 740 741 #: ulanguages.slang_vi741 #: languages.slang_vi 742 742 msgid "Vietnamese" 743 743 msgstr "" 744 744 745 #: ulanguages.slang_vo745 #: languages.slang_vo 746 746 msgid "Volapuk" 747 747 msgstr "" 748 748 749 #: ulanguages.slang_wa750 msgctxt " ulanguages.slang_wa"749 #: languages.slang_wa 750 msgctxt "languages.slang_wa" 751 751 msgid "Walloon" 752 752 msgstr "" 753 753 754 #: ulanguages.slang_wo754 #: languages.slang_wo 755 755 msgid "Wolof" 756 756 msgstr "" 757 757 758 #: ulanguages.slang_xh758 #: languages.slang_xh 759 759 msgid "Xhosa" 760 760 msgstr "" 761 761 762 #: ulanguages.slang_yi762 #: languages.slang_yi 763 763 msgid "Yiddish" 764 764 msgstr "" 765 765 766 #: ulanguages.slang_yo766 #: languages.slang_yo 767 767 msgid "Yoruba" 768 768 msgstr "" 769 769 770 #: ulanguages.slang_za770 #: languages.slang_za 771 771 msgid "Zhuang" 772 772 msgstr "" 773 773 774 #: ulanguages.slang_zh774 #: languages.slang_zh 775 775 msgid "Chinese" 776 776 msgstr "" 777 777 778 #: ulanguages.slang_zu 778 #: languages.slang_zh_hans 779 msgid "Simplified Chinese" 780 msgstr "" 781 782 #: languages.slang_zh_hant 783 msgid "Traditional Chinese" 784 msgstr "" 785 786 #: languages.slang_zu 779 787 msgid "Zulu" 780 788 msgstr "" -
trunk/Packages/Common/Languages/Pool.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Chronos <robie@centrum.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 12 "X-Generator: Poedit 3.0.1\n" 11 13 12 #: upool.sobjectpoolempty 14 #: pool.sobjectpoolempty 15 msgctxt "pool.sobjectpoolempty" 13 16 msgid "Object pool is empty" 14 17 msgstr "Zásobník objektů je prázdný" 15 18 16 #: upool.sreleaseerror 19 #: pool.sreleaseerror 20 msgctxt "pool.sreleaseerror" 17 21 msgid "Unknown object for release from pool" 18 22 msgstr "Neznýmý objekt pro uvolnění ze zásobníku" -
trunk/Packages/Common/Languages/Pool.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: upool.sobjectpoolempty4 #: pool.sobjectpoolempty 5 5 msgid "Object pool is empty" 6 6 msgstr "" 7 7 8 #: upool.sreleaseerror8 #: pool.sreleaseerror 9 9 msgid "Unknown object for release from pool" 10 10 msgstr "" -
trunk/Packages/Common/Languages/ResetableThread.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Chronos <robie@centrum.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 12 "X-Generator: Poedit 3.0.1\n" 11 13 12 #: uresetablethread.swaiterror 14 #: resetablethread.swaiterror 15 msgctxt "resetablethread.swaiterror" 13 16 msgid "WaitFor error" 14 17 msgstr "Chyba WaitFor" -
trunk/Packages/Common/Languages/ResetableThread.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: uresetablethread.swaiterror4 #: resetablethread.swaiterror 5 5 msgid "WaitFor error" 6 6 msgstr "" -
trunk/Packages/Common/Languages/ScaleDPI.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: \n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "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" 13 13 14 #: uscaledpi.swrongdpi14 #: scaledpi.swrongdpi 15 15 #, object-pascal-format 16 msgctxt "scaledpi.swrongdpi" 16 17 msgid "Wrong DPI [%d,%d]" 17 18 msgstr "Chybné DPI [%d,%d]" -
trunk/Packages/Common/Languages/ScaleDPI.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: uscaledpi.swrongdpi4 #: scaledpi.swrongdpi 5 5 #, object-pascal-format 6 6 msgid "Wrong DPI [%d,%d]" -
trunk/Packages/Common/Languages/Threading.cs.po
r218 r219 1 1 msgid "" 2 2 msgstr "" 3 "Content-Type: text/plain; charset=UTF-8\n"4 3 "Project-Id-Version: \n" 5 4 "POT-Creation-Date: \n" … … 7 6 "Last-Translator: Chronos <robie@centrum.cz>\n" 8 7 "Language-Team: \n" 8 "Language: cs\n" 9 9 "MIME-Version: 1.0\n" 10 "Content-Type: text/plain; charset=UTF-8\n" 10 11 "Content-Transfer-Encoding: 8bit\n" 12 "X-Generator: Poedit 3.0.1\n" 11 13 12 #: uthreading.scurrentthreadnotfound14 #: threading.scurrentthreadnotfound 13 15 #, object-pascal-format 16 msgctxt "threading.scurrentthreadnotfound" 14 17 msgid "Current thread ID %d not found in virtual thread list." 15 18 msgstr "Aktuální vlákno ID %d nenalezeno v seznamu virtuálních vláken." -
trunk/Packages/Common/Languages/Threading.pot
r218 r219 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 3 4 #: uthreading.scurrentthreadnotfound4 #: threading.scurrentthreadnotfound 5 5 #, object-pascal-format 6 6 msgid "Current thread ID %d not found in virtual thread list." -
trunk/Packages/Common/LastOpenedList.pas
r218 r219 1 unit ULastOpenedList; 2 3 {$mode delphi} 1 unit LastOpenedList; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Registry, URegistry, Menus, XMLConf, DOM;6 Classes, SysUtils, Registry, RegistryEx, Menus, XMLConf, DOM; 9 7 10 8 type … … 84 82 destructor TLastOpenedList.Destroy; 85 83 begin 86 Items.Free;84 FreeAndNil(Items); 87 85 inherited; 88 86 end; … … 94 92 begin 95 93 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; 97 100 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; 102 103 end; 103 104 end; … … 193 194 194 195 end. 195 -
trunk/Packages/Common/ListViewSort.pas
r218 r219 1 unit UListViewSort;1 unit ListViewSort; 2 2 3 3 // Date: 2019-05-17 4 5 {$mode delphi}6 4 7 5 interface … … 9 7 uses 10 8 {$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; 13 11 14 12 type … … 19 17 TCompareEvent = function (Item1, Item2: TObject): Integer of object; 20 18 TListFilterEvent = procedure (ListViewSort: TListViewSort) of object; 19 20 TObjects = TObjectList<TObject>; 21 21 22 22 { TListViewSort } … … 52 52 {$ENDIF} 53 53 public 54 List: TFPGObjectList<TObject>;55 Source: TFPGObjectList<TObject>;54 Source: TObjects; 55 List: TObjects; 56 56 constructor Create(AOwner: TComponent); override; 57 57 destructor Destroy; override; … … 136 136 constructor TListViewEx.Create(TheOwner: TComponent); 137 137 begin 138 inherited Create(TheOwner);138 inherited; 139 139 Filter := TListViewFilter.Create(Self); 140 140 Filter.Parent := Self; … … 149 149 destructor TListViewEx.Destroy; 150 150 begin 151 inherited Destroy;151 inherited; 152 152 end; 153 153 … … 172 172 constructor TListViewFilter.Create(AOwner: TComponent); 173 173 begin 174 inherited Create(AOwner);174 inherited; 175 175 FStringGrid1 := TStringGrid.Create(Self); 176 176 FStringGrid1.Align := alClient; … … 338 338 ListViewSortCompare: TCompareEvent; 339 339 340 function ListViewCompare(const Item1, Item2: TObject): Integer;340 function ListViewCompare(constref Item1, Item2: TObject): Integer; 341 341 begin 342 342 Result := ListViewSortCompare(Item1, Item2); … … 349 349 ListViewSortCompare := Compare; 350 350 if (List.Count > 0) then 351 List.Sort( ListViewCompare);351 List.Sort(TComparer<TObject>.Construct(ListViewCompare)); 352 352 end; 353 353 … … 355 355 begin 356 356 if Assigned(FOnFilter) then FOnFilter(Self) 357 else if Assigned(Source) then 358 List.Assign(Source) else 357 else if Assigned(Source) then begin 359 358 List.Clear; 359 List.AddRange(Source); 360 end; 360 361 if ListView.Items.Count <> List.Count then 361 362 ListView.Items.Count := List.Count; … … 412 413 begin 413 414 inherited; 414 List := T FPGObjectList<TObject>.Create;415 List. FreeObjects := False;415 List := TObjects.Create; 416 List.OwnsObjects := False; 416 417 end; 417 418 418 419 destructor TListViewSort.Destroy; 419 420 begin 420 List.Free;421 FreeAndNil(List); 421 422 inherited; 422 423 end; -
trunk/Packages/Common/Memory.pas
r218 r219 1 unit UMemory; 2 3 {$mode Delphi}{$H+} 1 unit Memory; 4 2 5 3 interface … … 44 42 end; 45 43 44 46 45 implementation 47 46 … … 50 49 procedure TPositionMemory.SetSize(AValue: Integer); 51 50 begin 52 inherited SetSize(AValue);51 inherited; 53 52 if FPosition > FSize then FPosition := FSize; 54 53 end; … … 107 106 begin 108 107 Size := 0; 109 inherited Destroy;108 inherited; 110 109 end; 111 110 … … 121 120 122 121 end. 123 -
trunk/Packages/Common/MetaCanvas.pas
r218 r219 1 unit UMetaCanvas; 2 3 {$mode delphi} 1 unit MetaCanvas; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Graphics, Types, fgl;6 Classes, SysUtils, Graphics, Types, Generics.Collections; 9 7 10 8 type … … 19 17 end; 20 18 21 TCanvasObjects = class(T FPGObjectList<TCanvasObject>)19 TCanvasObjects = class(TObjectList<TCanvasObject>) 22 20 end; 23 21 … … 65 63 66 64 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) 67 91 Pen: TPen; 68 92 Brush: TBrush; … … 126 150 procedure SetWidth(AValue: Integer); override; 127 151 function GetWidth: Integer; override; 128 procedure DoLine (x1,y1,x2,y2:integer); override;152 procedure DoLine(X1, Y1, X2, Y2: Integer); override; 129 153 procedure DoTextOut(X, Y: Integer; Text: string); override; 130 154 procedure DoRectangle(const Bounds: TRect); override; … … 135 159 procedure DoMoveTo(X, Y: Integer); override; 136 160 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; 137 164 public 138 165 Objects: TCanvasObjects; … … 143 170 procedure TextOut(X,Y: Integer; const Text: String); override; 144 171 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; 145 175 procedure Ellipse(x1, y1, x2, y2: Integer); override; 146 176 procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override; … … 161 191 162 192 uses 163 UGeometric, LCLIntf; 193 Geometric, LCLIntf; 194 195 { TCanvasPolyBezier } 196 197 procedure TCanvasPolyBezier.Paint(Canvas: TCanvas); 198 begin 199 Canvas.Pen.Assign(Pen); 200 Canvas.Brush.Assign(Brush); 201 Canvas.PolyBezier(Points); 202 end; 203 204 procedure TCanvasPolyBezier.Zoom(Factor: Double); 205 var 206 I: Integer; 207 begin 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); 212 end; 213 214 procedure TCanvasPolyBezier.Move(Delta: TPoint); 215 var 216 I: Integer; 217 begin 218 for I := 0 to High(Points) do 219 Points[I] := AddPoint(Points[I], Delta); 220 end; 221 222 constructor TCanvasPolyBezier.Create; 223 begin 224 Pen := TPen.Create; 225 Brush := TBrush.Create; 226 end; 227 228 destructor TCanvasPolyBezier.Destroy; 229 begin 230 FreeAndNil(Brush); 231 FreeAndNil(Pen); 232 inherited; 233 end; 234 235 { TCanvasPolyline } 236 237 procedure TCanvasPolyline.Paint(Canvas: TCanvas); 238 begin 239 Canvas.Pen.Assign(Pen); 240 Canvas.Brush.Assign(Brush); 241 Canvas.Polyline(Points); 242 end; 243 244 procedure TCanvasPolyline.Zoom(Factor: Double); 245 var 246 I: Integer; 247 begin 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); 252 end; 253 254 procedure TCanvasPolyline.Move(Delta: TPoint); 255 var 256 I: Integer; 257 begin 258 for I := 0 to High(Points) do 259 Points[I] := AddPoint(Points[I], Delta); 260 end; 261 262 constructor TCanvasPolyline.Create; 263 begin 264 Pen := TPen.Create; 265 Brush := TBrush.Create; 266 end; 267 268 destructor TCanvasPolyline.Destroy; 269 begin 270 FreeAndNil(Brush); 271 FreeAndNil(Pen); 272 inherited; 273 end; 164 274 165 275 { TCanvasPie } … … 306 416 destructor TCanvasPolygon.Destroy; 307 417 begin 308 Brush.Free;309 Pen.Free;418 FreeAndNil(Brush); 419 FreeAndNil(Pen); 310 420 inherited; 311 421 end; … … 453 563 end; 454 564 455 procedure TMetaCanvas.DoLine( x1, y1, x2, y2: integer);565 procedure TMetaCanvas.DoLine(X1, Y1, X2, Y2: integer); 456 566 var 457 567 NewObj: TCanvasLine; … … 513 623 APoints[I] := Points[I]; 514 624 DoPolygon(APoints); 625 end; 626 627 procedure TMetaCanvas.Polyline(Points: PPoint; NumPts: Integer); 628 var 629 APoints: array of TPoint; 630 I: Integer; 631 begin 632 APoints := nil; 633 SetLength(APoints, NumPts); 634 for I := 0 to High(APoints) do 635 APoints[I] := Points[I]; 636 DoPolyline(APoints); 637 end; 638 639 procedure TMetaCanvas.PolyBezier(Points: PPoint; NumPts: Integer; 640 Filled: Boolean; Continuous: Boolean); 641 begin 642 DoPolyBezier(Points, NumPts, Filled, Continuous); 515 643 end; 516 644 … … 582 710 end; 583 711 712 procedure TMetaCanvas.DoPolyline(const Points: array of TPoint); 713 var 714 NewObj: TCanvasPolyline; 715 I: Integer; 716 begin 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); 724 end; 725 726 procedure TMetaCanvas.DoPolyBezier(Points: PPoint; NumPts: Integer; 727 Filled: Boolean; Continuous: Boolean); 728 var 729 NewObj: TCanvasPolyBezier; 730 I: Integer; 731 begin 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); 739 end; 740 584 741 procedure TMetaCanvas.FillRect(const ARect: TRect); 585 742 begin … … 666 823 667 824 end. 668 -
trunk/Packages/Common/PersistentForm.pas
r218 r219 1 unit UPersistentForm; 2 3 {$mode delphi} 4 5 // Date: 2020-11-26 1 unit PersistentForm; 6 2 7 3 interface 8 4 9 5 uses 10 Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls,6 Classes, SysUtils, Forms, RegistryEx, LCLIntf, Registry, Controls, ComCtrls, 11 7 ExtCtrls, LCLType; 12 8 … … 20 16 FMinVisiblePart: Integer; 21 17 FRegistryContext: TRegistryContext; 18 FResizeEventOccured: Boolean; 22 19 procedure LoadControl(Control: TControl); 23 20 procedure SaveControl(Control: TControl); 21 procedure WindowStateChange(Sender: TObject); 24 22 public 25 FormNormalSize: TRect;26 23 FormRestoredSize: TRect; 27 24 FormWindowState: TWindowState; … … 157 154 RootKey := RegistryContext.RootKey; 158 155 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; 156 166 157 // Restored size 167 158 FormRestoredSize.Left := ReadIntegerWithDefault('RestoredLeft', FormRestoredSize.Left); … … 171 162 FormRestoredSize.Bottom := ReadIntegerWithDefault('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top) 172 163 + FormRestoredSize.Top; 164 173 165 // Other state 174 166 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState))); … … 185 177 RootKey := RegistryContext.RootKey; 186 178 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 179 180 // Restored size 193 181 WriteInteger('RestoredWidth', FormRestoredSize.Right - FormRestoredSize.Left); 194 182 WriteInteger('RestoredHeight', FormRestoredSize.Bottom - FormRestoredSize.Top); 195 183 WriteInteger('RestoredTop', FormRestoredSize.Top); 196 184 WriteInteger('RestoredLeft', FormRestoredSize.Left); 185 197 186 // Other state 198 187 WriteInteger('WindowState', Integer(FormWindowState)); … … 259 248 begin 260 249 Self.Form := Form; 250 261 251 // Set default 262 FormNormalSize := Bounds((Screen.Width - Form.Width) div 2,263 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);264 252 FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2, 265 253 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height); … … 269 257 LoadFromRegistry(RegistryContext); 270 258 271 if not EqualRect(FormNormalSize, FormRestoredSize) or 272 DefaultMaximized then begin 259 if (FormWindowState = wsMaximized) or DefaultMaximized then begin 273 260 // Restore to maximized state 274 261 Form.WindowState := wsNormal; … … 279 266 // Restore to normal state 280 267 Form.WindowState := wsNormal; 281 if FEntireVisible then Form NormalSize := CheckEntireVisible(FormNormalSize)268 if FEntireVisible then FormRestoredSize := CheckEntireVisible(FormRestoredSize) 282 269 else if FMinVisiblePart > 0 then 283 FormNormalSize := CheckPartVisible(FormNormalSize, FMinVisiblePart);284 if not EqualRect(Form NormalSize, Form.BoundsRect) then285 Form.BoundsRect := Form NormalSize;270 FormRestoredSize := CheckPartVisible(FormRestoredSize, FMinVisiblePart); 271 if not EqualRect(FormRestoredSize, Form.BoundsRect) then 272 Form.BoundsRect := FormRestoredSize; 286 273 end; 287 274 if FormFullScreen then SetFullScreen(True); … … 292 279 begin 293 280 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; 281 if not FormFullScreen then begin 282 FormWindowState := Form.WindowState; 283 if FormWindowState = wsMaximized then begin 284 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 285 Form.RestoredHeight); 286 end else 287 if FormWindowState = wsNormal then begin 288 FormRestoredSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height); 289 end; 290 end; 299 291 SaveToRegistry(RegistryContext); 300 292 SaveControl(Form); … … 311 303 312 304 procedure TPersistentForm.SetFullScreen(State: Boolean); 305 {$IFDEF UNIX} 306 var 307 OldHandler: TNotifyEvent; 308 var 309 I: Integer; 310 {$ENDIF} 313 311 begin 314 312 if State then begin 315 313 FormFullScreen := True; 316 FormNormalSize := Form.BoundsRect; 317 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 318 Form.RestoredHeight); 314 if Form.WindowState = wsMaximized then begin 315 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 316 Form.RestoredHeight); 317 end else 318 if Form.WindowState = wsNormal then begin 319 FormRestoredSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height); 320 end; 319 321 FormWindowState := Form.WindowState; 320 ShowWindow(Form.Handle, SW_SHOWFULLSCREEN);321 322 {$IFDEF WINDOWS} 322 323 Form.BorderStyle := bsNone; 323 324 {$ENDIF} 325 Form.WindowState := wsFullscreen; 326 {$IFDEF UNIX} 327 // Workaround on Linux, WindowState is rewriten by WMSize event to wsNormal. 328 // We need for that even to occure 329 OldHandler := Form.OnWindowStateChange; 330 Form.OnWindowStateChange := WindowStateChange; 331 FResizeEventOccured := False; 332 for I := 0 to 10 do begin 333 if FResizeEventOccured then Break; 334 Application.ProcessMessages; 335 Sleep(1); 336 end; 337 Form.OnWindowStateChange := OldHandler; 338 FormFullScreen := True; 339 {$ENDIF} 324 340 end else begin 325 341 FormFullScreen := False; 342 Form.WindowState := wsNormal; 326 343 {$IFDEF WINDOWS} 327 344 Form.BorderStyle := bsSizeable; 328 345 {$ENDIF} 329 ShowWindow(Form.Handle, SW_SHOWNORMAL);330 346 if FormWindowState = wsNormal then begin 331 Form.BoundsRect := FormNormalSize; 347 Form.WindowState := wsNormal; 348 Form.BoundsRect := FormRestoredSize; 332 349 end else 333 350 if FormWindowState = wsMaximized then begin … … 338 355 end; 339 356 357 procedure TPersistentForm.WindowStateChange(Sender: TObject); 358 begin 359 Form.WindowState := wsFullscreen; 360 FResizeEventOccured := True; 361 end; 362 340 363 end. 341 -
trunk/Packages/Common/PixelPointer.pas
r218 r219 1 unit UPixelPointer;1 unit PixelPointer; 2 2 3 3 interface 4 4 5 5 uses 6 Classes, SysUtils, Graphics;6 Math, Classes, SysUtils, Graphics; 7 7 8 8 type 9 9 TColor32 = type Cardinal; 10 10 TColor32Component = (ccBlue, ccGreen, ccRed, ccAlpha); 11 TColor32Planes = array[0..3] of Byte; 11 12 12 13 { TPixel32 } … … 14 15 TPixel32 = packed record 15 16 private 16 procedure SetRGB(AValue: Cardinal); 17 function GetRGB: Cardinal; 17 procedure SetRGB(AValue: Cardinal); inline; 18 function GetRGB: Cardinal; inline; 18 19 public 20 class function CreateRGB(R, G, B: Byte): TPixel32; static; 21 class function CreateRGBA(R, G, B, A: Byte): TPixel32; static; 19 22 property RGB: Cardinal read GetRGB write SetRGB; 20 23 case Integer of 21 24 0: (B, G, R, A: Byte); 22 25 1: (ARGB: TColor32); 23 2: (Planes: array[0..3] of Byte);26 2: (Planes: TColor32Planes); 24 27 3: (Components: array[TColor32Component] of Byte); 25 28 end; … … 29 32 30 33 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 31 51 Base: PPixel32; 32 52 Pixel: PPixel32; … … 35 55 BytesPerPixel: Integer; 36 56 BytesPerLine: Integer; 57 Data: PPixel32; 58 Width: Integer; 59 Height: Integer; 37 60 procedure NextLine; inline; // Move pointer to start of next line 38 61 procedure PreviousLine; inline; // Move pointer to start of previous line … … 41 64 procedure SetXY(X, Y: Integer); inline; // Set pixel position relative to base 42 65 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; 43 76 end; 44 77 PPixelPointer = ^TPixelPointer; 45 78 46 function PixelPointer(Bitmap: TRasterImage; BaseX: Integer = 0; BaseY: Integer = 0): TPixelPointer; inline;47 79 function SwapRedBlue(Color: TColor32): TColor32; 48 80 procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect; SrcBitmap: TRasterImage; SrcPos: TPoint); … … 60 92 function ColorToColor32(Color: TColor): TColor32; 61 93 94 62 95 implementation 63 96 97 resourcestring 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 64 101 { TPixel32 } 65 102 … … 69 106 end; 70 107 108 class function TPixel32.CreateRGB(R, G, B: Byte): TPixel32; 109 begin 110 Result.R := R; 111 Result.G := G; 112 Result.B := B; 113 Result.A := 0; 114 end; 115 116 class function TPixel32.CreateRGBA(R, G, B, A: Byte): TPixel32; 117 begin 118 Result.R := R; 119 Result.G := G; 120 Result.B := B; 121 Result.A := A; 122 end; 123 71 124 procedure TPixel32.SetRGB(AValue: Cardinal); 72 125 begin 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); 76 127 end; 77 128 … … 111 162 end; 112 163 164 procedure TPixelPointer.CheckRange; 165 {$IFOPT R+} 166 var 167 X: Integer; 168 Y: Integer; 169 {$ENDIF} 170 begin 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} 181 end; 182 183 function TPixelPointer.PosValid: Boolean; 184 begin 185 Result := not ((PByte(Pixel) < PByte(Data)) or 186 (PByte(Pixel) >= PByte(Data) + Height * BytesPerLine)); 187 end; 188 189 function TPixelPointer.GetPixelPlanes: TColor32Planes; 190 begin 191 CheckRange; 192 Result := Pixel^.Planes; 193 end; 194 195 function TPixelPointer.GetPixelRGB: Cardinal; 196 begin 197 CheckRange; 198 Result := Pixel^.RGB; 199 end; 200 201 procedure TPixelPointer.SetPixelARGB(Value: TColor32); 202 begin 203 CheckRange; 204 Pixel^.ARGB := Value; 205 end; 206 207 procedure TPixelPointer.SetPixelB(Value: Byte); 208 begin 209 CheckRange; 210 Pixel^.B := Value; 211 end; 212 213 procedure TPixelPointer.SetPixelG(Value: Byte); 214 begin 215 CheckRange; 216 Pixel^.G := Value; 217 end; 218 219 procedure TPixelPointer.SetPixelPlane(Index: Byte; AValue: Byte); 220 begin 221 CheckRange; 222 Pixel^.Planes[Index] := AValue; 223 end; 224 225 procedure TPixelPointer.SetPixelR(Value: Byte); 226 begin 227 CheckRange; 228 Pixel^.R := Value; 229 end; 230 231 procedure TPixelPointer.SetPixelA(Value: Byte); 232 begin 233 CheckRange; 234 Pixel^.A := Value; 235 end; 236 237 function TPixelPointer.GetPixelARGB: TColor32; 238 begin 239 CheckRange; 240 Result := Pixel^.ARGB; 241 end; 242 243 function TPixelPointer.GetPixelB: Byte; 244 begin 245 CheckRange; 246 Result := Pixel^.B; 247 end; 248 249 function TPixelPointer.GetPixelG: Byte; 250 begin 251 CheckRange; 252 Result := Pixel^.G; 253 end; 254 255 function TPixelPointer.GetPixelPlane(Index: Byte): Byte; 256 begin 257 CheckRange; 258 Result := Pixel^.Planes[Index]; 259 end; 260 261 function TPixelPointer.GetPixelR: Byte; 262 begin 263 CheckRange; 264 Result := Pixel^.R; 265 end; 266 267 function TPixelPointer.GetPixelA: Byte; 268 begin 269 CheckRange; 270 Result := Pixel^.A; 271 end; 272 273 procedure TPixelPointer.SetPixelRGB(Value: Cardinal); 274 begin 275 CheckRange; 276 Pixel^.RGB := Value; 277 end; 278 113 279 procedure BitmapCopyRect(DstBitmap: TRasterImage; DstRect: TRect; 114 280 SrcBitmap: TRasterImage; SrcPos: TPoint); … … 119 285 SrcBitmap.BeginUpdate(True); 120 286 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); 123 289 for Y := 0 to DstRect.Height - 1 do begin 124 290 for X := 0 to DstRect.Width - 1 do begin 125 DstPtr.Pixel ^.ARGB := SrcPtr.Pixel^.ARGB;291 DstPtr.PixelARGB := SrcPtr.PixelARGB; 126 292 SrcPtr.NextPixel; 127 293 DstPtr.NextPixel; … … 149 315 SrcBitmap.BeginUpdate(True); 150 316 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); 153 319 for Y := 0 to DstRect.Height - 1 do begin 154 320 for X := 0 to DstRect.Width - 1 do begin … … 159 325 DstPtr.SetXY(X, Y); 160 326 SrcPtr.SetXY(R.Left, R.Top); 161 C := SrcPtr.Pixel ^.ARGB;162 DstPtr.Pixel ^.ARGB := C;327 C := SrcPtr.PixelARGB; 328 DstPtr.PixelARGB := C; 163 329 for YY := 0 to R.Height - 1 do begin 164 330 for XX := 0 to R.Width - 1 do begin 165 DstPtr.Pixel ^.ARGB := C;331 DstPtr.PixelARGB := C; 166 332 DstPtr.NextPixel; 167 333 end; … … 180 346 begin 181 347 Bitmap.BeginUpdate(True); 182 Ptr := PixelPointer(Bitmap);348 Ptr := TPixelPointer.Create(Bitmap); 183 349 for Y := 0 to Bitmap.Height - 1 do begin 184 350 for X := 0 to Bitmap.Width - 1 do begin 185 Ptr.Pixel ^.ARGB := Color;351 Ptr.PixelARGB := Color; 186 352 Ptr.NextPixel; 187 353 end; … … 197 363 begin 198 364 Bitmap.BeginUpdate(True); 199 Ptr := PixelPointer(Bitmap, Rect.Left, Rect.Top);365 Ptr := TPixelPointer.Create(Bitmap, Rect.Left, Rect.Top); 200 366 for Y := 0 to Rect.Height - 1 do begin 201 367 for X := 0 to Rect.Width - 1 do begin 202 Ptr.Pixel ^.ARGB := Color;368 Ptr.PixelARGB := Color; 203 369 Ptr.NextPixel; 204 370 end; … … 214 380 begin 215 381 Bitmap.BeginUpdate(True); 216 Ptr := PixelPointer(Bitmap);382 Ptr := TPixelPointer.Create(Bitmap); 217 383 for Y := 0 to Bitmap.Height - 1 do begin 218 384 for X := 0 to Bitmap.Width - 1 do begin 219 Ptr.Pixel ^.ARGB := SwapRedBlue(Ptr.Pixel^.ARGB);385 Ptr.PixelARGB := SwapRedBlue(Ptr.PixelARGB); 220 386 Ptr.NextPixel; 221 387 end; … … 231 397 begin 232 398 Bitmap.BeginUpdate(True); 233 Ptr := PixelPointer(Bitmap);399 Ptr := TPixelPointer.Create(Bitmap); 234 400 for Y := 0 to Bitmap.Height - 1 do begin 235 401 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; 237 403 Ptr.NextPixel; 238 404 end; … … 251 417 Pixel := Color32ToPixel32(Color); 252 418 Bitmap.BeginUpdate(True); 253 Ptr := PixelPointer(Bitmap);419 Ptr := TPixelPointer.Create(Bitmap); 254 420 for Y := 0 to Bitmap.Height - 1 do begin 255 421 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); 261 427 Ptr.NextPixel; 262 428 end; … … 294 460 end; 295 461 296 function PixelPointer(Bitmap: TRasterImage; BaseX: Integer;462 class function TPixelPointer.Create(Bitmap: TRasterImage; BaseX: Integer; 297 463 BaseY: Integer): TPixelPointer; 298 464 begin 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])); 299 469 Result.BytesPerLine := Bitmap.RawImage.Description.BytesPerLine; 300 470 Result.BytesPerPixel := Bitmap.RawImage.Description.BitsPerPixel shr 3; 471 Result.Data := PPixel32(Bitmap.RawImage.Data); 301 472 Result.Base := PPixel32(Bitmap.RawImage.Data + BaseX * Result.BytesPerPixel + 302 473 BaseY * Result.BytesPerLine); … … 309 480 end; 310 481 311 312 482 end. 313 -
trunk/Packages/Common/Pool.pas
r218 r219 1 unit UPool; 2 3 {$mode Delphi}{$H+} 1 unit Pool; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, syncobjs, fgl, UThreading;6 Classes, SysUtils, syncobjs, Generics.Collections, Threading; 9 7 10 8 type … … 22 20 function NewItemObject: TObject; virtual; 23 21 public 24 Items: T FPGObjectList<TObject>;25 FreeItems: T FPGObjectList<TObject>;22 Items: TObjectList<TObject>; 23 FreeItems: TObjectList<TObject>; 26 24 function Acquire: TObject; virtual; 27 25 procedure Release(Item: TObject); virtual; … … 59 57 try 60 58 Lock.Acquire; 61 inherited SetTotalCount(AValue);59 inherited; 62 60 finally 63 61 Lock.Release; … … 69 67 try 70 68 Lock.Acquire; 71 Result := inherited GetUsedCount;69 Result := inherited; 72 70 finally 73 71 Lock.Release; … … 90 88 end; 91 89 end; 92 Result := inherited Acquire;90 Result := inherited; 93 91 finally 94 92 Lock.Release; … … 100 98 try 101 99 Lock.Acquire; 102 inherited Release(Item);100 inherited; 103 101 finally 104 102 Lock.Release; … … 108 106 constructor TThreadedPool.Create; 109 107 begin 110 inherited Create;108 inherited; 111 109 Lock := TCriticalSection.Create; 112 110 end; … … 115 113 begin 116 114 TotalCount := 0; 117 Lock.Free;118 inherited Destroy;115 FreeAndNil(Lock); 116 inherited; 119 117 end; 120 118 … … 185 183 begin 186 184 inherited; 187 Items := T FPGObjectList<TObject>.Create;188 FreeItems := T FPGObjectList<TObject>.Create;189 FreeItems. FreeObjects := False;185 Items := TObjectList<TObject>.Create; 186 FreeItems := TObjectList<TObject>.Create; 187 FreeItems.OwnsObjects := False; 190 188 FReleaseEvent := TEvent.Create(nil, False, False, ''); 191 189 end; … … 201 199 202 200 end. 203 -
trunk/Packages/Common/PrefixMultiplier.pas
r218 r219 1 unit UPrefixMultiplier;1 unit PrefixMultiplier; 2 2 3 3 // Date: 2010-06-01 4 5 {$mode delphi}6 4 7 5 interface … … 33 31 ( 34 32 (ShortText: 'y'; FullText: 'yocto'; Value: 1e-24), 35 33 (ShortText: 'z'; FullText: 'zepto'; Value: 1e-21), 36 34 (ShortText: 'a'; FullText: 'atto'; Value: 1e-18), 37 35 (ShortText: 'f'; FullText: 'femto'; Value: 1e-15), … … 54 52 ( 55 53 (ShortText: 'ys'; FullText: 'yocto'; Value: 1e-24), 56 54 (ShortText: 'zs'; FullText: 'zepto'; Value: 1e-21), 57 55 (ShortText: 'as'; FullText: 'atto'; Value: 1e-18), 58 56 (ShortText: 'fs'; FullText: 'femto'; Value: 1e-15), … … 126 124 127 125 end. 128 -
trunk/Packages/Common/RegistryEx.pas
r218 r219 1 unit URegistry; 2 3 {$MODE delphi} 1 unit RegistryEx; 4 2 5 3 interface … … 38 36 function ReadFloatWithDefault(const Name: string; 39 37 DefaultValue: Double): Double; 38 function ReadDateTimeWithDefault(const Name: string; DefaultValue: TDateTime): TDateTime; 40 39 function DeleteKeyRecursive(const Key: string): Boolean; 41 40 function OpenKey(const Key: string; CanCreate: Boolean): Boolean; … … 48 47 HKEY_CURRENT_CONFIG, HKEY_DYN_DATA); 49 48 49 50 50 implementation 51 52 51 53 52 { TRegistryContext } … … 112 111 end; 113 112 113 function TRegistryEx.ReadDateTimeWithDefault(const Name: string; 114 DefaultValue: TDateTime): TDateTime; 115 begin 116 if ValueExists(Name) then Result := ReadDateTime(Name) 117 else begin 118 WriteDateTime(Name, DefaultValue); 119 Result := DefaultValue; 120 end; 121 end; 122 114 123 function TRegistryEx.DeleteKeyRecursive(const Key: string): Boolean; 115 124 var … … 135 144 //CloseKey; 136 145 {$ENDIF} 137 Result := inherited OpenKey(Key, CanCreate);146 Result := inherited; 138 147 end; 139 148 -
trunk/Packages/Common/ResetableThread.pas
r218 r219 1 unit UResetableThread; 2 3 {$mode Delphi}{$H+} 1 unit ResetableThread; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, syncobjs, UThreading, UPool;6 Classes, SysUtils, syncobjs, Threading, Pool; 9 7 10 8 type … … 167 165 FreeAndNil(FStopEvent); 168 166 FreeAndNil(FLock); 169 inherited Destroy;167 inherited; 170 168 end; 171 169 … … 286 284 constructor TThreadPool.Create; 287 285 begin 288 inherited Create;286 inherited; 289 287 end; 290 288 … … 293 291 TotalCount := 0; 294 292 WaitForEmpty; 295 inherited Destroy;293 inherited; 296 294 end; 297 295 298 296 end. 299 -
trunk/Packages/Common/ScaleDPI.pas
r218 r219 1 unit UScaleDPI;1 unit ScaleDPI; 2 2 3 3 { See: http://wiki.lazarus.freepascal.org/High_DPI } 4 4 5 {$mode delphi}{$H+}6 7 5 interface 8 6 9 7 uses 10 Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, fgl; 8 Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, 9 Generics.Collections; 11 10 12 11 type … … 28 27 end; 29 28 30 TControlDimensions = class(T FPGObjectList<TControlDimension>)29 TControlDimensions = class(TObjectList<TControlDimension>) 31 30 end; 32 31 -
trunk/Packages/Common/StopWatch.pas
r3 r219 5 5 6 6 uses 7 {$IFDEF W indows}Windows,{$ENDIF}7 {$IFDEF WINDOWS}Windows,{$ENDIF} 8 8 SysUtils, DateUtils; 9 9 … … 13 13 TStopWatch = class 14 14 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); 20 20 function GetElapsedTicks: TLargeInteger; 21 21 function GetElapsedMiliseconds: TLargeInteger; 22 22 function GetElapsed: string; 23 23 public 24 constructor Create(const startOnCreate: Boolean = False) ;24 constructor Create(const StartOnCreate: Boolean = False) ; 25 25 procedure Start; 26 26 procedure Stop; 27 property IsHighResolution : Boolean read fIsHighResolution;28 property ElapsedTicks 29 property ElapsedMiliseconds 30 property Elapsed 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; 32 32 end; 33 33 34 34 35 implementation 35 36 36 constructor TStopWatch.Create(const startOnCreate : boolean = false);37 constructor TStopWatch.Create(const StartOnCreate: Boolean = False); 37 38 begin 38 inherited Create;39 FIsRunning := False; 39 40 40 fIsRunning := False; 41 42 {$IFDEF Windows} 41 {$IFDEF WINDOWS} 43 42 fIsHighResolution := QueryPerformanceFrequency(fFrequency) ; 44 43 {$ELSE} 45 fIsHighResolution := False;44 FIsHighResolution := False; 46 45 {$ENDIF} 47 if NOT fIsHighResolution then fFrequency := MSecsPerSec;46 if NOT FIsHighResolution then FFrequency := MSecsPerSec; 48 47 49 48 if StartOnCreate then Start; … … 52 51 function TStopWatch.GetElapsedTicks: TLargeInteger; 53 52 begin 54 Result := fStopCount - fStartCount;53 Result := FStopCount - FStartCount; 55 54 end; 56 55 57 procedure TStopWatch.SetTickStamp(var lInt : TLargeInteger);56 procedure TStopWatch.SetTickStamp(var Value: TLargeInteger); 58 57 begin 59 if fIsHighResolution then58 if FIsHighResolution then 60 59 {$IFDEF Windows} 61 QueryPerformanceCounter( lInt)60 QueryPerformanceCounter(Value) 62 61 {$ELSE} 63 62 {$ENDIF} 64 63 else 65 lInt := MilliSecondOf(Now);64 Value := MilliSecondOf(Now); 66 65 end; 67 66 68 67 function TStopWatch.GetElapsed: string; 69 68 var 70 dt: TDateTime;69 Elapsed: TDateTime; 71 70 begin 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))]) ; 74 73 end; 75 74 76 75 function TStopWatch.GetElapsedMiliseconds: TLargeInteger; 77 76 begin 78 Result := (MSecsPerSec * (fStopCount - fStartCount)) div fFrequency;77 Result := (MSecsPerSec * (fStopCount - FStartCount)) div FFrequency; 79 78 end; 80 79 81 80 procedure TStopWatch.Start; 82 81 begin 83 SetTickStamp( fStartCount);84 fIsRunning := True;82 SetTickStamp(FStartCount); 83 FIsRunning := True; 85 84 end; 86 85 87 86 procedure TStopWatch.Stop; 88 87 begin 89 SetTickStamp( fStopCount);90 fIsRunning := False;88 SetTickStamp(FStopCount); 89 FIsRunning := False; 91 90 end; 92 91 -
trunk/Packages/Common/StringTable.pas
r218 r219 1 unit UStringTable; 2 3 {$mode objfpc}{$H+} 1 unit StringTable; 4 2 5 3 interface … … 71 69 end; 72 70 73 74 71 end. 75 -
trunk/Packages/Common/SyncCounter.pas
r218 r219 1 unit USyncCounter; 2 3 {$mode delphi} 1 unit SyncCounter; 4 2 5 3 interface … … 25 23 procedure Assign(Source: TSyncCounter); 26 24 end; 25 27 26 28 27 implementation … … 69 68 begin 70 69 Lock.Free; 71 inherited Destroy;70 inherited; 72 71 end; 73 72 … … 79 78 80 79 end. 81 -
trunk/Packages/Common/Theme.pas
r218 r219 1 unit UTheme;1 unit Theme; 2 2 3 3 interface … … 5 5 uses 6 6 Classes, SysUtils, Graphics, ComCtrls, Controls, ExtCtrls, Menus, StdCtrls, 7 Spin, Forms, fgl, Grids;7 Spin, Forms, Generics.Collections, Grids, Registry, LCLType; 8 8 9 9 type … … 19 19 { TThemes } 20 20 21 TThemes = class(T FPGObjectList<TTheme>)21 TThemes = class(TObjectList<TTheme>) 22 22 function AddNew(Name: string): TTheme; 23 23 function FindByName(Name: string): TTheme; … … 25 25 end; 26 26 27 TDwmSetWindowAttribute = function(hwnd: HWND; dwAttribute: DWORD; pvAttribute: Pointer; cbAttribute: DWORD): HRESULT; stdcall; 28 27 29 { TThemeManager } 28 30 … … 30 32 private 31 33 FTheme: TTheme; 34 FActualTheme: TTheme; 35 DwmapiLib: TLibHandle; 36 DwmSetWindowAttribute: TDwmSetWindowAttribute; 37 function Gray(C: TColor): Byte; 32 38 procedure SetTheme(AValue: TTheme); 33 procedure SetThemeName(AValue: TTheme); 39 procedure SetThemeName(Name: string); 40 procedure SetThemedTitleBar(AForm: TForm; Active: Bool); 41 function IsWindows10OrGreater(BuildNumber: Integer): Boolean; 34 42 public 35 43 Used: Boolean; 36 44 Themes: TThemes; 45 function IsDarkTheme: Boolean; 37 46 procedure ApplyTheme(Component: TComponent); 38 47 constructor Create(AOwner: TComponent); override; … … 40 49 procedure UseTheme(Form: TForm); 41 50 property Theme: TTheme read FTheme write SetTheme; 42 end; 51 property ActualTheme: TTheme read FActualTheme; 52 end; 53 54 const 55 ThemeNameSystem = 'System'; 56 ThemeNameLight = 'Light'; 57 ThemeNameDark = 'Dark'; 58 DwmapiLibName = 'dwmapi.dll'; 59 DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 = 19; 60 DWMWA_USE_IMMERSIVE_DARK_MODE = 20; 43 61 44 62 procedure Register; 63 45 64 46 65 implementation … … 89 108 end; 90 109 91 procedure TThemeManager.SetThemeName(AValue: TTheme); 110 { TThemeManager } 111 112 function TThemeManager.Gray(C: TColor): Byte; 113 begin 114 Result := Trunc(Red(C) * 0.3 + Green(C) * 0.59 + Blue(C) * 0.11); 115 end; 116 117 function TThemeManager.IsDarkTheme: Boolean; 118 {$IFDEF WINDOWS} 119 var 120 LightKey: Boolean; 121 Registry: TRegistry; 122 const 123 KeyPath = '\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize'; 124 KeyName = 'AppsUseLightTheme'; 125 {$ELSE} 126 var 127 ColorWindow: TColor; 128 ColorWindowText: TColor; 129 {$ENDIF} 130 begin 131 Result := False; 132 {$IFDEF WINDOWS} 133 Registry := TRegistry.Create; 134 try 135 Registry.RootKey := HKEY_CURRENT_USER; 136 if Registry.OpenKeyReadOnly(KeyPath) then begin 137 if Registry.ValueExists(KeyName) then 138 LightKey := Registry.ReadBool(KeyName) 139 else LightKey := True; 140 end else LightKey := True; 141 Result := not LightKey; 142 finally 143 Registry.Free; 144 end; 145 {$ELSE} 146 ColorWindow := ColorToRGB(clWindow); 147 ColorWindowText := ColorToRGB(clWindowText); 148 Result := Gray(ColorWindow) < Gray(ColorWindowText); 149 {$ENDIF} 150 end; 151 152 procedure TThemeManager.SetThemeName(Name: string); 153 begin 154 Theme := Themes.FindByName(Name); 155 end; 156 157 function TThemeManager.IsWindows10OrGreater(BuildNumber: Integer): Boolean; 158 begin 159 {$IFDEF WINDOWS} 160 Result := (Win32MajorVersion >= 10) and (Win32BuildNumber >= BuildNumber); 161 {$ELSE} 162 Result := False; 163 {$ENDIF} 164 end; 165 166 procedure TThemeManager.SetThemedTitleBar(AForm: TForm; Active: Bool); 167 var 168 Attr: DWord; 169 begin 170 if Assigned(DwmSetWindowAttribute) and IsWindows10OrGreater(17763) then begin 171 Attr := DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1; 172 if IsWindows10OrGreater(18985) then Attr := DWMWA_USE_IMMERSIVE_DARK_MODE; 173 174 DwmSetWindowAttribute(AForm.Handle, Attr, @Active, SizeOf(Active)); 175 end; 176 end; 177 178 procedure TThemeManager.SetTheme(AValue: TTheme); 92 179 begin 93 180 if FTheme = AValue then Exit; 94 181 FTheme := AValue; 95 end; 96 97 procedure TThemeManager.SetTheme(AValue: TTheme); 98 begin 99 if FTheme = AValue then Exit; 100 FTheme := AValue; 182 FActualTheme := FTheme; 183 {$IFDEF WINDOWS} 184 if Assigned(FTheme) and (FTheme = Themes.FindByName(ThemeNameSystem)) and IsDarkTheme then 185 FActualTheme := Themes.FindByName(ThemeNameDark); 186 {$ENDIF} 101 187 end; 102 188 … … 104 190 begin 105 191 inherited; 192 {$IFDEF WINDOWS} 193 DwmapiLib := LoadLibrary(DwmapiLibName); 194 if DwmapiLib <> 0 then DwmSetWindowAttribute := GetProcAddress(DwmapiLib, 'DwmSetWindowAttribute') 195 else DwmSetWindowAttribute := nil; 196 {$ENDIF} 197 106 198 Themes := TThemes.Create; 107 with Themes.AddNew( 'System') do begin199 with Themes.AddNew(ThemeNameSystem) do begin 108 200 ColorWindow := clWindow; 109 201 ColorWindowText := clWindowText; … … 112 204 ColorControlSelected := clWindow; 113 205 end; 114 Theme := TTheme(Themes.First); 115 with Themes.AddNew('Dark') do begin 206 with Themes.AddNew(ThemeNameDark) do begin 116 207 ColorWindow := RGBToColor($20, $20, $20); 117 208 ColorWindowText := clWhite; … … 120 211 ColorControlSelected := RGBToColor(96, 125, 155); 121 212 end; 122 with Themes.AddNew( 'Light') do begin213 with Themes.AddNew(ThemeNameLight) do begin 123 214 ColorWindow := clWhite; 124 215 ColorWindowText := clBlack; … … 127 218 ColorControlSelected := RGBToColor(196, 225, 255); 128 219 end; 220 Theme := TTheme(Themes.First); 129 221 end; 130 222 … … 132 224 begin 133 225 FreeAndNil(Themes); 226 {$IFDEF WINDOWS} 227 if DwmapiLib <> 0 then FreeLibrary(DwmapiLib); 228 {$ENDIF} 134 229 inherited; 135 230 end; … … 150 245 (Control is TMemo) or (Control is TListView) or (Control is TCustomDrawGrid) or 151 246 (Control is TCheckBox) or (Control is TPageControl) or (Control is TRadioButton) then begin 152 Control.Color := F Theme.ColorWindow;153 Control.Font.Color := F Theme.ColorWindowText;247 Control.Color := FActualTheme.ColorWindow; 248 Control.Font.Color := FActualTheme.ColorWindowText; 154 249 end else begin 155 Control.Color := F Theme.ColorControl;156 Control.Font.Color := F Theme.ColorControlText;250 Control.Color := FActualTheme.ColorControl; 251 Control.Font.Color := FActualTheme.ColorControlText; 157 252 end; 158 253 159 254 if Control is TCustomDrawGrid then begin 160 (Control as TCustomDrawGrid).Editor.Color := F Theme.ColorWindow;161 (Control as TCustomDrawGrid).Editor.Font.Color := F Theme.ColorWindowText;255 (Control as TCustomDrawGrid).Editor.Color := FActualTheme.ColorWindow; 256 (Control as TCustomDrawGrid).Editor.Font.Color := FActualTheme.ColorWindowText; 162 257 end; 163 258 … … 175 270 procedure TThemeManager.UseTheme(Form: TForm); 176 271 begin 177 if not Used and (F Theme.Name = 'System') then Exit;272 if not Used and (FActualTheme.Name = ThemeNameSystem) then Exit; 178 273 ApplyTheme(Form); 274 SetThemedTitleBar(Form, FActualTheme.Name = ThemeNameDark); 179 275 Used := True; 180 276 end; 181 277 182 183 278 end. -
trunk/Packages/Common/Threading.pas
r218 r219 1 unit UThreading; 2 3 {$mode delphi} 1 unit Threading; 4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Forms, fgl, SyncObjs;6 Classes, SysUtils, Forms, Generics.Collections, SyncObjs; 9 7 10 8 type 11 9 TExceptionEvent = procedure (Sender: TObject; E: Exception) of object; 12 10 TMethodCall = procedure of object; 13 14 11 15 12 { TVirtualThread } … … 102 99 { TThreadList } 103 100 104 TThreadList = class(T FPGObjectList<TVirtualThread>)101 TThreadList = class(TObjectList<TVirtualThread>) 105 102 function FindById(Id: TThreadID): TVirtualThread; 106 103 constructor Create; virtual; … … 191 188 constructor TThreadList.Create; 192 189 begin 193 inherited Create;190 inherited; 194 191 end; 195 192 … … 294 291 ThreadListLock.Release; 295 292 end; 296 F Thread.Free;297 inherited Destroy;293 FreeAndNil(FThread); 294 inherited; 298 295 end; 299 296 … … 361 358 ThreadListLock := TCriticalSection.Create; 362 359 ThreadList := TThreadList.Create; 363 ThreadList. FreeObjects := False;360 ThreadList.OwnsObjects := False; 364 361 365 362 finalization 366 363 367 ThreadList.Free;368 ThreadListLock.Free;364 FreeAndNil(ThreadList); 365 FreeAndNil(ThreadListLock); 369 366 370 367 end. 371 -
trunk/Packages/Common/Translator.pas
r218 r219 1 unit UTranslator; 2 3 {$mode delphi}{$H+} 1 unit Translator; 4 2 5 3 interface 6 4 7 5 uses 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; 11 9 12 10 type 13 11 THandleStringEvent = function (AValue: string): string of object; 14 12 15 TPoFiles = class(T FPGObjectList<TPOFile>)13 TPoFiles = class(TObjectList<TPOFile>) 16 14 end; 17 15 … … 27 25 { TComponentExcludesList } 28 26 29 TComponentExcludesList = class(T FPGObjectList<TComponentExcludes>)27 TComponentExcludesList = class(TObjectList<TComponentExcludes>) 30 28 function FindByClassType(AClassType: TClass): TComponentExcludes; 31 29 procedure DumpToStrings(Strings: TStrings); … … 50 48 procedure TranslateProperty(Component: TPersistent; PropInfo: PPropInfo); 51 49 function IsExcluded(Component: TPersistent; PropertyName: string): Boolean; 52 function GetLangFileDir : string;50 function GetLangFileDirs: TStrings; 53 51 public 54 52 ComponentExcludes: TComponentExcludesList; … … 73 71 end; 74 72 73 const 74 PoExt = '.po'; 75 75 76 procedure Register; 76 77 77 const78 PoFileExt = '.po';79 80 78 81 79 implementation 80 81 uses 82 Common; 82 83 83 84 procedure Register; … … 166 167 FileList: TStringList; 167 168 I: Integer; 169 J: Integer; 168 170 LocaleShort: string; 169 171 SearchMask: string; 172 LangDirs: TStrings; 170 173 begin 171 174 FPoFiles.Clear; 172 if Assigned(FLanguage) then 173 try 175 if Assigned(FLanguage) then begin 174 176 LocaleShort := GetLocaleShort; 175 177 SearchMask := '*'; 176 178 if LocaleShort <> '' then SearchMask := SearchMask + '.' + LocaleShort; 177 SearchMask := SearchMask + PoFileExt; 178 FileList := FindAllFiles(GetLangFileDir, SearchMask); 179 for I := 0 to FileList.Count - 1 do begin 180 FileName := FileList[I]; 181 if FileExists(FileName) and ( 182 ((LocaleShort = '') and (Pos('.', FileName) = Pos(PoFileExt, 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; 187 196 end; 188 197 end; … … 245 254 I: Integer; 246 255 begin 256 247 257 // PropInfo^.Name; 248 258 // Using IsDefaultPropertyValue will tell us if we should write out … … 300 310 end; 301 311 302 function TTranslator.GetLangFileDir: string; 303 begin 304 Result := FPoFilesFolder; 305 if not FilenameIsAbsolute(Result) then 306 Result := ExtractFileDir(Application.ExeName) + DirectorySeparator + Result; 312 function TTranslator.GetLangFileDirs: TStrings; 313 var 314 I: Integer; 315 begin 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) and (Copy(Result[I], 2, 2) <> ':\') then 325 Result[I] := ExtractFileDir(Application.ExeName) + 326 DirectorySeparator + Result[I]; 327 end; 307 328 end; 308 329 … … 371 392 var 372 393 I: Integer; 373 LangDir: string; 374 begin 375 LangDir := GetLangFileDir; 394 J: Integer; 395 LangDirs: TStrings; 396 begin 397 LangDirs := GetLangFileDirs; 376 398 Languages.SearchByCode('').Available := True; // Automatic 377 399 378 400 for I := 1 to Languages.Count - 1 do 379 401 with Languages[I] do begin 380 Available := FileExists(LangDir + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) + 381 '.' + Code + PoFileExt) or (Code = 'en'); 382 end; 402 for J := 0 to LangDirs.Count - 1 do begin 403 if FileExists(LangDirs[J] + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) + 404 '.' + Code + PoExt) or (Code = 'en') then begin 405 Available := True; 406 Continue; 407 end; 408 end; 409 end; 410 LangDirs.Free; 383 411 end; 384 412 … … 468 496 469 497 begin 498 470 499 // ParamStrUTF8(0) is said not to work properly in linux, but I've tested it 471 500 Result := ExtractFilePath(ParamStrUTF8(0)) + LangID + … … 568 597 end; 569 598 570 571 599 end. 572 -
trunk/Packages/Common/URI.pas
r218 r219 1 unit U URI;1 unit URI; 2 2 3 3 // Date: 2011-04-04 4 5 {$mode delphi}6 4 7 5 interface … … 85 83 end; 86 84 85 87 86 implementation 88 87 … … 183 182 begin 184 183 Items.Free; 185 inherited Destroy;184 inherited; 186 185 end; 187 186 … … 232 231 begin 233 232 Path.Free; 234 inherited Destroy;233 inherited; 235 234 end; 236 235 … … 243 242 Fragment := TURI(Source).Fragment; 244 243 Query := TURI(Source).Query; 245 end else inherited Assign(Source);244 end else inherited; 246 245 end; 247 246 … … 291 290 destructor TURL.Destroy; 292 291 begin 293 inherited Destroy;292 inherited; 294 293 end; 295 294 … … 344 343 begin 345 344 Directory.Free; 346 inherited Destroy; 347 end; 348 345 inherited; 346 end; 349 347 350 348 end. 351 -
trunk/Packages/Common/XML.pas
r218 r219 1 unit UXMLUtils; 2 3 {$mode delphi} 1 unit XML; 4 2 5 3 interface … … 16 14 procedure WriteString(Node: TDOMNode; Name: string; Value: string); 17 15 procedure WriteDateTime(Node: TDOMNode; Name: string; Value: TDateTime); 16 procedure WriteDouble(Node: TDOMNode; Name: string; Value: Double); 18 17 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 19 18 function ReadInt64(Node: TDOMNode; Name: string; DefaultValue: Int64): Int64; … … 21 20 function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string; 22 21 function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime; 22 function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double; 23 23 procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string); 24 24 25 25 26 26 implementation 27 28 function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double; 29 var 30 NewNode: TDOMNode; 31 begin 32 Result := DefaultValue; 33 NewNode := Node.FindNode(DOMString(Name)); 34 if Assigned(NewNode) then 35 Result := StrToFloat(string(NewNode.TextContent)); 36 end; 27 37 28 38 procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string); … … 202 212 end; 203 213 214 procedure WriteDouble(Node: TDOMNode; Name: string; Value: Double); 215 var 216 NewNode: TDOMNode; 217 begin 218 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 219 NewNode.TextContent := DOMString(FloatToStr(Value)); 220 Node.AppendChild(NewNode); 221 end; 222 204 223 function ReadInteger(Node: TDOMNode; Name: string; DefaultValue: Integer): Integer; 205 224 var … … 254 273 255 274 end. 256 -
trunk/Read Me.txt
r215 r219 16 16 * Home page: https://app.zdechov.net/AcronymDecoder/ 17 17 * Source code: https://svn.zdechov.net/AcronymDecoder/ 18 * Developed in [http ://www.lazarus-ide.org/ Lazarus/FPC] 2.2.019 * To build new Windows installer run Install/build.bat. InnoSetup (http ://www.jrsoftware.org/isdl.php) needs to be installed).18 * Developed in [https://www.lazarus-ide.org/ Lazarus/FPC] 3.6.0 19 * To build new Windows installer run Install/build.bat. InnoSetup (https://www.jrsoftware.org/isdl.php) needs to be installed).
Note:
See TracChangeset
for help on using the changeset viewer.