mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 19:39:24 +02:00
Packager: use the new ListFilterEdit control in Install Packages dialog
git-svn-id: trunk@31446 -
This commit is contained in:
parent
d23a3c8cc5
commit
53749f7249
@ -1,12 +1,12 @@
|
|||||||
object InstallPkgSetDialog: TInstallPkgSetDialog
|
object InstallPkgSetDialog: TInstallPkgSetDialog
|
||||||
Left = 292
|
Left = 292
|
||||||
Height = 550
|
Height = 562
|
||||||
Top = 240
|
Top = 240
|
||||||
Width = 572
|
Width = 587
|
||||||
BorderStyle = bsSizeToolWin
|
BorderStyle = bsSizeToolWin
|
||||||
Caption = 'InstallPkgSetDialog'
|
Caption = 'InstallPkgSetDialog'
|
||||||
ClientHeight = 550
|
ClientHeight = 562
|
||||||
ClientWidth = 572
|
ClientWidth = 587
|
||||||
Constraints.MinHeight = 400
|
Constraints.MinHeight = 400
|
||||||
Constraints.MinWidth = 450
|
Constraints.MinWidth = 450
|
||||||
OnCreate = InstallPkgSetDialogCreate
|
OnCreate = InstallPkgSetDialogCreate
|
||||||
@ -21,23 +21,23 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
AnchorSideRight.Control = lblMiddle
|
AnchorSideRight.Control = lblMiddle
|
||||||
AnchorSideBottom.Control = PkgInfoGroupBox
|
AnchorSideBottom.Control = PkgInfoGroupBox
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 375
|
Height = 393
|
||||||
Top = 30
|
Top = 26
|
||||||
Width = 277
|
Width = 284
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
BorderSpacing.Right = 3
|
BorderSpacing.Right = 3
|
||||||
BorderSpacing.Bottom = 6
|
BorderSpacing.Bottom = 6
|
||||||
Caption = 'InstallPkgGroupBox'
|
Caption = 'InstallPkgGroupBox'
|
||||||
ClientHeight = 354
|
ClientHeight = 376
|
||||||
ClientWidth = 269
|
ClientWidth = 280
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object ImportButton: TButton
|
object ImportButton: TButton
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 292
|
Top = 314
|
||||||
Width = 257
|
Width = 268
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'ImportButton'
|
Caption = 'ImportButton'
|
||||||
@ -47,8 +47,8 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
object ExportButton: TButton
|
object ExportButton: TButton
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 323
|
Top = 345
|
||||||
Width = 257
|
Width = 268
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'ExportButton'
|
Caption = 'ExportButton'
|
||||||
@ -57,12 +57,12 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object InstallTreeView: TTreeView
|
object InstallTreeView: TTreeView
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 249
|
Height = 271
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 257
|
Width = 268
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
DefaultItemHeight = 19
|
DefaultItemHeight = 15
|
||||||
MultiSelect = True
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ShowButtons = False
|
ShowButtons = False
|
||||||
@ -76,8 +76,8 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
object UninstallButton: TBitBtn
|
object UninstallButton: TBitBtn
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 261
|
Top = 283
|
||||||
Width = 257
|
Width = 268
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'UninstallButton'
|
Caption = 'UninstallButton'
|
||||||
@ -92,29 +92,29 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
AnchorSideRight.Control = Owner
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Control = PkgInfoGroupBox
|
AnchorSideBottom.Control = PkgInfoGroupBox
|
||||||
Left = 289
|
Left = 296
|
||||||
Height = 375
|
Height = 393
|
||||||
Top = 30
|
Top = 26
|
||||||
Width = 277
|
Width = 285
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
BorderSpacing.Left = 3
|
BorderSpacing.Left = 3
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
BorderSpacing.Right = 6
|
BorderSpacing.Right = 6
|
||||||
BorderSpacing.Bottom = 6
|
BorderSpacing.Bottom = 6
|
||||||
Caption = 'AvailablePkgGroupBox'
|
Caption = 'AvailablePkgGroupBox'
|
||||||
ClientHeight = 354
|
ClientHeight = 376
|
||||||
ClientWidth = 269
|
ClientWidth = 281
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object AvailableTreeView: TTreeView
|
object AvailableTreeView: TTreeView
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 284
|
Height = 308
|
||||||
Top = 33
|
Top = 31
|
||||||
Width = 257
|
Width = 269
|
||||||
Align = alClient
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.Right = 6
|
BorderSpacing.Right = 6
|
||||||
BorderSpacing.Bottom = 6
|
BorderSpacing.Bottom = 6
|
||||||
DefaultItemHeight = 19
|
DefaultItemHeight = 15
|
||||||
MultiSelect = True
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ShowButtons = False
|
ShowButtons = False
|
||||||
@ -128,46 +128,45 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
object AddToInstallButton: TBitBtn
|
object AddToInstallButton: TBitBtn
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 323
|
Top = 345
|
||||||
Width = 257
|
Width = 269
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'AddToInstallButton'
|
Caption = 'AddToInstallButton'
|
||||||
OnClick = AddToInstallButtonClick
|
OnClick = AddToInstallButtonClick
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object AvailableFilterEdit: TEdit
|
object AvailableFilterEdit: TListFilterEdit
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 27
|
Height = 20
|
||||||
Top = 6
|
Top = 7
|
||||||
Width = 257
|
Width = 247
|
||||||
Align = alTop
|
FilteredTreeview = AvailableTreeView
|
||||||
BorderSpacing.Left = 6
|
ButtonWidth = 23
|
||||||
BorderSpacing.Top = 6
|
NumGlyphs = 0
|
||||||
BorderSpacing.Right = 6
|
Anchors = [akTop, akLeft, akRight]
|
||||||
OnChange = AvailableFilterEditChange
|
Font.Color = clBtnShadow
|
||||||
OnEnter = AvailableFilterEditEnter
|
MaxLength = 0
|
||||||
OnExit = AvailableFilterEditExit
|
ParentFont = False
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
Text = 'AvailableFilterEdit'
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object PkgInfoGroupBox: TGroupBox
|
object PkgInfoGroupBox: TGroupBox
|
||||||
AnchorSideBottom.Control = BtnPanel
|
AnchorSideBottom.Control = BtnPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 93
|
Height = 93
|
||||||
Top = 411
|
Top = 425
|
||||||
Width = 572
|
Width = 587
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Caption = 'PkgInfoGroupBox'
|
Caption = 'PkgInfoGroupBox'
|
||||||
ClientHeight = 72
|
ClientHeight = 76
|
||||||
ClientWidth = 564
|
ClientWidth = 583
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object PkgInfoMemo: TMemo
|
object PkgInfoMemo: TMemo
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 60
|
Height = 64
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 552
|
Width = 571
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Lines.Strings = (
|
Lines.Strings = (
|
||||||
@ -180,20 +179,20 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object BtnPanel: TPanel
|
object BtnPanel: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 46
|
Height = 44
|
||||||
Top = 504
|
Top = 518
|
||||||
Width = 572
|
Width = 587
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 46
|
ClientHeight = 44
|
||||||
ClientWidth = 572
|
ClientWidth = 587
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
object HelpButton: TBitBtn
|
object HelpButton: TBitBtn
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 34
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 85
|
Width = 75
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -205,10 +204,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object CancelButton: TBitBtn
|
object CancelButton: TBitBtn
|
||||||
Left = 102
|
Left = 201
|
||||||
Height = 34
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 89
|
Width = 75
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -221,10 +220,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object SaveAndExitButton: TBitBtn
|
object SaveAndExitButton: TBitBtn
|
||||||
Left = 397
|
Left = 445
|
||||||
Height = 34
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 169
|
Width = 136
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -271,10 +270,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object SaveAndRebuildButton: TBitBtn
|
object SaveAndRebuildButton: TBitBtn
|
||||||
Left = 197
|
Left = 282
|
||||||
Height = 34
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 194
|
Width = 157
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -323,9 +322,9 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object NoteLabel: TLabel
|
object NoteLabel: TLabel
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 18
|
Height = 14
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 560
|
Width = 575
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'NoteLabel'
|
Caption = 'NoteLabel'
|
||||||
@ -336,9 +335,9 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
AnchorSideLeft.Side = asrCenter
|
AnchorSideLeft.Side = asrCenter
|
||||||
AnchorSideTop.Control = Owner
|
AnchorSideTop.Control = Owner
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 286
|
Left = 293
|
||||||
Height = 1
|
Height = 1
|
||||||
Top = 275
|
Top = 281
|
||||||
Width = 1
|
Width = 1
|
||||||
AutoSize = False
|
AutoSize = False
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
|
@ -39,8 +39,8 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, contnrs, LCLProc, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, contnrs, LCLProc, Forms, Controls, Graphics, Dialogs,
|
||||||
KeywordFuncLists, StdCtrls, Buttons, FileUtil, ExtCtrls, ComCtrls,
|
KeywordFuncLists, StdCtrls, Buttons, FileUtil, ExtCtrls, ComCtrls, EditBtn,
|
||||||
AVL_Tree, Laz_XMLCfg,
|
AVL_Tree, Laz_XMLCfg, ListFilterEdit,
|
||||||
PackageIntf, IDEImagesIntf, IDEHelpIntf,
|
PackageIntf, IDEImagesIntf, IDEHelpIntf,
|
||||||
LazarusIDEStrConsts, EnvironmentOpts, InputHistory, LazConf, IDEProcs,
|
LazarusIDEStrConsts, EnvironmentOpts, InputHistory, LazConf, IDEProcs,
|
||||||
PackageDefs, PackageSystem, PackageLinks, IDEContextHelpEdit;
|
PackageDefs, PackageSystem, PackageLinks, IDEContextHelpEdit;
|
||||||
@ -53,7 +53,6 @@ type
|
|||||||
|
|
||||||
TInstallPkgSetDialog = class(TForm)
|
TInstallPkgSetDialog = class(TForm)
|
||||||
AddToInstallButton: TBitBtn;
|
AddToInstallButton: TBitBtn;
|
||||||
AvailableFilterEdit: TEdit;
|
|
||||||
AvailableTreeView: TTreeView;
|
AvailableTreeView: TTreeView;
|
||||||
AvailablePkgGroupBox: TGroupBox;
|
AvailablePkgGroupBox: TGroupBox;
|
||||||
HelpButton: TBitBtn;
|
HelpButton: TBitBtn;
|
||||||
@ -62,6 +61,7 @@ type
|
|||||||
BtnPanel: TPanel;
|
BtnPanel: TPanel;
|
||||||
InstallTreeView: TTreeView;
|
InstallTreeView: TTreeView;
|
||||||
lblMiddle: TLabel;
|
lblMiddle: TLabel;
|
||||||
|
AvailableFilterEdit: TListFilterEdit;
|
||||||
NoteLabel: TLabel;
|
NoteLabel: TLabel;
|
||||||
PkgInfoMemo: TMemo;
|
PkgInfoMemo: TMemo;
|
||||||
PkgInfoGroupBox: TGroupBox;
|
PkgInfoGroupBox: TGroupBox;
|
||||||
@ -71,9 +71,6 @@ type
|
|||||||
SaveAndRebuildButton: TBitBtn;
|
SaveAndRebuildButton: TBitBtn;
|
||||||
UninstallButton: TBitBtn;
|
UninstallButton: TBitBtn;
|
||||||
procedure AddToInstallButtonClick(Sender: TObject);
|
procedure AddToInstallButtonClick(Sender: TObject);
|
||||||
procedure AvailableFilterEditChange(Sender: TObject);
|
|
||||||
procedure AvailableFilterEditEnter(Sender: TObject);
|
|
||||||
procedure AvailableFilterEditExit(Sender: TObject);
|
|
||||||
procedure AvailableTreeViewDblClick(Sender: TObject);
|
procedure AvailableTreeViewDblClick(Sender: TObject);
|
||||||
procedure AvailableTreeViewSelectionChanged(Sender: TObject);
|
procedure AvailableTreeViewSelectionChanged(Sender: TObject);
|
||||||
procedure ExportButtonClick(Sender: TObject);
|
procedure ExportButtonClick(Sender: TObject);
|
||||||
@ -88,9 +85,6 @@ type
|
|||||||
procedure SaveAndExitButtonClick(Sender: TObject);
|
procedure SaveAndExitButtonClick(Sender: TObject);
|
||||||
procedure UninstallButtonClick(Sender: TObject);
|
procedure UninstallButtonClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
FIdleConnected: boolean;
|
|
||||||
FAvailableFilter: string;
|
|
||||||
fAvailablePackagesNeedUpdate: boolean;
|
|
||||||
FNewInstalledPackages: TObjectList;
|
FNewInstalledPackages: TObjectList;
|
||||||
FOldInstalledPackages: TPkgDependency;
|
FOldInstalledPackages: TPkgDependency;
|
||||||
FOnCheckInstallPackageList: TOnCheckInstallPackageList;
|
FOnCheckInstallPackageList: TOnCheckInstallPackageList;
|
||||||
@ -103,12 +97,10 @@ type
|
|||||||
ImgIndexUninstallPackage: integer;
|
ImgIndexUninstallPackage: integer;
|
||||||
ImgIndexCirclePackage: integer;
|
ImgIndexCirclePackage: integer;
|
||||||
ImgIndexMissingPackage: integer;
|
ImgIndexMissingPackage: integer;
|
||||||
procedure OnIdle(Sender: TObject; var Done: Boolean);
|
|
||||||
procedure SetIdleConnected(const AValue: boolean);
|
|
||||||
procedure SetAvailableFilter(const AValue: string);
|
|
||||||
procedure SetOldInstalledPackages(const AValue: TPkgDependency);
|
procedure SetOldInstalledPackages(const AValue: TPkgDependency);
|
||||||
procedure AssignOldInstalledPackagesToList;
|
procedure AssignOldInstalledPackagesToList;
|
||||||
function PackageInInstallList(PkgName: string): boolean;
|
function PackageInInstallList(PkgName: string): boolean;
|
||||||
|
function ChooseImageIndex(Str: String; Data: TObject): Integer;
|
||||||
procedure UpdateAvailablePackages(Immediately: boolean = false);
|
procedure UpdateAvailablePackages(Immediately: boolean = false);
|
||||||
procedure UpdateNewInstalledPackages;
|
procedure UpdateNewInstalledPackages;
|
||||||
procedure OnIteratePackages(APackageID: TLazPackageID);
|
procedure OnIteratePackages(APackageID: TLazPackageID);
|
||||||
@ -125,8 +117,6 @@ type
|
|||||||
function ExtractNameFromPkgID(ID: string): string;
|
function ExtractNameFromPkgID(ID: string): string;
|
||||||
procedure AddToInstall;
|
procedure AddToInstall;
|
||||||
procedure AddToUninstall;
|
procedure AddToUninstall;
|
||||||
function FitsAvailableFilter(PkgName: string): boolean;
|
|
||||||
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
|
|
||||||
public
|
public
|
||||||
function GetNewInstalledPackages: TObjectList;
|
function GetNewInstalledPackages: TObjectList;
|
||||||
property OldInstalledPackages: TPkgDependency read FOldInstalledPackages
|
property OldInstalledPackages: TPkgDependency read FOldInstalledPackages
|
||||||
@ -135,7 +125,6 @@ type
|
|||||||
property RebuildIDE: boolean read FRebuildIDE write FRebuildIDE;
|
property RebuildIDE: boolean read FRebuildIDE write FRebuildIDE;
|
||||||
property OnCheckInstallPackageList: TOnCheckInstallPackageList
|
property OnCheckInstallPackageList: TOnCheckInstallPackageList
|
||||||
read FOnCheckInstallPackageList write FOnCheckInstallPackageList;
|
read FOnCheckInstallPackageList write FOnCheckInstallPackageList;
|
||||||
property AvailableFilter: string read FAvailableFilter write SetAvailableFilter;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ShowEditInstallPkgsDialog(OldInstalledPackages: TPkgDependency;
|
function ShowEditInstallPkgsDialog(OldInstalledPackages: TPkgDependency;
|
||||||
@ -185,8 +174,9 @@ begin
|
|||||||
Caption:=lisInstallUninstallPackages;
|
Caption:=lisInstallUninstallPackages;
|
||||||
NoteLabel.Caption:=lisToInstallYouMustCompileAndRestartTheIDE;
|
NoteLabel.Caption:=lisToInstallYouMustCompileAndRestartTheIDE;
|
||||||
|
|
||||||
AvailableFilterEdit.Text:=lisCEFilter;
|
|
||||||
AvailablePkgGroupBox.Caption:=lisDoNotInstall;
|
AvailablePkgGroupBox.Caption:=lisDoNotInstall;
|
||||||
|
AvailableFilterEdit.OnGetImageIndex:=@ChooseImageIndex;
|
||||||
|
|
||||||
ExportButton.Caption:=lisExportList;
|
ExportButton.Caption:=lisExportList;
|
||||||
ImportButton.Caption:=lisImportList;
|
ImportButton.Caption:=lisImportList;
|
||||||
UninstallButton.Caption:=lisUninstallSelection;
|
UninstallButton.Caption:=lisUninstallSelection;
|
||||||
@ -202,7 +192,7 @@ begin
|
|||||||
|
|
||||||
fAvailablePackages:=TAVLTree.Create(@CompareLazPackageIDNames);
|
fAvailablePackages:=TAVLTree.Create(@CompareLazPackageIDNames);
|
||||||
FNewInstalledPackages:=TObjectList.Create(true);
|
FNewInstalledPackages:=TObjectList.Create(true);
|
||||||
|
|
||||||
PkgInfoMemo.Clear;
|
PkgInfoMemo.Clear;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -278,23 +268,6 @@ begin
|
|||||||
AddToInstall;
|
AddToInstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableFilterEditChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
AvailableFilter:=AvailableFilterEdit.Text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableFilterEditEnter(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if AvailableFilterEdit.Text=lisCEFilter then
|
|
||||||
AvailableFilterEdit.Text:='';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableFilterEditExit(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if AvailableFilterEdit.Text='' then
|
|
||||||
AvailableFilterEdit.Text:=lisCEFilter;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableTreeViewDblClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.AvailableTreeViewDblClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
AddToInstall;
|
AddToInstall;
|
||||||
@ -302,7 +275,6 @@ end;
|
|||||||
|
|
||||||
procedure TInstallPkgSetDialog.InstallPkgSetDialogDestroy(Sender: TObject);
|
procedure TInstallPkgSetDialog.InstallPkgSetDialogDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
IdleConnected:=false;
|
|
||||||
ClearNewInstalledPackages;
|
ClearNewInstalledPackages;
|
||||||
FNewInstalledPackages.Free;
|
FNewInstalledPackages.Free;
|
||||||
fAvailablePackages.Free;
|
fAvailablePackages.Free;
|
||||||
@ -335,23 +307,6 @@ begin
|
|||||||
AddToUninstall;
|
AddToUninstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.OnIdle(Sender: TObject; var Done: Boolean);
|
|
||||||
begin
|
|
||||||
if fAvailablePackagesNeedUpdate then
|
|
||||||
UpdateAvailablePackages(true);
|
|
||||||
IdleConnected:=false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.SetIdleConnected(const AValue: boolean);
|
|
||||||
begin
|
|
||||||
if FIdleConnected=AValue then exit;
|
|
||||||
FIdleConnected:=AValue;
|
|
||||||
if FIdleConnected then
|
|
||||||
Application.AddOnIdleHandler(@OnIdle)
|
|
||||||
else
|
|
||||||
Application.RemoveOnIdleHandler(@OnIdle);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.SetOldInstalledPackages(
|
procedure TInstallPkgSetDialog.SetOldInstalledPackages(
|
||||||
const AValue: TPkgDependency);
|
const AValue: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
@ -360,23 +315,6 @@ begin
|
|||||||
AssignOldInstalledPackagesToList;
|
AssignOldInstalledPackagesToList;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.SetAvailableFilter(const AValue: string);
|
|
||||||
var
|
|
||||||
NewValue: String;
|
|
||||||
begin
|
|
||||||
NewValue:=AValue;
|
|
||||||
if NewValue=lisCEFilter then NewValue:='';
|
|
||||||
NewValue:=LowerCase(NewValue);
|
|
||||||
if FAvailableFilter=NewValue then exit;
|
|
||||||
FAvailableFilter:=NewValue;
|
|
||||||
if not AvailableFilterEdit.Focused then
|
|
||||||
if AvailableFilter='' then
|
|
||||||
AvailableFilterEdit.Text:=lisCEFilter
|
|
||||||
else
|
|
||||||
AvailableFilterEdit.Text:=AvailableFilter;
|
|
||||||
UpdateAvailablePackages(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AssignOldInstalledPackagesToList;
|
procedure TInstallPkgSetDialog.AssignOldInstalledPackagesToList;
|
||||||
var
|
var
|
||||||
Dependency: TPkgDependency;
|
Dependency: TPkgDependency;
|
||||||
@ -416,62 +354,44 @@ begin
|
|||||||
Result:=false;
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TInstallPkgSetDialog.ChooseImageIndex(Str: String; Data: TObject): Integer;
|
||||||
|
var
|
||||||
|
Pkg: TLazPackageID;
|
||||||
|
APackage: TLazPackage;
|
||||||
|
begin
|
||||||
|
Pkg:=TLazPackageID(Data);
|
||||||
|
Result:=ImgIndexPackage;
|
||||||
|
if (Pkg is TLazPackage) then begin
|
||||||
|
APackage:=TLazPackage(Pkg);
|
||||||
|
if APackage.Installed<>pitNope then
|
||||||
|
Result:=ImgIndexUninstallPackage; // is installed and will be uninstalled
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.UpdateAvailablePackages(Immediately: boolean);
|
procedure TInstallPkgSetDialog.UpdateAvailablePackages(Immediately: boolean);
|
||||||
var
|
var
|
||||||
ANode: TAVLTreeNode;
|
ANode: TAVLTreeNode;
|
||||||
sl: TStringList;
|
|
||||||
PkgName: String;
|
|
||||||
Pkg: TLazPackageID;
|
Pkg: TLazPackageID;
|
||||||
TVNode: TTreeNode;
|
PkgName: String;
|
||||||
APackage: TLazPackage;
|
|
||||||
ImgIndex: LongInt;
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
if not Immediately then begin
|
|
||||||
if csDestroying in ComponentState then exit;
|
|
||||||
fAvailablePackagesNeedUpdate:=true;
|
|
||||||
IdleConnected:=true;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
fAvailablePackagesNeedUpdate:=false;
|
|
||||||
if fAvailablePackages.Count=0 then
|
if fAvailablePackages.Count=0 then
|
||||||
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
||||||
sl:=TStringList.Create;
|
AvailableFilterEdit.Data.Clear;
|
||||||
ANode:=fAvailablePackages.FindLowest;
|
ANode:=fAvailablePackages.FindLowest;
|
||||||
while ANode<>nil do begin
|
while ANode<>nil do begin
|
||||||
Pkg:=TLazPackageID(ANode.Data);
|
Pkg:=TLazPackageID(ANode.Data);
|
||||||
//debugln('TInstallPkgSetDialog.UpdateAvailablePackages ',Pkg.IDAsString,' Pkg.PackageType=',dbgs(ord(Pkg.PackageType)));
|
|
||||||
if (not (Pkg is TLazPackage))
|
if (not (Pkg is TLazPackage))
|
||||||
or (TLazPackage(Pkg).PackageType in [lptDesignTime,lptRunAndDesignTime])
|
or (TLazPackage(Pkg).PackageType in [lptDesignTime,lptRunAndDesignTime])
|
||||||
then begin
|
then begin
|
||||||
if (not PackageInInstallList(Pkg.Name))
|
if (not PackageInInstallList(Pkg.Name)) then begin
|
||||||
and (FitsAvailableFilter(Pkg.Name)) then begin
|
|
||||||
PkgName:=Pkg.IDAsString;
|
PkgName:=Pkg.IDAsString;
|
||||||
if (sl.IndexOf(PkgName)<0) then
|
if (AvailableFilterEdit.Data.IndexOf(PkgName)<0) then
|
||||||
sl.AddObject(PkgName,Pkg);
|
AvailableFilterEdit.Data.AddObject(PkgName,Pkg);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
ANode:=fAvailablePackages.FindSuccessor(ANode);
|
ANode:=fAvailablePackages.FindSuccessor(ANode);
|
||||||
end;
|
end;
|
||||||
sl.Sort;
|
AvailableFilterEdit.Invalidate;
|
||||||
AvailableTreeView.BeginUpdate;
|
|
||||||
AvailableTreeView.Items.Clear;
|
|
||||||
for i:=0 to sl.Count-1 do begin
|
|
||||||
TVNode:=AvailableTreeView.Items.Add(nil,sl[i]);
|
|
||||||
Pkg:=TLazPackageID(sl.Objects[i]);
|
|
||||||
ImgIndex:=ImgIndexPackage;
|
|
||||||
if (Pkg is TLazPackage) then begin
|
|
||||||
APackage:=TLazPackage(Pkg);
|
|
||||||
if APackage.Installed<>pitNope then begin
|
|
||||||
// is installed and will be uninstalled
|
|
||||||
ImgIndex:=ImgIndexUninstallPackage;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
TVNode.ImageIndex:=ImgIndex;
|
|
||||||
TVNode.SelectedIndex:=ImgIndex;
|
|
||||||
end;
|
|
||||||
AvailableTreeView.EndUpdate;
|
|
||||||
sl.Free;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.UpdateNewInstalledPackages;
|
procedure TInstallPkgSetDialog.UpdateNewInstalledPackages;
|
||||||
@ -500,20 +420,16 @@ begin
|
|||||||
TVNode:=InstallTreeView.Items.Add(nil,sl[i]);
|
TVNode:=InstallTreeView.Items.Add(nil,sl[i]);
|
||||||
NewPackageID:=TLazPackageID(sl.Objects[i]);
|
NewPackageID:=TLazPackageID(sl.Objects[i]);
|
||||||
ImgIndex:=ImgIndexInstallPackage;
|
ImgIndex:=ImgIndexInstallPackage;
|
||||||
//debugln(['TInstallPkgSetDialog.UpdateNewInstalledPackages ',NewPackageID.IDAsString,' ',DbgSName(NewPackageID)]);
|
|
||||||
if NewPackageID is TLazPackage then begin
|
if NewPackageID is TLazPackage then begin
|
||||||
APackage:=TLazPackage(NewPackageID);
|
APackage:=TLazPackage(NewPackageID);
|
||||||
if APackage.Installed<>pitNope then begin
|
if APackage.Installed<>pitNope then
|
||||||
// stay installed
|
ImgIndex:=ImgIndexInstalledPackage; // stay installed
|
||||||
ImgIndex:=ImgIndexInstalledPackage;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
TVNode.ImageIndex:=ImgIndex;
|
TVNode.ImageIndex:=ImgIndex;
|
||||||
TVNode.SelectedIndex:=ImgIndex;
|
TVNode.SelectedIndex:=ImgIndex;
|
||||||
end;
|
end;
|
||||||
InstallTreeView.EndUpdate;
|
InstallTreeView.EndUpdate;
|
||||||
sl.Free;
|
sl.Free;
|
||||||
//debugln(['TInstallPkgSetDialog.UpdateNewInstalledPackages END ',InstallTreeView.Items.TopLvlCount]);
|
|
||||||
UpdateAvailablePackages;
|
UpdateAvailablePackages;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -524,8 +440,7 @@ begin
|
|||||||
fAvailablePackages.Add(APackageID);
|
fAvailablePackages.Add(APackageID);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TInstallPkgSetDialog.DependencyToStr(Dependency: TPkgDependency
|
function TInstallPkgSetDialog.DependencyToStr(Dependency: TPkgDependency): string;
|
||||||
): string;
|
|
||||||
begin
|
begin
|
||||||
Result:='';
|
Result:='';
|
||||||
if Dependency=nil then exit;
|
if Dependency=nil then exit;
|
||||||
@ -898,11 +813,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TInstallPkgSetDialog.FitsAvailableFilter(PkgName: string): boolean;
|
|
||||||
begin
|
|
||||||
Result:=(AvailableFilter='') or (System.Pos(AvailableFilter,lowercase(PkgName))>0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TInstallPkgSetDialog.GetNewInstalledPackages: TObjectList;
|
function TInstallPkgSetDialog.GetNewInstalledPackages: TObjectList;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
Loading…
Reference in New Issue
Block a user