Packager: use ListViewFilterEdit in OpenInstalledPackages window.

git-svn-id: trunk@47161 -
This commit is contained in:
juha 2014-12-10 00:46:43 +00:00
parent cbae1c8558
commit 3f37b16f15
2 changed files with 81 additions and 54 deletions

View File

@ -1,40 +1,51 @@
object OpenLoadedPackagesDlg: TOpenLoadedPackagesDlg object OpenLoadedPackagesDlg: TOpenLoadedPackagesDlg
Left = 407 Left = 407
Height = 494 Height = 501
Top = 151 Top = 151
Width = 447 Width = 446
ActiveControl = PkgListView ActiveControl = FilterEdit
Caption = 'OpenLoadedPackagesDlg' Caption = 'OpenLoadedPackagesDlg'
ClientHeight = 494 ClientHeight = 501
ClientWidth = 447 ClientWidth = 446
OnClose = FormClose OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.3' LCLVersion = '1.3'
object HintMemo: TMemo object HintMemo: TMemo
Left = 0 Left = 3
Height = 121 Height = 121
Top = 327 Top = 332
Width = 447 Width = 440
Align = alBottom Align = alBottom
BorderSpacing.Left = 3
BorderSpacing.Right = 3
Lines.Strings = ( Lines.Strings = (
'Memo1' 'Memo1'
) )
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoBoth ScrollBars = ssAutoBoth
TabOrder = 0 TabOrder = 3
end end
object PkgListView: TListView object PkgListView: TListView
Left = 0 AnchorSideTop.Control = FilterEdit
Height = 322 AnchorSideTop.Side = asrBottom
Top = 0 AnchorSideRight.Control = Owner
Width = 447 AnchorSideRight.Side = asrBottom
Align = alClient AnchorSideBottom.Control = Splitter1
Left = 3
Height = 300
Top = 27
Width = 440
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 3
BorderSpacing.Top = 3
BorderSpacing.Right = 3
Columns = <> Columns = <>
ReadOnly = True ReadOnly = True
RowSelect = True RowSelect = True
SortType = stText SortType = stText
TabOrder = 1 TabOrder = 1
ViewStyle = vsReport
OnDblClick = PkgListViewDblClick OnDblClick = PkgListViewDblClick
OnSelectItem = PkgListViewSelectItem OnSelectItem = PkgListViewSelectItem
end end
@ -42,16 +53,16 @@ object OpenLoadedPackagesDlg: TOpenLoadedPackagesDlg
Cursor = crVSplit Cursor = crVSplit
Left = 0 Left = 0
Height = 5 Height = 5
Top = 322 Top = 327
Width = 447 Width = 446
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
end end
object ButtonPanel1: TButtonPanel object ButtonPanel1: TButtonPanel
Left = 6 Left = 6
Height = 34 Height = 36
Top = 454 Top = 459
Width = 435 Width = 434
OKButton.Name = 'OKButton' OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True OKButton.DefaultCaption = True
OKButton.OnClick = OpenButtonClick OKButton.OnClick = OpenButtonClick
@ -62,7 +73,18 @@ object OpenLoadedPackagesDlg: TOpenLoadedPackagesDlg
CloseButton.DefaultCaption = True CloseButton.DefaultCaption = True
CancelButton.Name = 'CancelButton' CancelButton.Name = 'CancelButton'
CancelButton.DefaultCaption = True CancelButton.DefaultCaption = True
TabOrder = 3 TabOrder = 4
ShowButtons = [pbOK, pbCancel, pbHelp] ShowButtons = [pbOK, pbCancel, pbHelp]
end end
object FilterEdit: TListViewFilterEdit
Left = 3
Height = 21
Top = 3
Width = 147
ButtonWidth = 23
NumGlyphs = 1
MaxLength = 0
TabOrder = 0
FilteredListview = PkgListView
end
end end

View File

@ -31,9 +31,8 @@ unit OpenInstalledPkgDlg;
interface interface
uses uses
Classes, SysUtils, Forms, Controls, Buttons, ComCtrls, StdCtrls, SysUtils, Forms, Controls, ComCtrls, StdCtrls, ExtCtrls, LCLProc, ButtonPanel,
FileCtrl, Dialogs, LCLProc, ExtCtrls, ButtonPanel, IDEHelpIntf, IDEWindowIntf, PackageIntf, ListViewFilterEdit,
IDEHelpIntf, IDEWindowIntf, PackageIntf,
PackageDefs, LazarusIDEStrConsts, PackageSystem; PackageDefs, LazarusIDEStrConsts, PackageSystem;
type type
@ -42,6 +41,7 @@ type
TOpenLoadedPackagesDlg = class(TForm) TOpenLoadedPackagesDlg = class(TForm)
ButtonPanel1: TButtonPanel; ButtonPanel1: TButtonPanel;
FilterEdit: TListViewFilterEdit;
PkgListView: TListView; PkgListView: TListView;
HintMemo: TMemo; HintMemo: TMemo;
Splitter1: TSplitter; Splitter1: TSplitter;
@ -50,10 +50,8 @@ type
procedure HelpButtonClick(Sender: TObject); procedure HelpButtonClick(Sender: TObject);
procedure OpenButtonClick(Sender: TObject); procedure OpenButtonClick(Sender: TObject);
procedure PkgListViewDblClick(Sender: TObject); procedure PkgListViewDblClick(Sender: TObject);
procedure PkgListViewSelectItem(Sender: TObject; Item: TListItem; procedure PkgListViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
Selected: Boolean);
private private
function PkgStateToString(APackage: TLazPackage): string;
public public
Package: TLazPackage; Package: TLazPackage;
procedure UpdateSelection; procedure UpdateSelection;
@ -127,12 +125,9 @@ begin
end; end;
procedure TOpenLoadedPackagesDlg.OpenButtonClick(Sender: TObject); procedure TOpenLoadedPackagesDlg.OpenButtonClick(Sender: TObject);
var
PkgName: String;
begin begin
if PkgListView.Selected=nil then exit; if PkgListView.Selected=nil then exit;
PkgName:=PkgListView.Selected.Caption; Package:=PackageGraph.FindPackageWithName(PkgListView.Selected.Caption,nil);
Package:=PackageGraph.FindPackageWithName(PkgName,nil);
if Package=nil then if Package=nil then
ModalResult:=mrCancel ModalResult:=mrCancel
else else
@ -147,7 +142,6 @@ begin
IDEDialogLayoutList.ApplyLayout(Self,450,450); IDEDialogLayoutList.ApplyLayout(Self,450,450);
with PkgListView do begin with PkgListView do begin
ViewStyle:=vsReport;
NewColumn:=Columns.Add; NewColumn:=Columns.Add;
NewColumn.Caption:=lisOIPPackageName; NewColumn.Caption:=lisOIPPackageName;
NewColumn.Width:=150; NewColumn.Width:=150;
@ -172,7 +166,7 @@ begin
LazarusHelp.ShowHelpForIDEControl(Self); LazarusHelp.ShowHelpForIDEControl(Self);
end; end;
function TOpenLoadedPackagesDlg.PkgStateToString(APackage: TLazPackage): string; function PkgStateToString(APackage: TLazPackage): string;
procedure AddState(const s: string); procedure AddState(const s: string);
begin begin
@ -198,30 +192,41 @@ begin
end; end;
procedure TOpenLoadedPackagesDlg.UpdatePackageList; procedure TOpenLoadedPackagesDlg.UpdatePackageList;
procedure UpdateOnePackage(aPkg: TLazPackage);
var
Data: TStringArray;
begin
SetLength(Data, 3);
Data[0] := aPkg.Name;
Data[1] := aPkg.Version.AsString;
Data[2] := PkgStateToString(aPkg);
FilterEdit.Items.Add(Data);
end;
var var
Cnt: Integer;
i: Integer; i: Integer;
CurPkg: TLazPackage;
CurListItem: TListItem;
begin begin
PkgListView.BeginUpdate; FilterEdit.Items.Clear;
Cnt:=PackageGraph.Count; for i:=0 to PackageGraph.Count-1 do
for i:=0 to Cnt-1 do begin UpdateOnePackage(PackageGraph[i]);
CurPkg:=PackageGraph[i]; FilterEdit.InvalidateFilter;
if PkgListView.Items.Count>i then begin //PkgListView.BeginUpdate;
CurListItem:=PkgListView.Items[i]; //PkgListView.AlphaSort;
CurListItem.SubItems[0]:=CurPkg.Version.AsString; //PkgListView.EndUpdate;
CurListItem.SubItems[1]:=PkgStateToString(CurPkg);
end else begin
CurListItem:=PkgListView.Items.Add;
CurListItem.SubItems.Add(CurPkg.Version.AsString);
CurListItem.SubItems.Add(PkgStateToString(CurPkg));
end;
CurListItem.Caption:=CurPkg.Name;
end;
PkgListView.AlphaSort;
PkgListView.EndUpdate;
end; end;
//if PkgListView.Items.Count>i then begin
// CurListItem:=PkgListView.Items[i];
// CurListItem.SubItems[0]:=CurPkg.Version.AsString;
// CurListItem.SubItems[1]:=PkgStateToString(CurPkg);
//end else begin
//CurListItem:=PkgListView.Items.Add;
//CurListItem.SubItems.Add(CurPkg.Version.AsString);
//CurListItem.SubItems.Add(PkgStateToString(CurPkg));
//end;
//CurListItem.Caption:=CurPkg.Name;
end. end.