Opkman: Show download/extract/install progress in the center of the work area.

git-svn-id: trunk@56691 -
This commit is contained in:
balazs 2017-12-11 09:59:49 +00:00
parent 687b78901e
commit f0981a06af
3 changed files with 38 additions and 35 deletions

View File

@ -139,10 +139,15 @@ var
begin
MsgFrm := CreateMessageDialog(AMsg, ADlgType, AButtons);
try
MsgFrm.Position := poDefaultSizeOnly;
MsgFrm.FormStyle := fsSystemStayOnTop;
MsgFrm.Left := AParent.Left + (AParent.Width - MsgFrm.Width) div 2;
MsgFrm.Top := AParent.Top + (AParent.Height - MsgFrm.Height) div 2;
if AParent <> nil then
begin
MsgFrm.Position := poDefaultSizeOnly;
MsgFrm.Left := AParent.Left + (AParent.Width - MsgFrm.Width) div 2;
MsgFrm.Top := AParent.Top + (AParent.Height - MsgFrm.Height) div 2;
end
else
MsgFrm.Position := poWorkAreaCenter;
Result := MsgFrm.ShowModal;
finally
MsgFrm.Free

View File

@ -50,20 +50,17 @@ type
procedure InitOPM;
procedure SynchronizePackages;
procedure AddToInstallList(const AName, AURL: String);
function Download(const ADstDir: String; AParentForm: TForm): TModalResult;
function Extract(const ASrcDir, ADstDir: String; AParentForm: TForm;
const AIsUpdate: Boolean = False): TModalResult;
function Install(AParentForm: TForm; var AInstallStatus: TInstallStatus;
var ANeedToRebuild: Boolean): TModalResult;
function Download(const ADstDir: String): TModalResult;
function Extract(const ASrcDir, ADstDir: String; const AIsUpdate: Boolean = False): TModalResult;
function Install(var AInstallStatus: TInstallStatus; var ANeedToRebuild: Boolean): TModalResult;
function IsInLinkList(const AName, AURL: String): Boolean;
function ResolveDependencies(AParentForm: TForm): TModalResult;
function CanInstallPackages(AParentForm: TForm): TModalResult;
function ResolveDependencies: TModalResult;
function CanInstallPackages: TModalResult;
public
constructor Create;
destructor Destroy; override;
public
function InstallPackages(APkgLinks: TList; AParentForm: TForm;
var ANeedToRebuild: Boolean): TModalResult; override;
function InstallPackages(APkgLinks: TList; var ANeedToRebuild: Boolean): TModalResult; override;
end;
implementation
@ -197,7 +194,7 @@ begin
end;
end;
function TOPMInterfaceEx.ResolveDependencies(AParentForm: TForm): TModalResult;
function TOPMInterfaceEx.ResolveDependencies: TModalResult;
var
I, J: Integer;
PackageList: TObjectList;
@ -227,9 +224,9 @@ begin
if (Result = mrNone) or (Result = mrYes) then
begin
Msg := Format(rsMainFrm_rsPackageDependency0, [TLazarusPackage(FPackagesToInstall.Items[I]).Name, DependencyPkg.Name]);
Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], AParentForm);
Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], nil);
if Result in [mrNo, mrNoToAll] then
if MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbYes, mbNo], AParentForm) <> mrYes then
if MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbYes, mbNo], nil) <> mrYes then
Exit(mrCancel);
if (Result = mrNoToAll) or (Result = mrCancel) then
Exit(mrCancel);
@ -252,17 +249,16 @@ begin
Result := mrOk;
end;
function TOPMInterfaceEx.CanInstallPackages(AParentForm: TForm): TModalResult;
function TOPMInterfaceEx.CanInstallPackages: TModalResult;
var
I: Integer;
LazarusPkg: TLazarusPackage;
MetaPkg: TMetaPackage;
begin
Result := mrCancel;
IntfPackageListFrm := TIntfPackageListFrm.Create(AParentForm);
IntfPackageListFrm := TIntfPackageListFrm.Create(nil);
try
IntfPackageListFrm.PopupMode := pmExplicit;
IntfPackageListFrm.PopupParent := AParentForm;
IntfPackageListFrm.Position := poWorkAreaCenter;
IntfPackageListFrm.PopulateTree(FPackagesToInstall);
IntfPackageListFrm.ShowModal;
if IntfPackageListFrm.ModalResult = mrOk then
@ -288,10 +284,11 @@ begin
end;
end;
function TOPMInterfaceEx.Download(const ADstDir: String; AParentForm: TForm): TModalResult;
function TOPMInterfaceEx.Download(const ADstDir: String): TModalResult;
begin
ProgressFrm := TProgressFrm.Create(AParentForm);
ProgressFrm := TProgressFrm.Create(nil);
try
ProgressFrm.Position := poWorkAreaCenter;
ProgressFrm.SetupControls(0);
PackageDownloader.OnPackageDownloadProgress := @ProgressFrm.DoOnPackageDownloadProgress;
PackageDownloader.OnPackageDownloadError := @ProgressFrm.DoOnPackageDownloadError;
@ -305,13 +302,14 @@ end;
function TOPMInterfaceEx.Extract(const ASrcDir, ADstDir: String;
AParentForm: TForm; const AIsUpdate: Boolean): TModalResult;
const AIsUpdate: Boolean): TModalResult;
begin
ProgressFrm := TProgressFrm.Create(AParentForm);
ProgressFrm := TProgressFrm.Create(nil);
try
ProgressFrm.Position := poWorkAreaCenter;
ProgressFrm.SetupControls(1);
PackageUnzipper := TPackageUnzipper.Create;
try
ProgressFrm.SetupControls(1);
PackageUnzipper.OnZipProgress := @ProgressFrm.DoOnZipProgress;
PackageUnzipper.OnZipError := @ProgressFrm.DoOnZipError;
PackageUnzipper.OnZipCompleted := @ProgressFrm.DoOnZipCompleted;
@ -326,11 +324,12 @@ begin
end;
end;
function TOPMInterfaceEx.Install(AParentForm: TForm; var AInstallStatus: TInstallStatus;
function TOPMInterfaceEx.Install(var AInstallStatus: TInstallStatus;
var ANeedToRebuild: Boolean): TModalResult;
begin
ProgressFrm := TProgressFrm.Create(AParentForm);
ProgressFrm := TProgressFrm.Create(nil);
try
ProgressFrm.Position := poWorkAreaCenter;
ProgressFrm.SetupControls(2);
Result := ProgressFrm.ShowModal;
if Result = mrOk then
@ -344,7 +343,7 @@ begin
end;
function TOPMInterfaceEx.InstallPackages(APkgLinks: TList; AParentForm: TForm;
function TOPMInterfaceEx.InstallPackages(APkgLinks: TList;
var ANeedToRebuild: Boolean): TModalResult;
var
I: Integer;
@ -354,11 +353,11 @@ begin
for I := 0 to APkgLinks.Count - 1 do
AddToInstallList(TPackageLink(APkgLinks.Items[I]).Name + '.lpk', TPackageLink(APkgLinks.Items[I]).LPKUrl);
Result := CanInstallPackages(AParentForm);
Result := CanInstallPackages;
if Result = mrCancel then
Exit;
Result := ResolveDependencies(AParentForm);
Result := ResolveDependencies;
if Result = mrCancel then
Exit;
for I := 0 to FPackageDependecies.Count - 1 do
@ -368,7 +367,7 @@ begin
PackageAction := paInstall;
if SerializablePackages.DownloadCount > 0 then
begin
Result := Download(Options.LocalRepositoryArchive, AParentForm);
Result := Download(Options.LocalRepositoryArchive);
SerializablePackages.GetPackageStates;
end;
@ -376,7 +375,7 @@ begin
begin
if SerializablePackages.ExtractCount > 0 then
begin
Result := Extract(Options.LocalRepositoryArchive, Options.LocalRepositoryPackages, AParentForm);
Result := Extract(Options.LocalRepositoryArchive, Options.LocalRepositoryPackages);
SerializablePackages.GetPackageStates;
end;
@ -388,13 +387,13 @@ begin
begin
InstallStatus := isFailed;
ANeedToRebuild := False;
Result := Install(AParentForm, InstallStatus, ANeedToRebuild);
Result := Install(InstallStatus, ANeedToRebuild);
if Result = mrOk then
begin
SerializablePackages.MarkRuntimePackages;
SerializablePackages.GetPackageStates;
if (ANeedToRebuild) and ((InstallStatus = isSuccess) or (InstallStatus = isPartiallyFailed)) then
ANeedToRebuild := MessageDlgEx(rsOPMInterfaceRebuildConf, mtConfirmation, [mbYes, mbNo], AParentForm) = mrYes;
ANeedToRebuild := MessageDlgEx(rsOPMInterfaceRebuildConf, mtConfirmation, [mbYes, mbNo], nil) = mrYes;
end;
end;
end;

View File

@ -9,8 +9,7 @@ object IntfPackageListFrm: TIntfPackageListFrm
ClientWidth = 688
OnCreate = FormCreate
OnDestroy = FormDestroy
PopupMode = pmExplicit
Position = poOwnerFormCenter
Position = poDefault
LCLVersion = '1.9.0.0'
object ButtonPanel1: TButtonPanel
Left = 6