mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-08 15:17:22 +02:00
implemented removing and readding package items
git-svn-id: trunk@4031 -
This commit is contained in:
parent
a7ca5dc013
commit
6212168efc
@ -134,8 +134,6 @@ type
|
||||
procedure OnIteratePackages(APackageID: TLazPackageID);
|
||||
procedure AutoCompleteNewComponent;
|
||||
procedure AutoCompleteNewComponentUnitName;
|
||||
function CheckUnitFilename(AddFileType: TAddToPkgType;
|
||||
var AFilename: string): boolean;
|
||||
procedure UpdateAddUnitInfo;
|
||||
public
|
||||
Params: TAddToPkgResult;
|
||||
@ -155,6 +153,11 @@ type
|
||||
function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult;
|
||||
OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||
OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo): TModalResult;
|
||||
function CheckAddingUnitFilename(LazPackage: TLazPackage;
|
||||
AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||
var AFilename: string): boolean;
|
||||
function CheckAddingDependency(LazPackage: TLazPackage;
|
||||
NewDependency: TPkgDependency): boolean;
|
||||
|
||||
|
||||
implementation
|
||||
@ -177,6 +180,169 @@ begin
|
||||
AddDlg.Free;
|
||||
end;
|
||||
|
||||
function CheckAddingUnitFilename(LazPackage: TLazPackage;
|
||||
AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||
var AFilename: string): boolean;
|
||||
var
|
||||
AnUnitName: String;
|
||||
PkgFile: TPkgFile;
|
||||
Msg: String;
|
||||
IDEFileFlags: TIDEFileStateFlags;
|
||||
begin
|
||||
Result:=false;
|
||||
|
||||
// normalize filename
|
||||
AFilename:=TrimFilename(AFilename);
|
||||
if (not FilenameIsAbsolute(AFilename)) then begin
|
||||
if LazPackage.HasDirectory then
|
||||
AFilename:=LazPackage.Directory+AFilename
|
||||
else begin
|
||||
MessageDlg('Invalid filename',
|
||||
'The filename "'+AFilename+'" is ambigious.'#13
|
||||
+'Please specifiy a filename with full path.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check if file exists
|
||||
if not FileExists(AFilename) then begin
|
||||
if AddFileType=d2ptUnit then begin
|
||||
MessageDlg('File not found',
|
||||
'File "'+AFilename+'" not found.',mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check file extension
|
||||
if not FilenameIsPascalUnit(AFilename) then begin
|
||||
MessageDlg('File not unit',
|
||||
'Pascal units must have the extension .pp or .pas',
|
||||
mtWarning,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check unitname
|
||||
AnUnitName:=ExtractFileNameOnly(AFilename);
|
||||
if not IsValidIdent(AnUnitName) then begin
|
||||
MessageDlg('File not unit',
|
||||
+'"'+AnUnitName+'" is not a valid unit name.',
|
||||
mtWarning,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if unitname already exists in package
|
||||
PkgFile:=PackageGraph.FindUnit(LazPackage,AnUnitName,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
if PkgFile.LazPackage=LazPackage then begin
|
||||
MessageDlg('Unitname already exists',
|
||||
'The unitname "'+AnUnitName+'" already exists in this package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end else begin
|
||||
if MessageDlg('Unitname already exists',
|
||||
'The unitname "'+AnUnitName+'" already exists in the package:'#13
|
||||
+PkgFile.LazPackage.IDAsString,
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore then exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check if unitname is a componentclass
|
||||
if IDEComponentPalette.FindComponent(AnUnitName)<>nil then begin
|
||||
if MessageDlg('Ambigious Unit Name',
|
||||
'The unit name "'+AnUnitName+'" is the same as an registered component.'#13
|
||||
+'Using this can cause strange error messages.',
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if file already exists in package
|
||||
PkgFile:=LazPackage.FindPkgFile(AFilename,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
Msg:='File "'+AFilename+'" already exists in the project.';
|
||||
if PkgFile.Filename<>AFilename then
|
||||
Msg:=#13+'Existing file: "'+PkgFile.Filename+'"';
|
||||
MessageDlg('File already exists',Msg,mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if file is part of project or marked readonly
|
||||
if Assigned(OnGetIDEFileInfo) then begin
|
||||
IDEFileFlags:=[];
|
||||
OnGetIDEFileInfo(nil,AFilename,[ifsPartOfProject,ifsReadOnly],
|
||||
IDEFileFlags);
|
||||
if (ifsPartOfProject in IDEFileFlags) then begin
|
||||
MessageDlg('File is used',
|
||||
'The file "'+AFilename+'" is part of the current project.'#13
|
||||
+'It is a bad idea to share files between projects and packages.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
if (ifsReadOnly in IDEFileFlags) then begin
|
||||
MessageDlg('File is readonly',
|
||||
'The file "'+AFilename+'" is marked as readonly.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// ok
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function CheckAddingDependency(LazPackage: TLazPackage;
|
||||
NewDependency: TPkgDependency): boolean;
|
||||
var
|
||||
NewPckName: String;
|
||||
begin
|
||||
Result:=false;
|
||||
|
||||
NewPckName:=NewDependency.PackageName;
|
||||
|
||||
// check Max-Min version
|
||||
if (pdfMinVersion in NewDependency.Flags)
|
||||
and (pdfMaxVersion in NewDependency.Flags)
|
||||
and (NewDependency.MaxVersion.Compare(NewDependency.MinVersion)<0) then
|
||||
begin
|
||||
MessageDlg('Invalid Min-Max version',
|
||||
'The Maximum Version is lower than the Minimim Version.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check packagename
|
||||
if not IsValidIdent(NewPckName) then begin
|
||||
MessageDlg('Invalid packagename',
|
||||
'The package name "'+NewPckName+'" is invalid.'#13
|
||||
+'Plase choose an existing package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if package is already required
|
||||
if LazPackage.FindDependencyByName(NewPckName)<>nil then begin
|
||||
MessageDlg('Dependency already exists',
|
||||
'The package has already a dependency for the package "'+NewPckName+'".',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if required package exists
|
||||
if PackageGraph.FindWithDependency(NewDependency,fpfSearchPackageEverywhere)
|
||||
=nil then
|
||||
begin
|
||||
MessageDlg('Package not found',
|
||||
'The packagename "'+NewPckName+'" was not found.'#13
|
||||
+'Please choose an existing package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
|
||||
{ TAddToPackageDlg }
|
||||
|
||||
procedure TAddToPackageDlg.AddUnitButtonClick(Sender: TObject);
|
||||
@ -191,7 +357,8 @@ begin
|
||||
Include(Params.PkgFileFlags,pffHasRegisterProc);
|
||||
|
||||
// check filename
|
||||
if not CheckUnitFilename(Params.AddType,Params.UnitFilename) then exit;
|
||||
if not CheckAddingUnitFilename(LazPackage,Params.AddType,
|
||||
OnGetIDEFileInfo,Params.UnitFilename) then exit;
|
||||
|
||||
// check unitname
|
||||
if AnsiCompareText(Params.UnitName,ExtractFileNameOnly(Params.UnitFilename))<>0
|
||||
@ -428,7 +595,8 @@ begin
|
||||
end;
|
||||
|
||||
// check filename
|
||||
if not CheckUnitFilename(Params.AddType,Params.UnitFilename) then exit;
|
||||
if not CheckAddingUnitFilename(LazPackage,Params.AddType,
|
||||
OnGetIDEFileInfo,Params.UnitFilename) then exit;
|
||||
|
||||
// create dependency if needed
|
||||
PkgComponent:=
|
||||
@ -517,7 +685,6 @@ end;
|
||||
procedure TAddToPackageDlg.NewDependButtonClick(Sender: TObject);
|
||||
var
|
||||
NewDependency: TPkgDependency;
|
||||
NewPckName: String;
|
||||
begin
|
||||
NewDependency:=TPkgDependency.Create;
|
||||
try
|
||||
@ -547,26 +714,10 @@ begin
|
||||
end;
|
||||
NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion];
|
||||
end;
|
||||
// check packagename
|
||||
NewPckName:=DependPkgNameComboBox.Text;
|
||||
if not IsValidIdent(NewPckName) then begin
|
||||
MessageDlg('Invalid packagename',
|
||||
'The packagename "'+NewPckName+'" is invalid.'#13
|
||||
+'Plase choose an existing package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
NewDependency.PackageName:=NewPckName;
|
||||
if PackageGraph.FindWithDependency(NewDependency,fpfSearchPackageEverywhere)
|
||||
=nil then
|
||||
begin
|
||||
MessageDlg('Package not found',
|
||||
'The packagename "'+DependPkgNameComboBox.Text+'" was not found.'#13
|
||||
+'Please choose an existing package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
NewDependency.PackageName:=DependPkgNameComboBox.Text;
|
||||
if not CheckAddingDependency(LazPackage,NewDependency) then exit;
|
||||
|
||||
// ok
|
||||
Params.Dependency:=NewDependency;
|
||||
NewDependency:=nil;
|
||||
@ -950,116 +1101,6 @@ begin
|
||||
ComponentUnitFileEdit.Text:=NewFileName;
|
||||
end;
|
||||
|
||||
function TAddToPackageDlg.CheckUnitFilename(AddFileType: TAddToPkgType;
|
||||
var AFilename: string): boolean;
|
||||
var
|
||||
AnUnitName: String;
|
||||
PkgFile: TPkgFile;
|
||||
Msg: String;
|
||||
IDEFileFlags: TIDEFileStateFlags;
|
||||
begin
|
||||
Result:=false;
|
||||
|
||||
// normalize filename
|
||||
AFilename:=TrimFilename(AFilename);
|
||||
if (not FilenameIsAbsolute(AFilename)) then begin
|
||||
if LazPackage.HasDirectory then
|
||||
AFilename:=LazPackage.Directory+AFilename
|
||||
else begin
|
||||
MessageDlg('Invalid filename',
|
||||
'The filename "'+AFilename+'" is ambigious.'#13
|
||||
+'Please specifiy a filename with full path.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check if file exists
|
||||
if not FileExists(AFilename) then begin
|
||||
if AddFileType=d2ptUnit then begin
|
||||
MessageDlg('File not found',
|
||||
'File "'+AFilename+'" not found.',mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check file extension
|
||||
if not FilenameIsPascalUnit(AFilename) then begin
|
||||
MessageDlg('File not unit',
|
||||
'Pascal units must have the extension .pp or .pas',
|
||||
mtWarning,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check unitname
|
||||
AnUnitName:=ExtractFileNameOnly(AFilename);
|
||||
if not IsValidIdent(AnUnitName) then begin
|
||||
MessageDlg('File not unit',
|
||||
+'"'+AnUnitName+'" is not a valid unit name.',
|
||||
mtWarning,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if unitname already exists in package
|
||||
PkgFile:=PackageGraph.FindUnit(LazPackage,AnUnitName,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
if PkgFile.LazPackage=LazPackage then begin
|
||||
MessageDlg('Unitname already exists',
|
||||
'The unitname "'+AnUnitName+'" already exists in this package.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end else begin
|
||||
if MessageDlg('Unitname already exists',
|
||||
'The unitname "'+AnUnitName+'" already exists in the package:'#13
|
||||
+PkgFile.LazPackage.IDAsString,
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore then exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// check if unitname is a componentclass
|
||||
if IDEComponentPalette.FindComponent(AnUnitName)<>nil then begin
|
||||
if MessageDlg('Ambigious Unit Name',
|
||||
'The unit name "'+AnUnitName+'" is the same as an registered component.'#13
|
||||
+'Using this can cause strange error messages.',
|
||||
mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if file already exists in package
|
||||
PkgFile:=LazPackage.FindPkgFile(AFilename,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
Msg:='File "'+AFilename+'" already exists in the project.';
|
||||
if PkgFile.Filename<>AFilename then
|
||||
Msg:=#13+'Existing file: "'+PkgFile.Filename+'"';
|
||||
MessageDlg('File already exists',Msg,mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
// check if file is part of project or marked readonly
|
||||
if Assigned(OnGetIDEFileInfo) then begin
|
||||
IDEFileFlags:=[];
|
||||
OnGetIDEFileInfo(Self,AFilename,[ifsPartOfProject,ifsReadOnly],
|
||||
IDEFileFlags);
|
||||
if (ifsPartOfProject in IDEFileFlags) then begin
|
||||
MessageDlg('File is used',
|
||||
'The file "'+AFilename+'" is part of the current project.'#13
|
||||
+'It is a bad idea to share files between projects and packages.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
if (ifsReadOnly in IDEFileFlags) then begin
|
||||
MessageDlg('File is readonly',
|
||||
'The file "'+AFilename+'" is marked as readonly.',
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
// ok
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TAddToPackageDlg.UpdateAddUnitInfo;
|
||||
var
|
||||
AnUnitName: string;
|
||||
|
@ -116,7 +116,7 @@ type
|
||||
private
|
||||
FComponentPriority: TComponentPriority;
|
||||
FComponents: TList; // list of TPkgComponent
|
||||
FDeleted: boolean;
|
||||
FRemoved: boolean;
|
||||
FFilename: string;
|
||||
FFileType: TPkgFileType;
|
||||
FFlags: TPkgFileFlags;
|
||||
@ -124,7 +124,7 @@ type
|
||||
FUnitName: string;
|
||||
function GetComponents(Index: integer): TPkgComponent;
|
||||
function GetHasRegisteredProc: boolean;
|
||||
procedure SetDeleted(const AValue: boolean);
|
||||
procedure SetRemoved(const AValue: boolean);
|
||||
procedure SetFilename(const AValue: string);
|
||||
procedure SetFileType(const AValue: TPkgFileType);
|
||||
procedure SetFlags(const AValue: TPkgFileFlags);
|
||||
@ -145,8 +145,9 @@ type
|
||||
procedure AddPkgComponent(APkgComponent: TPkgComponent);
|
||||
procedure RemovePkgComponent(APkgComponent: TPkgComponent);
|
||||
function GetResolvedFilename: string;
|
||||
function HasRegisteredPlugins: boolean;
|
||||
public
|
||||
property Deleted: boolean read FDeleted write SetDeleted;
|
||||
property Removed: boolean read FRemoved write SetRemoved;
|
||||
property Filename: string read FFilename write SetFilename;
|
||||
property FileType: TPkgFileType read FFileType write SetFileType;
|
||||
property Flags: TPkgFileFlags read FFlags write SetFlags;
|
||||
@ -175,10 +176,12 @@ type
|
||||
FMaxVersion: TPkgVersion;
|
||||
FMinVersion: TPkgVersion;
|
||||
FPackageName: string;
|
||||
FRemoved: boolean;
|
||||
procedure SetFlags(const AValue: TPkgDependencyFlags);
|
||||
procedure SetMaxVersion(const AValue: TPkgVersion);
|
||||
procedure SetMinVersion(const AValue: TPkgVersion);
|
||||
procedure SetPackageName(const AValue: string);
|
||||
procedure SetRemoved(const AValue: boolean);
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
@ -199,6 +202,7 @@ type
|
||||
property Flags: TPkgDependencyFlags read FFlags write SetFlags;
|
||||
property MinVersion: TPkgVersion read FMinVersion write SetMinVersion;
|
||||
property MaxVersion: TPkgVersion read FMaxVersion write SetMaxVersion;
|
||||
property Removed: boolean read FRemoved write SetRemoved;
|
||||
end;
|
||||
|
||||
|
||||
@ -258,7 +262,6 @@ type
|
||||
FAutoInstall: TPackageInstallType;
|
||||
FCompilerOptions: TPkgCompilerOptions;
|
||||
FComponents: TList; // TList of TPkgComponent
|
||||
FDeletedFiles: TList; // TList of TPkgFile
|
||||
FDependingPkgs: TList; // TList of TLazPackage
|
||||
FDescription: string;
|
||||
FDirectory: string;
|
||||
@ -272,6 +275,8 @@ type
|
||||
FPackageEditor: TBasePackageEditor;
|
||||
FPackageType: TLazPackageType;
|
||||
FReadOnly: boolean;
|
||||
FRemovedFiles: TList; // TList of TPkgFile
|
||||
FRemovedRequiredPkgs: TList; // TList of TPkgDependency
|
||||
FRegistered: boolean;
|
||||
FRequiredPkgs: TList; // TList of TPkgDependency
|
||||
FTitle: string;
|
||||
@ -281,13 +286,15 @@ type
|
||||
function GetAutoUpdate: boolean;
|
||||
function GetComponentCount: integer;
|
||||
function GetComponents(Index: integer): TPkgComponent;
|
||||
function GetDeletedCount: integer;
|
||||
function GetDeletedFiles(Index: integer): TPkgFile;
|
||||
function GetRemovedCount: integer;
|
||||
function GetRemovedFiles(Index: integer): TPkgFile;
|
||||
function GetDependingPkgCount: integer;
|
||||
function GetDependingPkgs(Index: integer): TLazPackage;
|
||||
function GetFileCount: integer;
|
||||
function GetFiles(Index: integer): TPkgFile;
|
||||
function GetModified: boolean;
|
||||
function GetRemovedRequiredPkgCount: integer;
|
||||
function GetRemovedRequiredPkgs(Index: integer): TPkgDependency;
|
||||
function GetRequiredPkgCount: integer;
|
||||
function GetRequiredPkgs(Index: integer): TPkgDependency;
|
||||
function GetUsedPkgCount: integer;
|
||||
@ -329,14 +336,19 @@ type
|
||||
procedure ConsistencyCheck;
|
||||
function IndexOfPkgComponent(PkgComponent: TPkgComponent): integer;
|
||||
function FindPkgFile(const AFilename: string;
|
||||
ResolveLinks, IgnoreDeleted: boolean): TPkgFile;
|
||||
function FindUnit(const TheUnitName: string; IgnoreDeleted: boolean): TPkgFile;
|
||||
ResolveLinks, IgnoreRemoved: boolean): TPkgFile;
|
||||
function FindUnit(const TheUnitName: string; IgnoreRemoved: boolean): TPkgFile;
|
||||
function FindRemovedPkgFile(const AFilename: string): TPkgFile;
|
||||
function FindDependencyByName(const PkgName: string): TPkgDependency;
|
||||
function NameAndVersion: string;
|
||||
function AddFile(const NewFilename, NewUnitName: string;
|
||||
NewFileType: TPkgFileType; NewFlags: TPkgFileFlags;
|
||||
CompPriorityCat: TComponentPriorityCategory): TPkgFile;
|
||||
procedure DeleteFile(PkgFile: TPkgFile);
|
||||
procedure RemoveFile(PkgFile: TPkgFile);
|
||||
procedure UnremovePkgFile(PkgFile: TPkgFile);
|
||||
procedure UnremoveRequiredPkg(Dependency: TPkgDependency);
|
||||
procedure AddRequiredDependency(Dependency: TPkgDependency);
|
||||
procedure RemoveRequiredDependency(Dependency: TPkgDependency);
|
||||
function CreateDependencyForThisPkg: TPkgDependency;
|
||||
function AddComponent(PkgFile: TPkgFile; const Page: string;
|
||||
TheComponentClass: TComponentClass): TPkgComponent;
|
||||
@ -354,8 +366,6 @@ type
|
||||
read FCompilerOptions;
|
||||
property ComponentCount: integer read GetComponentCount;
|
||||
property Components[Index: integer]: TPkgComponent read GetComponents;
|
||||
property DeletedCount: integer read GetDeletedCount;
|
||||
property DeletedFiles[Index: integer]: TPkgFile read GetDeletedFiles;
|
||||
property DependingPkgCount: integer read GetDependingPkgCount;
|
||||
property DependingPkgs[Index: integer]: TLazPackage read GetDependingPkgs;
|
||||
property Description: string read FDescription write SetDescription;
|
||||
@ -373,6 +383,10 @@ type
|
||||
property PackageType: TLazPackageType
|
||||
read FPackageType write SetPackageType;
|
||||
property ReadOnly: boolean read FReadOnly write SetReadOnly;
|
||||
property RemovedFilesCount: integer read GetRemovedCount;
|
||||
property RemovedFiles[Index: integer]: TPkgFile read GetRemovedFiles;
|
||||
property RemovedRequiredPkgCount: integer read GetRemovedRequiredPkgCount;
|
||||
property RemovedRequiredPkgs[Index: integer]: TPkgDependency read GetRemovedRequiredPkgs;
|
||||
property RequiredPkgCount: integer read GetRequiredPkgCount;
|
||||
property RequiredPkgs[Index: integer]: TPkgDependency read GetRequiredPkgs;
|
||||
property Title: string read FTitle write SetTitle;
|
||||
@ -519,10 +533,10 @@ begin
|
||||
Result:=pffHasRegisterProc in FFlags;
|
||||
end;
|
||||
|
||||
procedure TPkgFile.SetDeleted(const AValue: boolean);
|
||||
procedure TPkgFile.SetRemoved(const AValue: boolean);
|
||||
begin
|
||||
if FDeleted=AValue then exit;
|
||||
FDeleted:=AValue;
|
||||
if FRemoved=AValue then exit;
|
||||
FRemoved:=AValue;
|
||||
end;
|
||||
|
||||
function TPkgFile.GetComponents(Index: integer): TPkgComponent;
|
||||
@ -569,6 +583,11 @@ begin
|
||||
Result:=FComponents;
|
||||
end;
|
||||
|
||||
function TPkgFile.HasRegisteredPlugins: boolean;
|
||||
begin
|
||||
Result:=ComponentCount>0;
|
||||
end;
|
||||
|
||||
constructor TPkgFile.Create(ThePackage: TLazPackage);
|
||||
begin
|
||||
Clear;
|
||||
@ -583,7 +602,7 @@ end;
|
||||
|
||||
procedure TPkgFile.Clear;
|
||||
begin
|
||||
FDeleted:=false;
|
||||
FRemoved:=false;
|
||||
FFilename:='';
|
||||
FFlags:=[];
|
||||
FFileType:=pftUnit;
|
||||
@ -694,6 +713,12 @@ begin
|
||||
FPackageName:=AValue;
|
||||
end;
|
||||
|
||||
procedure TPkgDependency.SetRemoved(const AValue: boolean);
|
||||
begin
|
||||
if FRemoved=AValue then exit;
|
||||
FRemoved:=AValue;
|
||||
end;
|
||||
|
||||
constructor TPkgDependency.Create;
|
||||
begin
|
||||
MinVersion:=TPkgVersion.Create;
|
||||
@ -710,6 +735,7 @@ end;
|
||||
|
||||
procedure TPkgDependency.Clear;
|
||||
begin
|
||||
FRemoved:=false;
|
||||
FFlags:=[];
|
||||
FMaxVersion.Clear;
|
||||
FMinVersion.Clear;
|
||||
@ -909,14 +935,14 @@ begin
|
||||
Result:=TPkgComponent(FComponents[Index]);
|
||||
end;
|
||||
|
||||
function TLazPackage.GetDeletedCount: integer;
|
||||
function TLazPackage.GetRemovedCount: integer;
|
||||
begin
|
||||
Result:=FDeletedFiles.Count;
|
||||
Result:=FRemovedFiles.Count;
|
||||
end;
|
||||
|
||||
function TLazPackage.GetDeletedFiles(Index: integer): TPkgFile;
|
||||
function TLazPackage.GetRemovedFiles(Index: integer): TPkgFile;
|
||||
begin
|
||||
Result:=TPkgFile(FDeletedFiles[Index]);
|
||||
Result:=TPkgFile(FRemovedFiles[Index]);
|
||||
end;
|
||||
|
||||
function TLazPackage.GetDependingPkgCount: integer;
|
||||
@ -944,6 +970,16 @@ begin
|
||||
Result:=lpfModified in FFlags;
|
||||
end;
|
||||
|
||||
function TLazPackage.GetRemovedRequiredPkgCount: integer;
|
||||
begin
|
||||
Result:=FRemovedRequiredPkgs.Count;
|
||||
end;
|
||||
|
||||
function TLazPackage.GetRemovedRequiredPkgs(Index: integer): TPkgDependency;
|
||||
begin
|
||||
Result:=TPkgDependency(FRemovedRequiredPkgs[Index]);
|
||||
end;
|
||||
|
||||
function TLazPackage.GetRequiredPkgCount: integer;
|
||||
begin
|
||||
Result:=FRequiredPkgs.Count;
|
||||
@ -1028,6 +1064,7 @@ begin
|
||||
FDirectory:=FFilename
|
||||
else
|
||||
FDirectory:=ExtractFilePath(FFilename);
|
||||
writeln('TLazPackage.SetFilename A "',FFilename,'" "',FDirectory,'" HasDirectory=',HasDirectory);
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
@ -1106,7 +1143,8 @@ begin
|
||||
FDependingPkgs:=Tlist.Create;
|
||||
FRequiredPkgs:=TList.Create;
|
||||
FFiles:=TList.Create;
|
||||
FDeletedFiles:=TList.Create;
|
||||
FRemovedFiles:=TList.Create;
|
||||
FRemovedRequiredPkgs:=TList.Create;
|
||||
FCompilerOptions:=TPkgCompilerOptions.Create;
|
||||
FUsageOptions:=TAdditionalCompilerOptions.Create;
|
||||
FUsedPkgs:=TList.Create;
|
||||
@ -1118,7 +1156,8 @@ end;
|
||||
destructor TLazPackage.Destroy;
|
||||
begin
|
||||
Clear;
|
||||
FreeAndNil(FDeletedFiles);
|
||||
FreeAndNil(FRemovedFiles);
|
||||
FreeAndNil(FRemovedRequiredPkgs);
|
||||
FreeAndNil(FFiles);
|
||||
FreeAndNil(FComponents);
|
||||
FreeAndNil(FCompilerOptions);
|
||||
@ -1143,8 +1182,8 @@ begin
|
||||
FDirectory:='';
|
||||
FVersion.Clear;
|
||||
FFilename:='';
|
||||
for i:=FDeletedFiles.Count-1 downto 0 do DeletedFiles[i].Free;
|
||||
FDeletedFiles.Clear;
|
||||
for i:=FRemovedFiles.Count-1 downto 0 do RemovedFiles[i].Free;
|
||||
FRemovedFiles.Clear;
|
||||
for i:=FFiles.Count-1 downto 0 do Files[i].Free;
|
||||
FFiles.Clear;
|
||||
FFlags:=[lpfAutoIncrementVersionOnBuild,lpfAutoUpdate];
|
||||
@ -1153,6 +1192,8 @@ begin
|
||||
FName:='';
|
||||
FPackageType:=lptRunTime;
|
||||
FRegistered:=false;
|
||||
for i:=FRemovedRequiredPkgs.Count-1 downto 0 do RemovedRequiredPkgs[i].Free;
|
||||
FRemovedRequiredPkgs.Clear;
|
||||
for i:=FRequiredPkgs.Count-1 downto 0 do RequiredPkgs[i].Free;
|
||||
FRequiredPkgs.Clear;
|
||||
FTitle:='';
|
||||
@ -1176,6 +1217,7 @@ procedure TLazPackage.LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||
const Path: string);
|
||||
var
|
||||
FileVersion: integer;
|
||||
OldFilename: String;
|
||||
|
||||
procedure LoadPkgDependencyList(const ThePath: string; List: TList);
|
||||
var
|
||||
@ -1202,7 +1244,7 @@ var
|
||||
NewCount:=XMLConfig.GetValue(ThePath+'Count',0);
|
||||
for i:=0 to NewCount-1 do begin
|
||||
PkgFile:=TPkgFile.Create(Self);
|
||||
PkgFile.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i)+'/',
|
||||
PkgFile.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/',
|
||||
FileVersion);
|
||||
List.Add(PkgFile);
|
||||
end;
|
||||
@ -1223,7 +1265,9 @@ var
|
||||
begin
|
||||
FileVersion:=XMLConfig.GetValue(Path+'Version',0);
|
||||
if FileVersion=1 then ;
|
||||
OldFilename:=Filename;
|
||||
Clear;
|
||||
Filename:=OldFilename;
|
||||
LockModified;
|
||||
FName:=XMLConfig.GetValue(Path+'Name/Value','');
|
||||
FAuthor:=XMLConfig.GetValue(Path+'Author/Value','');
|
||||
@ -1262,10 +1306,10 @@ procedure TLazPackage.SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string
|
||||
i: Integer;
|
||||
PkgFile: TPkgFile;
|
||||
begin
|
||||
XMLConfig.SetDeleteValue(Path+'Count',List.Count,0);
|
||||
XMLConfig.SetDeleteValue(ThePath+'Count',List.Count,0);
|
||||
for i:=0 to List.Count-1 do begin
|
||||
PkgFile:=TPkgFile(List[i]);
|
||||
PkgFile.SaveToXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i)+'/');
|
||||
PkgFile.SaveToXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/');
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1359,7 +1403,7 @@ begin
|
||||
CheckList(FUsedPkgs,true,true,true);
|
||||
CheckList(FDependingPkgs,true,true,true);
|
||||
CheckList(FRequiredPkgs,true,true,true);
|
||||
CheckList(FDeletedFiles,true,true,true);
|
||||
CheckList(FRemovedFiles,true,true,true);
|
||||
CheckList(FFiles,true,true,true);
|
||||
CheckList(FComponents,true,true,true);
|
||||
CheckEmptyListCut(FDependingPkgs,FUsedPkgs);
|
||||
@ -1371,7 +1415,7 @@ begin
|
||||
end;
|
||||
|
||||
function TLazPackage.FindPkgFile(const AFilename: string;
|
||||
ResolveLinks, IgnoreDeleted: boolean): TPkgFile;
|
||||
ResolveLinks, IgnoreRemoved: boolean): TPkgFile;
|
||||
var
|
||||
TheFilename: String;
|
||||
Cnt: Integer;
|
||||
@ -1394,10 +1438,10 @@ begin
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
if not IgnoreDeleted then begin
|
||||
Cnt:=DeletedCount;
|
||||
if not IgnoreRemoved then begin
|
||||
Cnt:=RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=DeletedFiles[i];
|
||||
Result:=RemovedFiles[i];
|
||||
if ResolveLinks then begin
|
||||
if CompareFilenames(Result.GetResolvedFilename,TheFilename)=0 then
|
||||
exit;
|
||||
@ -1411,7 +1455,7 @@ begin
|
||||
end;
|
||||
|
||||
function TLazPackage.FindUnit(const TheUnitName: string;
|
||||
IgnoreDeleted: boolean): TPkgFile;
|
||||
IgnoreRemoved: boolean): TPkgFile;
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
@ -1422,10 +1466,10 @@ begin
|
||||
Result:=Files[i];
|
||||
if AnsiCompareText(Result.UnitName,TheUnitName)=0 then exit;
|
||||
end;
|
||||
if not IgnoreDeleted then begin
|
||||
Cnt:=DeletedCount;
|
||||
if not IgnoreRemoved then begin
|
||||
Cnt:=RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=DeletedFiles[i];
|
||||
Result:=RemovedFiles[i];
|
||||
if AnsiCompareText(Result.UnitName,TheUnitName)=0 then exit;
|
||||
end;
|
||||
end;
|
||||
@ -1433,6 +1477,33 @@ begin
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
function TLazPackage.FindRemovedPkgFile(const AFilename: string): TPkgFile;
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
begin
|
||||
Cnt:=RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=RemovedFiles[i];
|
||||
if CompareFilenames(Result.Filename,AFilename)=0 then exit;
|
||||
end;
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
function TLazPackage.FindDependencyByName(const PkgName: string
|
||||
): TPkgDependency;
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
begin
|
||||
Cnt:=RequiredPkgCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=RequiredPkgs[i];
|
||||
if AnsiCompareText(Result.PackageName,PkgName)=0 then exit;
|
||||
end;
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
function TLazPackage.NameAndVersion: string;
|
||||
begin
|
||||
Result:=Name+' '+Version.AsString;
|
||||
@ -1442,7 +1513,13 @@ function TLazPackage.AddFile(const NewFilename, NewUnitName: string;
|
||||
NewFileType: TPkgFileType; NewFlags: TPkgFileFlags;
|
||||
CompPriorityCat: TComponentPriorityCategory): TPkgFile;
|
||||
begin
|
||||
Result:=TPkgFile.Create(Self);
|
||||
Result:=FindRemovedPkgFile(NewFilename);
|
||||
if Result=nil then
|
||||
Result:=TPkgFile.Create(Self)
|
||||
else begin
|
||||
FRemovedFiles.Remove(Result);
|
||||
Result.Removed:=false;
|
||||
end;
|
||||
with Result do begin
|
||||
Filename:=NewFilename;
|
||||
UnitName:=NewUnitName;
|
||||
@ -1454,11 +1531,26 @@ begin
|
||||
FFiles.Add(Result);
|
||||
end;
|
||||
|
||||
procedure TLazPackage.DeleteFile(PkgFile: TPkgFile);
|
||||
procedure TLazPackage.RemoveFile(PkgFile: TPkgFile);
|
||||
begin
|
||||
FFiles.Remove(PkgFile);
|
||||
FDeletedFiles.Add(PkgFile);
|
||||
PkgFile.Deleted:=true;
|
||||
FRemovedFiles.Add(PkgFile);
|
||||
PkgFile.Removed:=true;
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
procedure TLazPackage.UnremovePkgFile(PkgFile: TPkgFile);
|
||||
begin
|
||||
FFiles.Add(PkgFile);
|
||||
FRemovedFiles.Remove(PkgFile);
|
||||
PkgFile.Removed:=false;
|
||||
end;
|
||||
|
||||
procedure TLazPackage.UnremoveRequiredPkg(Dependency: TPkgDependency);
|
||||
begin
|
||||
FRequiredPkgs.Add(Dependency);
|
||||
FRemovedRequiredPkgs.Remove(Dependency);
|
||||
Dependency.Removed:=false;
|
||||
end;
|
||||
|
||||
procedure TLazPackage.AddRequiredDependency(Dependency: TPkgDependency);
|
||||
@ -1466,6 +1558,14 @@ begin
|
||||
FRequiredPkgs.Add(Dependency);
|
||||
end;
|
||||
|
||||
procedure TLazPackage.RemoveRequiredDependency(Dependency: TPkgDependency);
|
||||
begin
|
||||
FRequiredPkgs.Remove(Dependency);
|
||||
FRemovedRequiredPkgs.Add(Dependency);
|
||||
Dependency.Removed:=true;
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
function TLazPackage.CreateDependencyForThisPkg: TPkgDependency;
|
||||
begin
|
||||
Result:=TPkgDependency.Create;
|
||||
@ -1585,7 +1685,7 @@ end;
|
||||
|
||||
function TPkgComponent.Createable: boolean;
|
||||
begin
|
||||
Result:=not PkgFile.Deleted;
|
||||
Result:=not PkgFile.Removed;
|
||||
end;
|
||||
|
||||
{ TLazPackageID }
|
||||
|
@ -56,34 +56,51 @@ type
|
||||
{ TPackageEditorForm }
|
||||
|
||||
TPackageEditorForm = class(TBasePackageEditor)
|
||||
// buttons
|
||||
SaveBitBtn: TBitBtn;
|
||||
CompileBitBtn: TBitBtn;
|
||||
AddBitBtn: TBitBtn;
|
||||
RemoveBitBtn: TBitBtn;
|
||||
InstallBitBtn: TBitBtn;
|
||||
OptionsBitBtn: TBitBtn;
|
||||
// items
|
||||
FilesTreeView: TTreeView;
|
||||
// properties
|
||||
FilePropsGroupBox: TGroupBox;
|
||||
// file properties
|
||||
CallRegisterProcCheckBox: TCheckBox;
|
||||
RegisteredPluginsGroupBox: TGroupBox;
|
||||
RegisteredListBox: TListBox;
|
||||
// dependency properties
|
||||
UseMinVersionCheckBox: TCheckBox;
|
||||
MinVersionEdit: TEdit;
|
||||
UseMaxVersionCheckBox: TCheckBox;
|
||||
MaxVersionEdit: TEdit;
|
||||
// statusbar
|
||||
StatusBar: TStatusBar;
|
||||
// hidden components
|
||||
ImageList: TImageList;
|
||||
FilesPopupMenu: TPopupMenu;
|
||||
procedure AddBitBtnClick(Sender: TObject);
|
||||
procedure CallRegisterProcCheckBoxClick(Sender: TObject);
|
||||
procedure FilePropsGroupBoxResize(Sender: TObject);
|
||||
procedure FilesPopupMenuPopup(Sender: TObject);
|
||||
procedure FilesTreeViewSelectionChanged(Sender: TObject);
|
||||
procedure OpenFileMenuItemClick(Sender: TObject);
|
||||
procedure PackageEditorFormResize(Sender: TObject);
|
||||
procedure ReAddMenuItemClick(Sender: TObject);
|
||||
procedure RegisteredListBoxDrawItem(Control: TWinControl; Index: Integer;
|
||||
ARect: TRect; State: TOwnerDrawState);
|
||||
procedure RemoveBitBtnClick(Sender: TObject);
|
||||
procedure SaveBitBtnClick(Sender: TObject);
|
||||
procedure UseMaxVersionCheckBoxClick(Sender: TObject);
|
||||
procedure UseMinVersionCheckBoxClick(Sender: TObject);
|
||||
private
|
||||
FLazPackage: TLazPackage;
|
||||
FilesNode: TTreeNode;
|
||||
RequiredPackagesNode: TTreeNode;
|
||||
RemovedFilesNode: TTreeNode;
|
||||
RemovedRequiredNode: TTreeNode;
|
||||
FPlugins: TStringList;
|
||||
procedure SetLazPackage(const AValue: TLazPackage);
|
||||
procedure SetupComponents;
|
||||
@ -94,10 +111,10 @@ type
|
||||
procedure UpdateRequiredPkgs;
|
||||
procedure UpdateSelectedFile;
|
||||
procedure UpdateStatusBar;
|
||||
procedure DoSave;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure DoSave;
|
||||
public
|
||||
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
|
||||
end;
|
||||
@ -149,9 +166,19 @@ var
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
uses Math;
|
||||
|
||||
var
|
||||
ImageIndexFiles: integer;
|
||||
ImageIndexRemovedFiles: integer;
|
||||
ImageIndexRequired: integer;
|
||||
ImageIndexRemovedRequired: integer;
|
||||
ImageIndexUnit: integer;
|
||||
ImageIndexRegisterUnit: integer;
|
||||
ImageIndexText: integer;
|
||||
ImageIndexBinary: integer;
|
||||
|
||||
|
||||
{ TPackageEditorForm }
|
||||
|
||||
procedure TPackageEditorForm.PackageEditorFormResize(Sender: TObject);
|
||||
@ -193,6 +220,37 @@ begin
|
||||
FilePropsGroupBox.SetBounds(x,y,w,h);
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.ReAddMenuItemClick(Sender: TObject);
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
PkgFile: TPkgFile;
|
||||
AFilename: String;
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if CurNode=nil then exit;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent<>nil then begin
|
||||
if (CurNode.Parent=RemovedFilesNode) then begin
|
||||
// re-add file
|
||||
PkgFile:=LazPackage.RemovedFiles[NodeIndex];
|
||||
AFilename:=PkgFile.Filename;
|
||||
if not CheckAddingUnitFilename(LazPackage,d2ptUnit,
|
||||
PackageEditors.OnGetIDEFileInfo,AFilename) then exit;
|
||||
PkgFile.Filename:=AFilename;
|
||||
LazPackage.UnremovePkgFile(PkgFile);
|
||||
UpdateAll;
|
||||
end else if (CurNode.Parent=RemovedRequiredNode) then begin
|
||||
// re-add dependency
|
||||
Dependency:=LazPackage.RemovedRequiredPkgs[NodeIndex];
|
||||
if not CheckAddingDependency(LazPackage,Dependency) then exit;
|
||||
LazPackage.UnremoveRequiredPkg(Dependency);
|
||||
UpdateAll;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.FilesPopupMenuPopup(Sender: TObject);
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
@ -206,7 +264,7 @@ var
|
||||
CurMenuItem:=TMenuItem.Create(Self);
|
||||
FilesPopupMenu.Items.Add(CurMenuItem);
|
||||
end else
|
||||
CurMenuItem:=FilesPopupMenu.Items[FilesPopupMenu.Items.Count-1];
|
||||
CurMenuItem:=FilesPopupMenu.Items[ItemCnt];
|
||||
CurMenuItem.Caption:=ACaption;
|
||||
CurMenuItem.OnClick:=AnEvent;
|
||||
inc(ItemCnt);
|
||||
@ -216,10 +274,20 @@ begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
ItemCnt:=0;
|
||||
if CurNode<>nil then begin
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
AddPopupMenuItem('Open file',@OpenFileMenuItemClick);
|
||||
end else if (CurNode.Parent=RequiredPackagesNode) then begin
|
||||
AddPopupMenuItem('Open package',@OpenFileMenuItemClick);
|
||||
if CurNode.Parent<>nil then begin
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
AddPopupMenuItem('Open file',@OpenFileMenuItemClick);
|
||||
AddPopupMenuItem('Remove file from package',@RemoveBitBtnClick);
|
||||
end else if (CurNode.Parent=RequiredPackagesNode) then begin
|
||||
AddPopupMenuItem('Open package',@OpenFileMenuItemClick);
|
||||
AddPopupMenuItem('Remove dependency from package',@RemoveBitBtnClick);
|
||||
end else if (CurNode.Parent=RemovedFilesNode) then begin
|
||||
AddPopupMenuItem('Open file',@OpenFileMenuItemClick);
|
||||
AddPopupMenuItem('Add file to package',@ReAddMenuItemClick);
|
||||
end else if (CurNode.Parent=RemovedRequiredNode) then begin
|
||||
AddPopupMenuItem('Open package',@OpenFileMenuItemClick);
|
||||
AddPopupMenuItem('Add dependency to package',@ReAddMenuItemClick);
|
||||
end;
|
||||
end;
|
||||
end else begin
|
||||
|
||||
@ -244,12 +312,20 @@ begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if CurNode=nil then exit;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
CurFile:=LazPackage.Files[NodeIndex];
|
||||
PackageEditors.OpenFile(Self,CurFile.Filename);
|
||||
end else if CurNode.Parent=RequiredPackagesNode then begin
|
||||
CurDependency:=LazPackage.RequiredPkgs[NodeIndex];
|
||||
PackageEditors.OpenDependency(Self,CurDependency);
|
||||
if CurNode.Parent<>nil then begin
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
CurFile:=LazPackage.Files[NodeIndex];
|
||||
PackageEditors.OpenFile(Self,CurFile.Filename);
|
||||
end else if CurNode.Parent=RequiredPackagesNode then begin
|
||||
CurDependency:=LazPackage.RequiredPkgs[NodeIndex];
|
||||
PackageEditors.OpenDependency(Self,CurDependency);
|
||||
end else if CurNode.Parent=RemovedFilesNode then begin
|
||||
CurFile:=LazPackage.RemovedFiles[NodeIndex];
|
||||
PackageEditors.OpenFile(Self,CurFile.Filename);
|
||||
end else if CurNode.Parent=RemovedRequiredNode then begin
|
||||
CurDependency:=LazPackage.RemovedRequiredPkgs[NodeIndex];
|
||||
PackageEditors.OpenDependency(Self,CurDependency);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -301,6 +377,7 @@ var
|
||||
ANode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
CurFile: TPkgFile;
|
||||
CurDependency: TPkgDependency;
|
||||
begin
|
||||
ANode:=FilesTreeView.Selected;
|
||||
if (ANode=nil) or LazPackage.ReadOnly then begin
|
||||
@ -319,11 +396,23 @@ begin
|
||||
mtConfirmation,[mbYes,mbNo],0)=mrNo
|
||||
then
|
||||
exit;
|
||||
LazPackage.DeleteFile(CurFile);
|
||||
LazPackage.RemoveFile(CurFile);
|
||||
end;
|
||||
UpdateFiles;
|
||||
UpdateAll;
|
||||
end else if ANode.Parent=RequiredPackagesNode then begin
|
||||
|
||||
// get current dependency
|
||||
CurDependency:=LazPackage.RequiredPkgs[NodeIndex];
|
||||
if CurDependency<>nil then begin
|
||||
// confirm deletion
|
||||
if MessageDlg('Remove Dependency?',
|
||||
'Remove dependency "'+CurDependency.AsString+'"'#13
|
||||
+'from package "'+LazPackage.IDAsString+'"?',
|
||||
mtConfirmation,[mbYes,mbNo],0)=mrNo
|
||||
then
|
||||
exit;
|
||||
LazPackage.RemoveRequiredDependency(CurDependency);
|
||||
end;
|
||||
UpdateAll;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -332,23 +421,58 @@ begin
|
||||
DoSave;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UseMaxVersionCheckBoxClick(Sender: TObject);
|
||||
begin
|
||||
MaxVersionEdit.Enabled:=UseMaxVersionCheckBox.Checked;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UseMinVersionCheckBoxClick(Sender: TObject);
|
||||
begin
|
||||
MinVersionEdit.Enabled:=UseMinVersionCheckBox.Checked;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.FilePropsGroupBoxResize(Sender: TObject);
|
||||
var
|
||||
y: Integer;
|
||||
x: Integer;
|
||||
begin
|
||||
// components for files
|
||||
with CallRegisterProcCheckBox do
|
||||
SetBounds(3,0,Parent.ClientWidth,Height);
|
||||
|
||||
y:=CallRegisterProcCheckBox.Top+CallRegisterProcCheckBox.Height+3;
|
||||
with RegisteredPluginsGroupBox do begin
|
||||
with RegisteredPluginsGroupBox do
|
||||
SetBounds(0,y,Parent.ClientWidth,Parent.ClientHeight-y);
|
||||
end;
|
||||
|
||||
// components for dependencies
|
||||
x:=5;
|
||||
y:=5;
|
||||
with UseMinVersionCheckBox do
|
||||
SetBounds(x,y,150,MinVersionEdit.Height);
|
||||
inc(x,UseMinVersionCheckBox.Width+5);
|
||||
|
||||
with MinVersionEdit do
|
||||
SetBounds(x,y,120,Height);
|
||||
|
||||
x:=5;
|
||||
inc(y,MinVersionEdit.Height+5);
|
||||
with UseMaxVersionCheckBox do
|
||||
SetBounds(x,y,UseMinVersionCheckBox.Width,MaxVersionEdit.Height);
|
||||
inc(x,UseMaxVersionCheckBox.Width+5);
|
||||
|
||||
with MaxVersionEdit do
|
||||
SetBounds(x,y,MinVersionEdit.Width,Height);
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject);
|
||||
var
|
||||
AddParams: TAddToPkgResult;
|
||||
begin
|
||||
if LazPackage.ReadOnly then begin
|
||||
UpdateButtons;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if ShowAddToPackageDlg(LazPackage,AddParams,PackageEditors.OnGetIDEFileInfo,
|
||||
PackageEditors.OnGetUnitRegisterInfo)
|
||||
<>mrOk
|
||||
@ -361,7 +485,6 @@ begin
|
||||
// add file
|
||||
with AddParams do
|
||||
LazPackage.AddFile(UnitFilename,UnitName,FileType,PkgFileFlags,cpNormal);
|
||||
UpdateFiles;
|
||||
end;
|
||||
|
||||
d2ptNewComponent:
|
||||
@ -369,11 +492,9 @@ begin
|
||||
// add file
|
||||
with AddParams do
|
||||
LazPackage.AddFile(UnitFilename,UnitName,FileType,PkgFileFlags,cpNormal);
|
||||
UpdateFiles;
|
||||
// add dependency
|
||||
if AddParams.Dependency<>nil then begin
|
||||
LazPackage.AddRequiredDependency(AddParams.Dependency);
|
||||
UpdateRequiredPkgs;
|
||||
end;
|
||||
// open file in editor
|
||||
PackageEditors.CreateNewFile(Self,AddParams);
|
||||
@ -383,13 +504,37 @@ begin
|
||||
begin
|
||||
// add dependency
|
||||
LazPackage.AddRequiredDependency(AddParams.Dependency);
|
||||
UpdateRequiredPkgs;
|
||||
end;
|
||||
|
||||
end;
|
||||
LazPackage.Modified:=true;
|
||||
|
||||
UpdateSelectedFile;
|
||||
UpdateStatusBar;
|
||||
UpdateAll;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.CallRegisterProcCheckBoxClick(Sender: TObject);
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
CurFile: TPkgFile;
|
||||
begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if (CurNode=nil) then exit;
|
||||
if (CurNode.Parent=FilesNode) then begin
|
||||
NodeIndex:=CurNode.Index;
|
||||
if NodeIndex>=LazPackage.FileCount then exit;
|
||||
CurFile:=LazPackage.Files[NodeIndex];
|
||||
CurFile.HasRegisteredProc:=CallRegisterProcCheckBox.Checked;
|
||||
LazPackage.Modified:=true;
|
||||
UpdateAll;
|
||||
end;
|
||||
if (RemovedFilesNode<>nil) and (CurNode.Parent=RemovedFilesNode) then begin
|
||||
NodeIndex:=CurNode.Index;
|
||||
if NodeIndex>=LazPackage.RemovedFilesCount then exit;
|
||||
CurFile:=LazPackage.RemovedFiles[NodeIndex];
|
||||
CurFile.HasRegisteredProc:=CallRegisterProcCheckBox.Checked;
|
||||
UpdateAll;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.SetLazPackage(const AValue: TLazPackage);
|
||||
@ -437,11 +582,21 @@ begin
|
||||
Width:=16;
|
||||
Height:=16;
|
||||
Name:='ImageList';
|
||||
ImageIndexFiles:=Count;
|
||||
AddResImg('pkg_files');
|
||||
ImageIndexRemovedFiles:=Count;
|
||||
AddResImg('pkg_removedfiles');
|
||||
ImageIndexRequired:=Count;
|
||||
AddResImg('pkg_required');
|
||||
AddResImg('pkg_conflict');
|
||||
ImageIndexRemovedRequired:=Count;
|
||||
AddResImg('pkg_removedrequired');
|
||||
ImageIndexUnit:=Count;
|
||||
AddResImg('pkg_unit');
|
||||
ImageIndexRegisterUnit:=Count;
|
||||
AddResImg('pkg_registerunit');
|
||||
ImageIndexText:=Count;
|
||||
AddResImg('pkg_text');
|
||||
ImageIndexBinary:=Count;
|
||||
AddResImg('pkg_binary');
|
||||
end;
|
||||
|
||||
@ -502,10 +657,10 @@ begin
|
||||
BeginUpdate;
|
||||
Images:=ImageList;
|
||||
FilesNode:=Items.Add(nil,'Files');
|
||||
FilesNode.ImageIndex:=0;
|
||||
FilesNode.ImageIndex:=ImageIndexFiles;
|
||||
FilesNode.SelectedIndex:=FilesNode.ImageIndex;
|
||||
RequiredPackagesNode:=Items.Add(nil,'Required Packages');
|
||||
RequiredPackagesNode.ImageIndex:=1;
|
||||
RequiredPackagesNode.ImageIndex:=ImageIndexRequired;
|
||||
RequiredPackagesNode.SelectedIndex:=RequiredPackagesNode.ImageIndex;
|
||||
EndUpdate;
|
||||
PopupMenu:=FilesPopupMenu;
|
||||
@ -526,6 +681,7 @@ begin
|
||||
Name:='CallRegisterProcCheckBox';
|
||||
Parent:=FilePropsGroupBox;
|
||||
Caption:='Register unit';
|
||||
OnClick:=@CallRegisterProcCheckBoxClick;
|
||||
end;
|
||||
|
||||
RegisteredPluginsGroupBox:=TGroupBox.Create(Self);
|
||||
@ -543,6 +699,36 @@ begin
|
||||
ItemHeight:=23;
|
||||
OnDrawItem:=@RegisteredListBoxDrawItem;
|
||||
end;
|
||||
|
||||
UseMinVersionCheckBox:=TCheckBox.Create(Self);
|
||||
with UseMinVersionCheckBox do begin
|
||||
Name:='UseMinVersionCheckBox';
|
||||
Parent:=FilePropsGroupBox;
|
||||
Caption:='Minimum Version:';
|
||||
OnClick:=@UseMinVersionCheckBoxClick;
|
||||
end;
|
||||
|
||||
MinVersionEdit:=TEdit.Create(Self);
|
||||
with MinVersionEdit do begin
|
||||
Name:='MinVersionEdit';
|
||||
Parent:=FilePropsGroupBox;
|
||||
Text:='';
|
||||
end;
|
||||
|
||||
UseMaxVersionCheckBox:=TCheckBox.Create(Self);
|
||||
with UseMaxVersionCheckBox do begin
|
||||
Name:='UseMaxVersionCheckBox';
|
||||
Parent:=FilePropsGroupBox;
|
||||
Caption:='Maximum Version:';
|
||||
OnClick:=@UseMaxVersionCheckBoxClick;
|
||||
end;
|
||||
|
||||
MaxVersionEdit:=TEdit.Create(Self);
|
||||
with MaxVersionEdit do begin
|
||||
Name:='MaxVersionEdit';
|
||||
Parent:=FilePropsGroupBox;
|
||||
Text:='';
|
||||
end;
|
||||
|
||||
StatusBar:=TStatusBar.Create(Self);
|
||||
with StatusBar do begin
|
||||
@ -565,8 +751,13 @@ begin
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UpdateTitle;
|
||||
var
|
||||
NewCaption: String;
|
||||
begin
|
||||
Caption:='Package '+FLazPackage.Name;
|
||||
NewCaption:='Package '+FLazPackage.Name;
|
||||
if LazPackage.Modified then
|
||||
NewCaption:=NewCaption+'*';
|
||||
Caption:=NewCaption;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UpdateButtons;
|
||||
@ -576,12 +767,31 @@ begin
|
||||
CompileBitBtn.Enabled:=(not LazPackage.IsVirtual);
|
||||
AddBitBtn.Enabled:=not LazPackage.ReadOnly;
|
||||
RemoveBitBtn.Enabled:=(not LazPackage.ReadOnly)
|
||||
and (FilesTreeView.Selected<>nil) and (FilesTreeView.Selected.Parent<>nil);
|
||||
InstallBitBtn.Enabled:=(not LazPackage.IsVirtual);
|
||||
and (FilesTreeView.Selected<>nil)
|
||||
and ((FilesTreeView.Selected.Parent=FilesNode)
|
||||
or (FilesTreeView.Selected.Parent=RequiredPackagesNode));
|
||||
InstallBitBtn.Enabled:=true;
|
||||
OptionsBitBtn.Enabled:=true;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UpdateFiles;
|
||||
|
||||
procedure SetImageIndex(ANode: TTreeNode; PkgFile: TPkgFile);
|
||||
begin
|
||||
case PkgFile.FileType of
|
||||
pftUnit:
|
||||
if PkgFile.HasRegisteredProc then
|
||||
ANode.ImageIndex:=ImageIndexRegisterUnit
|
||||
else
|
||||
ANode.ImageIndex:=ImageIndexUnit;
|
||||
pftText: ANode.ImageIndex:=ImageIndexText;
|
||||
pftBinary: ANode.ImageIndex:=ImageIndexBinary;
|
||||
else
|
||||
ANode.ImageIndex:=-1;
|
||||
end;
|
||||
ANode.SelectedIndex:=ANode.ImageIndex;
|
||||
end;
|
||||
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
@ -589,22 +799,17 @@ var
|
||||
CurNode: TTreeNode;
|
||||
NextNode: TTreeNode;
|
||||
begin
|
||||
Cnt:=LazPackage.FileCount;
|
||||
FilesTreeView.BeginUpdate;
|
||||
|
||||
// files
|
||||
CurNode:=FilesNode.GetFirstChild;
|
||||
Cnt:=LazPackage.FileCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
if CurNode=nil then
|
||||
CurNode:=FilesTreeView.Items.AddChild(FilesNode,'');
|
||||
CurFile:=LazPackage.Files[i];
|
||||
CurNode.Text:=CurFile.GetShortFilename;
|
||||
case CurFile.FileType of
|
||||
pftUnit: CurNode.ImageIndex:=3;
|
||||
pftText: CurNode.ImageIndex:=4;
|
||||
pftBinary: CurNode.ImageIndex:=5;
|
||||
else
|
||||
CurNode.ImageIndex:=-1;
|
||||
end;
|
||||
CurNode.SelectedIndex:=CurNode.ImageIndex;
|
||||
SetImageIndex(CurNode,CurFile);
|
||||
CurNode:=CurNode.GetNextSibling;
|
||||
end;
|
||||
while CurNode<>nil do begin
|
||||
@ -613,6 +818,36 @@ begin
|
||||
CurNode:=NextNode;
|
||||
end;
|
||||
FilesNode.Expanded:=true;
|
||||
|
||||
// removed files
|
||||
if LazPackage.RemovedFilesCount>0 then begin
|
||||
if RemovedFilesNode=nil then begin
|
||||
RemovedFilesNode:=
|
||||
FilesTreeView.Items.Add(RequiredPackagesNode,
|
||||
'Removed Files (are not saved)');
|
||||
RemovedFilesNode.ImageIndex:=ImageIndexRemovedFiles;
|
||||
RemovedFilesNode.SelectedIndex:=RemovedFilesNode.ImageIndex;
|
||||
end;
|
||||
CurNode:=RemovedFilesNode.GetFirstChild;
|
||||
Cnt:=LazPackage.RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
if CurNode=nil then
|
||||
CurNode:=FilesTreeView.Items.AddChild(RemovedFilesNode,'');
|
||||
CurFile:=LazPackage.RemovedFiles[i];
|
||||
CurNode.Text:=CurFile.GetShortFilename;
|
||||
SetImageIndex(CurNode,CurFile);
|
||||
CurNode:=CurNode.GetNextSibling;
|
||||
end;
|
||||
while CurNode<>nil do begin
|
||||
NextNode:=CurNode.GetNextSibling;
|
||||
CurNode.Free;
|
||||
CurNode:=NextNode;
|
||||
end;
|
||||
RemovedFilesNode.Expanded:=true;
|
||||
end else begin
|
||||
FreeAndNil(RemovedFilesNode);
|
||||
end;
|
||||
|
||||
FilesTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
@ -624,9 +859,11 @@ var
|
||||
CurDependency: TPkgDependency;
|
||||
NextNode: TTreeNode;
|
||||
begin
|
||||
Cnt:=LazPackage.RequiredPkgCount;
|
||||
FilesTreeView.BeginUpdate;
|
||||
|
||||
// required packages
|
||||
CurNode:=RequiredPackagesNode.GetFirstChild;
|
||||
Cnt:=LazPackage.RequiredPkgCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
if CurNode=nil then
|
||||
CurNode:=FilesTreeView.Items.AddChild(RequiredPackagesNode,'');
|
||||
@ -642,6 +879,36 @@ begin
|
||||
CurNode:=NextNode;
|
||||
end;
|
||||
RequiredPackagesNode.Expanded:=true;
|
||||
|
||||
// removed required packages
|
||||
Cnt:=LazPackage.RemovedRequiredPkgCount;
|
||||
if Cnt>0 then begin
|
||||
if RemovedRequiredNode=nil then begin
|
||||
RemovedRequiredNode:=
|
||||
FilesTreeView.Items.Add(nil,'Removed required packages (are not saved)');
|
||||
RemovedRequiredNode.ImageIndex:=ImageIndexRemovedRequired;
|
||||
RemovedRequiredNode.StateIndex:=RemovedRequiredNode.ImageIndex;
|
||||
end;
|
||||
CurNode:=RemovedRequiredNode.GetFirstChild;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
if CurNode=nil then
|
||||
CurNode:=FilesTreeView.Items.AddChild(RemovedRequiredNode,'');
|
||||
CurDependency:=LazPackage.RemovedRequiredPkgs[i];
|
||||
CurNode.Text:=CurDependency.AsString;
|
||||
CurNode.ImageIndex:=RemovedRequiredNode.ImageIndex;
|
||||
CurNode.SelectedIndex:=CurNode.ImageIndex;
|
||||
CurNode:=CurNode.GetNextSibling;
|
||||
end;
|
||||
while CurNode<>nil do begin
|
||||
NextNode:=CurNode.GetNextSibling;
|
||||
CurNode.Free;
|
||||
CurNode:=NextNode;
|
||||
end;
|
||||
RemovedRequiredNode.Expanded:=true;
|
||||
end else begin
|
||||
FreeAndNil(RemovedRequiredNode);
|
||||
end;
|
||||
|
||||
FilesTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
@ -655,34 +922,68 @@ var
|
||||
CurLine: string;
|
||||
CurListIndex: Integer;
|
||||
RegCompCnt: Integer;
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
FilePropsGroupBox.Enabled:=(CurNode<>nil) and (CurNode.Parent=FilesNode);
|
||||
FPlugins.Clear;
|
||||
CurFile:=nil;
|
||||
Dependency:=nil;
|
||||
if CurNode<>nil then begin
|
||||
CallRegisterProcCheckBox.Enabled:=not LazPackage.ReadOnly;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
// get current package file
|
||||
CurFile:=LazPackage.Files[NodeIndex];
|
||||
// set Register Unit checkbox
|
||||
CallRegisterProcCheckBox.Checked:=pffHasRegisterProc in CurFile.Flags;
|
||||
// fetch all registered plugins
|
||||
CurListIndex:=0;
|
||||
RegCompCnt:=CurFile.ComponentCount;
|
||||
for i:=0 to RegCompCnt-1 do begin
|
||||
CurComponent:=CurFile.Components[i];
|
||||
CurLine:=CurComponent.ComponentClass.ClassName;
|
||||
FPlugins.AddObject(CurLine,CurComponent);
|
||||
inc(CurListIndex);
|
||||
if CurNode.Parent<>nil then begin
|
||||
if CurNode.Parent=FilesNode then begin
|
||||
// get current file
|
||||
CurFile:=LazPackage.Files[NodeIndex];
|
||||
end else if (CurNode.Parent=RequiredPackagesNode) then begin
|
||||
// get current dependency
|
||||
Dependency:=LazPackage.RequiredPkgs[NodeIndex];
|
||||
end else if (CurNode.Parent=RemovedFilesNode) then begin
|
||||
// get current removed file
|
||||
CurFile:=LazPackage.RemovedFiles[NodeIndex];
|
||||
end else if (CurNode.Parent=RemovedRequiredNode) then begin
|
||||
// get current removed dependency
|
||||
Dependency:=LazPackage.RemovedRequiredPkgs[NodeIndex];
|
||||
end;
|
||||
// put them in the RegisteredListBox
|
||||
RegisteredListBox.Items.Assign(FPlugins);
|
||||
end else begin
|
||||
CallRegisterProcCheckBox.Checked:=false;
|
||||
RegisteredListBox.Items.Clear;
|
||||
end;
|
||||
end;
|
||||
|
||||
// make components visible
|
||||
UseMinVersionCheckBox.Visible:=Dependency<>nil;
|
||||
MinVersionEdit.Visible:=Dependency<>nil;
|
||||
UseMaxVersionCheckBox.Visible:=Dependency<>nil;
|
||||
MaxVersionEdit.Visible:=Dependency<>nil;
|
||||
CallRegisterProcCheckBox.Visible:=CurFile<>nil;
|
||||
RegisteredPluginsGroupBox.Visible:=CurFile<>nil;
|
||||
|
||||
if CurFile<>nil then begin
|
||||
FilePropsGroupBox.Enabled:=true;
|
||||
FilePropsGroupBox.Caption:='File Properties';
|
||||
// set Register Unit checkbox
|
||||
CallRegisterProcCheckBox.Enabled:=not LazPackage.ReadOnly;
|
||||
CallRegisterProcCheckBox.Checked:=pffHasRegisterProc in CurFile.Flags;
|
||||
// fetch all registered plugins
|
||||
CurListIndex:=0;
|
||||
RegCompCnt:=CurFile.ComponentCount;
|
||||
for i:=0 to RegCompCnt-1 do begin
|
||||
CurComponent:=CurFile.Components[i];
|
||||
CurLine:=CurComponent.ComponentClass.ClassName;
|
||||
FPlugins.AddObject(CurLine,CurComponent);
|
||||
inc(CurListIndex);
|
||||
end;
|
||||
// put them in the RegisteredListBox
|
||||
RegisteredListBox.Items.Assign(FPlugins);
|
||||
end else if Dependency<>nil then begin
|
||||
FilePropsGroupBox.Enabled:=true;
|
||||
FilePropsGroupBox.Caption:='Dependency Properties';
|
||||
UseMinVersionCheckBox.Checked:=pdfMinVersion in Dependency.Flags;
|
||||
MinVersionEdit.Text:=Dependency.MinVersion.AsString;
|
||||
MinVersionEdit.Enabled:=pdfMinVersion in Dependency.Flags;
|
||||
UseMaxVersionCheckBox.Checked:=pdfMaxVersion in Dependency.Flags;
|
||||
MaxVersionEdit.Text:=Dependency.MaxVersion.AsString;
|
||||
MaxVersionEdit.Enabled:=pdfMaxVersion in Dependency.Flags;
|
||||
end else begin
|
||||
FilePropsGroupBox.Enabled:=false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.UpdateStatusBar;
|
||||
|
@ -572,6 +572,7 @@ begin
|
||||
try
|
||||
XMLConfig:=TXMLConfig.Create(AFilename);
|
||||
try
|
||||
APackage.Filename:=AFilename;
|
||||
APackage.LoadFromXMLConfig(XMLConfig,'Package/');
|
||||
finally
|
||||
XMLConfig.Free;
|
||||
@ -584,7 +585,6 @@ begin
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
APackage.Filename:=AFilename;
|
||||
APackage.Modified:=false;
|
||||
|
||||
Result:=AddPackageToGraph(APackage);
|
||||
@ -635,6 +635,7 @@ begin
|
||||
try
|
||||
XMLConfig:=TXMLConfig.Create(APackage.Filename);
|
||||
try
|
||||
XMLConfig.Clear;
|
||||
APackage.SaveToXMLConfig(XMLConfig,'Package/');
|
||||
XMLConfig.Flush;
|
||||
finally
|
||||
|
@ -4,7 +4,7 @@ Section: devel
|
||||
Priority: optional
|
||||
Maintainer: Mattias Gaertner <mattias@cvs.freepascal.org>
|
||||
Architecture: i386
|
||||
Depends: fp-compiler (>=FPCVERSION), fp-docs (>=FPCVERSION),
|
||||
Depends: fp-compiler (>=FPCVERSION),
|
||||
fp-units-base (>=FPCVERSION), fp-units-db (>=FPCVERSION),
|
||||
fp-units-fcl (>=FPCVERSION), fp-units-gfx (>=FPCVERSION),
|
||||
fp-units-gtk (>=FPCVERSION), fp-units-misc (>=FPCVERSION),
|
||||
|
Loading…
Reference in New Issue
Block a user