IDE: package links: delete online link: show error message

git-svn-id: trunk@58699 -
This commit is contained in:
mattias 2018-08-13 15:23:13 +00:00
parent 82c256d58a
commit b44987edd9
2 changed files with 22 additions and 4 deletions

View File

@ -2740,6 +2740,8 @@ resourcestring
+'the Run File command instead';
lisCEFilter = '(filter)';
lrsPLDUnableToDeleteFile = 'Unable to delete file "%s"';
lisPLDSomePackagesCannotBeDeleted = 'Some packages cannot be deleted';
lisPLDOnlinePackagesCannotBeDeleted = 'Online packages cannot be deleted';
lisPESortFilesAlphabetically = 'Sort files alphabetically';
lisPEShowDirectoryHierarchy = 'Show directory hierarchy';
dlgCaseSensitive = '&Case sensitive';

View File

@ -39,13 +39,13 @@ interface
uses
Classes, SysUtils, Laz_AVL_Tree,
// LCL
Forms, Controls, StdCtrls, Buttons, Grids, ExtCtrls, ComCtrls, Menus,
Forms, Controls, StdCtrls, Buttons, Grids, ExtCtrls, ComCtrls, Menus, Dialogs,
// Codetools
FileProcs,
// LazUtils
LazUTF8, LazFileUtils, LazFileCache,
// IdeIntf
PackageLinkIntf, PackageIntf,
PackageLinkIntf, PackageIntf, IDEDialogs,
// IDE
LazarusIDEStrConsts, PackageLinks, LPKCache;
@ -179,14 +179,19 @@ var
i: Integer;
Link: TPkgLinkInfo;
ErrMsg: String;
HasOnline: Boolean;
begin
ErrMsg:='';
HasOnline:=false;
for i:=1 to PkgStringGrid.RowCount-1 do
begin
if PkgStringGrid.Cells[0,i]=PkgStringGrid.Columns[0].ValueChecked then
begin
Link:=GetLinkAtRow(i);
if Link=nil then exit;
if Link=nil then begin
HasOnline:=true;
continue;
end;
case Link.Origin of
ploGlobal: begin
// delete lpl file
@ -195,7 +200,7 @@ begin
ErrMsg+=Format(lrsPLDUnableToDeleteFile, [Link.LPLFilename])+LineEnding;
end;
end;
ploOnline: begin { What to do here? } end;
ploOnline: HasOnline:=true;
ploUser: LazPackageLinks.RemoveUserLinks(Link); // delete user link
end;
end;
@ -203,6 +208,17 @@ begin
RescanGlobalLinks;
UpdatePackageList;
LazPackageLinks.SaveUserLinks;
if ErrMsg<>'' then
begin
IDEMessageDialog(dlgMsgWinColorUrgentError,
lisPLDSomePackagesCannotBeDeleted+':'+LineEnding
+ErrMsg,mtError,[mbOk]);
end else if HasOnline then begin
IDEMessageDialog(dlgMsgWinColorUrgentError,
lisPLDOnlinePackagesCannotBeDeleted, mtError, [
mbOk]);
end;
if HasOnline then;
end;
procedure TPackageLinksDialog.FormDestroy(Sender: TObject);