IDE: package editor: fixed removing files in hierarchical view

git-svn-id: trunk@29077 -
This commit is contained in:
mattias 2011-01-17 20:42:29 +00:00
parent 9613ead8b0
commit 9d25352fd0
3 changed files with 27 additions and 13 deletions

View File

@ -300,7 +300,7 @@ begin
if APackage.LPKSource<>nil then
Filename:=APackage.LPKSource.Filename
else
Filename:=APackage.GetResolvedFilename(true);
Filename:=APackage.GetFullFilename(true);
APackage.SaveToString(Source);
end else begin
Filename:='';

View File

@ -668,7 +668,8 @@ type
function IsVirtual: boolean; override;
function HasDirectory: boolean;
function HasStaticDirectory: boolean;
function GetResolvedFilename(ResolveMacros: boolean): string;
function GetFullFilename(ResolveMacros: boolean): string;
function GetResolvedFilename(ResolveMacros: boolean): string; // GetFullFilename + ReadAllLinks
function GetSourceDirs(WithPkgDir, WithoutOutputDir: boolean): string;
procedure GetInheritedCompilerOptions(var OptionsList: TFPList);
function GetOutputDirectory(UseOverride: boolean = true): string; // this can change before building, when default dir is readonly
@ -2805,6 +2806,13 @@ begin
Result:=FHasStaticDirectory;
end;
function TLazPackage.GetFullFilename(ResolveMacros: boolean): string;
begin
Result:=FFilename;
if ResolveMacros then
GlobalMacroList.SubstituteStr(Result);
end;
procedure TLazPackage.CheckInnerDependencies;
begin
// ToDo: make some checks like deactivating double requirements
@ -2847,9 +2855,7 @@ function TLazPackage.GetResolvedFilename(ResolveMacros: boolean): string;
var
s: String;
begin
Result:=FFilename;
if ResolveMacros then
GlobalMacroList.SubstituteStr(Result);
Result:=GetFullFilename(ResolveMacros);
s:=ReadAllLinks(Result,false);
if s<>'' then Result:=s;
end;

View File

@ -262,8 +262,8 @@ type
procedure UpdateSelectedFile;
procedure UpdateApplyDependencyButton;
procedure UpdateStatusBar;
function GetCurrentDependency(var Removed: boolean): TPkgDependency;
function GetCurrentFile(var Removed: boolean): TPkgFile;
function GetCurrentDependency(out Removed: boolean): TPkgDependency;
function GetCurrentFile(out Removed: boolean): TPkgFile;
function StoreCurrentTreeSelection: TStringList;
procedure ApplyTreeSelection(ASelection: TStringList; FreeList: boolean);
procedure ExtendUnitIncPathForNewUnit(const AnUnitFilename,
@ -555,6 +555,7 @@ var
procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent;
aShow: boolean = true; AEnable: boolean = true);
begin
//debugln(['SetItem ',Item.Caption,' Visible=',aShow,' Enable=',AEnable]);
Item.OnClick:=AnOnClick;
Item.Visible:=aShow;
Item.Enabled:=AEnable;
@ -955,6 +956,7 @@ var
CurDependency: TPkgDependency;
s: String;
mt: TMsgDlgType;
Removed: boolean;
begin
ANode:=FilesTreeView.Selected;
if (ANode=nil) or LazPackage.ReadOnly then begin
@ -962,9 +964,9 @@ begin
exit;
end;
NodeIndex:=ANode.Index;
if ANode.Parent=FFilesNode then begin
if TObject(ANode.Data) is TPkgEditFileItem then begin
// get current package file
CurFile:=LazPackage.Files[NodeIndex];
CurFile:=GetCurrentFile(Removed);
if CurFile<>nil then begin
// confirm deletion
s:='';
@ -982,7 +984,7 @@ begin
exit;
LazPackage.RemoveFile(CurFile);
end;
UpdateAll(true);
UpdateAll(false);
end else if ANode.Parent=FRequiredPackagesNode then begin
// get current dependency
CurDependency:=LazPackage.RequiredDepByIndex(NodeIndex);
@ -1628,7 +1630,7 @@ begin
AddBitBtn.Enabled:=not LazPackage.ReadOnly;
RemoveBitBtn.Enabled:=(not LazPackage.ReadOnly)
and (FilesTreeView.Selected<>nil)
and ((FilesTreeView.Selected.Parent=FFilesNode)
and ((TObject(FilesTreeView.Selected.Data) is TPkgEditFileItem)
or (FilesTreeView.Selected.Parent=FRequiredPackagesNode));
if (LazPackage.Installed<>pitNope)
or PackageEditors.ShouldNotBeInstalled(LazPackage) then begin
@ -2059,13 +2061,14 @@ begin
StatusBar.SimpleText:=StatusText;
end;
function TPackageEditorForm.GetCurrentDependency(var Removed: boolean
function TPackageEditorForm.GetCurrentDependency(out Removed: boolean
): TPkgDependency;
var
CurNode: TTreeNode;
NodeIndex: Integer;
begin
Result:=nil;
Removed:=false;
CurNode:=FilesTreeView.Selected;
if (CurNode<>nil) and (CurNode.Parent<>nil) then begin
NodeIndex:=CurNode.Index;
@ -2079,7 +2082,7 @@ begin
end;
end;
function TPackageEditorForm.GetCurrentFile(var Removed: boolean): TPkgFile;
function TPackageEditorForm.GetCurrentFile(out Removed: boolean): TPkgFile;
var
CurNode: TTreeNode;
NodeIndex: Integer;
@ -2087,6 +2090,7 @@ var
i: Integer;
begin
Result:=nil;
Removed:=false;
CurNode:=FilesTreeView.Selected;
if (CurNode=nil) or (CurNode.Parent=nil) then exit;
NodeIndex:=CurNode.Index;
@ -2096,12 +2100,16 @@ begin
Removed:=true;
exit;
end;
//debugln(['TPackageEditorForm.GetCurrentFile ',DbgSName(TObject(CurNode.Data)),' ',CurNode.Text]);
if TObject(CurNode.Data) is TPkgEditFileItem then
begin
Item:=TPkgEditFileItem(CurNode.Data);
//debugln(['TPackageEditorForm.GetCurrentFile Item=',Item.Filename,' ',Item.IsDirectory]);
if Item.IsDirectory then exit;
for i:=0 to LazPackage.FileCount-1 do
begin
//if ExtractFIlename(LazPackage.Files[i].Filename)=ExtractFIlename(Item.Filename) then
// debugln(['TPackageEditorForm.GetCurrentFile FOUND ',LazPackage.Files[i].Filename,' ',Item.Filename=LazPackage.Files[i].Filename]);
if Item.Filename=LazPackage.Files[i].Filename then
begin
Result:=LazPackage.Files[i];