diff --git a/components/ideintf/packagelinkintf.pas b/components/ideintf/packagelinkintf.pas index ac1509157d..8f3b76eac3 100644 --- a/components/ideintf/packagelinkintf.pas +++ b/components/ideintf/packagelinkintf.pas @@ -109,7 +109,7 @@ type public {confirmation/install/extract/download dialogs will be displayed in the center of ParentForm} function InstallPackages(APkgLinks: TList; AParentForm: TForm; - const AResolveDependencies: Boolean = True): TModalResult; virtual; abstract; + var ANeedToRebuild: Boolean): TModalResult; virtual; abstract; end; var diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index de1be1d603..c55e37e6d2 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -3989,9 +3989,7 @@ resourcestring lisProjAddOnlinePkg = 'Online (%s)'; lisProjAddMinimumVersionOptional = 'Minimum Version (optional):'; lisProjAddMaximumVersionOptional = 'Maximum Version (optional):'; - lisProjAddInstErrCaption = 'Install error'; - lisProjAddInstErr = 'One or more online packages could not be installed!'; - + // component palette lisKMNewPackage = 'New package'; lisCompPalOpenPackage = 'Open package'; diff --git a/packager/addpkgdependencydlg.pas b/packager/addpkgdependencydlg.pas index e1ff2c6179..6ec2717452 100644 --- a/packager/addpkgdependencydlg.pas +++ b/packager/addpkgdependencydlg.pas @@ -12,7 +12,7 @@ uses // LazControls ListFilterEdit, // IDEIntf - IDEWindowIntf, PackageDependencyIntf, PackageIntf, IDEDialogs, IDEImagesIntf, PackageLinkIntf, + IDEWindowIntf, PackageDependencyIntf, PackageIntf, IDEDialogs, IDEImagesIntf, PackageLinkIntf, MainIntf, // IDE LazarusIDEStrConsts, PackageDefs, PackageSystem, ProjPackCommon, ProjPackChecks; @@ -45,7 +45,7 @@ type procedure FormCreate(Sender: TObject); procedure OKButtonClick(Sender: TObject); function FindPackageLink(const ALazPackageID: TLazPackageID): TPackageLink; - function InstallOnlinePackages: TModalResult; + function InstallOnlinePackages(out ANeedToRebuild: Boolean): TModalResult; private fUpdating: Boolean; fSL: TStringList; @@ -214,6 +214,10 @@ procedure TAddPkgDependencyDialog.DependPkgNameListBoxSelectionChange( Sender: TObject; User: boolean); begin BP.CloseButton.Visible := IsInstallButtonVisible; + if BP.CloseButton.Visible then + BP.OKButton.Enabled := False + else + BP.OKButton.Enabled := True; end; procedure TAddPkgDependencyDialog.cbLocalPkgChange(Sender: TObject); @@ -221,7 +225,7 @@ begin UpdateAvailableDependencyNames; end; -function TAddPkgDependencyDialog.InstallOnlinePackages: TModalResult; +function TAddPkgDependencyDialog.InstallOnlinePackages(out ANeedToRebuild: Boolean): TModalResult; var I: Integer; PackageLink: TPackageLink; @@ -240,7 +244,7 @@ begin end; end; if PkgList.Count > 0 then - Result := OPMInterface.InstallPackages(PkgList, Self); + Result := OPMInterface.InstallPackages(PkgList, Self, ANeedToRebuild); finally PkgList.Free; PkgList := nil; @@ -249,12 +253,18 @@ end; procedure TAddPkgDependencyDialog.CloseButtonClick(Sender: TObject); var - InstallRes: TModalResult; + NeedToRebuild: Boolean; begin ModalResult := mrNone; - InstallRes := InstallOnlinePackages; - if (InstallRes <> mrCancel) and (InstallRes <> mrOk) then - IDEMessageDialog(lisProjAddInstErrCaption, lisProjAddInstErr, mtError, [mbOk]); + if InstallOnlinePackages(NeedToRebuild) = mrOK then + begin + UpdateAvailableDependencyNames; + if NeedToRebuild then + begin + Self.Hide; + MainIDEInterface.DoBuildLazarus([]); + end; + end; end; procedure TAddPkgDependencyDialog.AddUniquePackagesToList(APackageID: TLazPackageID); diff --git a/packager/packagelinks.pas b/packager/packagelinks.pas index 4237370393..1e6964199f 100644 --- a/packager/packagelinks.pas +++ b/packager/packagelinks.pas @@ -1199,7 +1199,6 @@ begin if IsValidPkgName(PkgName) then begin Result.Name := PkgName; - Result.LPKFilename := PkgFilename; Result.LPKUrl := PkgURL; Result.Origin := ploOnline; FOnlineLinks.Add(Result);