IDE: define template use default flag

git-svn-id: trunk@26286 -
This commit is contained in:
mattias 2010-06-24 19:19:34 +00:00
parent bef96de901
commit d0d753564d
7 changed files with 105 additions and 67 deletions

View File

@ -317,6 +317,8 @@ type
procedure Unbind; procedure Unbind;
procedure UnmarkNodes(WithSiblings, WithChilds: boolean); procedure UnmarkNodes(WithSiblings, WithChilds: boolean);
procedure WriteDebugReport(OnlyMarked: boolean); procedure WriteDebugReport(OnlyMarked: boolean);
function GetNext: TDefineTemplate;
function GetNextSkipChildren: TDefineTemplate;
public public
property ChildCount: integer read FChildCount; property ChildCount: integer read FChildCount;
property FirstChild: TDefineTemplate read FFirstChild; property FirstChild: TDefineTemplate read FFirstChild;
@ -2755,6 +2757,25 @@ begin
WriteNode(Self,' '); WriteNode(Self,' ');
end; end;
function TDefineTemplate.GetNext: TDefineTemplate;
begin
if FirstChild<>nil then
exit(FirstChild);
Result:=GetNextSkipChildren;
end;
function TDefineTemplate.GetNextSkipChildren: TDefineTemplate;
begin
Result:=Self;
while (Result<>nil) do begin
if Result.Next<>nil then begin
Result:=Result.Next;
exit;
end;
Result:=Result.Parent;
end;
end;
function TDefineTemplate.HasDefines(OnlyMarked, WithSiblings: boolean): boolean; function TDefineTemplate.HasDefines(OnlyMarked, WithSiblings: boolean): boolean;
var var
CurTempl: TDefineTemplate; CurTempl: TDefineTemplate;

View File

@ -43,9 +43,9 @@ uses
LazIDEIntf, LazIDEIntf,
// IDE // IDE
LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, InputHistory, LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, InputHistory,
ProjectResources, MiscOptions, LazConf, EnvironmentOpts, TransferMacros, EditDefineTree, ProjectResources, MiscOptions, LazConf, EnvironmentOpts,
CompilerOptions, OutputFilter, Compiler, Project, BaseBuildManager, TransferMacros, CompilerOptions, OutputFilter, Compiler, Project,
ApplicationBundle; BaseBuildManager, ApplicationBundle;
type type
@ -580,7 +580,7 @@ begin
UnitLinksValid:=false; UnitLinksValid:=false;
end; end;
FPCSrcTemplate:=CodeToolBoss.DefinePool.CreateFPCSrcTemplate( FPCSrcTemplate:=CreateFPCSourceTemplate(
CodeToolBoss.GlobalValues.Variables[ExternalMacroStart+'FPCSrcDir'], CodeToolBoss.GlobalValues.Variables[ExternalMacroStart+'FPCSrcDir'],
CompilerUnitSearchPath, CompilerUnitSearchPath,
CodeToolBoss.GetCompiledSrcExtForDirectory(''), CodeToolBoss.GetCompiledSrcExtForDirectory(''),

View File

@ -50,7 +50,8 @@ uses
CodeToolManager, DefineTemplates, CodeToolManager, DefineTemplates,
IDEWindowIntf, IDEImagesIntf, IDEWindowIntf, IDEImagesIntf,
LazarusIDEStrConsts, CodeToolsOptions, CodeToolsDefPreview, TransferMacros, LazarusIDEStrConsts, CodeToolsOptions, CodeToolsDefPreview, TransferMacros,
EditorOptions, InputFileDialog, IDEOptionDefs, LazConf, IDEProcs; EditorOptions, InputFileDialog, IDEOptionDefs, LazConf, IDEProcs,
EditDefineTree;
type type
@ -626,7 +627,7 @@ begin
DebugLn(' FPCSrcDir="',FPCSrcDir,'"'); DebugLn(' FPCSrcDir="',FPCSrcDir,'"');
if (FPCSrcDir<>'') and (FPCSrcDir<>DefaultFPCSrcDir) if (FPCSrcDir<>'') and (FPCSrcDir<>DefaultFPCSrcDir)
and (UnitSearchPath<>'') then and (UnitSearchPath<>'') then
FPCSrcTemplate:=Boss.DefinePool.CreateFPCSrcTemplate(FPCSrcDir, FPCSrcTemplate:=CreateFPCSourceTemplate(FPCSrcDir,
UnitSearchPath, 'ppu', TargetOS, TargetProcessor, false, UnitSearchPath, 'ppu', TargetOS, TargetProcessor, false,
UnitLinkList, CodeToolsOpts) UnitLinkList, CodeToolsOpts)
else else
@ -754,7 +755,7 @@ begin
FPCSrcDir:=FileNames[0]; FPCSrcDir:=FileNames[0];
if Macros<>nil then Macros.SubstituteStr(FPCSrcDir); if Macros<>nil then Macros.SubstituteStr(FPCSrcDir);
DebugLn(' FPCSrcDir="',FPCSrcDir,'"'); DebugLn(' FPCSrcDir="',FPCSrcDir,'"');
FPCSrcTemplate:=Boss.DefinePool.CreateFPCSrcTemplate(FPCSrcDir, FPCSrcTemplate:=CreateFPCSourceTemplate(FPCSrcDir,
UnitSearchPath, 'ppu', TargetOS, TargetProcessor, false, UnitSearchPath, 'ppu', TargetOS, TargetProcessor, false,
UnitLinks, CodeToolsOpts); UnitLinks, CodeToolsOpts);
if FPCSrcTemplate=nil then begin if FPCSrcTemplate=nil then begin
@ -798,7 +799,7 @@ begin
EndUpdate; EndUpdate;
if ShowModal=mrCancel then exit; if ShowModal=mrCancel then exit;
LazTemplate:=Boss.DefinePool.CreateLazarusSrcTemplate(FileNames[0], LazTemplate:=CreateLazarusSourceTemplate(FileNames[0],
'$('+ExternalMacroStart+'LCLWidgetType)','', '$('+ExternalMacroStart+'LCLWidgetType)','',
CodeToolsOpts); CodeToolsOpts);
if LazTemplate=nil then exit; if LazTemplate=nil then exit;

View File

@ -45,16 +45,18 @@ function FindRootTemplate(AName: string): TDefineTemplate;
procedure SetAdditionalGlobalSrcPathToCodeToolBoss(const SrcPath: string); procedure SetAdditionalGlobalSrcPathToCodeToolBoss(const SrcPath: string);
// global defaults // global defaults
function FindNotUsedDirectoryTemplate: TDefineTemplate; function FindUseDefaultsFlagTemplate: TDefineTemplate;
function CreateNotUsedDirectoryTemplate: TDefineTemplate; function CreateUseDefaultsFlagTemplate: TDefineTemplate;
function FindFallBackTemplate: TDefineTemplate; procedure DisableDefaultsInDirectories(DefTempl: TDefineTemplate);
function CreateFallBackTemplate: TDefineTemplate;
// FPC sources // FPC sources
function CreateFPCSourceTemplate(const FPCSrcDir, UnitSearchPath, PPUExt, function CreateFPCSourceTemplate(const FPCSrcDir, UnitSearchPath, PPUExt,
DefaultTargetOS, DefaultProcessorName: string; DefaultTargetOS, DefaultProcessorName: string;
UnitLinkListValid: boolean; var UnitLinkList: string; UnitLinkListValid: boolean; var UnitLinkList: string;
Owner: TObject): TDefineTemplate; Owner: TObject): TDefineTemplate;
function CreateLazarusSourceTemplate(
const LazarusSrcDir, WidgetType, ExtraOptions: string;
Owner: TObject): TDefineTemplate;
// projects // projects
function FindProjectsTemplate: TDefineTemplate; function FindProjectsTemplate: TDefineTemplate;
@ -79,8 +81,9 @@ function RemoveAutoGeneratedDefine(ParentTemplate: TDefineTemplate;
const const
NotUsedDirectoryFlagTemplName = 'DirectoryNotUsed'; UseDefaultsFlagTemplName = 'Use defaults';
FallBackTemplName = 'FallBack'; UseDefaultsFlagName = ExternalMacroStart+'UseDefaults';
NotUseDefaultsFlagTemplName = 'Do not use defaults';
ProjectDefTemplName = 'Current Project'; ProjectDefTemplName = 'Current Project';
ProjectDirDefTemplName = 'Current Project Directory'; ProjectDirDefTemplName = 'Current Project Directory';
@ -128,7 +131,15 @@ begin
UnitSearchPath, PPUExt, UnitSearchPath, PPUExt,
DefaultTargetOS, DefaultProcessorName, DefaultTargetOS, DefaultProcessorName,
UnitLinkListValid, UnitLinkList, Owner); UnitLinkListValid, UnitLinkList, Owner);
DisableDefaultsInDirectories(Result);
end;
function CreateLazarusSourceTemplate(const LazarusSrcDir, WidgetType,
ExtraOptions: string; Owner: TObject): TDefineTemplate;
begin
Result:=CodeToolBoss.DefinePool.CreateLazarusSrcTemplate(LazarusSrcDir,
WidgetType, ExtraOptions, Owner);
DisableDefaultsInDirectories(Result);
end; end;
function FindProjectsTemplate: TDefineTemplate; function FindProjectsTemplate: TDefineTemplate;
@ -150,14 +161,15 @@ end;
function CreateProjectsTemplate: TDefineTemplate; function CreateProjectsTemplate: TDefineTemplate;
begin begin
Result:=FindProjectsTemplate; Result:=FindProjectsTemplate;
if Result<>nil then exit; if Result<>nil then begin
CodeToolBoss.DefineTree.MoveToLast(Result);
exit;
end;
Result:=TDefineTemplate.Create(ProjectsDefTemplName, lisEdtDefsAllProjects, Result:=TDefineTemplate.Create(ProjectsDefTemplName, lisEdtDefsAllProjects,
'', '', da_Block); '', '', da_Block);
Result.Flags:=[dtfAutoGenerated]; Result.Flags:=[dtfAutoGenerated];
// insert behind all // insert behind all
CodeToolBoss.DefineTree.ReplaceRootSameName(Result); CodeToolBoss.DefineTree.ReplaceRootSameName(Result);
// make sure the fallback comes last
CreateFallBackTemplate;
end; end;
function CreateProjectTemplateWithID(const ProjectID: string): TDefineTemplate; function CreateProjectTemplateWithID(const ProjectID: string): TDefineTemplate;
@ -181,8 +193,8 @@ begin
Result.Flags:=[dtfAutoGenerated]; Result.Flags:=[dtfAutoGenerated];
// insert behind all // insert behind all
CodeToolBoss.DefineTree.ReplaceRootSameName(Result); CodeToolBoss.DefineTree.ReplaceRootSameName(Result);
// make sure the fallback comes last // move projects behind
CreateFallBackTemplate; CreateProjectsTemplate;
end; end;
function CreatePackageTemplateWithID(const PkgID: string): TDefineTemplate; function CreatePackageTemplateWithID(const PkgID: string): TDefineTemplate;
@ -430,43 +442,35 @@ begin
end; end;
end; end;
function FindNotUsedDirectoryTemplate: TDefineTemplate; function FindUseDefaultsFlagTemplate: TDefineTemplate;
begin begin
Result:=FindRootTemplate(NotUsedDirectoryFlagTemplName); Result:=FindRootTemplate(UseDefaultsFlagTemplName);
end; end;
function CreateNotUsedDirectoryTemplate: TDefineTemplate; function CreateUseDefaultsFlagTemplate: TDefineTemplate;
begin begin
Result:=FindNotUsedDirectoryTemplate; Result:=FindUseDefaultsFlagTemplate;
if Result<>nil then exit; if Result<>nil then exit;
Result:=TDefineTemplate.Create(NotUsedDirectoryFlagTemplName, 'Not used directory flag', Result:=TDefineTemplate.Create(UseDefaultsFlagTemplName, 'Not used directory flag',
'', '', da_DefineRecurse); UseDefaultsFlagName, '1', da_DefineRecurse);
Result.Flags:=[dtfAutoGenerated]; Result.Flags:=[dtfAutoGenerated];
// insert in front of all // insert in front of all
CodeToolBoss.DefineTree.ReplaceRootSameNameAddFirst(Result); CodeToolBoss.DefineTree.ReplaceRootSameNameAddFirst(Result);
end; end;
function FindFallBackTemplate: TDefineTemplate; procedure DisableDefaultsInDirectories(DefTempl: TDefineTemplate);
// add to each directory a template to undefine the UseDefaults flag
begin begin
Result:=FindRootTemplate(FallBackTemplName); while DefTempl<>nil do begin
end; if DefTempl.Action=da_Directory then begin
DefTempl.AddChild(TDefineTemplate.Create(NotUseDefaultsFlagTemplName,
function CreateFallBackTemplate: TDefineTemplate; NotUseDefaultsFlagTemplName,UseDefaultsFlagName,'',da_UndefineRecurse));
begin DefTempl:=DefTempl.GetNextSkipChildren;
Result:=FindFallBackTemplate; end else begin
if Result<>nil then begin DefTempl:=DefTempl.GetNext;
// make sure it is at the end end;
if Result.Next<>nil then
CodeToolBoss.DefineTree.MoveToLast(Result);
exit;
end; end;
Result:=TDefineTemplate.Create(FallBackTemplName, 'Definitions for all other directories',
'', '', da_Block);
Result.Flags:=[dtfAutoGenerated];
// insert behind all
CodeToolBoss.DefineTree.ReplaceRootSameName(Result);
end; end;
end. end.

View File

@ -13365,8 +13365,7 @@ begin
MainBuildBoss.GetFPCCompilerParamsForEnvironmentTest( MainBuildBoss.GetFPCCompilerParamsForEnvironmentTest(
MainBuildBoss.CurDefinesCompilerOptions); MainBuildBoss.CurDefinesCompilerOptions);
//DebugLn('TMainIDE.InitCodeToolBoss CurDefinesCompilerOptions="',CurDefinesCompilerOptions,'"'); //DebugLn('TMainIDE.InitCodeToolBoss CurDefinesCompilerOptions="',CurDefinesCompilerOptions,'"');
CreateNotUsedDirectoryTemplate; CreateUseDefaultsFlagTemplate;
CreateFallBackTemplate;
ADefTempl:=CreateFPCTemplate(MainBuildBoss.CurDefinesCompilerFilename, ADefTempl:=CreateFPCTemplate(MainBuildBoss.CurDefinesCompilerFilename,
MainBuildBoss.CurDefinesCompilerOptions, MainBuildBoss.CurDefinesCompilerOptions,
@ -13410,7 +13409,7 @@ begin
// create compiler macros for the lazarus sources // create compiler macros for the lazarus sources
SetupLazarusDirectory(InteractiveSetup); SetupLazarusDirectory(InteractiveSetup);
ADefTempl:=CreateLazarusSrcTemplate( ADefTempl:=CreateLazarusSourceTemplate(
'$('+ExternalMacroStart+'LazarusDir)', '$('+ExternalMacroStart+'LazarusDir)',
'$('+ExternalMacroStart+'LCLWidgetType)', '$('+ExternalMacroStart+'LCLWidgetType)',
MiscellaneousOptions.BuildLazOpts.ExtraOptions,CodeToolsOpts); MiscellaneousOptions.BuildLazOpts.ExtraOptions,CodeToolsOpts);

View File

@ -546,7 +546,7 @@ type
private private
FActive: boolean; FActive: boolean;
FSrcDirectories: TDefineTemplate; FSrcDirectories: TDefineTemplate;
FSrcDirIfDef: TDefineTemplate; FSrcDirIf: TDefineTemplate;
FFlags: TProjectDefineTemplatesFlags; FFlags: TProjectDefineTemplatesFlags;
FMain: TDefineTemplate; FMain: TDefineTemplate;
FOutputDir: TDefineTemplate; FOutputDir: TDefineTemplate;
@ -584,7 +584,7 @@ type
property SrcDirectories: TDefineTemplate read FSrcDirectories; property SrcDirectories: TDefineTemplate read FSrcDirectories;
property OutputDir: TDefineTemplate read FOutputDir; property OutputDir: TDefineTemplate read FOutputDir;
property OutPutSrcPath: TDefineTemplate read FOutPutSrcPath; property OutPutSrcPath: TDefineTemplate read FOutPutSrcPath;
property CustomDefines: TDefineTemplate read FSrcDirIfDef; property CustomDefines: TDefineTemplate read FSrcDirIf;
property Active: boolean read FActive write SetActive; property Active: boolean read FActive write SetActive;
end; end;
@ -5628,7 +5628,7 @@ end;
procedure TProjectDefineTemplates.UpdateSrcDirIfDef; procedure TProjectDefineTemplates.UpdateSrcDirIfDef;
var var
NewValue: String; NewVariable: String;
Changed: Boolean; Changed: Boolean;
UnitPathDefTempl: TDefineTemplate; UnitPathDefTempl: TDefineTemplate;
IncPathDefTempl: TDefineTemplate; IncPathDefTempl: TDefineTemplate;
@ -5645,36 +5645,45 @@ begin
da_Block); da_Block);
FMain.AddChild(FSrcDirectories); FMain.AddChild(FSrcDirectories);
end; end;
if FSrcDirIfDef=nil then begin if FSrcDirIf=nil then begin
FSrcDirIfDef:=TDefineTemplate.Create('Source Directory Additions', if Project=nil then begin
'Additional defines for project source directories', // ToDo: main project
'#ProjectSrcMark'+Project.IDAsWord,'', FSrcDirIf:=TDefineTemplate.Create('Source Directory Additions',
da_IfDef); 'Additional defines for project source directories and all directories using defaults',
FMain.AddChild(FSrcDirIfDef); '','$(#ProjectSrcMark'+Project.IDAsWord+')',
da_If);
end else begin
// secondary projects
FSrcDirIf:=TDefineTemplate.Create('Source Directory Additions',
'Additional defines for project source directories',
'#ProjectSrcMark'+Project.IDAsWord,'',
da_IfDef);
end;
FMain.AddChild(FSrcDirIf);
// create unit path template for this directory // create unit path template for this directory
UnitPathDefTempl:=TDefineTemplate.Create('UnitPath', lisPkgDefsUnitPath, UnitPathDefTempl:=TDefineTemplate.Create('UnitPath', lisPkgDefsUnitPath,
'#UnitPath','$(#UnitPath);$ProjectUnitPath('+Project.IDAsString+')', '#UnitPath','$(#UnitPath);$ProjectUnitPath('+Project.IDAsString+')',
da_Define); da_Define);
FSrcDirIfDef.AddChild(UnitPathDefTempl); FSrcDirIf.AddChild(UnitPathDefTempl);
// create include path template for this directory // create include path template for this directory
IncPathDefTempl:=TDefineTemplate.Create('IncPath','Include Path', IncPathDefTempl:=TDefineTemplate.Create('IncPath','Include Path',
'#IncPath','$(#IncPath);$ProjectIncPath('+Project.IDAsString+')', '#IncPath','$(#IncPath);$ProjectIncPath('+Project.IDAsString+')',
da_Define); da_Define);
FSrcDirIfDef.AddChild(IncPathDefTempl); FSrcDirIf.AddChild(IncPathDefTempl);
// create src path template for this directory // create src path template for this directory
SrcPathDefTempl:=TDefineTemplate.Create('SrcPath','Src Path', SrcPathDefTempl:=TDefineTemplate.Create('SrcPath','Src Path',
'#SrcPath','$(#SrcPath);$ProjectSrcPath('+Project.IDAsString+')', '#SrcPath','$(#SrcPath);$ProjectSrcPath('+Project.IDAsString+')',
da_Define); da_Define);
FSrcDirIfDef.AddChild(SrcPathDefTempl); FSrcDirIf.AddChild(SrcPathDefTempl);
Changed:=true; Changed:=true;
end else begin end else begin
NewValue:='#ProjectSrcMark'+Project.IDAsWord; NewVariable:='#ProjectSrcMark'+Project.IDAsWord;
if FSrcDirIfDef.Value<>NewValue then begin if FSrcDirIf.Variable<>NewVariable then begin
FSrcDirIfDef.Value:='#ProjectSrcMark'+Project.IDAsWord; FSrcDirIf.Variable:=NewVariable;
Changed:=true; Changed:=true;
end; end;
end; end;
@ -5695,6 +5704,7 @@ begin
); );
FOutputDir.SetDefineOwner(Project,false); FOutputDir.SetDefineOwner(Project,false);
FOutputDir.SetFlags([dtfAutoGenerated],[],false); FOutputDir.SetFlags([dtfAutoGenerated],[],false);
DisableDefaultsInDirectories(FOutputDir);
FMain.AddChild(FOutputDir); FMain.AddChild(FOutputDir);
end else begin end else begin
FOutputDir.Value:=Project.GetOutputDirectory; FOutputDir.Value:=Project.GetOutputDirectory;
@ -5772,17 +5782,18 @@ begin
// build source directory define templates // build source directory define templates
fLastSourceDirectories.Assign(NewSourceDirs); fLastSourceDirectories.Assign(NewSourceDirs);
if (FSrcDirIfDef=nil) and (fLastSourceDirectories.Count>0) then if (FSrcDirIf=nil) and (fLastSourceDirectories.Count>0) then
UpdateSrcDirIfDef; UpdateSrcDirIfDef;
for i:=0 to fLastSourceDirectories.Count-1 do begin for i:=0 to fLastSourceDirectories.Count-1 do begin
// create directory template // create directory template
SrcDirDefTempl:=TDefineTemplate.Create('Source Directory '+IntToStr(i+1), SrcDirDefTempl:=TDefineTemplate.Create('Source Directory '+IntToStr(i+1),
fLastSourceDirectories[i],'',fLastSourceDirectories[i],da_Directory); fLastSourceDirectories[i],'',fLastSourceDirectories[i],da_Directory);
DisableDefaultsInDirectories(SrcDirDefTempl);
fLastSourceDirectories.Objects[i]:=SrcDirDefTempl; fLastSourceDirectories.Objects[i]:=SrcDirDefTempl;
// add project source directory marker // add project source directory marker
SrcDirMarkDefTempl:=TDefineTemplate.Create('ProjectSrcDirMark', SrcDirMarkDefTempl:=TDefineTemplate.Create('ProjectSrcDirMark',
lisProjProjectSourceDirectoryMark, '#ProjectSrcMark'+Project.IDAsWord, lisProjProjectSourceDirectoryMark, '#ProjectSrcMark'+Project.IDAsWord,
'', '1',
da_Define); da_Define);
SrcDirDefTempl.AddChild(SrcDirMarkDefTempl); SrcDirDefTempl.AddChild(SrcDirMarkDefTempl);
@ -5816,13 +5827,13 @@ begin
'Custom Options',FLastCustomOptions,false,Project); 'Custom Options',FLastCustomOptions,false,Project);
if OptionsDefTempl=nil then begin if OptionsDefTempl=nil then begin
// no custom options -> delete old template // no custom options -> delete old template
if FSrcDirIfDef<>nil then begin if FSrcDirIf<>nil then begin
if FSrcDirIfDef.DeleteChild('Custom Options') then if FSrcDirIf.DeleteChild('Custom Options') then
Changed:=true; Changed:=true;
end; end;
end else begin end else begin
UpdateSrcDirIfDef; UpdateSrcDirIfDef;
FSrcDirIfDef.ReplaceChild(OptionsDefTempl); FSrcDirIf.ReplaceChild(OptionsDefTempl);
Changed:=true; Changed:=true;
end; end;
if Changed then if Changed then
@ -5848,7 +5859,7 @@ begin
if (CodeToolBoss<>nil) then if (CodeToolBoss<>nil) then
CodeToolBoss.DefineTree.RemoveDefineTemplate(FMain); CodeToolBoss.DefineTree.RemoveDefineTemplate(FMain);
FMain:=nil; FMain:=nil;
FSrcDirIfDef:=nil; FSrcDirIf:=nil;
FSrcDirectories:=nil; FSrcDirectories:=nil;
FOutPutSrcPath:=nil; FOutPutSrcPath:=nil;
FOutputDir:=nil; FOutputDir:=nil;

View File

@ -3983,6 +3983,7 @@ begin
); );
FOutputDir.SetDefineOwner(LazPackage,false); FOutputDir.SetDefineOwner(LazPackage,false);
FOutputDir.SetFlags([dtfAutoGenerated],[],false); FOutputDir.SetFlags([dtfAutoGenerated],[],false);
DisableDefaultsInDirectories(FOutputDir);
FMain.AddChild(FOutputDir); FMain.AddChild(FOutputDir);
end else begin end else begin
FOutputDir.Value:=LazPackage.GetOutputDirectory; FOutputDir.Value:=LazPackage.GetOutputDirectory;
@ -4065,6 +4066,7 @@ begin
// create directory template // create directory template
SrcDirDefTempl:=TDefineTemplate.Create('Source Directory '+IntToStr(i+1), SrcDirDefTempl:=TDefineTemplate.Create('Source Directory '+IntToStr(i+1),
fLastSourceDirectories[i],'',fLastSourceDirectories[i],da_Directory); fLastSourceDirectories[i],'',fLastSourceDirectories[i],da_Directory);
DisableDefaultsInDirectories(SrcDirDefTempl);
fLastSourceDirectories.Objects[i]:=SrcDirDefTempl; fLastSourceDirectories.Objects[i]:=SrcDirDefTempl;
// add package source directory marker // add package source directory marker
SrcDirMarkDefTempl:=TDefineTemplate.Create('PkgSrcDirMark', SrcDirMarkDefTempl:=TDefineTemplate.Create('PkgSrcDirMark',