Opkman: Add the possibility to save the installed package list to file. Request by @garlar27.

git-svn-id: trunk@58054 -
This commit is contained in:
balazs 2018-05-30 19:55:39 +00:00
parent 6162834273
commit 687cdf6ff9
3 changed files with 63 additions and 17 deletions

View File

@ -179,8 +179,10 @@ resourcestring
rsMainFrm_miSaveToFile = 'Save to file';
rsMainFrm_miCopyToClpBrd = 'Copy to clipboard';
rsMainFrm_miResetRating = 'Reset rating';
rsMainFrm_miSaveChecks = 'Save checked packages';
rsMainFrm_miLoadChecks = 'Load checked packages';
rsMainFrm_miSave = 'Save packages';
rsMainFrm_miSaveChecked = 'Checked';
rsMainFrm_miLoadInstalled = 'Installed';
rsMainFrm_miLoad = 'Load packages';
rsMainFrm_PackagenameAlreadyExists = 'A package with the same name already exists!';
rsMainFrm_PackageAlreadyInstalled = 'The following packages are already installed. Continue anyway?';
rsMainFrm_PackageAlreadyDownloaded = 'The following repository packages already exist in the target folder. Continue?';
@ -193,6 +195,7 @@ resourcestring
rsMainFrm_rsMessageChangingRepository = 'Changing repository. Please wait...';
rsMainFrm_rsMessageNoRepository0 = 'Remote package repository not configured.' + sLineBreak + 'Do you wish to configure it now?';
rsMainFrm_rsMessageNothingChacked = 'Please check at least one package!';
rsMainFrm_rsMessageNothingInstalled = 'No packages are installed. Please install at least one package first.';
rsMainFrm_resMessageChecksSaved = '%s packages successfully saved to file!';
rsMainFrm_resMessageChecksLoaded = '%s packages successfully loaded from file!';
rsMainFrm_rsMessageError0 = 'Cannot download package list. Error message:';

View File

@ -520,13 +520,20 @@ object MainFrm: TMainFrm
object miSep2: TMenuItem
Caption = '-'
end
object miSaveChecks: TMenuItem
Caption = 'Save checks'
OnClick = miSaveChecksClick
object miSave: TMenuItem
Caption = 'Save packages'
object miSaveChecked: TMenuItem
Caption = 'Checked'
OnClick = miSaveCheckedClick
end
object miSaveInstalled: TMenuItem
Caption = 'Installed'
OnClick = miSaveInstalledClick
end
end
object miLoadChecks: TMenuItem
Caption = 'Load checks'
OnClick = miLoadChecksClick
object miLoad: TMenuItem
Caption = 'Load packages'
OnClick = miLoadClick
end
end
object pmMemo: TPopupMenu

View File

@ -54,14 +54,16 @@ type
cbPackageState: TComboBox;
cbPackageType: TComboBox;
imTBDis: TImageList;
miSaveChecked: TMenuItem;
miFromExteranlSource: TMenuItem;
miFromRepository: TMenuItem;
miSaveInstalled: TMenuItem;
miSep2: TMenuItem;
miSep3: TMenuItem;
miSep1: TMenuItem;
miCreateRepository: TMenuItem;
miLoadChecks: TMenuItem;
miSaveChecks: TMenuItem;
miLoad: TMenuItem;
miSave: TMenuItem;
miDateDsc: TMenuItem;
miDateAsc: TMenuItem;
miNameDsc: TMenuItem;
@ -116,10 +118,11 @@ type
procedure miCreateRepositoryPackageClick(Sender: TObject);
procedure miFromExteranlSourceClick(Sender: TObject);
procedure miFromRepositoryClick(Sender: TObject);
procedure miLoadChecksClick(Sender: TObject);
procedure miLoadClick(Sender: TObject);
procedure miNameAscClick(Sender: TObject);
procedure miResetRatingClick(Sender: TObject);
procedure miSaveChecksClick(Sender: TObject);
procedure miSaveCheckedClick(Sender: TObject);
procedure miSaveInstalledClick(Sender: TObject);
procedure miSaveToFileClick(Sender: TObject);
procedure pnToolBarResize(Sender: TObject);
procedure tbCleanUpClick(Sender: TObject);
@ -1114,7 +1117,7 @@ begin
end;
end;
procedure TMainFrm.miSaveChecksClick(Sender: TObject);
procedure TMainFrm.miSaveCheckedClick(Sender: TObject);
var
Node: PVirtualNode;
Data: PData;
@ -1149,7 +1152,39 @@ begin
end;
end;
procedure TMainFrm.miLoadChecksClick(Sender: TObject);
procedure TMainFrm.miSaveInstalledClick(Sender: TObject);
var
Node: PVirtualNode;
Data: PData;
SL: TStringList;
begin
SD.DefaultExt := '.*.opm';
SD.Filter := '*.opm|*.opm';
SL := TStringList.Create;
try
Node := VisualTree.VST.GetFirst;
while Node <> nil do
begin
Data := VisualTree.VST.GetNodeData(Node);
if (Data^.DataType = 2) and (Data^.InstalledVersion <> '') then
SL.Add(Data^.LazarusPackageName);
Node := VisualTree.VST.GetNext(Node);
end;
if Trim(SL.Text) = '' then
MessageDlgEx(rsMainFrm_rsMessageNothingInstalled, mtInformation, [mbOk], Self)
else
if SD.Execute then
begin
SL.SaveToFile(SD.FileName);
MessageDlgEx(Format(rsMainFrm_resMessageChecksSaved, [IntToStr(SL.Count)]), mtInformation, [mbOk], Self)
end;
finally
SL.Free;
end;
end;
procedure TMainFrm.miLoadClick(Sender: TObject);
var
SL: TStringList;
I: Integer;
@ -1333,9 +1368,10 @@ begin
miSaveToFile.Caption := rsMainFrm_miSaveToFile;
miCopyToClpBrd.Caption := rsMainFrm_miCopyToClpBrd;
miResetRating.Caption := rsMainFrm_miResetRating;
miSaveChecks.Caption := rsMainFrm_miSaveChecks;
miLoadChecks.Caption := rsMainFrm_miLoadChecks;
miSave.Caption := rsMainFrm_miSave;
miSaveChecked.Caption := rsMainFrm_miSaveChecked;
miSaveInstalled.Caption := rsMainFrm_miLoadInstalled;
miLoad.Caption := rsMainFrm_miLoad;
edFilter.Hint := rsMainFrm_edFilter_Hint;
spClear.Hint := rsMainFrm_spClear_Hint;
cbFilterBy.Top := (pnTop.Height - cbFilterBy.Height) div 2;