IDE: less findnext when searching for po files for installed packages

git-svn-id: trunk@34647 -
This commit is contained in:
mattias 2012-01-07 20:33:28 +00:00
parent cbbb252fc8
commit 16b2c9bc95
3 changed files with 26 additions and 18 deletions

View File

@ -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

View File

@ -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

View File

@ -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;