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 if APackage.LPKSource<>nil then
Filename:=APackage.LPKSource.Filename Filename:=APackage.LPKSource.Filename
else else
Filename:=APackage.GetResolvedFilename(true); Filename:=APackage.GetFullFilename(true);
APackage.SaveToString(Source); APackage.SaveToString(Source);
end else begin end else begin
Filename:=''; Filename:='';

View File

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

View File

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