mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-18 07:29:30 +02:00
IDE: less findnext when searching for po files for installed packages
git-svn-id: trunk@34647 -
This commit is contained in:
parent
cbbb252fc8
commit
16b2c9bc95
@ -225,6 +225,8 @@ type
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure CalcMemSize(Stats: TCTMemStats);
|
||||
procedure GetListing(const aDirectory: string; var Files: TStrings;
|
||||
IncludeDirs: boolean = true);
|
||||
function GetCache(const Directory: string;
|
||||
CreateIfNotExists: boolean = true;
|
||||
DoReference: boolean = true): TCTDirectoryCache;
|
||||
@ -1318,7 +1320,7 @@ var
|
||||
begin
|
||||
if Files=nil then
|
||||
Files:=TStringList.Create;
|
||||
if Directory='' then exit;
|
||||
if (Self=nil) or (Directory='') then exit;
|
||||
UpdateListing;
|
||||
ListedFiles:=FListing.Files;
|
||||
for i:=0 to FListing.Count-1 do begin
|
||||
@ -1391,6 +1393,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCTDirectoryCachePool.GetListing(const aDirectory: string;
|
||||
var Files: TStrings; IncludeDirs: boolean);
|
||||
begin
|
||||
GetCache(aDirectory,true,false).GetFiles(Files,IncludeDirs);
|
||||
end;
|
||||
|
||||
function TCTDirectoryCachePool.GetCache(const Directory: string;
|
||||
CreateIfNotExists: boolean; DoReference: boolean): TCTDirectoryCache;
|
||||
var
|
||||
|
@ -4887,7 +4887,7 @@ procedure TLazPackageGraph.RegisterStaticBasePackages;
|
||||
begin
|
||||
BeginUpdate(true);
|
||||
|
||||
// register IDE built-in packages (Note: codetools do not need this)
|
||||
// IDE built-in packages
|
||||
if Assigned(OnTranslatePackage) then OnTranslatePackage(CodeToolsPackage);
|
||||
|
||||
// register custom IDE components
|
||||
|
@ -1767,29 +1767,27 @@ var
|
||||
procedure TranslateWithFileMask(APackage: TLazPackage;
|
||||
const Directory, Language: string);
|
||||
var
|
||||
FileInfo: TSearchRec;
|
||||
CurUnitName: string;
|
||||
CurLang: string;
|
||||
FileMask: String;
|
||||
Files: TStrings;
|
||||
Filename: String;
|
||||
begin
|
||||
if Language='' then exit;
|
||||
FileMask:=Directory+'*.'+Language+'.po';
|
||||
//DebugLn(['TranslateWithFileMask APackage=',APackage.IDAsString,' FileMask="',FileMask,'"']);
|
||||
if FindFirstUTF8(FileMask,faAnyFile,FileInfo)=0
|
||||
then begin
|
||||
repeat
|
||||
// check if special file
|
||||
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then
|
||||
continue;
|
||||
if GetPOFilenameParts(FileInfo.Name,CurUnitName,CurLang)
|
||||
Files:=nil;
|
||||
try
|
||||
CodeToolBoss.DirectoryCachePool.GetListing(Directory,Files,false);
|
||||
for Filename in Files do begin
|
||||
if CompareFileExt(Filename,'.po',false)<>0 then continue;
|
||||
if GetPOFilenameParts(Filename,CurUnitName,CurLang)
|
||||
and (CurLang=Language)
|
||||
and (APackage.FindUnit(CurUnitName)<>nil)
|
||||
and not UnitTranslated(CurUnitName) then begin
|
||||
TranslateUnit(Directory+FileInfo.Name,CurUnitName);
|
||||
TranslateUnit(AppendPathDelim(Directory)+Filename,CurUnitName);
|
||||
end;
|
||||
until FindNextUTF8(FileInfo)<>0;
|
||||
end;
|
||||
finally
|
||||
Files.Free;
|
||||
end;
|
||||
FindCloseUTF8(FileInfo);
|
||||
end;
|
||||
|
||||
var
|
||||
@ -1798,7 +1796,7 @@ var
|
||||
FallbackLang: String;
|
||||
Language: String;
|
||||
begin
|
||||
//DebugLn(['TPkgManager.DoTranslatePackage ', APackage.Name, 'from ', APackage.POOutputDirectory]);
|
||||
//DebugLn(['TPkgManager.DoTranslatePackage ',APackage.Name,' from ', APackage.POOutputDirectory]);
|
||||
if (APackage.POOutputDirectory='') then exit;
|
||||
Directory:=AppendPathDelim(APackage.GetPOOutDirectory);
|
||||
|
||||
@ -1811,6 +1809,7 @@ begin
|
||||
FallbackLang:='';
|
||||
end;
|
||||
|
||||
//DebugLn(['TPkgManager.DoTranslatePackage ', APackage.Name,' from ', APackage.POOutputDirectory,', Translated=',APackage.Translated,' Lang=',Lang]);
|
||||
if APackage.Translated=Lang then exit;
|
||||
APackage.Translated:=Lang;
|
||||
|
||||
@ -1818,7 +1817,8 @@ begin
|
||||
try
|
||||
//DebugLn(['TPkgManager.DoTranslatePackage ',APackage.Name,' Directory=',Directory,' Lang=',Lang,' FallbackLang=',FallbackLang]);
|
||||
TranslateWithFileMask(APackage,Directory,Lang);
|
||||
TranslateWithFileMask(APackage,Directory,FallbackLang);
|
||||
if FallbackLang<>Lang then
|
||||
TranslateWithFileMask(APackage,Directory,FallbackLang);
|
||||
finally
|
||||
TranslatedUnits.Free;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user