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

View File

@ -47,11 +47,11 @@ uses
FileProcs, SourceChanger, CodeCompletionTool, FileProcs, SourceChanger, CodeCompletionTool,
// IDEIntf // IDEIntf
ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf, IDEOptEditorIntf, ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf, IDEOptEditorIntf,
ComponentReg, IDEExternToolIntf, MacroDefIntf, SrcEditorIntf, ComponentReg, IDEExternToolIntf, SrcEditorIntf,
// DebuggerIntf // DebuggerIntf
DbgIntfDebuggerBase, DbgIntfDebuggerBase,
// IDE // IDE
RecentListProcs, SearchPathProcs, LazarusIDEStrConsts, IDETranslations, LazConf, RecentListProcs, SearchPathProcs, LazarusIDEStrConsts, LazConf,
IDEOptionDefs, TransferMacros, ModeMatrixOpts, IDEOptionDefs, TransferMacros, ModeMatrixOpts,
IdeCoolbarData, EditorToolbarStatic, IdeDebuggerOpts; IdeCoolbarData, EditorToolbarStatic, IdeDebuggerOpts;
@ -799,23 +799,6 @@ type
function GetParsedFppkgConfig: string; override; function GetParsedFppkgConfig: string; override;
function GetParsedValue(o: TEnvOptParseType; AUnparsedValue: String = ''): string; 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 UseDesktop(ADesktop: TDesktopOpt);
procedure EnableDebugDesktop; procedure EnableDebugDesktop;
procedure DisableDebugDesktop; procedure DisableDebugDesktop;
@ -3156,68 +3139,6 @@ begin
Result:=GetParsedValue(eopCompilerFilename); Result:=GetParsedValue(eopCompilerFilename);
end; 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; procedure TEnvironmentOptions.SaveDebuggerPropertiesList;
begin begin
FDebuggerProperties.SaveToXml(FXMLCfg, 'EnvironmentOptions/Debugger/', 'EnvironmentOptions/DebuggerFilename/Value'); 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"/> <IsPartOfProject Value="True"/>
<UnitName Value="FindInFilesWnd"/> <UnitName Value="FindInFilesWnd"/>
</Unit> </Unit>
<Unit>
<Filename Value="idetransfermacros.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="IdeTransferMacros"/>
</Unit>
</Units> </Units>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>