mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-09 12:58:16 +02:00
IDE: configure install packages dialog: added icons
git-svn-id: trunk@26661 -
This commit is contained in:
parent
b18be4646a
commit
8851d2a322
@ -2,7 +2,7 @@
|
|||||||
This source is only used to compile and install the package.
|
This source is only used to compile and install the package.
|
||||||
}
|
}
|
||||||
|
|
||||||
unit LazControls;
|
unit lazcontrols;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
This source is only used to compile and install the package.
|
This source is only used to compile and install the package.
|
||||||
}
|
}
|
||||||
|
|
||||||
unit AnchorDockingDsgn;
|
unit anchordockingdsgn;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -4837,6 +4837,8 @@ resourcestring
|
|||||||
lisHideMessageViaDirective = 'Hide message via directive';
|
lisHideMessageViaDirective = 'Hide message via directive';
|
||||||
lisRemoveLocalVariable2 = 'Remove local variable';
|
lisRemoveLocalVariable2 = 'Remove local variable';
|
||||||
lisNoHints = 'no hints';
|
lisNoHints = 'no hints';
|
||||||
|
lisToInstallYouMustCompileAndRestartTheIDE = 'To install you must compile '
|
||||||
|
+'and restart the IDE';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
Height = 442
|
Height = 442
|
||||||
Top = 167
|
Top = 167
|
||||||
Width = 572
|
Width = 572
|
||||||
ActiveControl = InstallListBox
|
ActiveControl = InstallTreeView
|
||||||
BorderStyle = bsSizeToolWin
|
BorderStyle = bsSizeToolWin
|
||||||
Caption = 'InstallPkgSetDialog'
|
Caption = 'InstallPkgSetDialog'
|
||||||
ClientHeight = 442
|
ClientHeight = 442
|
||||||
@ -15,101 +15,107 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
LCLVersion = '0.9.29'
|
LCLVersion = '0.9.29'
|
||||||
object InstallPkgGroupBox: TGroupBox
|
object InstallPkgGroupBox: TGroupBox
|
||||||
AnchorSideLeft.Control = Owner
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = Owner
|
AnchorSideTop.Control = NoteLabel
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideBottom.Control = PkgInfoGroupBox
|
AnchorSideBottom.Control = PkgInfoGroupBox
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 292
|
Height = 269
|
||||||
Top = 6
|
Top = 30
|
||||||
Width = 255
|
Width = 255
|
||||||
Anchors = [akTop, akLeft, akBottom]
|
Anchors = [akTop, akLeft, akBottom]
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'InstallPkgGroupBox'
|
Caption = 'InstallPkgGroupBox'
|
||||||
ClientHeight = 273
|
ClientHeight = 250
|
||||||
ClientWidth = 251
|
ClientWidth = 251
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object InstallListBox: TListBox
|
|
||||||
Left = 6
|
|
||||||
Height = 168
|
|
||||||
Top = 6
|
|
||||||
Width = 239
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 6
|
|
||||||
ClickOnSelChange = False
|
|
||||||
ItemHeight = 0
|
|
||||||
MultiSelect = True
|
|
||||||
OnDblClick = InstallListBoxDblClick
|
|
||||||
OnSelectionChange = InstallListBoxSelectionChange
|
|
||||||
TabOrder = 0
|
|
||||||
TopIndex = -1
|
|
||||||
end
|
|
||||||
object UninstallButton: TButton
|
|
||||||
Left = 6
|
|
||||||
Height = 25
|
|
||||||
Top = 180
|
|
||||||
Width = 239
|
|
||||||
Align = alBottom
|
|
||||||
BorderSpacing.Around = 6
|
|
||||||
Caption = 'UninstallButton'
|
|
||||||
OnClick = UninstallButtonClick
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object ImportButton: TButton
|
object ImportButton: TButton
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 211
|
Top = 188
|
||||||
Width = 239
|
Width = 239
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'ImportButton'
|
Caption = 'ImportButton'
|
||||||
OnClick = ImportButtonClick
|
OnClick = ImportButtonClick
|
||||||
TabOrder = 2
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object ExportButton: TButton
|
object ExportButton: TButton
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 242
|
Top = 219
|
||||||
Width = 239
|
Width = 239
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'ExportButton'
|
Caption = 'ExportButton'
|
||||||
OnClick = ExportButtonClick
|
OnClick = ExportButtonClick
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object InstallTreeView: TTreeView
|
||||||
|
Left = 6
|
||||||
|
Height = 145
|
||||||
|
Top = 6
|
||||||
|
Width = 239
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
DefaultItemHeight = 19
|
||||||
|
ReadOnly = True
|
||||||
|
ShowButtons = False
|
||||||
|
ShowLines = False
|
||||||
|
ShowRoot = False
|
||||||
|
TabOrder = 2
|
||||||
|
OnDblClick = InstallTreeViewDblClick
|
||||||
|
OnSelectionChanged = InstallTreeViewSelectionChanged
|
||||||
|
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoToolTips, tvoThemedDraw]
|
||||||
|
end
|
||||||
|
object UninstallButton: TBitBtn
|
||||||
|
Left = 6
|
||||||
|
Height = 25
|
||||||
|
Top = 157
|
||||||
|
Width = 239
|
||||||
|
Align = alBottom
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'UninstallButton'
|
||||||
|
OnClick = UninstallButtonClick
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object AvailablePkgGroupBox: TGroupBox
|
object AvailablePkgGroupBox: TGroupBox
|
||||||
AnchorSideTop.Control = Owner
|
AnchorSideTop.Control = NoteLabel
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = Owner
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Control = PkgInfoGroupBox
|
AnchorSideBottom.Control = PkgInfoGroupBox
|
||||||
Left = 267
|
Left = 267
|
||||||
Height = 292
|
Height = 269
|
||||||
Top = 6
|
Top = 30
|
||||||
Width = 299
|
Width = 299
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'AvailablePkgGroupBox'
|
Caption = 'AvailablePkgGroupBox'
|
||||||
ClientHeight = 273
|
ClientHeight = 250
|
||||||
ClientWidth = 295
|
ClientWidth = 295
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object AvailableListBox: TListBox
|
object AvailableTreeView: TTreeView
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 230
|
Height = 207
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 283
|
Width = 283
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
ClickOnSelChange = False
|
DefaultItemHeight = 19
|
||||||
ItemHeight = 0
|
ReadOnly = True
|
||||||
MultiSelect = True
|
ShowButtons = False
|
||||||
OnDblClick = AvailableListBoxDblClick
|
ShowLines = False
|
||||||
OnSelectionChange = AvailableListBoxSelectionChange
|
ShowRoot = False
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
TopIndex = -1
|
OnDblClick = AvailableTreeViewDblClick
|
||||||
|
OnSelectionChanged = AvailableTreeViewSelectionChanged
|
||||||
|
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoToolTips, tvoThemedDraw]
|
||||||
end
|
end
|
||||||
object AddToInstallButton: TButton
|
object AddToInstallButton: TBitBtn
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 242
|
Top = 219
|
||||||
Width = 283
|
Width = 283
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -122,7 +128,7 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
AnchorSideBottom.Control = HelpButton
|
AnchorSideBottom.Control = HelpButton
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 93
|
Height = 93
|
||||||
Top = 308
|
Top = 305
|
||||||
Width = 572
|
Width = 572
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Caption = 'PkgInfoGroupBox'
|
Caption = 'PkgInfoGroupBox'
|
||||||
@ -143,19 +149,19 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object BtnPanel: TPanel
|
object BtnPanel: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 41
|
Height = 44
|
||||||
Top = 401
|
Top = 398
|
||||||
Width = 572
|
Width = 572
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 41
|
ClientHeight = 44
|
||||||
ClientWidth = 572
|
ClientWidth = 572
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
object HelpButton: TBitBtn
|
object HelpButton: TBitBtn
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 29
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 75
|
Width = 75
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
@ -171,10 +177,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
object CancelButton: TBitBtn
|
object CancelButton: TBitBtn
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 149
|
Left = 140
|
||||||
Height = 29
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 75
|
Width = 79
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -188,10 +194,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object SaveAndExitButton: TBitBtn
|
object SaveAndExitButton: TBitBtn
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 412
|
Left = 410
|
||||||
Height = 29
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 154
|
Width = 156
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -239,10 +245,10 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
end
|
end
|
||||||
object SaveAndRebuildButton: TBitBtn
|
object SaveAndRebuildButton: TBitBtn
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 230
|
Left = 225
|
||||||
Height = 29
|
Height = 32
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 176
|
Width = 179
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -289,4 +295,14 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
object NoteLabel: TLabel
|
||||||
|
Left = 6
|
||||||
|
Height = 18
|
||||||
|
Top = 6
|
||||||
|
Width = 560
|
||||||
|
Align = alTop
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'NoteLabel'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,8 +39,8 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs,
|
||||||
KeywordFuncLists, StdCtrls, Buttons, FileUtil, ExtCtrls,
|
KeywordFuncLists, StdCtrls, Buttons, FileUtil, ExtCtrls, ComCtrls,
|
||||||
AVL_Tree, Laz_XMLCfg, PackageIntf,
|
AVL_Tree, Laz_XMLCfg, PackageIntf, IDEImagesIntf,
|
||||||
LazarusIDEStrConsts, EnvironmentOpts, InputHistory, LazConf, IDEProcs,
|
LazarusIDEStrConsts, EnvironmentOpts, InputHistory, LazConf, IDEProcs,
|
||||||
PackageDefs, PackageSystem, PackageLinks, IDEContextHelpEdit;
|
PackageDefs, PackageSystem, PackageLinks, IDEContextHelpEdit;
|
||||||
|
|
||||||
@ -51,33 +51,34 @@ type
|
|||||||
{ TInstallPkgSetDialog }
|
{ TInstallPkgSetDialog }
|
||||||
|
|
||||||
TInstallPkgSetDialog = class(TForm)
|
TInstallPkgSetDialog = class(TForm)
|
||||||
AddToInstallButton: TButton;
|
AddToInstallButton: TBitBtn;
|
||||||
AvailableListBox: TListBox;
|
AvailableTreeView: TTreeView;
|
||||||
AvailablePkgGroupBox: TGroupBox;
|
AvailablePkgGroupBox: TGroupBox;
|
||||||
HelpButton: TBitBtn;
|
HelpButton: TBitBtn;
|
||||||
CancelButton: TBitBtn;
|
CancelButton: TBitBtn;
|
||||||
ExportButton: TButton;
|
ExportButton: TButton;
|
||||||
BtnPanel: TPanel;
|
BtnPanel: TPanel;
|
||||||
|
InstallTreeView: TTreeView;
|
||||||
|
NoteLabel: TLabel;
|
||||||
PkgInfoMemo: TMemo;
|
PkgInfoMemo: TMemo;
|
||||||
PkgInfoGroupBox: TGroupBox;
|
PkgInfoGroupBox: TGroupBox;
|
||||||
ImportButton: TButton;
|
ImportButton: TButton;
|
||||||
SaveAndExitButton: TBitBtn;
|
SaveAndExitButton: TBitBtn;
|
||||||
InstallListBox: TListBox;
|
|
||||||
InstallPkgGroupBox: TGroupBox;
|
InstallPkgGroupBox: TGroupBox;
|
||||||
SaveAndRebuildButton: TBitBtn;
|
SaveAndRebuildButton: TBitBtn;
|
||||||
UninstallButton: TButton;
|
UninstallButton: TBitBtn;
|
||||||
procedure AddToInstallButtonClick(Sender: TObject);
|
procedure AddToInstallButtonClick(Sender: TObject);
|
||||||
procedure AvailableListBoxDblClick(Sender: TObject);
|
procedure AvailableTreeViewDblClick(Sender: TObject);
|
||||||
procedure AvailableListBoxSelectionChange(Sender: TObject; User: boolean);
|
procedure AvailableTreeViewSelectionChanged(Sender: TObject);
|
||||||
procedure ExportButtonClick(Sender: TObject);
|
procedure ExportButtonClick(Sender: TObject);
|
||||||
procedure HelpButtonClick(Sender: TObject);
|
procedure HelpButtonClick(Sender: TObject);
|
||||||
procedure ImportButtonClick(Sender: TObject);
|
procedure ImportButtonClick(Sender: TObject);
|
||||||
procedure InstallButtonClick(Sender: TObject);
|
procedure InstallButtonClick(Sender: TObject);
|
||||||
procedure InstallListBoxDblClick(Sender: TObject);
|
procedure InstallTreeViewDblClick(Sender: TObject);
|
||||||
procedure InstallListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
||||||
procedure InstallPkgSetDialogCreate(Sender: TObject);
|
procedure InstallPkgSetDialogCreate(Sender: TObject);
|
||||||
procedure InstallPkgSetDialogDestroy(Sender: TObject);
|
procedure InstallPkgSetDialogDestroy(Sender: TObject);
|
||||||
procedure InstallPkgSetDialogResize(Sender: TObject);
|
procedure InstallPkgSetDialogResize(Sender: TObject);
|
||||||
|
procedure InstallTreeViewSelectionChanged(Sender: TObject);
|
||||||
procedure SaveAndExitButtonClick(Sender: TObject);
|
procedure SaveAndExitButtonClick(Sender: TObject);
|
||||||
procedure UninstallButtonClick(Sender: TObject);
|
procedure UninstallButtonClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
@ -87,6 +88,12 @@ type
|
|||||||
fPackages: TAVLTree;// tree of TLazPackageID (all available packages and links)
|
fPackages: TAVLTree;// tree of TLazPackageID (all available packages and links)
|
||||||
FRebuildIDE: boolean;
|
FRebuildIDE: boolean;
|
||||||
FSelectedPkg: TLazPackage;
|
FSelectedPkg: TLazPackage;
|
||||||
|
ImgIndexPackage: integer;
|
||||||
|
ImgIndexInstallPackage: integer;
|
||||||
|
ImgIndexInstalledPackage: integer;
|
||||||
|
ImgIndexUninstallPackage: integer;
|
||||||
|
ImgIndexCirclePackage: integer;
|
||||||
|
ImgIndexMissingPackage: integer;
|
||||||
procedure SetOldInstalledPackages(const AValue: TPkgDependency);
|
procedure SetOldInstalledPackages(const AValue: TPkgDependency);
|
||||||
procedure AssignOldInstalledPackagesToList;
|
procedure AssignOldInstalledPackagesToList;
|
||||||
function PackageInInstallList(PkgName: string): boolean;
|
function PackageInInstallList(PkgName: string): boolean;
|
||||||
@ -97,7 +104,7 @@ type
|
|||||||
procedure ClearNewInstalledPackages;
|
procedure ClearNewInstalledPackages;
|
||||||
function CheckSelection: boolean;
|
function CheckSelection: boolean;
|
||||||
procedure UpdateButtonStates;
|
procedure UpdateButtonStates;
|
||||||
procedure UpdatePackageInfo(List: TListBox);
|
procedure UpdatePackageInfo(Tree: TTreeView);
|
||||||
function NewInstalledPackagesContains(APackageID: TLazPackageID): boolean;
|
function NewInstalledPackagesContains(APackageID: TLazPackageID): boolean;
|
||||||
function IndexOfNewInstalledPackageID(APackageID: TLazPackageID): integer;
|
function IndexOfNewInstalledPackageID(APackageID: TLazPackageID): integer;
|
||||||
function IndexOfNewInstalledPkgByName(const APackageName: string): integer;
|
function IndexOfNewInstalledPkgByName(const APackageName: string): integer;
|
||||||
@ -150,13 +157,26 @@ end;
|
|||||||
|
|
||||||
procedure TInstallPkgSetDialog.InstallPkgSetDialogCreate(Sender: TObject);
|
procedure TInstallPkgSetDialog.InstallPkgSetDialogCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
InstallTreeView.Images := IDEImages.Images_16;
|
||||||
|
AvailableTreeView.Images := IDEImages.Images_16;
|
||||||
|
ImgIndexPackage := IDEImages.LoadImage(16, 'item_package');
|
||||||
|
ImgIndexInstalledPackage := IDEImages.LoadImage(16, 'pkg_installed');
|
||||||
|
ImgIndexInstallPackage := IDEImages.LoadImage(16, 'pkg_package_autoinstall');
|
||||||
|
ImgIndexUninstallPackage := IDEImages.LoadImage(16, 'pkg_package_uninstall');
|
||||||
|
ImgIndexCirclePackage := IDEImages.LoadImage(16, 'pkg_package_circle');
|
||||||
|
ImgIndexMissingPackage := IDEImages.LoadImage(16, 'pkg_conflict');
|
||||||
|
|
||||||
Caption:=lisInstallUninstallPackages;
|
Caption:=lisInstallUninstallPackages;
|
||||||
|
NoteLabel.Caption:=lisToInstallYouMustCompileAndRestartTheIDE;
|
||||||
|
|
||||||
AvailablePkgGroupBox.Caption:=lisDoNotInstall;
|
AvailablePkgGroupBox.Caption:=lisDoNotInstall;
|
||||||
ExportButton.Caption:=lisExportList;
|
ExportButton.Caption:=lisExportList;
|
||||||
ImportButton.Caption:=lisImportList;
|
ImportButton.Caption:=lisImportList;
|
||||||
UninstallButton.Caption:=lisUninstallSelection;
|
UninstallButton.Caption:=lisUninstallSelection;
|
||||||
|
UninstallButton.LoadGlyphFromLazarusResource('arrow_right');
|
||||||
InstallPkgGroupBox.Caption:=lisPckEditInstall;
|
InstallPkgGroupBox.Caption:=lisPckEditInstall;
|
||||||
AddToInstallButton.Caption:=lisInstallSelection;
|
AddToInstallButton.Caption:=lisInstallSelection;
|
||||||
|
AddToInstallButton.LoadGlyphFromLazarusResource('arrow_left');
|
||||||
PkgInfoGroupBox.Caption := lisPackageInfo;
|
PkgInfoGroupBox.Caption := lisPackageInfo;
|
||||||
SaveAndRebuildButton.Caption:=lisSaveAndRebuildIDE;
|
SaveAndRebuildButton.Caption:=lisSaveAndRebuildIDE;
|
||||||
SaveAndExitButton.Caption:=lisSaveAndExitDialog;
|
SaveAndExitButton.Caption:=lisSaveAndExitDialog;
|
||||||
@ -176,16 +196,16 @@ begin
|
|||||||
ModalResult:=mrOk;
|
ModalResult:=mrOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.InstallListBoxDblClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.InstallTreeViewDblClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
AddToUninstall;
|
AddToUninstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableListBoxSelectionChange(Sender: TObject;
|
procedure TInstallPkgSetDialog.AvailableTreeViewSelectionChanged(Sender: TObject
|
||||||
User: boolean);
|
);
|
||||||
begin
|
begin
|
||||||
UpdateButtonStates;
|
UpdateButtonStates;
|
||||||
UpdatePackageInfo(AvailableListBox);
|
UpdatePackageInfo(AvailableTreeView);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.ExportButtonClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.ExportButtonClick(Sender: TObject);
|
||||||
@ -242,18 +262,11 @@ begin
|
|||||||
AddToInstall;
|
AddToInstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableListBoxDblClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.AvailableTreeViewDblClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
AddToInstall;
|
AddToInstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.InstallListBoxSelectionChange(Sender: TObject;
|
|
||||||
User: boolean);
|
|
||||||
begin
|
|
||||||
UpdateButtonStates;
|
|
||||||
UpdatePackageInfo(InstallListBox);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.InstallPkgSetDialogDestroy(Sender: TObject);
|
procedure TInstallPkgSetDialog.InstallPkgSetDialogDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ClearNewInstalledPackages;
|
ClearNewInstalledPackages;
|
||||||
@ -272,6 +285,12 @@ begin
|
|||||||
AvailablePkgGroupBox.SetBounds(2 * x + w, x, w, Height - 150);
|
AvailablePkgGroupBox.SetBounds(2 * x + w, x, w, Height - 150);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TInstallPkgSetDialog.InstallTreeViewSelectionChanged(Sender: TObject);
|
||||||
|
begin
|
||||||
|
UpdateButtonStates;
|
||||||
|
UpdatePackageInfo(InstallTreeView);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.SaveAndExitButtonClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.SaveAndExitButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if not CheckSelection then exit;
|
if not CheckSelection then exit;
|
||||||
@ -305,6 +324,7 @@ begin
|
|||||||
NewPackageID:=TLazPackageID.Create;
|
NewPackageID:=TLazPackageID.Create;
|
||||||
if (Dependency.LoadPackageResult=lprSuccess)
|
if (Dependency.LoadPackageResult=lprSuccess)
|
||||||
and (Dependency.RequiredPackage<>nil) then begin
|
and (Dependency.RequiredPackage<>nil) then begin
|
||||||
|
// packages can be freed while the dialog runs => use packageid instead
|
||||||
NewPackageID.AssignID(Dependency.RequiredPackage);
|
NewPackageID.AssignID(Dependency.RequiredPackage);
|
||||||
end else begin
|
end else begin
|
||||||
NewPackageID.Name:=Dependency.PackageName;
|
NewPackageID.Name:=Dependency.PackageName;
|
||||||
@ -320,8 +340,12 @@ function TInstallPkgSetDialog.PackageInInstallList(PkgName: string): boolean;
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
for i:=0 to InstallListBox.Items.Count-1 do
|
//for i:=0 to InstallTreeView.Items.TopLvlCount-1 do
|
||||||
if SysUtils.CompareText(ExtractNameFromPkgID(InstallListBox.Items[i]),PkgName)=0 then
|
//debugln(['TInstallPkgSetDialog.PackageInInstallList ',i,' ',ExtractNameFromPkgID(InstallTreeView.Items.TopLvlItems[i].Text),' ',PkgName]);
|
||||||
|
for i:=0 to InstallTreeView.Items.TopLvlCount-1 do
|
||||||
|
if SysUtils.CompareText(
|
||||||
|
ExtractNameFromPkgID(InstallTreeView.Items.TopLvlItems[i].Text),PkgName)=0
|
||||||
|
then
|
||||||
exit(true);
|
exit(true);
|
||||||
Result:=false;
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
@ -332,6 +356,10 @@ var
|
|||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
PkgName: String;
|
PkgName: String;
|
||||||
Pkg: TLazPackageID;
|
Pkg: TLazPackageID;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
APackage: TLazPackage;
|
||||||
|
ImgIndex: LongInt;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
fPackages.Clear;
|
fPackages.Clear;
|
||||||
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
||||||
@ -346,13 +374,29 @@ begin
|
|||||||
if not PackageInInstallList(Pkg.Name) then begin
|
if not PackageInInstallList(Pkg.Name) then begin
|
||||||
PkgName:=Pkg.IDAsString;
|
PkgName:=Pkg.IDAsString;
|
||||||
if (sl.IndexOf(PkgName)<0) then
|
if (sl.IndexOf(PkgName)<0) then
|
||||||
sl.Add(PkgName);
|
sl.AddObject(PkgName,Pkg);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
ANode:=fPackages.FindSuccessor(ANode);
|
ANode:=fPackages.FindSuccessor(ANode);
|
||||||
end;
|
end;
|
||||||
sl.Sort;
|
sl.Sort;
|
||||||
AvailableListBox.Items.Assign(sl);
|
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;
|
sl.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -362,16 +406,40 @@ var
|
|||||||
NewPackageID: TLazPackageID;
|
NewPackageID: TLazPackageID;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
APackage: TLazPackage;
|
||||||
|
ImgIndex: LongInt;
|
||||||
begin
|
begin
|
||||||
sl:=TStringList.Create;
|
sl:=TStringList.Create;
|
||||||
for i:=0 to FNewInstalledPackages.Count-1 do begin
|
for i:=0 to FNewInstalledPackages.Count-1 do begin
|
||||||
NewPackageID:=TLazPackageID(FNewInstalledPackages[i]);
|
NewPackageID:=TLazPackageID(FNewInstalledPackages[i]);
|
||||||
|
APackage:=PackageGraph.FindAPackageWithName(NewPackageID.Name,nil);
|
||||||
|
if APackage<>nil then
|
||||||
|
NewPackageID:=APackage;
|
||||||
s:=NewPackageID.IDAsString;
|
s:=NewPackageID.IDAsString;
|
||||||
sl.Add(s);
|
sl.AddObject(s,NewPackageID);
|
||||||
end;
|
end;
|
||||||
sl.Sort;
|
sl.Sort;
|
||||||
InstallListBox.Items.Assign(sl);
|
InstallTreeView.BeginUpdate;
|
||||||
|
InstallTreeView.Items.Clear;
|
||||||
|
for i:=0 to sl.Count-1 do begin
|
||||||
|
TVNode:=InstallTreeView.Items.Add(nil,sl[i]);
|
||||||
|
NewPackageID:=TLazPackageID(sl.Objects[i]);
|
||||||
|
ImgIndex:=ImgIndexInstallPackage;
|
||||||
|
//debugln(['TInstallPkgSetDialog.UpdateNewInstalledPackages ',NewPackageID.IDAsString,' ',DbgSName(NewPackageID)]);
|
||||||
|
if NewPackageID is TLazPackage then begin
|
||||||
|
APackage:=TLazPackage(NewPackageID);
|
||||||
|
if APackage.Installed<>pitNope then begin
|
||||||
|
// stay installed
|
||||||
|
ImgIndex:=ImgIndexInstalledPackage;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
TVNode.ImageIndex:=ImgIndex;
|
||||||
|
TVNode.SelectedIndex:=ImgIndex;
|
||||||
|
end;
|
||||||
|
InstallTreeView.EndUpdate;
|
||||||
sl.Free;
|
sl.Free;
|
||||||
|
//debugln(['TInstallPkgSetDialog.UpdateNewInstalledPackages END ',InstallTreeView.Items.TopLvlCount]);
|
||||||
UpdateAvailablePackages;
|
UpdateAvailablePackages;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -416,28 +484,28 @@ var
|
|||||||
s: String;
|
s: String;
|
||||||
ListChanged: Boolean;
|
ListChanged: Boolean;
|
||||||
begin
|
begin
|
||||||
UninstallButton.Enabled:=InstallListBox.ItemIndex>=0;
|
UninstallButton.Enabled:=InstallTreeView.Selected<>nil;
|
||||||
AddToInstallButton.Enabled:=AvailableListBox.ItemIndex>=0;
|
AddToInstallButton.Enabled:=AvailableTreeView.Selected<>nil;
|
||||||
// check for changes
|
// check for changes
|
||||||
ListChanged:=false;
|
ListChanged:=false;
|
||||||
Cnt:=0;
|
Cnt:=0;
|
||||||
Dependency:=OldInstalledPackages;
|
Dependency:=OldInstalledPackages;
|
||||||
while Dependency<>nil do begin
|
while Dependency<>nil do begin
|
||||||
s:=DependencyToStr(Dependency);
|
s:=Dependency.PackageName;
|
||||||
if InstallListBox.Items.IndexOf(s)<0 then begin
|
if not PackageInInstallList(s) then begin
|
||||||
ListChanged:=true;
|
ListChanged:=true;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
Dependency:=Dependency.NextRequiresDependency;
|
Dependency:=Dependency.NextRequiresDependency;
|
||||||
inc(Cnt);
|
inc(Cnt);
|
||||||
end;
|
end;
|
||||||
if InstallListBox.Items.Count<>Cnt then
|
if InstallTreeView.Items.TopLvlCount<>Cnt then
|
||||||
ListChanged:=true;
|
ListChanged:=true;
|
||||||
SaveAndExitButton.Enabled:=ListChanged;
|
SaveAndExitButton.Enabled:=ListChanged;
|
||||||
SaveAndRebuildButton.Enabled:=ListChanged;
|
SaveAndRebuildButton.Enabled:=ListChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.UpdatePackageInfo(List: TListBox);
|
procedure TInstallPkgSetDialog.UpdatePackageInfo(Tree: TTreeView);
|
||||||
var
|
var
|
||||||
PkgName: String;
|
PkgName: String;
|
||||||
PkgID: TLazPackageID;
|
PkgID: TLazPackageID;
|
||||||
@ -446,10 +514,10 @@ var
|
|||||||
PkgLink: TPackageLink;
|
PkgLink: TPackageLink;
|
||||||
XMLConfig: TXMLConfig;
|
XMLConfig: TXMLConfig;
|
||||||
begin
|
begin
|
||||||
if List = nil then Exit;
|
if Tree = nil then Exit;
|
||||||
PkgName := '';
|
PkgName := '';
|
||||||
if List.ItemIndex >= 0 then
|
if Tree.Selected <> nil then
|
||||||
PkgName := List.Items[List.ItemIndex];
|
PkgName := Tree.Selected.Text;
|
||||||
|
|
||||||
if PkgName = '' then Exit;
|
if PkgName = '' then Exit;
|
||||||
if Assigned(FSelectedPkg) and (PkgName = FSelectedPkg.IDAsString) then Exit;
|
if Assigned(FSelectedPkg) and (PkgName = FSelectedPkg.IDAsString) then Exit;
|
||||||
@ -638,17 +706,21 @@ var
|
|||||||
j: LongInt;
|
j: LongInt;
|
||||||
APackage: TLazPackage;
|
APackage: TLazPackage;
|
||||||
Additions: TFPList;
|
Additions: TFPList;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
PkgName: String;
|
||||||
begin
|
begin
|
||||||
Additions:=TFPList.Create;
|
Additions:=TFPList.Create;
|
||||||
NewPackageID:=TLazPackageID.Create;
|
NewPackageID:=TLazPackageID.Create;
|
||||||
try
|
try
|
||||||
for i:=0 to AvailableListBox.Items.Count-1 do begin
|
for i:=0 to AvailableTreeView.Items.TopLvlCount-1 do begin
|
||||||
if not AvailableListBox.Selected[i] then continue;
|
TVNode:=AvailableTreeView.Items.TopLvlItems[i];
|
||||||
|
if not TVNode.MultiSelected then continue;
|
||||||
|
PkgName:=TVNode.Text;
|
||||||
// check string
|
// check string
|
||||||
if not NewPackageID.StringToID(AvailableListBox.Items[i]) then begin
|
if not NewPackageID.StringToID(PkgName) then begin
|
||||||
AvailableListBox.Selected[i]:=false;
|
TVNode.Selected:=false;
|
||||||
debugln('TInstallPkgSetDialog.AddToInstallButtonClick invalid ID: ',
|
debugln('TInstallPkgSetDialog.AddToInstallButtonClick invalid ID: ',
|
||||||
AvailableListBox.Items[i]);
|
PkgName);
|
||||||
continue;
|
continue;
|
||||||
end;
|
end;
|
||||||
// check if already in list
|
// check if already in list
|
||||||
@ -656,7 +728,7 @@ begin
|
|||||||
MessageDlg('Double',
|
MessageDlg('Double',
|
||||||
'The package '+NewPackageID.Name+' is already in the list',mtError,
|
'The package '+NewPackageID.Name+' is already in the list',mtError,
|
||||||
[mbCancel],0);
|
[mbCancel],0);
|
||||||
AvailableListBox.Selected[i]:=false;
|
TVNode.Selected:=false;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
// check if a package with same name is already in the list
|
// check if a package with same name is already in the list
|
||||||
@ -665,7 +737,7 @@ begin
|
|||||||
MessageDlg('Conflict',
|
MessageDlg('Conflict',
|
||||||
'There is already a package '+NewPackageID.Name+' in the list',
|
'There is already a package '+NewPackageID.Name+' in the list',
|
||||||
mtError,[mbCancel],0);
|
mtError,[mbCancel],0);
|
||||||
AvailableListBox.Selected[i]:=false;
|
TVNode.Selected:=false;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
// check if package is loaded and has some attributes that prevents
|
// check if package is loaded and has some attributes that prevents
|
||||||
@ -677,7 +749,7 @@ begin
|
|||||||
'The package '+APackage.IDAsString+' is not a design time package.'
|
'The package '+APackage.IDAsString+' is not a design time package.'
|
||||||
+' It can not be installed in the IDE',mtError,
|
+' It can not be installed in the IDE',mtError,
|
||||||
[mbCancel],0);
|
[mbCancel],0);
|
||||||
AvailableListBox.Selected[i]:=false;
|
TVNode.Selected:=false;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -708,18 +780,22 @@ var
|
|||||||
Deletions: TFPList;
|
Deletions: TFPList;
|
||||||
DelPackageID: TLazPackageID;
|
DelPackageID: TLazPackageID;
|
||||||
j: LongInt;
|
j: LongInt;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
PkgName: String;
|
||||||
begin
|
begin
|
||||||
OldPackageID := nil;
|
OldPackageID := nil;
|
||||||
Deletions:=TFPList.Create;
|
Deletions:=TFPList.Create;
|
||||||
try
|
try
|
||||||
for i:=0 to InstallListBox.Items.Count-1 do begin
|
for i:=0 to InstallTreeView.Items.TopLvlCount-1 do begin
|
||||||
if not InstallListBox.Selected[i] then continue;
|
TVNode:=InstallTreeView.Items.TopLvlItems[i];
|
||||||
|
if not TVNode.MultiSelected then continue;
|
||||||
if OldPackageID = nil then
|
if OldPackageID = nil then
|
||||||
OldPackageID:=TLazPackageID.Create;
|
OldPackageID:=TLazPackageID.Create;
|
||||||
if not OldPackageID.StringToID(InstallListBox.Items[i]) then begin
|
PkgName:=TVNode.Text;
|
||||||
InstallListBox.Selected[i]:=false;
|
if not OldPackageID.StringToID(PkgName) then begin
|
||||||
|
TVNode.Selected:=false;
|
||||||
debugln('TInstallPkgSetDialog.AddToUninstallButtonClick invalid ID: ',
|
debugln('TInstallPkgSetDialog.AddToUninstallButtonClick invalid ID: ',
|
||||||
InstallListBox.Items[i]);
|
PkgName);
|
||||||
continue;
|
continue;
|
||||||
end;
|
end;
|
||||||
// ok => add to deletions
|
// ok => add to deletions
|
||||||
@ -732,7 +808,7 @@ begin
|
|||||||
// check if package is a base package
|
// check if package is a base package
|
||||||
if APackage.AutoCreated
|
if APackage.AutoCreated
|
||||||
or PackageGraph.IsStaticBasePackage(APackage.Name) then begin
|
or PackageGraph.IsStaticBasePackage(APackage.Name) then begin
|
||||||
InstallListBox.Selected[i]:=false;
|
TVNode.Selected:=false;
|
||||||
MessageDlg(lisUninstallImpossible,
|
MessageDlg(lisUninstallImpossible,
|
||||||
Format(lisThePackageCanNotBeUninstalledBecauseItIsNeededByTh, [
|
Format(lisThePackageCanNotBeUninstalledBecauseItIsNeededByTh, [
|
||||||
APackage.Name]), mtError, [mbCancel], 0);
|
APackage.Name]), mtError, [mbCancel], 0);
|
||||||
@ -742,7 +818,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// ok => remove from list
|
// ok => remove from list
|
||||||
InstallListBox.ItemIndex:=-1;
|
InstallTreeView.Selected:=nil;
|
||||||
for i:=0 to Deletions.Count-1 do begin
|
for i:=0 to Deletions.Count-1 do begin
|
||||||
DelPackageID:=TLazPackageID(Deletions[i]);
|
DelPackageID:=TLazPackageID(Deletions[i]);
|
||||||
j:=IndexOfNewInstalledPackageID(DelPackageID);
|
j:=IndexOfNewInstalledPackageID(DelPackageID);
|
||||||
|
Loading…
Reference in New Issue
Block a user