IDE: package editor: multi remove

git-svn-id: trunk@45434 -
This commit is contained in:
mattias 2014-06-09 16:57:30 +00:00
parent 925c9da8f3
commit 97cbd8076e
2 changed files with 83 additions and 33 deletions

View File

@ -4182,6 +4182,8 @@ resourcestring
lisPckEditRemoveDependency2 = 'Remove Dependency?'; lisPckEditRemoveDependency2 = 'Remove Dependency?';
lisPckEditRemoveDependencyFromPackage = 'Remove dependency %s%s%s%sfrom ' lisPckEditRemoveDependencyFromPackage = 'Remove dependency %s%s%s%sfrom '
+'package %s%s%s?'; +'package %s%s%s?';
lisRemoveDependenciesFromPackage =
'Remove %s dependencies from package "%s"?';
lisPckEditInvalidMinimumVersion = 'Invalid minimum version'; lisPckEditInvalidMinimumVersion = 'Invalid minimum version';
lisPckEditTheMinimumVersionIsNotAValidPackageVersion = 'The minimum ' lisPckEditTheMinimumVersionIsNotAValidPackageVersion = 'The minimum '
+'version %s%s%s is not a valid package version.%s(good example 1.2.3.4)'; +'version %s%s%s is not a valid package version.%s(good example 1.2.3.4)';
@ -5286,6 +5288,7 @@ resourcestring
lisChangeBuildMode = 'Change build mode'; lisChangeBuildMode = 'Change build mode';
lisWarningThisIsTheMainUnitTheNewMainUnitWillBePas = '%sWarning: This is ' lisWarningThisIsTheMainUnitTheNewMainUnitWillBePas = '%sWarning: This is '
+'the main unit. The new main unit will be %s.pas.'; +'the main unit. The new main unit will be %s.pas.';
lisRemoveFilesFromPackage = 'Remove %s files from package "%s"?';
lisDirectivesForNewUnit = 'Directives for new unit'; lisDirectivesForNewUnit = 'Directives for new unit';
lisRemoveFromInstallList = 'Remove from install list'; lisRemoveFromInstallList = 'Remove from install list';
lisKeepInInstallList = 'Keep in install list'; lisKeepInInstallList = 'Keep in install list';

View File

@ -1041,7 +1041,15 @@ var
CurDependency: TPkgDependency; CurDependency: TPkgDependency;
s: String; s: String;
mt: TMsgDlgType; mt: TMsgDlgType;
Removed: boolean; i: Integer;
TVNode: TTreeNode;
NodeData: TPENodeData;
Item: TObject;
MainUnitSelected: Boolean;
FileWarning: String;
FileCount: Integer;
PkgCount: Integer;
PkgWarning: String;
begin begin
BeginUdate; BeginUdate;
try try
@ -1051,43 +1059,82 @@ begin
exit; exit;
end; end;
// get current package file // check selection
CurFile:=GetCurrentFile(Removed); MainUnitSelected:=false;
if CurFile<>nil then begin FileWarning:='';
if Removed then exit; FileCount:=0;
// confirm deletion PkgCount:=0;
s:=''; PkgWarning:='';
mt:=mtConfirmation; for i:=0 to ItemsTreeView.SelectionCount-1 do begin
if CurFile.FileType=pftMainUnit then begin TVNode:=ItemsTreeView.Selections[i];
s:=Format(lisWarningThisIsTheMainUnitTheNewMainUnitWillBePas, if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
[LineEnding+LineEnding, lowercase(LazPackage.Name)]); if NodeData.Removed then continue;
mt:=mtWarning; if Item is TPkgFile then begin
CurFile:=TPkgFile(Item);
inc(FileCount);
if CurFile.FileType=pftMainUnit then
MainUnitSelected:=true;
if FileWarning='' then
FileWarning:=Format(lisPckEditRemoveFileFromPackage,
['"', CurFile.Filename, '"', LineEnding, '"', LazPackage.IDAsString, '"']);
end else if Item is TPkgDependency then begin
CurDependency:=TPkgDependency(Item);
inc(PkgCount);
if PkgWarning='' then
PkgWarning:=Format(lisPckEditRemoveDependencyFromPackage, ['"',
CurDependency.AsString, '"', LineEnding, '"', LazPackage.IDAsString, '"']);
end; end;
if MessageDlg(lisPckEditRemoveFile2, end;
Format(lisPckEditRemoveFileFromPackage, ['"', CurFile.Filename, '"', if (FileCount=0) and (PkgCount=0) then begin
LineEnding, '"', LazPackage.IDAsString, '"'])+s, UpdateButtons;
mt,[mbYes,mbNo],0)=mrNo
then
exit;
LazPackage.RemoveFile(CurFile);
UpdateFiles;
exit; exit;
end; end;
// get current dependency
CurDependency:=GetCurrentDependency(Removed);
if (CurDependency<>nil) then begin
if Removed then exit;
// confirm deletion // confirm deletion
if MessageDlg(lisPckEditRemoveDependency2, if FileCount>0 then begin
Format(lisPckEditRemoveDependencyFromPackage, ['"', s:='';
CurDependency.AsString, '"', LineEnding, '"', LazPackage.IDAsString, '"']), mt:=mtConfirmation;
mtConfirmation,[mbYes,mbNo],0)=mrNo if FileCount=1 then
then s:=FileWarning
else
s:=Format(lisRemoveFilesFromPackage, [IntToStr(FileCount), LazPackage.
Name]);
if MainUnitSelected then begin
s+=Format(lisWarningThisIsTheMainUnitTheNewMainUnitWillBePas,
[LineEnding+LineEnding, lowercase(LazPackage.Name)]);
mt:=mtWarning;
end;
if IDEMessageDialog(lisPckEditRemoveFile2,s,mt,[mbYes,mbNo])<>mrYes then
exit; exit;
end;
if PkgCount>0 then begin
s:='';
mt:=mtConfirmation;
if PkgCount=1 then
s:=PkgWarning
else
s:=Format(lisRemoveDependenciesFromPackage, [IntToStr(PkgCount),
LazPackage.Name]);
if IDEMessageDialog(lisPckEditRemoveDependencyFromPackage,s,mt,[mbYes,mbNo])<>mrYes then
exit;
end;
// remove
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
TVNode:=ItemsTreeView.Selections[i];
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
if NodeData.Removed then continue;
if Item is TPkgFile then begin
CurFile:=TPkgFile(Item);
LazPackage.RemoveFile(CurFile);
UpdateFiles;
end else if Item is TPkgDependency then begin
CurDependency:=TPkgDependency(Item);
PackageGraph.RemoveDependencyFromPackage(LazPackage,CurDependency,true); PackageGraph.RemoveDependencyFromPackage(LazPackage,CurDependency,true);
UpdateRequiredPkgs; UpdateRequiredPkgs;
end; end;
end;
finally finally
EndUpdate; EndUpdate;
end; end;
@ -1985,7 +2032,7 @@ begin
RemovedBranch.AddNodeData(CurFile.GetShortFilename(true), NodeData); RemovedBranch.AddNodeData(CurFile.GetShortFilename(true), NodeData);
end; end;
end else begin end else begin
// No removed dependencies -> delete the root node // No more removed files left -> delete the root node
if FRemovedFilesNode<>nil then begin if FRemovedFilesNode<>nil then begin
FilterEdit.DeleteBranch(FRemovedFilesNode); FilterEdit.DeleteBranch(FRemovedFilesNode);
FreeAndNil(FRemovedFilesNode); FreeAndNil(FRemovedFilesNode);