IDE, EnvironmentOpts: Move implementation of specific TranferMacros to new unit.

EnvironmentOpts: Remove dependency on IDETranslations
This commit is contained in:
Martin 2022-12-08 14:49:24 +01:00
parent bf4114c8ca
commit f0d3e9fe7c
4 changed files with 119 additions and 84 deletions

View File

@ -55,7 +55,7 @@ uses
TransferMacros, CompilerOptions, ExtTools, etMakeMsgParser, etFPCMsgParser,
etPas2jsMsgParser, Compiler, FPCSrcScan, PackageDefs, PackageSystem, Project,
ProjectIcon, ModeMatrixOpts, BaseBuildManager, ApplicationBundle,
RunParamsOpts, SearchPathProcs;
RunParamsOpts, IdeTransferMacros, SearchPathProcs;
const
cInvalidCompiler = 'InvalidCompiler';
@ -422,8 +422,7 @@ begin
IDEMacros:=TLazIDEMacros.Create;
CompilerOptions.OnParseString:=@OnSubstituteCompilerOption;
// environment
EnvironmentOptions.InitMacros(GlobalMacroList);
TIdeTransferMarcros.InitMacros(GlobalMacroList);
// project
GlobalMacroList.Add(TTransferMacro.Create('Project','',

View File

@ -47,11 +47,11 @@ uses
FileProcs, SourceChanger, CodeCompletionTool,
// IDEIntf
ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf, IDEOptEditorIntf,
ComponentReg, IDEExternToolIntf, MacroDefIntf, SrcEditorIntf,
ComponentReg, IDEExternToolIntf, SrcEditorIntf,
// DebuggerIntf
DbgIntfDebuggerBase,
// IDE
RecentListProcs, SearchPathProcs, LazarusIDEStrConsts, IDETranslations, LazConf,
RecentListProcs, SearchPathProcs, LazarusIDEStrConsts, LazConf,
IDEOptionDefs, TransferMacros, ModeMatrixOpts,
IdeCoolbarData, EditorToolbarStatic, IdeDebuggerOpts;
@ -799,23 +799,6 @@ type
function GetParsedFppkgConfig: string; override;
function GetParsedValue(o: TEnvOptParseType; AUnparsedValue: String = ''): string;
// macros
procedure InitMacros(AMacroList: TTransferMacroList);
function MacroFuncFPCSrcDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncLazarusDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncExeExt(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncLanguageID(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncLanguageName(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncTestDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
function MacroFuncConfDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
procedure UseDesktop(ADesktop: TDesktopOpt);
procedure EnableDebugDesktop;
procedure DisableDebugDesktop;
@ -3156,68 +3139,6 @@ begin
Result:=GetParsedValue(eopCompilerFilename);
end;
procedure TEnvironmentOptions.InitMacros(AMacroList: TTransferMacroList);
begin
AMacroList.Add(TTransferMacro.Create('FPCSrcDir','',
lisFreePascalSourceDirectory,@MacroFuncFPCSrcDir,[]));
AMacroList.Add(TTransferMacro.Create('LazarusDir','',
lisLazarusDirectory,@MacroFuncLazarusDir,[]));
AMacroList.Add(TTransferMacro.Create('ExeExt','',
lisFileExtensionOfPrograms, @MacroFuncExeExt, []));
AMacroList.Add(TTransferMacro.Create('LanguageID','',
lisLazarusLanguageID,@MacroFuncLanguageID,[]));
AMacroList.Add(TTransferMacro.Create('LanguageName','',
lisLazarusLanguageName,@MacroFuncLanguageName,[]));
AMacroList.Add(TTransferMacro.Create('TestDir','',
lisTestDirectory,@MacroFuncTestDir,[]));
AMacroList.Add(TTransferMacro.Create('ConfDir','',
lisConfigDirectory,@MacroFuncConfDir,[]));
AMacroList.Add(TTransferMacro.Create('Home',GetUserDir,
lisUserSHomeDirectory, nil, []));
end;
function TEnvironmentOptions.MacroFuncFPCSrcDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetParsedFPCSourceDirectory;
end;
function TEnvironmentOptions.MacroFuncLazarusDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetParsedLazarusDirectory;
end;
function TEnvironmentOptions.MacroFuncExeExt(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetExecutableExt;
end;
function TEnvironmentOptions.MacroFuncLanguageID(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=LanguageID;
end;
function TEnvironmentOptions.MacroFuncLanguageName(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetLazarusLanguageLocalizedName(LanguageID);
end;
function TEnvironmentOptions.MacroFuncTestDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetParsedTestBuildDirectory;
end;
function TEnvironmentOptions.MacroFuncConfDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetPrimaryConfigPath;
end;
procedure TEnvironmentOptions.SaveDebuggerPropertiesList;
begin
FDebuggerProperties.SaveToXml(FXMLCfg, 'EnvironmentOptions/Debugger/', 'EnvironmentOptions/DebuggerFilename/Value');

110
ide/idetransfermacros.pas Normal file
View File

@ -0,0 +1,110 @@
unit IdeTransferMacros;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, IDETranslations, EnvironmentOpts, TransferMacros,
LazarusIDEStrConsts, LazConf, MacroDefIntf;
type
{ TIdeTransferMarcros }
TIdeTransferMarcros = class
private
// System
class function MacroFuncExeExt(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
// Conf
class function MacroFuncConfDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
// EnvironmentOpts
class function MacroFuncFPCSrcDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
class function MacroFuncLazarusDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
class function MacroFuncLanguageID(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
class function MacroFuncLanguageName(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
class function MacroFuncTestDir(const {%H-}s:string; const {%H-}Data: PtrInt;
var {%H-}Abort: boolean): string;
public
class procedure InitMacros(AMacroList: TTransferMacroList);
end;
implementation
{ TIdeTransferMarcros }
class function TIdeTransferMarcros.MacroFuncConfDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetPrimaryConfigPath;
end;
class function TIdeTransferMarcros.MacroFuncExeExt(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetExecutableExt;
end;
class function TIdeTransferMarcros.MacroFuncFPCSrcDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=EnvironmentOptions.GetParsedFPCSourceDirectory;
end;
class function TIdeTransferMarcros.MacroFuncLazarusDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=EnvironmentOptions.GetParsedLazarusDirectory;
end;
class function TIdeTransferMarcros.MacroFuncLanguageID(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=EnvironmentOptions.LanguageID;
end;
class function TIdeTransferMarcros.MacroFuncLanguageName(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=GetLazarusLanguageLocalizedName(EnvironmentOptions.LanguageID);
end;
class function TIdeTransferMarcros.MacroFuncTestDir(const s: string;
const Data: PtrInt; var Abort: boolean): string;
begin
Result:=EnvironmentOptions.GetParsedTestBuildDirectory;
end;
class procedure TIdeTransferMarcros.InitMacros(AMacroList: TTransferMacroList);
begin
// System
AMacroList.Add(TTransferMacro.Create('Home',GetUserDir,
lisUserSHomeDirectory, nil, []));
AMacroList.Add(TTransferMacro.Create('ExeExt','',
lisFileExtensionOfPrograms, @MacroFuncExeExt, []));
// Conf
AMacroList.Add(TTransferMacro.Create('ConfDir','',
lisConfigDirectory,@MacroFuncConfDir,[]));
// EnvironmentOpts
AMacroList.Add(TTransferMacro.Create('FPCSrcDir','',
lisFreePascalSourceDirectory,@MacroFuncFPCSrcDir,[]));
AMacroList.Add(TTransferMacro.Create('LazarusDir','',
lisLazarusDirectory,@MacroFuncLazarusDir,[]));
AMacroList.Add(TTransferMacro.Create('LanguageID','',
lisLazarusLanguageID,@MacroFuncLanguageID,[]));
AMacroList.Add(TTransferMacro.Create('LanguageName','',
lisLazarusLanguageName,@MacroFuncLanguageName,[]));
AMacroList.Add(TTransferMacro.Create('TestDir','',
lisTestDirectory,@MacroFuncTestDir,[]));
end;
end.

View File

@ -1466,6 +1466,11 @@
<IsPartOfProject Value="True"/>
<UnitName Value="FindInFilesWnd"/>
</Unit>
<Unit>
<Filename Value="idetransfermacros.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="IdeTransferMacros"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>