mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 01:08:12 +02:00
135 lines
3.3 KiB
ObjectPascal
135 lines
3.3 KiB
ObjectPascal
unit AddFPMakeDependencyDlg;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LCL
|
|
LResources, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
|
|
// LazControls
|
|
ListFilterEdit,
|
|
// LazUtils
|
|
LazUTF8,
|
|
// BuildIntf
|
|
PackageIntf,
|
|
// IdeIntf
|
|
IDEWindowIntf,
|
|
// IdeConfig
|
|
ProjPackCommon, FppkgHelper,
|
|
// IDE
|
|
LazarusIDEStrConsts, PackageDefs, AddPkgDependencyDlg;
|
|
|
|
type
|
|
|
|
{ TAddFPMakeDependencyDialog }
|
|
|
|
TAddFPMakeDependencyDialog = class(TForm)
|
|
BP: TButtonPanel;
|
|
DependPkgNameFilter: TListFilterEdit;
|
|
DependPkgNameLabel: TLabel;
|
|
DependPkgNameListBox: TListBox;
|
|
procedure OKButtonClick(Sender: TObject);
|
|
private
|
|
FResultDependencies: TPkgDependencyList;
|
|
FPackageNameList: TStringListUTF8Fast;
|
|
procedure UpdateAvailableDependencyNames;
|
|
public
|
|
constructor Create(TheOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
function ShowAddFPMakeDependencyDlg({%H-}AProjPack: IProjPack;
|
|
out AResultDependencies: TPkgDependencyList): TModalResult;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
function ShowAddFPMakeDependencyDlg(AProjPack: IProjPack; out AResultDependencies: TPkgDependencyList): TModalResult;
|
|
var
|
|
AddDepDialog: TAddFPMakeDependencyDialog;
|
|
begin
|
|
AddDepDialog:=TAddFPMakeDependencyDialog.Create(nil);
|
|
AddDepDialog.UpdateAvailableDependencyNames;
|
|
|
|
Result:=AddDepDialog.ShowModal;
|
|
if Result=mrOk then
|
|
begin
|
|
AResultDependencies:=AddDepDialog.FResultDependencies;
|
|
AddDepDialog.fResultDependencies:=nil;
|
|
end
|
|
else
|
|
begin
|
|
AResultDependencies:=nil;
|
|
end;
|
|
AddDepDialog.Free;
|
|
end;
|
|
|
|
{ TAddFPMakeDependencyDialog }
|
|
|
|
procedure TAddFPMakeDependencyDialog.OKButtonClick(Sender: TObject);
|
|
var
|
|
NewDependency: TPkgDependency;
|
|
i: Integer;
|
|
begin
|
|
// Add all selected packages.
|
|
FResultDependencies := TPkgDependencyList.Create; // Will be freed by the caller.
|
|
if DependPkgNameListBox.SelCount > 0 then
|
|
begin
|
|
for i := 0 to DependPkgNameListBox.Count-1 do
|
|
begin
|
|
if DependPkgNameListBox.Selected[i] then
|
|
begin
|
|
NewDependency := TPkgDependency.Create; // Will be added to package graph.
|
|
NewDependency.PackageName := DependPkgNameListBox.Items[i];
|
|
NewDependency.DependencyType := pdtFPMake;
|
|
//if not CheckAddingDependency(fProjPack, NewDependency) then exit;
|
|
FResultDependencies.Add(NewDependency);
|
|
NewDependency := nil;
|
|
end;
|
|
end;
|
|
end;
|
|
ModalResult := mrOk;
|
|
end;
|
|
|
|
procedure TAddFPMakeDependencyDialog.UpdateAvailableDependencyNames;
|
|
begin
|
|
FPackageNameList.Clear;
|
|
TFppkgHelper.Instance.ListPackages(FPackageNameList);
|
|
|
|
FPackageNameList.Sort;
|
|
|
|
DependPkgNameFilter.Items.BeginUpdate;
|
|
try
|
|
DependPkgNameFilter.Items.Clear;
|
|
DependPkgNameFilter.Items.Assign(FPackageNameList);
|
|
DependPkgNameFilter.InvalidateFilter;
|
|
finally
|
|
DependPkgNameFilter.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
constructor TAddFPMakeDependencyDialog.Create(TheOwner: TComponent);
|
|
begin
|
|
inherited Create(TheOwner);
|
|
FPackageNameList := TStringListUTF8Fast.Create;
|
|
|
|
Caption:=lisProjAddNewRequirement;
|
|
|
|
DependPkgNameLabel.Caption:=lisProjAddPackageName;
|
|
BP.CloseButton.Caption := lisPckEditInstall;
|
|
|
|
IDEDialogLayoutList.ApplyLayout(Self,450,300);
|
|
end;
|
|
|
|
destructor TAddFPMakeDependencyDialog.Destroy;
|
|
begin
|
|
FPackageNameList.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
end.
|
|
|