1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
unit AddFPMakeDependencyDlg;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
ListFilterEdit, fgl,
ProjPackCommon,
PackageDefs,
LazarusIDEStrConsts,
IDEWindowIntf,
AddPkgDependencyDlg,
// fppkg
FppkgHelper;
type
{ TAddFPMakeDependencyDialog }
TAddFPMakeDependencyDialog = class(TForm)
BP: TButtonPanel;
DependPkgNameFilter: TListFilterEdit;
DependPkgNameLabel: TLabel;
DependPkgNameListBox: TListBox;
procedure OKButtonClick(Sender: TObject);
private
FResultDependencies: TPkgDependencyList;
FPackageNameList: TStringList;
procedure UpdateAvailableDependencyNames;
public
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
end;
function ShowAddFPMakeDependencyDlg(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 := TStringList.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.
|