mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-26 22:03:08 +02:00
h2paswizard: implemented merging multiple C header files into one unit
git-svn-id: trunk@10781 -
This commit is contained in:
parent
bb7d1e7f50
commit
14b348460c
@ -151,20 +151,29 @@ type
|
|||||||
function Execute(aText: TIDETextConverter): TModalResult; override;
|
function Execute(aText: TIDETextConverter): TModalResult; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TH2PasFile = class;
|
||||||
|
|
||||||
{ TH2PasFileCInclude }
|
{ TH2PasFileCInclude }
|
||||||
|
|
||||||
TH2PasFileCInclude = class
|
TH2PasFileCInclude = class
|
||||||
private
|
private
|
||||||
FFilename: string;
|
FFilename: string;
|
||||||
|
FH2PasFile: TH2PasFile;
|
||||||
|
FOwner: TH2PasFile;
|
||||||
FSrcFilename: string;
|
FSrcFilename: string;
|
||||||
FSrcPos: TPoint;
|
FSrcPos: TPoint;
|
||||||
procedure SetFilename(const AValue: string);
|
procedure SetFilename(const AValue: string);
|
||||||
|
procedure SetH2PasFile(const AValue: TH2PasFile);
|
||||||
procedure SetSrcFilename(const AValue: string);
|
procedure SetSrcFilename(const AValue: string);
|
||||||
procedure SetSrcPos(const AValue: TPoint);
|
procedure SetSrcPos(const AValue: TPoint);
|
||||||
public
|
public
|
||||||
|
constructor Create(TheOwner: TH2PasFile);
|
||||||
|
destructor Destroy; override;
|
||||||
|
property Owner: TH2PasFile read FOwner;
|
||||||
property SrcFilename: string read FSrcFilename write SetSrcFilename;
|
property SrcFilename: string read FSrcFilename write SetSrcFilename;
|
||||||
property SrcPos: TPoint read FSrcPos write SetSrcPos;
|
property SrcPos: TPoint read FSrcPos write SetSrcPos;
|
||||||
property Filename: string read FFilename write SetFilename;
|
property Filename: string read FFilename write SetFilename;
|
||||||
|
property H2PasFile: TH2PasFile read FH2PasFile write SetH2PasFile;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TH2PasProject = class;
|
TH2PasProject = class;
|
||||||
@ -177,21 +186,30 @@ type
|
|||||||
FCIncludes: TFPList; // list of TH2PasFileCInclude
|
FCIncludes: TFPList; // list of TH2PasFileCInclude
|
||||||
FCIncludesValid: boolean;
|
FCIncludesValid: boolean;
|
||||||
FCIncludesFileAge: TDateTime;
|
FCIncludesFileAge: TDateTime;
|
||||||
|
FCIncludedBy: TFPList; // list of TH2PasFileCInclude
|
||||||
FEnabled: boolean;
|
FEnabled: boolean;
|
||||||
FFilename: string;
|
FFilename: string;
|
||||||
|
FMerge: boolean;
|
||||||
FModified: boolean;
|
FModified: boolean;
|
||||||
FProject: TH2PasProject;
|
FProject: TH2PasProject;
|
||||||
function GetCIncludeCount: integer;
|
function GetCIncludeCount: integer;
|
||||||
|
function GetCIncludedBy(Index: integer): TH2PasFileCInclude;
|
||||||
|
function GetCIncludedByCount: integer;
|
||||||
function GetCIncludes(Index: integer): TH2PasFileCInclude;
|
function GetCIncludes(Index: integer): TH2PasFileCInclude;
|
||||||
procedure SetEnabled(const AValue: boolean);
|
procedure SetEnabled(const AValue: boolean);
|
||||||
procedure SetFilename(const AValue: string);
|
procedure SetFilename(const AValue: string);
|
||||||
|
procedure SetMerge(const AValue: boolean);
|
||||||
procedure SetModified(const AValue: boolean);
|
procedure SetModified(const AValue: boolean);
|
||||||
procedure SetProject(const AValue: TH2PasProject);
|
procedure SetProject(const AValue: TH2PasProject);
|
||||||
procedure SearchCIncFilenames;
|
procedure SearchCIncFilenames;
|
||||||
|
procedure InternalAddCIncludedBy(CIncludedBy: TH2PasFileCInclude);
|
||||||
|
procedure InternalRemoveCIncludedBy(CIncludedBy: TH2PasFileCInclude);
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
|
procedure ClearIncludedByReferences;
|
||||||
|
procedure ClearCIncludes;
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
function IsEqual(AFile: TH2PasFile): boolean;
|
function IsEqual(AFile: TH2PasFile): boolean;
|
||||||
procedure Load(Config: TConfigStorage);
|
procedure Load(Config: TConfigStorage);
|
||||||
@ -202,6 +220,7 @@ type
|
|||||||
function GetH2PasParameters(const InputFilename: string = ''): string;
|
function GetH2PasParameters(const InputFilename: string = ''): string;
|
||||||
function ReadCIncludes(ForceUpdate: boolean): TModalResult;
|
function ReadCIncludes(ForceUpdate: boolean): TModalResult;
|
||||||
function CIncludesValid: boolean;
|
function CIncludesValid: boolean;
|
||||||
|
function FindCIncludedByWithOwner(ByOwner: TH2PasFile): TH2PasFileCInclude;
|
||||||
public
|
public
|
||||||
property Project: TH2PasProject read FProject write SetProject;
|
property Project: TH2PasProject read FProject write SetProject;
|
||||||
property Filename: string read FFilename write SetFilename;
|
property Filename: string read FFilename write SetFilename;
|
||||||
@ -209,6 +228,9 @@ type
|
|||||||
property Modified: boolean read FModified write SetModified;
|
property Modified: boolean read FModified write SetModified;
|
||||||
property CIncludeCount: integer read GetCIncludeCount;
|
property CIncludeCount: integer read GetCIncludeCount;
|
||||||
property CIncludes[Index: integer]: TH2PasFileCInclude read GetCIncludes;
|
property CIncludes[Index: integer]: TH2PasFileCInclude read GetCIncludes;
|
||||||
|
property CIncludedByCount: integer read GetCIncludedByCount;
|
||||||
|
property CIncludedBy[Index: integer]: TH2PasFileCInclude read GetCIncludedBy;
|
||||||
|
property Merge: boolean read FMerge write SetMerge;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TH2PasProject }
|
{ TH2PasProject }
|
||||||
@ -291,6 +313,7 @@ type
|
|||||||
procedure AddDefaultPostH2PasTools;
|
procedure AddDefaultPostH2PasTools;
|
||||||
function SearchIncludedCHeaderFile(aFile: TH2PasFile;
|
function SearchIncludedCHeaderFile(aFile: TH2PasFile;
|
||||||
const SrcFilename: string): string;
|
const SrcFilename: string): string;
|
||||||
|
function ReadAllCIncludes(ForceUpdate: boolean): TModalResult;
|
||||||
public
|
public
|
||||||
property CHeaderFileCount: integer read GetCHeaderFileCount;
|
property CHeaderFileCount: integer read GetCHeaderFileCount;
|
||||||
property CHeaderFiles[Index: integer]: TH2PasFile read GetCHeaderFiles;
|
property CHeaderFiles[Index: integer]: TH2PasFile read GetCHeaderFiles;
|
||||||
@ -369,6 +392,9 @@ type
|
|||||||
procedure SaveProject(const Filename: string);
|
procedure SaveProject(const Filename: string);
|
||||||
function Execute: TModalResult;
|
function Execute: TModalResult;
|
||||||
function ConvertFile(AFile: TH2PasFile): TModalResult;
|
function ConvertFile(AFile: TH2PasFile): TModalResult;
|
||||||
|
function CheckMergeDependencies: TModalResult;
|
||||||
|
function MergeIncludeFiles(AFile: TH2PasFile;
|
||||||
|
TextConverter: TIDETextConverter): TModalResult;
|
||||||
function GetH2PasFilename: string;
|
function GetH2PasFilename: string;
|
||||||
function FindH2PasErrorMessage: integer;
|
function FindH2PasErrorMessage: integer;
|
||||||
function GetH2PasErrorPostion(const Line: string;
|
function GetH2PasErrorPostion(const Line: string;
|
||||||
@ -404,6 +430,13 @@ begin
|
|||||||
Modified:=true;
|
Modified:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFile.SetMerge(const AValue: boolean);
|
||||||
|
begin
|
||||||
|
if FMerge=AValue then exit;
|
||||||
|
FMerge:=AValue;
|
||||||
|
Modified:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TH2PasFile.SetEnabled(const AValue: boolean);
|
procedure TH2PasFile.SetEnabled(const AValue: boolean);
|
||||||
begin
|
begin
|
||||||
if FEnabled=AValue then exit;
|
if FEnabled=AValue then exit;
|
||||||
@ -419,6 +452,19 @@ begin
|
|||||||
Result:=FCIncludes.Count;
|
Result:=FCIncludes.Count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TH2PasFile.GetCIncludedBy(Index: integer): TH2PasFileCInclude;
|
||||||
|
begin
|
||||||
|
Result:=TH2PasFileCInclude(FCIncludedBy[Index]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TH2PasFile.GetCIncludedByCount: integer;
|
||||||
|
begin
|
||||||
|
if (FCIncludedBy=nil) then
|
||||||
|
Result:=0
|
||||||
|
else
|
||||||
|
Result:=FCIncludedBy.Count;
|
||||||
|
end;
|
||||||
|
|
||||||
function TH2PasFile.GetCIncludes(Index: integer): TH2PasFileCInclude;
|
function TH2PasFile.GetCIncludes(Index: integer): TH2PasFileCInclude;
|
||||||
begin
|
begin
|
||||||
Result:=TH2PasFileCInclude(FCIncludes[Index]);
|
Result:=TH2PasFileCInclude(FCIncludes[Index]);
|
||||||
@ -456,10 +502,26 @@ begin
|
|||||||
for i:=0 to FCIncludes.Count-1 do begin
|
for i:=0 to FCIncludes.Count-1 do begin
|
||||||
IncFile:=CIncludes[i];
|
IncFile:=CIncludes[i];
|
||||||
IncFile.Filename:=
|
IncFile.Filename:=
|
||||||
Project.SearchIncludedCHeaderFile(Self,IncFile.SrcFilename);
|
Project.SearchIncludedCHeaderFile(Self,IncFile.SrcFilename);
|
||||||
|
IncFile.H2PasFile:=Project.CHeaderFileWithFilename(IncFile.Filename);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFile.InternalAddCIncludedBy(CIncludedBy: TH2PasFileCInclude);
|
||||||
|
begin
|
||||||
|
if FCIncludedBy=nil then
|
||||||
|
FCIncludedBy:=TFPList.Create;
|
||||||
|
FCIncludedBy.Add(CIncludedBy);
|
||||||
|
//DebugLn(['TH2PasFile.InternalAddCIncludedBy ',Filename,' included by ',CIncludedBy.Filename]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFile.InternalRemoveCIncludedBy(CIncludedBy: TH2PasFileCInclude
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
if FCIncludedBy=nil then exit;
|
||||||
|
FCIncludedBy.Remove(CIncludedBy);
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TH2PasFile.Create;
|
constructor TH2PasFile.Create;
|
||||||
begin
|
begin
|
||||||
Clear;
|
Clear;
|
||||||
@ -471,6 +533,7 @@ begin
|
|||||||
Project:=nil;
|
Project:=nil;
|
||||||
end;
|
end;
|
||||||
Clear;
|
Clear;
|
||||||
|
ClearIncludedByReferences;
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -479,8 +542,37 @@ begin
|
|||||||
FEnabled:=true;
|
FEnabled:=true;
|
||||||
FFilename:='';
|
FFilename:='';
|
||||||
FModified:=false;
|
FModified:=false;
|
||||||
|
FMerge:=false;
|
||||||
|
ClearCIncludes;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFile.ClearIncludedByReferences;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
IncFile: TH2PasFileCInclude;
|
||||||
|
begin
|
||||||
|
if FCIncludedBy=nil then exit;
|
||||||
|
for i:=FCIncludedBy.Count-1 downto 0 do begin
|
||||||
|
IncFile:=TH2PasFileCInclude(FCIncludedBy[i]);
|
||||||
|
if IncFile=nil then continue;
|
||||||
|
IncFile.FH2PasFile:=nil;
|
||||||
|
end;
|
||||||
|
FCIncludedBy.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFile.ClearCIncludes;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
IncFile: TH2PasFileCInclude;
|
||||||
|
begin
|
||||||
FCIncludesValid:=false;
|
FCIncludesValid:=false;
|
||||||
FreeAndNil(FCIncludes);
|
if FCIncludes<>nil then begin
|
||||||
|
for i:=0 to FCIncludes.Count-1 do begin
|
||||||
|
IncFile:=TH2PasFileCInclude(FCIncludes[i]);
|
||||||
|
IncFile.Free;
|
||||||
|
end;
|
||||||
|
FreeAndNil(FCIncludes);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasFile.Assign(Source: TPersistent);
|
procedure TH2PasFile.Assign(Source: TPersistent);
|
||||||
@ -509,6 +601,7 @@ end;
|
|||||||
procedure TH2PasFile.Load(Config: TConfigStorage);
|
procedure TH2PasFile.Load(Config: TConfigStorage);
|
||||||
begin
|
begin
|
||||||
FEnabled:=Config.GetValue('Enabled/Value',true);
|
FEnabled:=Config.GetValue('Enabled/Value',true);
|
||||||
|
FMerge:=Config.GetValue('Merge/Value',false);
|
||||||
FFilename:=Config.GetValue('Filename/Value','');
|
FFilename:=Config.GetValue('Filename/Value','');
|
||||||
if Project<>nil then
|
if Project<>nil then
|
||||||
FFilename:=Project.NormalizeFilename(FFilename);
|
FFilename:=Project.NormalizeFilename(FFilename);
|
||||||
@ -521,6 +614,7 @@ var
|
|||||||
AFilename: String;
|
AFilename: String;
|
||||||
begin
|
begin
|
||||||
Config.SetDeleteValue('Enabled/Value',Enabled,true);
|
Config.SetDeleteValue('Enabled/Value',Enabled,true);
|
||||||
|
Config.SetDeleteValue('Merge/Value',Merge,true);
|
||||||
AFilename:=FFilename;
|
AFilename:=FFilename;
|
||||||
if Project<>nil then
|
if Project<>nil then
|
||||||
AFilename:=Project.ShortenFilename(AFilename);
|
AFilename:=Project.ShortenFilename(AFilename);
|
||||||
@ -590,9 +684,10 @@ begin
|
|||||||
if (not ForceUpdate) and CIncludesValid then exit(mrOk);
|
if (not ForceUpdate) and CIncludesValid then exit(mrOk);
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
if not FileExistsCached(Filename) then exit;
|
if not FileExistsCached(Filename) then exit;
|
||||||
|
ClearCIncludes;
|
||||||
FCIncludesFileAge:=FileAge(Filename);
|
FCIncludesFileAge:=FileAge(Filename);
|
||||||
FCIncludesValid:=true;
|
FCIncludesValid:=true;
|
||||||
DebugLn(['TH2PasFile.ReadCIncludes Filename="',Filename,'"']);
|
//DebugLn(['TH2PasFile.ReadCIncludes Filename="',Filename,'"']);
|
||||||
try
|
try
|
||||||
sl:=TStringList.Create;
|
sl:=TStringList.Create;
|
||||||
try
|
try
|
||||||
@ -603,9 +698,10 @@ begin
|
|||||||
if SrcFilename='' then continue;
|
if SrcFilename='' then continue;
|
||||||
// add new include
|
// add new include
|
||||||
if FCIncludes=nil then FCIncludes:=TFPList.Create;
|
if FCIncludes=nil then FCIncludes:=TFPList.Create;
|
||||||
Item:=TH2PasFileCInclude.Create;
|
Item:=TH2PasFileCInclude.Create(Self);
|
||||||
Item.SrcFilename:=SrcFilename;
|
Item.SrcFilename:=SrcFilename;
|
||||||
Item.SrcPos:=Point(1,i);
|
Item.SrcPos:=Point(1,i);
|
||||||
|
//DebugLn(['TH2PasFile.ReadCIncludes Self=',Filename,' include=',SrcFilename,' ',dbgs(Item.SrcPos)]);
|
||||||
FCIncludes.Add(Item);
|
FCIncludes.Add(Item);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
@ -632,6 +728,20 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TH2PasFile.FindCIncludedByWithOwner(ByOwner: TH2PasFile
|
||||||
|
): TH2PasFileCInclude;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if FCIncludedBy<>nil then begin
|
||||||
|
for i:=0 to CIncludedByCount-1 do begin
|
||||||
|
Result:=CIncludedBy[i];
|
||||||
|
if Result.Owner=ByOwner then exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=nil;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TH2PasProject }
|
{ TH2PasProject }
|
||||||
|
|
||||||
function TH2PasProject.GetCHeaderFileCount: integer;
|
function TH2PasProject.GetCHeaderFileCount: integer;
|
||||||
@ -1261,6 +1371,17 @@ begin
|
|||||||
Result:='';
|
Result:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TH2PasProject.ReadAllCIncludes(ForceUpdate: boolean): TModalResult;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i:=0 to CHeaderFileCount-1 do begin
|
||||||
|
Result:=CHeaderFiles[i].ReadCIncludes(ForceUpdate);
|
||||||
|
if Result=mrAbort then exit;
|
||||||
|
end;
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TH2PasConverter }
|
{ TH2PasConverter }
|
||||||
|
|
||||||
procedure TH2PasConverter.OnParseH2PasLine(Sender: TObject;
|
procedure TH2PasConverter.OnParseH2PasLine(Sender: TObject;
|
||||||
@ -1480,10 +1601,18 @@ begin
|
|||||||
FExecuting:=true;
|
FExecuting:=true;
|
||||||
try
|
try
|
||||||
FLastUsedFilename:='';
|
FLastUsedFilename:='';
|
||||||
|
|
||||||
|
CurResult:=CheckMergeDependencies;
|
||||||
|
if CurResult=mrAbort then begin
|
||||||
|
DebugLn(['TH2PasConverter.Execute aborted because merging not possible']);
|
||||||
|
exit(mrAbort);
|
||||||
|
end;
|
||||||
|
|
||||||
// convert every c header file
|
// convert every c header file
|
||||||
for i:=0 to Project.CHeaderFileCount-1 do begin
|
for i:=0 to Project.CHeaderFileCount-1 do begin
|
||||||
AFile:=Project.CHeaderFiles[i];
|
AFile:=Project.CHeaderFiles[i];
|
||||||
if not AFile.Enabled then continue;
|
if not AFile.Enabled then continue;
|
||||||
|
if AFile.Merge then continue;
|
||||||
CurResult:=ConvertFile(AFile);
|
CurResult:=ConvertFile(AFile);
|
||||||
if CurResult=mrAbort then begin
|
if CurResult=mrAbort then begin
|
||||||
DebugLn(['TH2PasConverter.Execute aborted on file ',AFile.Filename]);
|
DebugLn(['TH2PasConverter.Execute aborted on file ',AFile.Filename]);
|
||||||
@ -1532,8 +1661,15 @@ begin
|
|||||||
FLastUsedFilename:=TextConverter.Filename;
|
FLastUsedFilename:=TextConverter.Filename;
|
||||||
DebugLn(['TH2PasConverter.ConvertFile TempCHeaderFilename="',TempCHeaderFilename,'" CurrentType=',ord(TextConverter.CurrentType),' FileSize=',FileSize(TempCHeaderFilename)]);
|
DebugLn(['TH2PasConverter.ConvertFile TempCHeaderFilename="',TempCHeaderFilename,'" CurrentType=',ord(TextConverter.CurrentType),' FileSize=',FileSize(TempCHeaderFilename)]);
|
||||||
|
|
||||||
// run converters for .h file to make it compatible for h2pas
|
// merge files
|
||||||
TextConverter.LoadFromFile(InputFilename);
|
TextConverter.LoadFromFile(InputFilename);
|
||||||
|
Result:=MergeIncludeFiles(AFile,TextConverter);
|
||||||
|
if Result<>mrOk then begin
|
||||||
|
DebugLn(['TH2PasConverter.ConvertFile Failed merging include files in ',TempCHeaderFilename]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// run converters for .h file to make it compatible for h2pas
|
||||||
Result:=TextConverter.Execute(Project.PreH2PasTools);
|
Result:=TextConverter.Execute(Project.PreH2PasTools);
|
||||||
if Result<>mrOk then begin
|
if Result<>mrOk then begin
|
||||||
DebugLn(['TH2PasConverter.ConvertFile Failed running Project.PreH2PasTools on ',TempCHeaderFilename]);
|
DebugLn(['TH2PasConverter.ConvertFile Failed running Project.PreH2PasTools on ',TempCHeaderFilename]);
|
||||||
@ -1587,6 +1723,141 @@ begin
|
|||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TH2PasConverter.CheckMergeDependencies: TModalResult;
|
||||||
|
var
|
||||||
|
CheckedFiles: TFPList;
|
||||||
|
|
||||||
|
procedure AddIncludedByFiles(IncludedByFiles: TFPList; CurFile: TH2PasFile);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
IncludedBy: TH2PasFile;
|
||||||
|
begin
|
||||||
|
if CheckedFiles.IndexOf(CurFile)>=0 then exit;
|
||||||
|
CheckedFiles.Add(CurFile);
|
||||||
|
for i:=0 to CurFile.CIncludedByCount-1 do begin
|
||||||
|
IncludedBy:=CurFile.CIncludedBy[i].Owner;
|
||||||
|
if IncludedBy.Merge then
|
||||||
|
AddIncludedByFiles(IncludedByFiles,IncludedBy)
|
||||||
|
else
|
||||||
|
if IncludedByFiles.IndexOf(IncludedBy)<0 then
|
||||||
|
IncludedByFiles.Add(IncludedBy);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
CurFile: TH2PasFile;
|
||||||
|
j: Integer;
|
||||||
|
IncludedByFiles: TFPList;
|
||||||
|
Warning: String;
|
||||||
|
begin
|
||||||
|
// update graph
|
||||||
|
Result:=Project.ReadAllCIncludes(true);
|
||||||
|
if Result=mrAbort then begin
|
||||||
|
DebugLn(['TH2PasConverter.CheckMergeDependencies aborted reading all include dependencies']);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Warning:='';
|
||||||
|
for i:=0 to Project.CHeaderFileCount-1 do begin
|
||||||
|
CurFile:=Project.CHeaderFiles[i];
|
||||||
|
if CurFile.Merge then begin
|
||||||
|
// this file should be merged
|
||||||
|
// -> check if it is included only once
|
||||||
|
IncludedByFiles:=TFPList.Create;
|
||||||
|
CheckedFiles:=TFPList.Create;
|
||||||
|
AddIncludedByFiles(IncludedByFiles,CurFile);
|
||||||
|
if IncludedByFiles.Count>1 then begin
|
||||||
|
// this merged file is included by more than unit
|
||||||
|
Warning:=Warning
|
||||||
|
+'Warning: the file "'+Project.ShortenFilename(CurFile.Filename)+'"'#13
|
||||||
|
+'will be merged into multiple files:'#13;
|
||||||
|
for j:=0 to IncludedByFiles.Count-1 do begin
|
||||||
|
if j>0 then
|
||||||
|
Warning:=Warning+', ';
|
||||||
|
Warning:=Warning
|
||||||
|
+Project.ShortenFilename(TH2PasFile(IncludedByFiles[j]).Filename);
|
||||||
|
end;
|
||||||
|
Warning:=Warning+#13;
|
||||||
|
end;
|
||||||
|
CheckedFiles.Free;
|
||||||
|
IncludedByFiles.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if Warning<>'' then begin
|
||||||
|
Result:=MessageDlg('Warning',
|
||||||
|
'Ambiguous merges:'#13
|
||||||
|
+Warning,mtWarning,[mbIgnore,mbAbort],0);
|
||||||
|
if Result<>mrIgnore then exit(mrCancel);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TH2PasConverter.MergeIncludeFiles(AFile: TH2PasFile;
|
||||||
|
TextConverter: TIDETextConverter): TModalResult;
|
||||||
|
|
||||||
|
procedure GetMergeFiles(MergedFiles: TFPList; CurFile: TH2PasFile);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
CInclude: TH2PasFileCInclude;
|
||||||
|
IncFile: TH2PasFile;
|
||||||
|
begin
|
||||||
|
//DebugLn(['GetMergeFiles CurFile=',CurFile.Filename,' CurFile.CIncludeCount=',CurFile.CIncludeCount]);
|
||||||
|
for i:=0 to CurFile.CIncludeCount-1 do begin
|
||||||
|
CInclude:=CurFile.CIncludes[i];
|
||||||
|
IncFile:=CInclude.H2PasFile;
|
||||||
|
if IncFile=nil then continue;
|
||||||
|
//DebugLn(['GetMergeFiles AFile=',AFile.Filename,' CInclude=',CInclude.Filename,' IncFile.Merge=',IncFile.Merge,' ']);
|
||||||
|
if not IncFile.Merge then continue;
|
||||||
|
if IncFile=AFile then continue;
|
||||||
|
if MergedFiles.IndexOf(IncFile)<0 then
|
||||||
|
MergedFiles.Add(IncFile);
|
||||||
|
GetMergeFiles(MergedFiles,IncFile);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
MergedFiles: TFPList;// list of TH2PasFile
|
||||||
|
i: Integer;
|
||||||
|
IncludeFile: TH2PasFile;
|
||||||
|
fs: TFileStream;
|
||||||
|
s: string;
|
||||||
|
begin
|
||||||
|
Result:=mrCancel;
|
||||||
|
MergedFiles:=TFPList.Create;
|
||||||
|
try
|
||||||
|
GetMergeFiles(MergedFiles,AFile);
|
||||||
|
for i:=0 to MergedFiles.Count-1 do begin
|
||||||
|
IncludeFile:=TH2PasFile(MergedFiles[i]);
|
||||||
|
DebugLn(['TH2PasConverter.MergeIncludeFiles merging file '
|
||||||
|
,'"'+IncludeFile.Filename+'"'+' into "'+TextConverter.Filename+'"']);
|
||||||
|
try
|
||||||
|
fs:=TFileStream.Create(IncludeFile.Filename,fmOpenRead);
|
||||||
|
try
|
||||||
|
SetLength(s,fs.Size);
|
||||||
|
if s<>'' then begin
|
||||||
|
fs.Read(s[1],length(s));
|
||||||
|
TextConverter.Source:=TextConverter.Source+LineEnding+s;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
fs.Free;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on E: Exception do begin
|
||||||
|
MessageDlg('Error','Unable to merge file "'+IncludeFile.Filename+'"'
|
||||||
|
+' into "'+TextConverter.Filename+'"',mtError,[mbCancel],0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=mrOk;
|
||||||
|
finally
|
||||||
|
MergedFiles.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TH2PasConverter.GetH2PasFilename: string;
|
function TH2PasConverter.GetH2PasFilename: string;
|
||||||
begin
|
begin
|
||||||
Result:=FindDefaultExecutablePath(h2pasFilename);
|
Result:=FindDefaultExecutablePath(h2pasFilename);
|
||||||
@ -2762,6 +3033,16 @@ begin
|
|||||||
FFilename:=AValue;
|
FFilename:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasFileCInclude.SetH2PasFile(const AValue: TH2PasFile);
|
||||||
|
begin
|
||||||
|
if FH2PasFile=AValue then exit;
|
||||||
|
if (FH2PasFile<>nil) then
|
||||||
|
FH2PasFile.InternalRemoveCIncludedBy(Self);
|
||||||
|
FH2PasFile:=AValue;
|
||||||
|
if (FH2PasFile<>nil) then
|
||||||
|
FH2PasFile.InternalAddCIncludedBy(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TH2PasFileCInclude.SetSrcFilename(const AValue: string);
|
procedure TH2PasFileCInclude.SetSrcFilename(const AValue: string);
|
||||||
begin
|
begin
|
||||||
if FSrcFilename=AValue then exit;
|
if FSrcFilename=AValue then exit;
|
||||||
@ -2774,4 +3055,15 @@ begin
|
|||||||
FSrcPos:=AValue;
|
FSrcPos:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
constructor TH2PasFileCInclude.Create(TheOwner: TH2PasFile);
|
||||||
|
begin
|
||||||
|
FOwner:=TheOwner;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TH2PasFileCInclude.Destroy;
|
||||||
|
begin
|
||||||
|
H2PasFile:=nil;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
object H2PasDialog: TH2PasDialog
|
object H2PasDialog: TH2PasDialog
|
||||||
Left = 245
|
Left = 245
|
||||||
Height = 501
|
Height = 549
|
||||||
Top = 205
|
Top = 205
|
||||||
Width = 785
|
Width = 785
|
||||||
HorzScrollBar.Page = 784
|
HorzScrollBar.Page = 784
|
||||||
VertScrollBar.Page = 500
|
VertScrollBar.Page = 548
|
||||||
ActiveControl = ConvertButton
|
ActiveControl = ConvertButton
|
||||||
Caption = 'H2PasDialog'
|
Caption = 'H2PasDialog'
|
||||||
KeyPreview = True
|
KeyPreview = True
|
||||||
@ -15,9 +15,8 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Position = poDesktopCenter
|
Position = poDesktopCenter
|
||||||
object MainPageControl: TPageControl
|
object MainPageControl: TPageControl
|
||||||
AnchorSideBottom.Control = OpenSettingsButton
|
AnchorSideBottom.Control = OpenSettingsButton
|
||||||
Height = 465
|
Height = 509
|
||||||
Width = 785
|
Width = 785
|
||||||
TabStop = True
|
|
||||||
ActivePage = FilesTabSheet
|
ActivePage = FilesTabSheet
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
@ -26,17 +25,18 @@ object H2PasDialog: TH2PasDialog
|
|||||||
object FilesTabSheet: TTabSheet
|
object FilesTabSheet: TTabSheet
|
||||||
Caption = 'FilesTabSheet'
|
Caption = 'FilesTabSheet'
|
||||||
object CHeaderFilesCheckTreeView: TTreeView
|
object CHeaderFilesCheckTreeView: TTreeView
|
||||||
Height = 435
|
Height = 475
|
||||||
Width = 255
|
Width = 255
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
DefaultItemHeight = 16
|
DefaultItemHeight = 18
|
||||||
StateImages = FileStateImageList
|
StateImages = FileStateImageList
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
|
OnDblClick = CHeaderFilesCheckTreeViewDblClick
|
||||||
OnMouseDown = CHeaderFilesCheckTreeViewMouseDown
|
OnMouseDown = CHeaderFilesCheckTreeViewMouseDown
|
||||||
OnSelectionChanged = CHeaderFilesCheckTreeViewSelectionChanged
|
OnSelectionChanged = CHeaderFilesCheckTreeViewSelectionChanged
|
||||||
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
|
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
|
||||||
end
|
end
|
||||||
object AddCHeaderFilesButton: TButton
|
object AddCHeadersButton: TButton
|
||||||
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
@ -45,11 +45,11 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Width = 185
|
Width = 185
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Caption = 'AddCHeaderFilesButton'
|
Caption = 'AddCHeadersButton'
|
||||||
OnClick = AddCHeaderFilesButtonClick
|
OnClick = AddCHeadersButtonClick
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object DeleteCHeaderFilesButton: TButton
|
object DeleteCHeadersButton: TButton
|
||||||
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
@ -58,11 +58,11 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Width = 185
|
Width = 185
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Caption = 'DeleteCHeaderFilesButton'
|
Caption = 'DeleteCHeadersButton'
|
||||||
OnClick = DeleteCHeaderFilesButtonClick
|
OnClick = DeleteCHeadersButtonClick
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object EnableAllCHeaderFilesButton: TButton
|
object EnableAllCHeadersButton: TButton
|
||||||
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
@ -71,11 +71,11 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Width = 185
|
Width = 185
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Caption = 'EnableAllCHeaderFilesButton'
|
Caption = 'EnableAllCHeadersButton'
|
||||||
OnClick = EnableAllCHeaderFilesButtonClick
|
OnClick = EnableAllCHeadersButtonClick
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
object DisableAllCHeaderFilesButton: TButton
|
object DisableAllCHeadersButton: TButton
|
||||||
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
AnchorSideLeft.Control = CHeaderFilesSplitter1
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
@ -84,13 +84,13 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Width = 185
|
Width = 185
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
Caption = 'DisableAllCHeaderFilesButton'
|
Caption = 'DisableAllCHeadersButton'
|
||||||
OnClick = DisableAllCHeaderFilesButtonClick
|
OnClick = DisableAllCHeadersButtonClick
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
end
|
end
|
||||||
object CHeaderFilesSplitter1: TSplitter
|
object CHeaderFilesSplitter1: TSplitter
|
||||||
Left = 255
|
Left = 255
|
||||||
Height = 435
|
Height = 475
|
||||||
Width = 5
|
Width = 5
|
||||||
Beveled = True
|
Beveled = True
|
||||||
end
|
end
|
||||||
@ -102,28 +102,19 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideBottom.Control = FilesTabSheet
|
AnchorSideBottom.Control = FilesTabSheet
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 260
|
Left = 260
|
||||||
Height = 227
|
Height = 267
|
||||||
Top = 208
|
Top = 208
|
||||||
Width = 521
|
Width = 521
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
Caption = 'FileInfoGroupBox'
|
Caption = 'FileInfoGroupBox'
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
object FileInfoLabel: TLabel
|
|
||||||
Left = 8
|
|
||||||
Height = 13
|
|
||||||
Top = 1
|
|
||||||
Width = 73
|
|
||||||
Caption = 'FileInfoLabel'
|
|
||||||
Color = clNone
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object AddIncludedCHeaderFilesButton: TButton
|
object AddIncludedCHeaderFilesButton: TButton
|
||||||
AnchorSideBottom.Control = FileInfoGroupBox
|
AnchorSideBottom.Control = FileInfoGroupBox
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 178
|
Top = 210
|
||||||
Width = 197
|
Width = 249
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -132,12 +123,35 @@ object H2PasDialog: TH2PasDialog
|
|||||||
OnClick = AddIncludedCHeaderFilesButtonClick
|
OnClick = AddIncludedCHeaderFilesButtonClick
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
|
object FileInfoMemo: TMemo
|
||||||
|
AnchorSideLeft.Control = FileInfoGroupBox
|
||||||
|
AnchorSideTop.Control = MergeFileCheckBox
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = FileInfoGroupBox
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = AddIncludedCHeaderFilesButton
|
||||||
|
Height = 183
|
||||||
|
Top = 21
|
||||||
|
Width = 517
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
Color = clNone
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object MergeFileCheckBox: TCheckBox
|
||||||
|
Left = 8
|
||||||
|
Height = 24
|
||||||
|
Top = -3
|
||||||
|
Width = 168
|
||||||
|
Caption = 'MergeFileCheckBox'
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object MoveFileUpButton: TButton
|
object MoveFileUpButton: TButton
|
||||||
AnchorSideLeft.Control = AddCHeaderFilesButton
|
AnchorSideLeft.Control = AddCHeadersButton
|
||||||
AnchorSideTop.Control = DisableAllCHeaderFilesButton
|
AnchorSideTop.Control = DisableAllCHeadersButton
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = AddCHeaderFilesButton
|
AnchorSideRight.Control = AddCHeadersButton
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
Height = 25
|
Height = 25
|
||||||
@ -151,10 +165,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
end
|
end
|
||||||
object MoveFileDownButton: TButton
|
object MoveFileDownButton: TButton
|
||||||
AnchorSideLeft.Control = AddCHeaderFilesButton
|
AnchorSideLeft.Control = AddCHeadersButton
|
||||||
AnchorSideTop.Control = MoveFileUpButton
|
AnchorSideTop.Control = MoveFileUpButton
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = AddCHeaderFilesButton
|
AnchorSideRight.Control = AddCHeadersButton
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 266
|
Left = 266
|
||||||
Height = 25
|
Height = 25
|
||||||
@ -167,11 +181,21 @@ object H2PasDialog: TH2PasDialog
|
|||||||
OnClick = MoveFileDownButtonClick
|
OnClick = MoveFileDownButtonClick
|
||||||
TabOrder = 7
|
TabOrder = 7
|
||||||
end
|
end
|
||||||
|
object MergeAllCHeadersExceptCurrentButton: TButton
|
||||||
|
Left = 486
|
||||||
|
Height = 25
|
||||||
|
Top = 12
|
||||||
|
Width = 184
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
Caption = 'MergeAllCHeadersExceptCurrentButton'
|
||||||
|
OnClick = MergeAllCHeadersExceptCurrentButtonClick
|
||||||
|
TabOrder = 8
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object PreH2PasTabSheet: TTabSheet
|
object PreH2PasTabSheet: TTabSheet
|
||||||
Caption = 'PreH2PasTabSheet'
|
Caption = 'PreH2PasTabSheet'
|
||||||
object PreH2PasGroupBox: TGroupBox
|
object PreH2PasGroupBox: TGroupBox
|
||||||
Height = 435
|
Height = 475
|
||||||
Width = 781
|
Width = 781
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Caption = 'PreH2PasGroupBox'
|
Caption = 'PreH2PasGroupBox'
|
||||||
@ -184,9 +208,9 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideTop.Control = LibnameEdit
|
AnchorSideTop.Control = LibnameEdit
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 13
|
Height = 17
|
||||||
Top = 281
|
Top = 279
|
||||||
Width = 81
|
Width = 105
|
||||||
BorderSpacing.Top = 10
|
BorderSpacing.Top = 10
|
||||||
Caption = 'LibNameLabel'
|
Caption = 'LibNameLabel'
|
||||||
Color = clNone
|
Color = clNone
|
||||||
@ -196,9 +220,9 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideTop.Control = OutputExtEdit
|
AnchorSideTop.Control = OutputExtEdit
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 13
|
Height = 17
|
||||||
Top = 313
|
Top = 311
|
||||||
Width = 86
|
Width = 114
|
||||||
Caption = 'OutputExtLabel'
|
Caption = 'OutputExtLabel'
|
||||||
Color = clNone
|
Color = clNone
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -207,9 +231,9 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideTop.Control = OutputDirEdit
|
AnchorSideTop.Control = OutputDirEdit
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 13
|
Height = 17
|
||||||
Top = 342
|
Top = 340
|
||||||
Width = 85
|
Width = 110
|
||||||
Caption = 'OutputDirLabel'
|
Caption = 'OutputDirLabel'
|
||||||
Color = clNone
|
Color = clNone
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -218,7 +242,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = LibNameLabel
|
AnchorSideLeft.Control = LibNameLabel
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 93
|
Left = 117
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 276
|
Top = 276
|
||||||
Width = 113
|
Width = 113
|
||||||
@ -232,7 +256,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = OutputExtLabel
|
AnchorSideLeft.Control = OutputExtLabel
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 98
|
Left = 126
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 308
|
Top = 308
|
||||||
Width = 80
|
Width = 80
|
||||||
@ -247,7 +271,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = OutputExtEdit
|
AnchorSideTop.Control = OutputExtEdit
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 97
|
Left = 122
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 337
|
Top = 337
|
||||||
Width = 397
|
Width = 397
|
||||||
@ -263,7 +287,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideTop.Control = OutputDirEdit
|
AnchorSideTop.Control = OutputDirEdit
|
||||||
AnchorSideBottom.Control = OutputDirEdit
|
AnchorSideBottom.Control = OutputDirEdit
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 494
|
Left = 519
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 337
|
Top = 337
|
||||||
Width = 32
|
Width = 32
|
||||||
@ -296,7 +320,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
object PostH2PasTabSheet: TTabSheet
|
object PostH2PasTabSheet: TTabSheet
|
||||||
Caption = 'PostH2PasTabSheet'
|
Caption = 'PostH2PasTabSheet'
|
||||||
object PostH2PasGroupBox: TGroupBox
|
object PostH2PasGroupBox: TGroupBox
|
||||||
Height = 435
|
Height = 475
|
||||||
Width = 781
|
Width = 781
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Caption = 'PostH2PasGroupBox'
|
Caption = 'PostH2PasGroupBox'
|
||||||
@ -383,9 +407,9 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 5
|
Left = 5
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 470
|
Top = 514
|
||||||
Width = 124
|
Width = 161
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -399,10 +423,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 134
|
Left = 171
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 470
|
Top = 514
|
||||||
Width = 122
|
Width = 158
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -415,10 +439,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = SaveSettingsButton
|
AnchorSideLeft.Control = SaveSettingsButton
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = OpenSettingsButton
|
AnchorSideTop.Control = OpenSettingsButton
|
||||||
Left = 271
|
Left = 344
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 470
|
Top = 514
|
||||||
Width = 93
|
Width = 119
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Left = 15
|
BorderSpacing.Left = 15
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
@ -431,10 +455,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 699
|
Left = 677
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 470
|
Top = 514
|
||||||
Width = 81
|
Width = 103
|
||||||
Anchors = [akRight, akBottom]
|
Anchors = [akRight, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -447,10 +471,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = ConvertButton
|
AnchorSideLeft.Control = ConvertButton
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = OpenSettingsButton
|
AnchorSideTop.Control = OpenSettingsButton
|
||||||
Left = 370
|
Left = 469
|
||||||
Height = 26
|
Height = 30
|
||||||
Top = 470
|
Top = 514
|
||||||
Width = 144
|
Width = 183
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
|
@ -1,187 +1,196 @@
|
|||||||
{ This is an automatically generated lazarus resource file }
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
LazarusResources.Add('TH2PasDialog','FORMDATA',[
|
LazarusResources.Add('TH2PasDialog','FORMDATA',[
|
||||||
'TPF0'#12'TH2PasDialog'#11'H2PasDialog'#4'Left'#3#245#0#6'Height'#3#245#1#3'T'
|
'TPF0'#12'TH2PasDialog'#11'H2PasDialog'#4'Left'#3#245#0#6'Height'#3'%'#2#3'To'
|
||||||
+'op'#3#205#0#5'Width'#3#17#3#18'HorzScrollBar.Page'#3#16#3#18'VertScrollBar.'
|
+'p'#3#205#0#5'Width'#3#17#3#18'HorzScrollBar.Page'#3#16#3#18'VertScrollBar.P'
|
||||||
+'Page'#3#244#1#13'ActiveControl'#7#13'ConvertButton'#7'Caption'#6#11'H2PasDi'
|
+'age'#3'$'#2#13'ActiveControl'#7#13'ConvertButton'#7'Caption'#6#11'H2PasDial'
|
||||||
+'alog'#10'KeyPreview'#9#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7
|
+'og'#10'KeyPreview'#9#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10
|
||||||
+#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#9'OnKeyDown'#7#11'FormKeyDown'
|
+'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#9'OnKeyDown'#7#11'FormKeyDown'#8
|
||||||
+#8'Position'#7#15'poDesktopCenter'#0#12'TPageControl'#15'MainPageControl'#24
|
+'Position'#7#15'poDesktopCenter'#0#12'TPageControl'#15'MainPageControl'#24'A'
|
||||||
+'AnchorSideBottom.Control'#7#18'OpenSettingsButton'#6'Height'#3#209#1#5'Widt'
|
+'nchorSideBottom.Control'#7#18'OpenSettingsButton'#6'Height'#3#253#1#5'Width'
|
||||||
+'h'#3#17#3#7'TabStop'#9#10'ActivePage'#7#13'FilesTabSheet'#5'Align'#7#5'alTo'
|
+#3#17#3#10'ActivePage'#7#13'FilesTabSheet'#5'Align'#7#5'alTop'#7'Anchors'#11
|
||||||
+'p'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabIndex'#2#0
|
+#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabIndex'#2#0#8'TabOrder'#2#4
|
||||||
+#8'TabOrder'#2#4#0#9'TTabSheet'#13'FilesTabSheet'#7'Caption'#6#13'FilesTabSh'
|
+#0#9'TTabSheet'#13'FilesTabSheet'#7'Caption'#6#13'FilesTabSheet'#0#9'TTreeVi'
|
||||||
+'eet'#0#9'TTreeView'#25'CHeaderFilesCheckTreeView'#6'Height'#3#179#1#5'Width'
|
+'ew'#25'CHeaderFilesCheckTreeView'#6'Height'#3#219#1#5'Width'#3#255#0#5'Alig'
|
||||||
+#3#255#0#5'Align'#7#6'alLeft'#17'DefaultItemHeight'#2#16#11'StateImages'#7#18
|
+'n'#7#6'alLeft'#17'DefaultItemHeight'#2#18#11'StateImages'#7#18'FileStateIma'
|
||||||
+'FileStateImageList'#8'TabOrder'#2#0#11'OnMouseDown'#7'"CHeaderFilesCheckTre'
|
+'geList'#8'TabOrder'#2#0#10'OnDblClick'#7'!CHeaderFilesCheckTreeViewDblClick'
|
||||||
+'eViewMouseDown'#18'OnSelectionChanged'#7')CHeaderFilesCheckTreeViewSelectio'
|
+#11'OnMouseDown'#7'"CHeaderFilesCheckTreeViewMouseDown'#18'OnSelectionChange'
|
||||||
+'nChanged'#7'Options'#11#19'tvoAllowMultiselect'#17'tvoAutoItemHeight'#16'tv'
|
+'d'#7')CHeaderFilesCheckTreeViewSelectionChanged'#7'Options'#11#19'tvoAllowM'
|
||||||
+'oHideSelection'#21'tvoKeepCollapsedNodes'#14'tvoShowButtons'#12'tvoShowLine'
|
+'ultiselect'#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedN'
|
||||||
+'s'#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#7'TButton'#21'AddCHeaderFilesButto'
|
+'odes'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11'tvoToolTips'#0
|
||||||
+'n'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft'
|
+#0#0#7'TButton'#17'AddCHeadersButton'#22'AnchorSideLeft.Control'#7#21'CHeade'
|
||||||
+'.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3
|
+'rFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'He'
|
||||||
|
+'ight'#2#25#3'Top'#2#12#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'Borde'
|
||||||
|
+'rSpacing.InnerBorder'#2#4#7'Caption'#6#17'AddCHeadersButton'#7'OnClick'#7#22
|
||||||
|
+'AddCHeadersButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#20'DeleteCHeadersBut'
|
||||||
|
+'ton'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLe'
|
||||||
|
+'ft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'('#5'Width'#3
|
||||||
+#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Captio'
|
+#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Captio'
|
||||||
+'n'#6#21'AddCHeaderFilesButton'#7'OnClick'#7#26'AddCHeaderFilesButtonClick'#8
|
+'n'#6#20'DeleteCHeadersButton'#7'OnClick'#7#25'DeleteCHeadersButtonClick'#8
|
||||||
+'TabOrder'#2#1#0#0#7'TButton'#24'DeleteCHeaderFilesButton'#22'AnchorSideLeft'
|
+'TabOrder'#2#2#0#0#7'TButton'#23'EnableAllCHeadersButton'#22'AnchorSideLeft.'
|
||||||
+'.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
+'Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
||||||
+#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'('#5'Width'#3#185#0#18'BorderSpacing'
|
+#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'H'#5'Width'#3#185#0#18'BorderSpacing'
|
||||||
+'.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#24'DeleteCHeaderF'
|
+'.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#23'EnableAllCHead'
|
||||||
+'ilesButton'#7'OnClick'#7#29'DeleteCHeaderFilesButtonClick'#8'TabOrder'#2#2#0
|
+'ersButton'#7'OnClick'#7#28'EnableAllCHeadersButtonClick'#8'TabOrder'#2#3#0#0
|
||||||
+#0#7'TButton'#27'EnableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21
|
+#7'TButton'#24'DisableAllCHeadersButton'#22'AnchorSideLeft.Control'#7#21'CHe'
|
||||||
+'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1
|
+'aderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6
|
||||||
+#6'Height'#2#25#3'Top'#2'H'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'B'
|
+'Height'#2#25#3'Top'#2'h'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'Bor'
|
||||||
+'orderSpacing.InnerBorder'#2#4#7'Caption'#6#27'EnableAllCHeaderFilesButton'#7
|
+'derSpacing.InnerBorder'#2#4#7'Caption'#6#24'DisableAllCHeadersButton'#7'OnC'
|
||||||
+'OnClick'#7' EnableAllCHeaderFilesButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'
|
+'lick'#7#29'DisableAllCHeadersButtonClick'#8'TabOrder'#2#4#0#0#9'TSplitter'
|
||||||
+#28'DisableAllCHeaderFilesButton'#22'AnchorSideLeft.Control'#7#21'CHeaderFil'
|
+#21'CHeaderFilesSplitter1'#4'Left'#3#255#0#6'Height'#3#219#1#5'Width'#2#5#7
|
||||||
+'esSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'
|
+'Beveled'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'#22'AnchorSideLeft.Control'
|
||||||
+#2#25#3'Top'#2'h'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpaci'
|
+#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'Ancho'
|
||||||
+'ng.InnerBorder'#2#4#7'Caption'#6#28'DisableAllCHeaderFilesButton'#7'OnClick'
|
+'rSideRight.Control'#7#13'FilesTabSheet'#20'AnchorSideRight.Side'#7#9'asrBot'
|
||||||
+#7'!DisableAllCHeaderFilesButtonClick'#8'TabOrder'#2#4#0#0#9'TSplitter'#21'C'
|
+'tom'#24'AnchorSideBottom.Control'#7#13'FilesTabSheet'#21'AnchorSideBottom.S'
|
||||||
+'HeaderFilesSplitter1'#4'Left'#3#255#0#6'Height'#3#179#1#5'Width'#2#5#7'Beve'
|
+'ide'#7#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#11#1#3'Top'#3#208#0#5'Width'#3
|
||||||
+'led'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'#22'AnchorSideLeft.Control'#7#21
|
+#9#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6
|
||||||
+'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'AnchorSide'
|
+#16'FileInfoGroupBox'#8'TabOrder'#2#5#0#7'TButton'#29'AddIncludedCHeaderFile'
|
||||||
+'Right.Control'#7#13'FilesTabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'
|
+'sButton'#24'AnchorSideBottom.Control'#7#16'FileInfoGroupBox'#21'AnchorSideB'
|
||||||
+#24'AnchorSideBottom.Control'#7#13'FilesTabSheet'#21'AnchorSideBottom.Side'#7
|
+'ottom.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#30#3'Top'#3#210#0#5'Widt'
|
||||||
+#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#227#0#3'Top'#3#208#0#5'Width'#3#9#2#7
|
+'h'#3#249#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpa'
|
||||||
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#16'Fil'
|
+'cing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#29'AddInclu'
|
||||||
+'eInfoGroupBox'#8'TabOrder'#2#5#0#6'TLabel'#13'FileInfoLabel'#4'Left'#2#8#6
|
+'dedCHeaderFilesButton'#7'OnClick'#7'"AddIncludedCHeaderFilesButtonClick'#8
|
||||||
+'Height'#2#13#3'Top'#2#1#5'Width'#2'I'#7'Caption'#6#13'FileInfoLabel'#5'Colo'
|
+'TabOrder'#2#0#0#0#5'TMemo'#12'FileInfoMemo'#22'AnchorSideLeft.Control'#7#16
|
||||||
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#7'TButton'#29'AddIncludedCHeaderFilesB'
|
+'FileInfoGroupBox'#21'AnchorSideTop.Control'#7#17'MergeFileCheckBox'#18'Anch'
|
||||||
+'utton'#24'AnchorSideBottom.Control'#7#16'FileInfoGroupBox'#21'AnchorSideBot'
|
+'orSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#16'FileInfoGro'
|
||||||
+'tom.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#26#3'Top'#3#178#0#5'Width'
|
+'upBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'
|
||||||
+#3#197#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacin'
|
+#7#29'AddIncludedCHeaderFilesButton'#6'Height'#3#183#0#3'Top'#2#21#5'Width'#3
|
||||||
+'g.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#29'AddIncluded'
|
+#5#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#5'Color'#7#6
|
||||||
+'CHeaderFilesButton'#7'OnClick'#7'"AddIncludedCHeaderFilesButtonClick'#8'Tab'
|
+'clNone'#8'ReadOnly'#9#8'TabOrder'#2#1#0#0#9'TCheckBox'#17'MergeFileCheckBox'
|
||||||
+'Order'#2#0#0#0#0#7'TButton'#16'MoveFileUpButton'#22'AnchorSideLeft.Control'
|
+#4'Left'#2#8#6'Height'#2#24#3'Top'#2#253#5'Width'#3#168#0#7'Caption'#6#17'Me'
|
||||||
+#7#21'AddCHeaderFilesButton'#21'AnchorSideTop.Control'#7#28'DisableAllCHeade'
|
+'rgeFileCheckBox'#8'TabOrder'#2#2#0#0#0#7'TButton'#16'MoveFileUpButton'#22'A'
|
||||||
+'rFilesButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Cont'
|
+'nchorSideLeft.Control'#7#17'AddCHeadersButton'#21'AnchorSideTop.Control'#7
|
||||||
+'rol'#7#21'AddCHeaderFilesButton'#20'AnchorSideRight.Side'#7#9'asrBottom'#4
|
+#24'DisableAllCHeadersButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Ancho'
|
||||||
+'Left'#3#10#1#6'Height'#2#25#3'Top'#3#135#0#5'Width'#3#185#0#7'Anchors'#11#5
|
+'rSideRight.Control'#7#17'AddCHeadersButton'#20'AnchorSideRight.Side'#7#9'as'
|
||||||
+'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpacing.In'
|
+'rBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#135#0#5'Width'#3#185#0#7'An'
|
||||||
+'nerBorder'#2#4#7'Caption'#6#16'MoveFileUpButton'#7'OnClick'#7#21'MoveFileUp'
|
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'Bord'
|
||||||
+'ButtonClick'#8'TabOrder'#2#6#0#0#7'TButton'#18'MoveFileDownButton'#22'Ancho'
|
+'erSpacing.InnerBorder'#2#4#7'Caption'#6#16'MoveFileUpButton'#7'OnClick'#7#21
|
||||||
+'rSideLeft.Control'#7#21'AddCHeaderFilesButton'#21'AnchorSideTop.Control'#7
|
,'MoveFileUpButtonClick'#8'TabOrder'#2#6#0#0#7'TButton'#18'MoveFileDownButton'
|
||||||
+#16'MoveFileUpButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRig'
|
+#22'AnchorSideLeft.Control'#7#17'AddCHeadersButton'#21'AnchorSideTop.Control'
|
||||||
+'ht.Control'#7#21'AddCHeaderFilesButton'#20'AnchorSideRight.Side'#7#9'asrBot'
|
+#7#16'MoveFileUpButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideR'
|
||||||
+'tom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#166#0#5'Width'#3#185#0#7'Anchor'
|
+'ight.Control'#7#17'AddCHeadersButton'#20'AnchorSideRight.Side'#7#9'asrBotto'
|
||||||
+'s'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSp'
|
+'m'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#166#0#5'Width'#3#185#0#7'Anchors'
|
||||||
,'acing.InnerBorder'#2#4#7'Caption'#6#18'MoveFileDownButton'#7'OnClick'#7#23
|
+#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpaci'
|
||||||
+'MoveFileDownButtonClick'#8'TabOrder'#2#7#0#0#0#9'TTabSheet'#16'PreH2PasTabS'
|
+'ng.InnerBorder'#2#4#7'Caption'#6#18'MoveFileDownButton'#7'OnClick'#7#23'Mov'
|
||||||
+'heet'#7'Caption'#6#16'PreH2PasTabSheet'#0#9'TGroupBox'#16'PreH2PasGroupBox'
|
+'eFileDownButtonClick'#8'TabOrder'#2#7#0#0#7'TButton#MergeAllCHeadersExceptC'
|
||||||
+#6'Height'#3#179#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#16'Pr'
|
+'urrentButton'#4'Left'#3#230#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3#184#0#25
|
||||||
+'eH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#20'h2pasOptionsTabSheet'
|
+'BorderSpacing.InnerBorder'#2#4#7'Caption'#6'#MergeAllCHeadersExceptCurrentB'
|
||||||
+#7'Caption'#6#20'h2pasOptionsTabSheet'#0#6'TLabel'#12'LibNameLabel'#21'Ancho'
|
+'utton'#7'OnClick'#7'(MergeAllCHeadersExceptCurrentButtonClick'#8'TabOrder'#2
|
||||||
+'rSideTop.Control'#7#11'LibnameEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
|
+#8#0#0#0#9'TTabSheet'#16'PreH2PasTabSheet'#7'Caption'#6#16'PreH2PasTabSheet'
|
||||||
+'Left'#2#6#6'Height'#2#13#3'Top'#3#25#1#5'Width'#2'Q'#17'BorderSpacing.Top'#2
|
+#0#9'TGroupBox'#16'PreH2PasGroupBox'#6'Height'#3#219#1#5'Width'#3#13#3#5'Ali'
|
||||||
+#10#7'Caption'#6#12'LibNameLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0
|
+'gn'#7#8'alClient'#7'Caption'#6#16'PreH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9
|
||||||
+#6'TLabel'#14'OutputExtLabel'#21'AnchorSideTop.Control'#7#13'OutputExtEdit'
|
+'TTabSheet'#20'h2pasOptionsTabSheet'#7'Caption'#6#20'h2pasOptionsTabSheet'#0
|
||||||
+#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#13#3'Top'#3'9'
|
+#6'TLabel'#12'LibNameLabel'#21'AnchorSideTop.Control'#7#11'LibnameEdit'#18'A'
|
||||||
+#1#5'Width'#2'V'#7'Caption'#6#14'OutputExtLabel'#5'Color'#7#6'clNone'#11'Par'
|
+'nchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#23#1#5
|
||||||
+'entColor'#8#0#0#6'TLabel'#14'OutputDirLabel'#21'AnchorSideTop.Control'#7#13
|
+'Width'#2'i'#17'BorderSpacing.Top'#2#10#7'Caption'#6#12'LibNameLabel'#5'Colo'
|
||||||
+'OutputDirEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2
|
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputExtLabel'#21'Anchor'
|
||||||
+#13#3'Top'#3'V'#1#5'Width'#2'U'#7'Caption'#6#14'OutputDirLabel'#5'Color'#7#6
|
+'SideTop.Control'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
|
||||||
+'clNone'#11'ParentColor'#8#0#0#5'TEdit'#11'LibnameEdit'#22'AnchorSideLeft.Co'
|
+'Left'#2#6#6'Height'#2#17#3'Top'#3'7'#1#5'Width'#2'r'#7'Caption'#6#14'Output'
|
||||||
+'ntrol'#7#12'LibNameLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'AnchorS'
|
+'ExtLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputDir'
|
||||||
+'ideTop.Side'#7#9'asrBottom'#4'Left'#2']'#6'Height'#2#23#3'Top'#3#20#1#5'Wid'
|
+'Label'#21'AnchorSideTop.Control'#7#13'OutputDirEdit'#18'AnchorSideTop.Side'
|
||||||
+'th'#2'q'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingD'
|
+#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'#3'T'#1#5'Width'#2'n'#7'Cap'
|
||||||
+'one'#7#22'LibnameEditEditingDone'#8'TabOrder'#2#0#4'Text'#6#11'LibnameEdit'
|
+'tion'#6#14'OutputDirLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEd'
|
||||||
+#0#0#5'TEdit'#13'OutputExtEdit'#22'AnchorSideLeft.Control'#7#14'OutputExtLab'
|
+'it'#11'LibnameEdit'#22'AnchorSideLeft.Control'#7#12'LibNameLabel'#19'Anchor'
|
||||||
+'el'#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBo'
|
+'SideLeft.Side'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'
|
||||||
+'ttom'#4'Left'#2'b'#6'Height'#2#23#3'Top'#3'4'#1#5'Width'#2'P'#18'BorderSpac'
|
+#2'u'#6'Height'#2#23#3'Top'#3#20#1#5'Width'#2'q'#18'BorderSpacing.Left'#2#6
|
||||||
+'ing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputExtEdi'
|
+#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#22'LibnameEditEditingDone'#8
|
||||||
+'tEditingDone'#8'TabOrder'#2#1#4'Text'#6#13'OutputExtEdit'#0#0#5'TEdit'#13'O'
|
+'TabOrder'#2#0#4'Text'#6#11'LibnameEdit'#0#0#5'TEdit'#13'OutputExtEdit'#22'A'
|
||||||
+'utputDirEdit'#22'AnchorSideLeft.Control'#7#14'OutputDirLabel'#19'AnchorSide'
|
+'nchorSideLeft.Control'#7#14'OutputExtLabel'#19'AnchorSideLeft.Side'#7#9'asr'
|
||||||
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputExtEdit'#18
|
+'Bottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'~'#6'Height'#2#23#3
|
||||||
+'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'a'#6'Height'#2#23#3'Top'#3'Q'#1
|
+'Top'#3'4'#1#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2
|
||||||
+#5'Width'#3#141#1#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'On'
|
+#6#13'OnEditingDone'#7#24'OutputExtEditEditingDone'#8'TabOrder'#2#1#4'Text'#6
|
||||||
+'EditingDone'#7#24'OutputDirEditEditingDone'#8'TabOrder'#2#2#4'Text'#6#13'Ou'
|
+#13'OutputExtEdit'#0#0#5'TEdit'#13'OutputDirEdit'#22'AnchorSideLeft.Control'
|
||||||
+'tputDirEdit'#0#0#7'TButton'#21'OutputDirBrowseButton'#22'AnchorSideLeft.Con'
|
+#7#14'OutputDirLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTo'
|
||||||
+'trol'#7#13'OutputDirEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorS'
|
+'p.Control'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'
|
||||||
+'ideTop.Control'#7#13'OutputDirEdit'#24'AnchorSideBottom.Control'#7#13'Outpu'
|
+#2'z'#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#3#141#1#18'BorderSpacing.Left'#2
|
||||||
+'tDirEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#238#1#6'Height'
|
+#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputDirEditEditingDone'
|
||||||
+#2#23#3'Top'#3'Q'#1#5'Width'#2' '#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBotto'
|
+#8'TabOrder'#2#2#4'Text'#6#13'OutputDirEdit'#0#0#7'TButton'#21'OutputDirBrow'
|
||||||
+'m'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClick'#7#26
|
+'seButton'#22'AnchorSideLeft.Control'#7#13'OutputDirEdit'#19'AnchorSideLeft.'
|
||||||
+'OutputDirBrowseButtonClick'#8'TabOrder'#2#3#0#0#11'TCheckGroup'#22'h2pasOpt'
|
+'Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputDirEdit'#24'Ancho'
|
||||||
+'ionsCheckGroup'#4'Left'#2#6#6'Height'#3#8#1#3'Top'#2#4#5'Width'#3#0#3#8'Aut'
|
+'rSideBottom.Control'#7#13'OutputDirEdit'#21'AnchorSideBottom.Side'#7#9'asrB'
|
||||||
+'oFill'#9#7'Caption'#6#22'h2pasOptionsCheckGroup'#28'ChildSizing.LeftRightSp'
|
+'ottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#2' '#7'Anchors'
|
||||||
+'acing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHoriz'
|
+#11#5'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Cap'
|
||||||
+'ontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24
|
+'tion'#6#3'...'#7'OnClick'#7#26'OutputDirBrowseButtonClick'#8'TabOrder'#2#3#0
|
||||||
+'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChi'
|
+#0#11'TCheckGroup'#22'h2pasOptionsCheckGroup'#4'Left'#2#6#6'Height'#3#8#1#3
|
||||||
+'lds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Lay'
|
+'Top'#2#4#5'Width'#3#0#3#8'AutoFill'#9#7'Caption'#6#22'h2pasOptionsCheckGrou'
|
||||||
+'out'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#2
|
+'p'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6
|
||||||
+#7'Columns'#2#2#11'OnItemClick'#7#31'h2pasOptionsCheckGroupItemClick'#8'TabO'
|
+#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSi'
|
||||||
+'rder'#2#4#0#0#0#9'TTabSheet'#17'PostH2PasTabSheet'#7'Caption'#6#17'PostH2Pa'
|
+'zing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkH'
|
||||||
+'sTabSheet'#0#9'TGroupBox'#17'PostH2PasGroupBox'#6'Height'#3#179#1#5'Width'#3
|
+'orizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScal'
|
||||||
+#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'PostH2PasGroupBox'#8'TabOrder'#2
|
+'eChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Chil'
|
||||||
+#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7'Caption'#6#16'SettingsTabSheet'
|
+'dSizing.ControlsPerLine'#2#2#7'Columns'#2#2#11'OnItemClick'#7#31'h2pasOptio'
|
||||||
+#0#6'TLabel'#18'H2PasFilenameLabel'#21'AnchorSideTop.Control'#7#17'H2PasFile'
|
+'nsCheckGroupItemClick'#8'TabOrder'#2#4#0#0#0#9'TTabSheet'#17'PostH2PasTabSh'
|
||||||
+'nameEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3
|
+'eet'#7'Caption'#6#17'PostH2PasTabSheet'#0#9'TGroupBox'#17'PostH2PasGroupBox'
|
||||||
+'Top'#2#7#5'Width'#3#155#0#7'Caption'#6#18'H2PasFilenameLabel'#5'Color'#7#6
|
+#6'Height'#3#219#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'Po'
|
||||||
+'clNone'#11'ParentColor'#8#0#0#9'TCheckBox'#30'OpenLastProjectOnStartCheckBo'
|
+'stH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7
|
||||||
+'x'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'*'#5'Width'#3#21#1#7'Caption'#6#30'O'
|
+'Caption'#6#16'SettingsTabSheet'#0#6'TLabel'#18'H2PasFilenameLabel'#21'Ancho'
|
||||||
+'penLastProjectOnStartCheckBox'#8'OnChange'#7'$OpenLastProjectOnStartCheckBo'
|
+'rSideTop.Control'#7#17'H2PasFilenameEdit'#18'AnchorSideTop.Side'#7#9'asrCen'
|
||||||
+'xChange'#8'TabOrder'#2#0#0#0#7'TButton'#20'SaveSettingsAsButton'#4'Left'#2#6
|
+'ter'#4'Left'#2#6#6'Height'#2#17#3'Top'#2#7#5'Width'#3#155#0#7'Caption'#6#18
|
||||||
+#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#177#0#8'AutoSize'#9#25'BorderSpacing.'
|
+'H2PasFilenameLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TCheckBox'
|
||||||
+'InnerBorder'#2#4#7'Caption'#6#20'SaveSettingsAsButton'#7'OnClick'#7#25'Save'
|
+#30'OpenLastProjectOnStartCheckBox'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'*'#5
|
||||||
+'SettingsAsButtonClick'#8'TabOrder'#2#1#0#0#5'TEdit'#17'H2PasFilenameEdit'#22
|
+'Width'#3#21#1#7'Caption'#6#30'OpenLastProjectOnStartCheckBox'#8'OnChange'#7
|
||||||
+'AnchorSideLeft.Control'#7#18'H2PasFilenameLabel'#19'AnchorSideLeft.Side'#7#9
|
,'$OpenLastProjectOnStartCheckBoxChange'#8'TabOrder'#2#0#0#0#7'TButton'#20'Sa'
|
||||||
+'asrBottom'#4'Left'#3#167#0#6'Height'#2#23#3'Top'#2#4#5'Width'#3'`'#1#18'Bor'
|
+'veSettingsAsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#177#0
|
||||||
+'derSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#28'H2Pas'
|
+#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#20'SaveSetting'
|
||||||
+'FilenameEditEditingDone'#8'TabOrder'#2#2#4'Text'#6#17'H2PasFilenameEdit'#0#0
|
+'sAsButton'#7'OnClick'#7#25'SaveSettingsAsButtonClick'#8'TabOrder'#2#1#0#0#5
|
||||||
+#7'TButton'#25'h2pasFilenameBrowseButton'#22'AnchorSideLeft.Control'#7#17'H2'
|
+'TEdit'#17'H2PasFilenameEdit'#22'AnchorSideLeft.Control'#7#18'H2PasFilenameL'
|
||||||
,'PasFilenameEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Co'
|
+'abel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#167#0#6'Height'#2#23
|
||||||
+'ntrol'#7#17'H2PasFilenameEdit'#24'AnchorSideBottom.Control'#7#17'H2PasFilen'
|
+#3'Top'#2#4#5'Width'#3'`'#1#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'
|
||||||
+'ameEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#7#2#6'Height'#2
|
+#2#6#13'OnEditingDone'#7#28'H2PasFilenameEditEditingDone'#8'TabOrder'#2#2#4
|
||||||
+#23#3'Top'#2#4#5'Width'#2'#'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0
|
+'Text'#6#17'H2PasFilenameEdit'#0#0#7'TButton'#25'h2pasFilenameBrowseButton'
|
||||||
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClick'#7#30'h2pas'
|
+#22'AnchorSideLeft.Control'#7#17'H2PasFilenameEdit'#19'AnchorSideLeft.Side'#7
|
||||||
+'FilenameBrowseButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'#17'NewSettingsBut'
|
+#9'asrBottom'#21'AnchorSideTop.Control'#7#17'H2PasFilenameEdit'#24'AnchorSid'
|
||||||
+'ton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'|'#5'Width'#3#154#0#8'AutoSize'#9
|
+'eBottom.Control'#7#17'H2PasFilenameEdit'#21'AnchorSideBottom.Side'#7#9'asrB'
|
||||||
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#17'NewSettingsButton'#7'OnCl'
|
+'ottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#2#4#5'Width'#2'#'#7'Anchors'#11#5
|
||||||
+'ick'#7#22'NewSettingsButtonClick'#8'TabOrder'#2#4#0#0#0#0#7'TButton'#18'Ope'
|
+'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
|
||||||
+'nSettingsButton'#22'AnchorSideLeft.Control'#7#5'Owner'#24'AnchorSideBottom.'
|
+#6#3'...'#7'OnClick'#7#30'h2pasFilenameBrowseButtonClick'#8'TabOrder'#2#3#0#0
|
||||||
+'Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#5#6
|
+#7'TButton'#17'NewSettingsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'|'#5'W'
|
||||||
+'Height'#2#26#3'Top'#3#214#1#5'Width'#2'|'#7'Anchors'#11#6'akLeft'#8'akBotto'
|
+'idth'#3#154#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
|
||||||
+'m'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorde'
|
+#17'NewSettingsButton'#7'OnClick'#7#22'NewSettingsButtonClick'#8'TabOrder'#2
|
||||||
+'r'#2#4#7'Caption'#6#18'OpenSettingsButton'#7'OnClick'#7#23'OpenSettingsButt'
|
+#4#0#0#0#0#7'TButton'#18'OpenSettingsButton'#22'AnchorSideLeft.Control'#7#5
|
||||||
+'onClick'#8'TabOrder'#2#1#0#0#7'TButton'#18'SaveSettingsButton'#22'AnchorSid'
|
+'Owner'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9
|
||||||
+'eLeft.Control'#7#18'OpenSettingsButton'#19'AnchorSideLeft.Side'#7#9'asrBott'
|
+'asrBottom'#4'Left'#2#5#6'Height'#2#30#3'Top'#3#2#2#5'Width'#3#161#0#7'Ancho'
|
||||||
+'om'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'a'
|
+'rs'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25
|
||||||
+'srBottom'#4'Left'#3#134#0#6'Height'#2#26#3'Top'#3#214#1#5'Width'#2'z'#7'Anc'
|
+'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'OpenSettingsButton'#7'OnClic'
|
||||||
+'hors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5
|
+'k'#7#23'OpenSettingsButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#18'SaveSett'
|
||||||
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'SaveSettingsButton'#7'OnC'
|
+'ingsButton'#22'AnchorSideLeft.Control'#7#18'OpenSettingsButton'#19'AnchorSi'
|
||||||
+'lick'#7#23'SaveSettingsButtonClick'#8'TabOrder'#2#2#0#0#7'TButton'#13'Conve'
|
+'deLeft.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'Anch'
|
||||||
+'rtButton'#22'AnchorSideLeft.Control'#7#18'SaveSettingsButton'#19'AnchorSide'
|
+'orSideBottom.Side'#7#9'asrBottom'#4'Left'#3#171#0#6'Height'#2#30#3'Top'#3#2
|
||||||
+'Left.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#18'OpenSettingsButton'
|
+#2#5'Width'#3#158#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'B'
|
||||||
+#4'Left'#3#15#1#6'Height'#2#26#3'Top'#3#214#1#5'Width'#2']'#8'AutoSize'#9#18
|
+'orderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18
|
||||||
+'BorderSpacing.Left'#2#15#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#13
|
+'SaveSettingsButton'#7'OnClick'#7#23'SaveSettingsButtonClick'#8'TabOrder'#2#2
|
||||||
+'ConvertButton'#7'OnClick'#7#18'ConvertButtonClick'#8'TabOrder'#2#0#0#0#7'TB'
|
+#0#0#7'TButton'#13'ConvertButton'#22'AnchorSideLeft.Control'#7#18'SaveSettin'
|
||||||
+'utton'#11'CloseButton'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSide'
|
+'gsButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7
|
||||||
+'Right.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'Ancho'
|
+#18'OpenSettingsButton'#4'Left'#3'X'#1#6'Height'#2#30#3'Top'#3#2#2#5'Width'#2
|
||||||
+'rSideBottom.Side'#7#9'asrBottom'#4'Left'#3#187#2#6'Height'#2#26#3'Top'#3#214
|
+'w'#8'AutoSize'#9#18'BorderSpacing.Left'#2#15#25'BorderSpacing.InnerBorder'#2
|
||||||
+#1#5'Width'#2'Q'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'AutoSize'#9#20'Bor'
|
+#4#7'Caption'#6#13'ConvertButton'#7'OnClick'#7#18'ConvertButtonClick'#8'TabO'
|
||||||
+'derSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#11'Cl'
|
+'rder'#2#0#0#0#7'TButton'#11'CloseButton'#23'AnchorSideRight.Control'#7#5'Ow'
|
||||||
+'oseButton'#7'OnClick'#7#16'CloseButtonClick'#8'TabOrder'#2#3#0#0#7'TButton'
|
+'ner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7
|
||||||
+#21'ConvertAndBuildButton'#22'AnchorSideLeft.Control'#7#13'ConvertButton'#19
|
+#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#165#2#6'Height'
|
||||||
+'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#18'OpenSett'
|
+#2#30#3'Top'#3#2#2#5'Width'#2'g'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'Au'
|
||||||
+'ingsButton'#4'Left'#3'r'#1#6'Height'#2#26#3'Top'#3#214#1#5'Width'#3#144#0#8
|
+'toSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7
|
||||||
+'AutoSize'#9#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7
|
+'Caption'#6#11'CloseButton'#7'OnClick'#7#16'CloseButtonClick'#8'TabOrder'#2#3
|
||||||
+'Caption'#6#21'ConvertAndBuildButton'#7'OnClick'#7#26'ConvertAndBuildButtonC'
|
+#0#0#7'TButton'#21'ConvertAndBuildButton'#22'AnchorSideLeft.Control'#7#13'Co'
|
||||||
+'lick'#8'TabOrder'#2#5#0#0#10'TImageList'#18'FileStateImageList'#4'left'#3
|
+'nvertButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contro'
|
||||||
+#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'#2#0#0#0#16#0#0#0#16#0#0#0#191#1
|
+'l'#7#18'OpenSettingsButton'#4'Left'#3#213#1#6'Height'#2#30#3'Top'#3#2#2#5'W'
|
||||||
+#0#0'/* XPM */'#10'static char * pkg_removedfiles_xpm[] = {'#10'"14 13 10 1"'
|
+'idth'#3#183#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#25'BorderSpacing.Inn'
|
||||||
+','#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9
|
+'erBorder'#2#4#7'Caption'#6#21'ConvertAndBuildButton'#7'OnClick'#7#26'Conver'
|
||||||
+'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9'c #000033",'#10'"%'#9'c #FFFFFF'
|
+'tAndBuildButtonClick'#8'TabOrder'#2#5#0#0#10'TImageList'#18'FileStateImageL'
|
||||||
+'",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB",'#10'"='#9'c #000000",'#10'" '
|
+'ist'#4'left'#3#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'#2#0#0#0#16#0#0#0
|
||||||
+' ..++.... ",'#10'" .@@####. @@ ",'#10'" $%@@%%&.@@ ",'#10'" $*%@@..@'
|
+#16#0#0#0#191#1#0#0'/* XPM */'#10'static char * pkg_removedfiles_xpm[] = {'
|
||||||
+'@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%%&=%",'#10'".....$@@@@&&=%",'#10
|
+#10'"14 13 10 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #0000'
|
||||||
+'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10'".%%@@======@@%",'#10'".%@@&&&='
|
+'55",'#10'"@'#9'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9'c #000033",'#10
|
||||||
+'%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%% "};'#10#168#1#0#0'/* XPM '
|
+'"%'#9'c #FFFFFF",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB",'#10'"='#9'c #'
|
||||||
+'*/'#10'static char * pkg_files_xpm[] = {'#10'"14 13 9 1",'#10'" '#9'c None"'
|
+'000000",'#10'" ..++.... ",'#10'" .@@####. @@ ",'#10'" $%@@%%&.@@ ",'
|
||||||
+','#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9'c #000084",'#10'"#'
|
+#10'" $*%@@..@@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%%&=%",'#10'".....'
|
||||||
+#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9'c #CBCBCB",'#10'"&'#9'c #D5D5'
|
+'$@@@@&&=%",'#10'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10'".%%@@======@@%'
|
||||||
+'EF",'#10'"*'#9'c #000000",'#10'" ..++.... ",'#10'" .@@@@@@. ",'#10
|
+'",'#10'".%@@&&&=%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%% "};'#10
|
||||||
+'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" *$$........ ",'#10'"...++#$%'
|
+#168#1#0#0'/* XPM */'#10'static char * pkg_files_xpm[] = {'#10'"14 13 9 1",'
|
||||||
+'$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&$&*$",'#10'".%$$$*$&&&&&*$",'
|
+#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9'c #'
|
||||||
+#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10'".*******$ ",'#10'" $$$$'
|
+'000084",'#10'"#'#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9'c #CBCBCB",'
|
||||||
+'$$$$ "};'#10#0#0#0
|
+#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #000000",'#10'" ..++.... ",'#10'" .@@'
|
||||||
|
+'@@@@. ",'#10'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" *$$........ '
|
||||||
|
+'",'#10'"...++#$%$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&$&*$",'#10'".'
|
||||||
|
+'%$$$*$&&&&&*$",'#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10'".*******$ '
|
||||||
|
+' ",'#10'" $$$$$$$$ "};'#10#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -36,22 +36,24 @@ type
|
|||||||
{ TH2PasDialog }
|
{ TH2PasDialog }
|
||||||
|
|
||||||
TH2PasDialog = class(TForm)
|
TH2PasDialog = class(TForm)
|
||||||
|
MergeAllCHeadersExceptCurrentButton: TButton;
|
||||||
|
MergeFileCheckBox: TCheckBox;
|
||||||
|
FileInfoMemo: TMemo;
|
||||||
FileStateImageList: TImageList;
|
FileStateImageList: TImageList;
|
||||||
MoveFileDownButton: TButton;
|
MoveFileDownButton: TButton;
|
||||||
MoveFileUpButton: TButton;
|
MoveFileUpButton: TButton;
|
||||||
ConvertAndBuildButton: TButton;
|
ConvertAndBuildButton: TButton;
|
||||||
FileInfoGroupBox: TGroupBox;
|
FileInfoGroupBox: TGroupBox;
|
||||||
FileInfoLabel: TLabel;
|
|
||||||
MainPageControl: TPageControl;
|
MainPageControl: TPageControl;
|
||||||
AddIncludedCHeaderFilesButton: TButton;
|
AddIncludedCHeaderFilesButton: TButton;
|
||||||
|
|
||||||
// c header files
|
// c header files
|
||||||
FilesTabSheet: TTabSheet;
|
FilesTabSheet: TTabSheet;
|
||||||
CHeaderFilesSplitter1: TSplitter;
|
CHeaderFilesSplitter1: TSplitter;
|
||||||
AddCHeaderFilesButton: TButton;
|
AddCHeadersButton: TButton;
|
||||||
DisableAllCHeaderFilesButton: TButton;
|
DisableAllCHeadersButton: TButton;
|
||||||
EnableAllCHeaderFilesButton: TButton;
|
EnableAllCHeadersButton: TButton;
|
||||||
DeleteCHeaderFilesButton: TButton;
|
DeleteCHeadersButton: TButton;
|
||||||
CHeaderFilesCheckTreeView: TTreeView;
|
CHeaderFilesCheckTreeView: TTreeView;
|
||||||
|
|
||||||
// pre h2pas
|
// pre h2pas
|
||||||
@ -90,8 +92,9 @@ type
|
|||||||
ConvertButton: TButton;
|
ConvertButton: TButton;
|
||||||
CloseButton: TButton;
|
CloseButton: TButton;
|
||||||
|
|
||||||
procedure AddCHeaderFilesButtonClick(Sender: TObject);
|
procedure AddCHeadersButtonClick(Sender: TObject);
|
||||||
procedure AddIncludedCHeaderFilesButtonClick(Sender: TObject);
|
procedure AddIncludedCHeaderFilesButtonClick(Sender: TObject);
|
||||||
|
procedure CHeaderFilesCheckTreeViewDblClick(Sender: TObject);
|
||||||
procedure CHeaderFilesCheckTreeViewMouseDown(Sender: TOBject;
|
procedure CHeaderFilesCheckTreeViewMouseDown(Sender: TOBject;
|
||||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
procedure CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject);
|
procedure CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject);
|
||||||
@ -99,13 +102,14 @@ type
|
|||||||
procedure ConstantsInsteadOfEnumsCheckBoxChange(Sender: TObject);
|
procedure ConstantsInsteadOfEnumsCheckBoxChange(Sender: TObject);
|
||||||
procedure ConvertAndBuildButtonClick(Sender: TObject);
|
procedure ConvertAndBuildButtonClick(Sender: TObject);
|
||||||
procedure ConvertButtonClick(Sender: TObject);
|
procedure ConvertButtonClick(Sender: TObject);
|
||||||
procedure DeleteCHeaderFilesButtonClick(Sender: TObject);
|
procedure DeleteCHeadersButtonClick(Sender: TObject);
|
||||||
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure H2PasFilenameEditEditingDone(Sender: TObject);
|
procedure H2PasFilenameEditEditingDone(Sender: TObject);
|
||||||
procedure LibnameEditEditingDone(Sender: TObject);
|
procedure LibnameEditEditingDone(Sender: TObject);
|
||||||
|
procedure MergeAllCHeadersExceptCurrentButtonClick(Sender: TObject);
|
||||||
procedure MoveFileDownButtonClick(Sender: TObject);
|
procedure MoveFileDownButtonClick(Sender: TObject);
|
||||||
procedure MoveFileUpButtonClick(Sender: TObject);
|
procedure MoveFileUpButtonClick(Sender: TObject);
|
||||||
procedure NewSettingsButtonClick(Sender: TObject);
|
procedure NewSettingsButtonClick(Sender: TObject);
|
||||||
@ -118,8 +122,8 @@ type
|
|||||||
procedure PreH2PasEditModified(Sender: TObject);
|
procedure PreH2PasEditModified(Sender: TObject);
|
||||||
procedure SaveSettingsAsButtonClick(Sender: TObject);
|
procedure SaveSettingsAsButtonClick(Sender: TObject);
|
||||||
procedure SaveSettingsButtonClick(Sender: TObject);
|
procedure SaveSettingsButtonClick(Sender: TObject);
|
||||||
procedure EnableAllCHeaderFilesButtonClick(Sender: TObject);
|
procedure EnableAllCHeadersButtonClick(Sender: TObject);
|
||||||
procedure DisableAllCHeaderFilesButtonClick(Sender: TObject);
|
procedure DisableAllCHeadersButtonClick(Sender: TObject);
|
||||||
procedure h2pasFilenameBrowseButtonClick(Sender: TObject);
|
procedure h2pasFilenameBrowseButtonClick(Sender: TObject);
|
||||||
procedure h2pasOptionsCheckGroupItemClick(Sender: TObject; Index: LongInt);
|
procedure h2pasOptionsCheckGroupItemClick(Sender: TObject; Index: LongInt);
|
||||||
procedure OnShowSrcEditSection(Sender: TObject);
|
procedure OnShowSrcEditSection(Sender: TObject);
|
||||||
@ -131,18 +135,20 @@ type
|
|||||||
|
|
||||||
function GetProject: TH2PasProject;
|
function GetProject: TH2PasProject;
|
||||||
|
|
||||||
procedure UpdateAll;
|
procedure UpdateAll(ScanIncludes: boolean);
|
||||||
procedure UpdateProjectChanged; // show project settings
|
procedure UpdateProjectChanged(ScanIncludes: boolean); // show project settings
|
||||||
procedure UpdateCaption;
|
procedure UpdateCaption;
|
||||||
procedure UpdateFileInfo;
|
procedure UpdateFileInfo;
|
||||||
procedure ClearMessages;
|
procedure ClearMessages;
|
||||||
procedure CreateLazarusMenuItems;
|
procedure CreateLazarusMenuItems;
|
||||||
|
function GetNodeFilename(Node: TTreeNode): string;
|
||||||
function GetCurrentCHeaderFile: TH2PasFile;
|
function GetCurrentCHeaderFile: TH2PasFile;
|
||||||
procedure MoveCurrentFile(Offset: integer);
|
procedure MoveCurrentFile(Offset: integer);
|
||||||
function GetFileNodeStateIndex(aFile: TH2PasFile): Integer;
|
function GetFileNodeStateIndex(aFile: TH2PasFile): Integer;
|
||||||
|
procedure MarkAllCHeadersExceptCurrentToMerge;
|
||||||
|
|
||||||
// project settings
|
// project settings
|
||||||
procedure UpdateFilesPage;
|
procedure UpdateFilesPage(ScanIncludes: boolean);
|
||||||
procedure UpdateH2PasPage;
|
procedure UpdateH2PasPage;
|
||||||
procedure UpdateConvertPage;
|
procedure UpdateConvertPage;
|
||||||
// global settings
|
// global settings
|
||||||
@ -220,14 +226,16 @@ procedure TH2PasDialog.FormCreate(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Caption:=h2pCHeaderFileConverter;
|
Caption:=h2pCHeaderFileConverter;
|
||||||
FilesTabSheet.Caption:='C header files';
|
FilesTabSheet.Caption:='C header files';
|
||||||
AddCHeaderFilesButton.Caption:='Add .h files ...';
|
AddCHeadersButton.Caption:='Add .h files ...';
|
||||||
DeleteCHeaderFilesButton.Caption:='Delete selected .h files';
|
DeleteCHeadersButton.Caption:='Delete selected .h files';
|
||||||
EnableAllCHeaderFilesButton.Caption:='Enable all .h files';
|
EnableAllCHeadersButton.Caption:='Enable all .h files';
|
||||||
DisableAllCHeaderFilesButton.Caption:='Disable all .h files';
|
DisableAllCHeadersButton.Caption:='Disable all .h files';
|
||||||
MoveFileDownButton.Caption:='Move file down';
|
MoveFileDownButton.Caption:='Move file down';
|
||||||
MoveFileUpButton.Caption:='Move file up';
|
MoveFileUpButton.Caption:='Move file up';
|
||||||
FileInfoGroupBox.Caption:='File information';
|
FileInfoGroupBox.Caption:='File information';
|
||||||
AddIncludedCHeaderFilesButton.Caption:='Add included .h files';
|
AddIncludedCHeaderFilesButton.Caption:='Add included .h files';
|
||||||
|
MergeAllCHeadersExceptCurrentButton.Caption:='Merge all but this';
|
||||||
|
MergeFileCheckBox.Caption:='Merge file';
|
||||||
h2pasOptionsTabSheet.Caption:='h2pas Options';
|
h2pasOptionsTabSheet.Caption:='h2pas Options';
|
||||||
h2pasOptionsCheckGroup.Caption:='Options';
|
h2pasOptionsCheckGroup.Caption:='Options';
|
||||||
with h2pasOptionsCheckGroup.Items do begin
|
with h2pasOptionsCheckGroup.Items do begin
|
||||||
@ -301,7 +309,7 @@ begin
|
|||||||
PostH2PasEdit.ListOfTools:=Project.PostH2PasTools;
|
PostH2PasEdit.ListOfTools:=Project.PostH2PasTools;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
UpdateAll;
|
UpdateAll(false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
procedure TH2PasDialog.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||||
@ -344,7 +352,7 @@ begin
|
|||||||
Convert;
|
Convert;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.DeleteCHeaderFilesButtonClick(Sender: TObject);
|
procedure TH2PasDialog.DeleteCHeadersButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
DeleteFiles: TStringList;
|
DeleteFiles: TStringList;
|
||||||
Node: TTreeNode;
|
Node: TTreeNode;
|
||||||
@ -354,7 +362,7 @@ begin
|
|||||||
while Node<>nil do begin
|
while Node<>nil do begin
|
||||||
if Node.Parent=nil then begin
|
if Node.Parent=nil then begin
|
||||||
// top lvl node is a .h file
|
// top lvl node is a .h file
|
||||||
DeleteFiles.Add(Project.LongenFilename(Node.Text));
|
DeleteFiles.Add(GetNodeFilename(Node));
|
||||||
end;
|
end;
|
||||||
Node:=Node.GetNextMultiSelected;
|
Node:=Node.GetNextMultiSelected;
|
||||||
end;
|
end;
|
||||||
@ -367,12 +375,12 @@ begin
|
|||||||
then begin
|
then begin
|
||||||
Project.DeleteFiles(DeleteFiles);
|
Project.DeleteFiles(DeleteFiles);
|
||||||
end;
|
end;
|
||||||
UpdateFilesPage;
|
UpdateFilesPage(true);
|
||||||
end;
|
end;
|
||||||
DeleteFiles.Free;
|
DeleteFiles.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.AddCHeaderFilesButtonClick(Sender: TObject);
|
procedure TH2PasDialog.AddCHeadersButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
OpenDialog: TOpenDialog;
|
OpenDialog: TOpenDialog;
|
||||||
begin
|
begin
|
||||||
@ -384,7 +392,7 @@ begin
|
|||||||
OpenDialog.Filter:='C header file (*.h)|*.h|All files (*.*)|'+FileMask;
|
OpenDialog.Filter:='C header file (*.h)|*.h|All files (*.*)|'+FileMask;
|
||||||
if OpenDialog.Execute then begin
|
if OpenDialog.Execute then begin
|
||||||
Project.AddFiles(OpenDialog.Files);
|
Project.AddFiles(OpenDialog.Files);
|
||||||
UpdateFilesPage;
|
UpdateFilesPage(true);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
StoreIDEFileDialog(OpenDialog);
|
StoreIDEFileDialog(OpenDialog);
|
||||||
@ -406,7 +414,7 @@ begin
|
|||||||
StateIconLeft:=Node.DisplayStateIconLeft;
|
StateIconLeft:=Node.DisplayStateIconLeft;
|
||||||
if (x>=StateIconLeft) and (x<StateIconLeft+FileStateImageList.Width) then
|
if (x>=StateIconLeft) and (x<StateIconLeft+FileStateImageList.Width) then
|
||||||
begin
|
begin
|
||||||
AFilename:=Project.LongenFilename(Node.Text);
|
AFilename:=GetNodeFilename(Node);
|
||||||
CurFile:=Project.CHeaderFileWithFilename(AFilename);
|
CurFile:=Project.CHeaderFileWithFilename(AFilename);
|
||||||
if CurFile=nil then exit;
|
if CurFile=nil then exit;
|
||||||
CurFile.Enabled:=not CurFile.Enabled;
|
CurFile.Enabled:=not CurFile.Enabled;
|
||||||
@ -449,12 +457,13 @@ begin
|
|||||||
s:=s+#13+CurFilename;
|
s:=s+#13+CurFilename;
|
||||||
end;
|
end;
|
||||||
if QuestionDlg('Add .h files?',
|
if QuestionDlg('Add .h files?',
|
||||||
'Add these .h files to h2pas project:'#13#13
|
'Add these .h files to h2pas project:'#13
|
||||||
+s+#13+'?',
|
+s+#13+'?',
|
||||||
mtConfirmation,[mbYes,mbNo],0)=mrYes
|
mtConfirmation,[mrYes,mrNo],0)=mrYes
|
||||||
then begin
|
then begin
|
||||||
Project.AddFiles(sl);
|
Project.AddFiles(sl);
|
||||||
UpdateFilesPage;
|
Project.ReadAllCIncludes(true);
|
||||||
|
UpdateFilesPage(false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
@ -462,6 +471,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasDialog.CHeaderFilesCheckTreeViewDblClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
CurFile: TH2PasFile;
|
||||||
|
begin
|
||||||
|
CurFile:=GetCurrentCHeaderFile;
|
||||||
|
if CurFile<>nil then
|
||||||
|
LazarusIDE.DoOpenEditorFile(CurFile.Filename,-1,[]);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject
|
procedure TH2PasDialog.CHeaderFilesCheckTreeViewSelectionChanged(Sender: TObject
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
@ -500,6 +518,12 @@ begin
|
|||||||
Project.Libname:=LibnameEdit.Text;
|
Project.Libname:=LibnameEdit.Text;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasDialog.MergeAllCHeadersExceptCurrentButtonClick(Sender: TObject
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
MarkAllCHeadersExceptCurrentToMerge;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.MoveFileDownButtonClick(Sender: TObject);
|
procedure TH2PasDialog.MoveFileDownButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
MoveCurrentFile(1);
|
MoveCurrentFile(1);
|
||||||
@ -514,7 +538,7 @@ procedure TH2PasDialog.NewSettingsButtonClick(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Project.Filename:='';
|
Project.Filename:='';
|
||||||
Project.Clear(true);
|
Project.Clear(true);
|
||||||
UpdateAll;
|
UpdateAll(true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.OpenLastProjectOnStartCheckBoxChange(Sender: TObject);
|
procedure TH2PasDialog.OpenLastProjectOnStartCheckBoxChange(Sender: TObject);
|
||||||
@ -581,7 +605,7 @@ begin
|
|||||||
SaveProject('',[]);
|
SaveProject('',[]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.EnableAllCHeaderFilesButtonClick(Sender: TObject);
|
procedure TH2PasDialog.EnableAllCHeadersButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -594,7 +618,7 @@ begin
|
|||||||
UpdateFileInfo;
|
UpdateFileInfo;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.DisableAllCHeaderFilesButtonClick(Sender: TObject);
|
procedure TH2PasDialog.DisableAllCHeadersButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -697,19 +721,19 @@ begin
|
|||||||
Result:=Converter.Project;
|
Result:=Converter.Project;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.UpdateAll;
|
procedure TH2PasDialog.UpdateAll(ScanIncludes: boolean);
|
||||||
begin
|
begin
|
||||||
UpdateCaption;
|
UpdateCaption;
|
||||||
UpdateFilesPage;
|
UpdateFilesPage(ScanIncludes);
|
||||||
UpdateH2PasPage;
|
UpdateH2PasPage;
|
||||||
UpdateConvertPage;
|
UpdateConvertPage;
|
||||||
UpdateSettingsPage;
|
UpdateSettingsPage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.UpdateProjectChanged;
|
procedure TH2PasDialog.UpdateProjectChanged(ScanIncludes: boolean);
|
||||||
begin
|
begin
|
||||||
UpdateCaption;
|
UpdateCaption;
|
||||||
UpdateFilesPage;
|
UpdateFilesPage(ScanIncludes);
|
||||||
UpdateH2PasPage;
|
UpdateH2PasPage;
|
||||||
UpdateConvertPage;
|
UpdateConvertPage;
|
||||||
end;
|
end;
|
||||||
@ -747,17 +771,29 @@ begin
|
|||||||
s:=s+#13#13+'Includes:';
|
s:=s+#13#13+'Includes:';
|
||||||
for i:=0 to AFile.CIncludeCount-1 do begin
|
for i:=0 to AFile.CIncludeCount-1 do begin
|
||||||
IncFile:=AFile.CIncludes[i];
|
IncFile:=AFile.CIncludes[i];
|
||||||
s:=s+#13+IncFile.SrcFilename+':'+IntToStr(IncFile.SrcPos.Y);
|
s:=s+#13+Project.ShortenFilename(IncFile.Filename)+':'+IntToStr(IncFile.SrcPos.Y);
|
||||||
end;
|
end;
|
||||||
AddIncludedCHeaderFilesButton.Visible:=true;
|
AddIncludedCHeaderFilesButton.Enabled:=true;
|
||||||
end else begin
|
end else begin
|
||||||
AddIncludedCHeaderFilesButton.Visible:=false;
|
AddIncludedCHeaderFilesButton.Enabled:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
FileInfoLabel.Caption:=s;
|
if AFile.CIncludedByCount>0 then begin
|
||||||
|
s:=s+#13#13+'Included by:';
|
||||||
|
for i:=0 to AFile.CIncludedByCount-1 do begin
|
||||||
|
IncFile:=AFile.CIncludedBy[i];
|
||||||
|
s:=s+#13+Project.ShortenFilename(IncFile.Owner.Filename)+':'+IntToStr(IncFile.SrcPos.Y);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
FileInfoMemo.Caption:=s;
|
||||||
|
|
||||||
|
MergeFileCheckBox.Checked:=AFile.Merge;
|
||||||
|
MergeFileCheckBox.Enabled:=true;
|
||||||
end else begin
|
end else begin
|
||||||
FileInfoLabel.Caption:='No file selected.';
|
FileInfoMemo.Caption:='No file selected.';
|
||||||
AddIncludedCHeaderFilesButton.Visible:=false;
|
MergeFileCheckBox.Enabled:=false;
|
||||||
|
AddIncludedCHeaderFilesButton.Enabled:=false;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -780,6 +816,17 @@ begin
|
|||||||
@OnAddSearchAndReplaceBeforeH2PasClick);
|
@OnAddSearchAndReplaceBeforeH2PasClick);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TH2PasDialog.GetNodeFilename(Node: TTreeNode): string;
|
||||||
|
var
|
||||||
|
p: LongInt;
|
||||||
|
begin
|
||||||
|
Result:=Node.Text;
|
||||||
|
p:=System.Pos('(',Result);
|
||||||
|
if p>0 then
|
||||||
|
Result:=copy(Result,1,p-2);
|
||||||
|
Result:=Project.LongenFilename(Result);
|
||||||
|
end;
|
||||||
|
|
||||||
function TH2PasDialog.GetCurrentCHeaderFile: TH2PasFile;
|
function TH2PasDialog.GetCurrentCHeaderFile: TH2PasFile;
|
||||||
var
|
var
|
||||||
AFilename: String;
|
AFilename: String;
|
||||||
@ -788,7 +835,7 @@ begin
|
|||||||
Result:=nil;
|
Result:=nil;
|
||||||
Node:=CHeaderFilesCheckTreeView.Selected;
|
Node:=CHeaderFilesCheckTreeView.Selected;
|
||||||
if (Node=nil) or (Node.Parent<>nil) then exit;
|
if (Node=nil) or (Node.Parent<>nil) then exit;
|
||||||
AFilename:=Project.LongenFilename(Node.Text);
|
AFilename:=GetNodeFilename(Node);
|
||||||
Result:=Project.CHeaderFileWithFilename(AFilename);
|
Result:=Project.CHeaderFileWithFilename(AFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -805,7 +852,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
Node:=CHeaderFilesCheckTreeView.Selected;
|
Node:=CHeaderFilesCheckTreeView.Selected;
|
||||||
if (Node=nil) or (Node.Parent<>nil) then exit;
|
if (Node=nil) or (Node.Parent<>nil) then exit;
|
||||||
AFilename:=Project.LongenFilename(Node.Text);
|
AFilename:=GetNodeFilename(Node);
|
||||||
Index:=Project.CHeaderFileIndexWithFilename(AFilename);
|
Index:=Project.CHeaderFileIndexWithFilename(AFilename);
|
||||||
if Index<0 then begin
|
if Index<0 then begin
|
||||||
DebugLn(['TH2PasDialog.MoveCurrentFile not found: Filename=',AFilename]);
|
DebugLn(['TH2PasDialog.MoveCurrentFile not found: Filename=',AFilename]);
|
||||||
@ -832,7 +879,23 @@ begin
|
|||||||
Result:=0;
|
Result:=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.UpdateFilesPage;
|
procedure TH2PasDialog.MarkAllCHeadersExceptCurrentToMerge;
|
||||||
|
var
|
||||||
|
CurFile: TH2PasFile;
|
||||||
|
i: Integer;
|
||||||
|
OtherFile: TH2PasFile;
|
||||||
|
begin
|
||||||
|
if Project=nil then exit;
|
||||||
|
CurFile:=GetCurrentCHeaderFile;
|
||||||
|
if CurFile=nil then exit;
|
||||||
|
for i:=0 to Project.CHeaderFileCount-1 do begin
|
||||||
|
OtherFile:=Project.CHeaderFiles[i];
|
||||||
|
OtherFile.Merge:=OtherFile<>CurFile;
|
||||||
|
end;
|
||||||
|
UpdateFileInfo;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasDialog.UpdateFilesPage(ScanIncludes: boolean);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
CurFile: TH2PasFile;
|
CurFile: TH2PasFile;
|
||||||
@ -841,8 +904,10 @@ var
|
|||||||
OldExpandedState: TTreeNodeExpandedState;
|
OldExpandedState: TTreeNodeExpandedState;
|
||||||
Node: TTreeNode;
|
Node: TTreeNode;
|
||||||
OldSelected: String;
|
OldSelected: String;
|
||||||
|
j: Integer;
|
||||||
begin
|
begin
|
||||||
CHeaderFilesCheckTreeView.ConsistencyCheck;
|
if ScanIncludes and (Project<>nil) then
|
||||||
|
Project.ReadAllCIncludes(false);
|
||||||
CHeaderFilesCheckTreeView.BeginUpdate;
|
CHeaderFilesCheckTreeView.BeginUpdate;
|
||||||
OldSelection:=nil;
|
OldSelection:=nil;
|
||||||
OldExpandedState:=TTreeNodeExpandedState.Create(CHeaderFilesCheckTreeView);
|
OldExpandedState:=TTreeNodeExpandedState.Create(CHeaderFilesCheckTreeView);
|
||||||
@ -866,10 +931,15 @@ begin
|
|||||||
for i:=0 to Project.CHeaderFileCount-1 do begin
|
for i:=0 to Project.CHeaderFileCount-1 do begin
|
||||||
CurFile:=Project.CHeaderFiles[i];
|
CurFile:=Project.CHeaderFiles[i];
|
||||||
s:=Project.ShortenFilename(CurFile.Filename);
|
s:=Project.ShortenFilename(CurFile.Filename);
|
||||||
|
if CurFile.CIncludedByCount>0 then
|
||||||
|
s:=s+' (included by '+IntToStr(CurFile.CIncludedByCount)+')';
|
||||||
Node:=CHeaderFilesCheckTreeView.Items.Add(nil,s);
|
Node:=CHeaderFilesCheckTreeView.Items.Add(nil,s);
|
||||||
Node.MultiSelected:=OldSelection.IndexOf(Node.GetTextPath)>=0;
|
Node.MultiSelected:=OldSelection.IndexOf(Node.GetTextPath)>=0;
|
||||||
Node.Selected:=Node.Text=OldSelected;
|
Node.Selected:=Node.Text=OldSelected;
|
||||||
Node.StateIndex:=GetFileNodeStateIndex(CurFile);
|
Node.StateIndex:=GetFileNodeStateIndex(CurFile);
|
||||||
|
for j:=0 to CurFile.CIncludeCount-1 do begin
|
||||||
|
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// restore expanded state
|
// restore expanded state
|
||||||
@ -1196,7 +1266,7 @@ begin
|
|||||||
Project.Filename:=NewFilename;
|
Project.Filename:=NewFilename;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
UpdateProjectChanged;
|
UpdateProjectChanged(true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -42,25 +42,28 @@
|
|||||||
</Item6>
|
</Item6>
|
||||||
<Item7>
|
<Item7>
|
||||||
<Filename Value="idetextconvlistadd.pas"/>
|
<Filename Value="idetextconvlistadd.pas"/>
|
||||||
<UnitName Value="idetextconvlistadd"/>
|
<UnitName Value="IDETextConvListAdd"/>
|
||||||
</Item7>
|
</Item7>
|
||||||
</Files>
|
</Files>
|
||||||
<RST OutDir="languages/"/>
|
<RST OutDir="languages/"/>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
<RequiredPkgs Count="4">
|
<RequiredPkgs Count="5">
|
||||||
<Item1>
|
<Item1>
|
||||||
<PackageName Value="SynEdit"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
<Item2>
|
<Item2>
|
||||||
<PackageName Value="IDEIntf"/>
|
<PackageName Value="SynEdit"/>
|
||||||
</Item2>
|
</Item2>
|
||||||
<Item3>
|
<Item3>
|
||||||
<PackageName Value="FCL"/>
|
<PackageName Value="IDEIntf"/>
|
||||||
<MinVersion Major="1" Valid="True"/>
|
|
||||||
</Item3>
|
</Item3>
|
||||||
<Item4>
|
<Item4>
|
||||||
<PackageName Value="CodeTools"/>
|
<PackageName Value="FCL"/>
|
||||||
|
<MinVersion Major="1" Valid="True"/>
|
||||||
</Item4>
|
</Item4>
|
||||||
|
<Item5>
|
||||||
|
<PackageName Value="CodeTools"/>
|
||||||
|
</Item5>
|
||||||
</RequiredPkgs>
|
</RequiredPkgs>
|
||||||
<UsageOptions>
|
<UsageOptions>
|
||||||
<UnitPath Value="$(PkgOutDir)/"/>
|
<UnitPath Value="$(PkgOutDir)/"/>
|
||||||
|
@ -339,6 +339,7 @@ var
|
|||||||
DesignerMenuDeleteSelection: TIDEMenuCommand;
|
DesignerMenuDeleteSelection: TIDEMenuCommand;
|
||||||
|
|
||||||
DesignerMenuChangeClass: TIDEMenuCommand;
|
DesignerMenuChangeClass: TIDEMenuCommand;
|
||||||
|
DesignerMenuChangeParent: TIDEMenuSection;
|
||||||
DesignerMenuViewLFM: TIDEMenuCommand;
|
DesignerMenuViewLFM: TIDEMenuCommand;
|
||||||
DesignerMenuSaveAsXML: TIDEMenuCommand;
|
DesignerMenuSaveAsXML: TIDEMenuCommand;
|
||||||
|
|
||||||
@ -419,6 +420,9 @@ begin
|
|||||||
'Miscellaneous section');
|
'Miscellaneous section');
|
||||||
DesignerMenuChangeClass:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
DesignerMenuChangeClass:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
||||||
'Change class',lisChangeClass);
|
'Change class',lisChangeClass);
|
||||||
|
DesignerMenuChangeParent:=RegisterIDEMenuSection(DesignerMenuSectionMisc,
|
||||||
|
'Change parent');
|
||||||
|
DesignerMenuChangeParent.Caption:=lisChangeParent;
|
||||||
DesignerMenuViewLFM:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
DesignerMenuViewLFM:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
||||||
'View LFM',lisViewSourceLfm);
|
'View LFM',lisViewSourceLfm);
|
||||||
DesignerMenuSaveAsXML:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
DesignerMenuSaveAsXML:=RegisterIDEMenuCommand(DesignerMenuSectionMisc,
|
||||||
@ -2701,6 +2705,56 @@ var
|
|||||||
CompsAreSelected: boolean;
|
CompsAreSelected: boolean;
|
||||||
OneControlSelected: Boolean;
|
OneControlSelected: Boolean;
|
||||||
SelectionVisible: Boolean;
|
SelectionVisible: Boolean;
|
||||||
|
|
||||||
|
procedure UpdateChangeParentMenu;
|
||||||
|
var
|
||||||
|
Candidates: TFPList;
|
||||||
|
i: Integer;
|
||||||
|
Candidate: TWinControl;
|
||||||
|
j: Integer;
|
||||||
|
CurSelected: TSelectedControl;
|
||||||
|
Item: TIDEMenuItem;
|
||||||
|
begin
|
||||||
|
Candidates:=TFPList.Create;
|
||||||
|
if ControlSelIsNotEmpty
|
||||||
|
and (not LookupRootIsSelected)
|
||||||
|
and (LookupRoot is TWinControl) then begin
|
||||||
|
//DebugLn(['UpdateChangeParentMenu ',LookupRoot.ComponentCount]);
|
||||||
|
for i:=0 to LookupRoot.ComponentCount-1 do begin
|
||||||
|
if not (LookupRoot.Components[i] is TWinControl) then continue;
|
||||||
|
|
||||||
|
Candidate:=TWinControl(LookupRoot.Components[i]);
|
||||||
|
if not (csAcceptsControls in Candidate.ControlStyle) then continue;
|
||||||
|
j:=ControlSelection.Count-1;
|
||||||
|
while j>=0 do begin
|
||||||
|
CurSelected:=ControlSelection[j];
|
||||||
|
//DebugLn(['UpdateChangeParentMenu ',CurSelected.IsTControl,' ',DbgSName(CurSelected.Persistent),' ',CurSelected.IsTWinControl]);
|
||||||
|
if not CurSelected.IsTControl then continue;
|
||||||
|
if CurSelected.Persistent=Candidate then break;
|
||||||
|
if CurSelected.IsTWinControl
|
||||||
|
and TWinControl(CurSelected.Persistent).IsParentOf(Candidate)
|
||||||
|
then
|
||||||
|
break;
|
||||||
|
dec(j);
|
||||||
|
end;
|
||||||
|
//DebugLn(['UpdateChangeParentMenu j=',j,' ',dbgsName(Candidate)]);
|
||||||
|
if j<0 then
|
||||||
|
Candidates.Add(Candidate);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
DesignerMenuChangeParent.Visible:=Candidates.Count>0;
|
||||||
|
DebugLn(['UpdateChangeParentMenu ',DesignerMenuChangeParent.Visible]);
|
||||||
|
DesignerMenuChangeParent.Clear;
|
||||||
|
for i:=0 to DesignerMenuChangeParent.Count-1 do begin
|
||||||
|
Item:=TIDEMenuCommand.Create(DesignerMenuChangeParent.Name+'_'+IntToStr(i));
|
||||||
|
DesignerMenuChangeParent.AddLast(Item);
|
||||||
|
Item.Caption:=TWinControl(Candidates[i]).Name;
|
||||||
|
end;
|
||||||
|
Candidates.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
ControlSelIsNotEmpty:=(ControlSelection.Count>0)
|
ControlSelIsNotEmpty:=(ControlSelection.Count>0)
|
||||||
and (ControlSelection.SelectionForm=Form);
|
and (ControlSelection.SelectionForm=Form);
|
||||||
@ -2733,6 +2787,7 @@ begin
|
|||||||
DesignerMenuDeleteSelection.Enabled:= CompsAreSelected;
|
DesignerMenuDeleteSelection.Enabled:= CompsAreSelected;
|
||||||
|
|
||||||
DesignerMenuChangeClass.Enabled:= CompsAreSelected and (ControlSelection.Count=1);
|
DesignerMenuChangeClass.Enabled:= CompsAreSelected and (ControlSelection.Count=1);
|
||||||
|
UpdateChangeParentMenu;
|
||||||
|
|
||||||
DesignerMenuSnapToGridOption.Checked:=EnvironmentOptions.SnapToGrid;
|
DesignerMenuSnapToGridOption.Checked:=EnvironmentOptions.SnapToGrid;
|
||||||
DesignerMenuSnapToGuideLinesOption.Checked:=EnvironmentOptions.SnapToGuideLines;
|
DesignerMenuSnapToGuideLinesOption.Checked:=EnvironmentOptions.SnapToGuideLines;
|
||||||
|
@ -3356,6 +3356,7 @@ resourcestring
|
|||||||
lisPListAll = '<All>';
|
lisPListAll = '<All>';
|
||||||
lisPListNone = '<None>';
|
lisPListNone = '<None>';
|
||||||
lisUIClearIncludedByReference = 'Clear include cache';
|
lisUIClearIncludedByReference = 'Clear include cache';
|
||||||
|
lisChangeParent = 'Change parent ...';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user