mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 12:19:16 +02:00
IDE: install pkg set dlg: draw overlay icons, issue #22815
git-svn-id: trunk@38608 -
This commit is contained in:
parent
14e266b3ba
commit
160fa589a7
@ -69,6 +69,7 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
ShowLines = False
|
ShowLines = False
|
||||||
ShowRoot = False
|
ShowRoot = False
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
|
OnAdvancedCustomDrawItem = TreeViewAdvancedCustomDrawItem
|
||||||
OnDblClick = InstallTreeViewDblClick
|
OnDblClick = InstallTreeViewDblClick
|
||||||
OnSelectionChanged = InstallTreeViewSelectionChanged
|
OnSelectionChanged = InstallTreeViewSelectionChanged
|
||||||
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoToolTips, tvoThemedDraw]
|
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoToolTips, tvoThemedDraw]
|
||||||
@ -123,6 +124,7 @@ object InstallPkgSetDialog: TInstallPkgSetDialog
|
|||||||
ShowLines = False
|
ShowLines = False
|
||||||
ShowRoot = False
|
ShowRoot = False
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
OnAdvancedCustomDrawItem = TreeViewAdvancedCustomDrawItem
|
||||||
OnDblClick = AvailableTreeViewDblClick
|
OnDblClick = AvailableTreeViewDblClick
|
||||||
OnKeyPress = AvailableTreeViewKeyPress
|
OnKeyPress = AvailableTreeViewKeyPress
|
||||||
OnSelectionChanged = AvailableTreeViewSelectionChanged
|
OnSelectionChanged = AvailableTreeViewSelectionChanged
|
||||||
|
@ -40,9 +40,9 @@ 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, EditBtn,
|
KeywordFuncLists, StdCtrls, Buttons, FileUtil, ExtCtrls, ComCtrls, EditBtn,
|
||||||
LCLType, AVL_Tree, Laz2_XMLCfg, TreeFilterEdit, PackageIntf, IDEImagesIntf,
|
LCLType, ImgList, AVL_Tree, Laz2_XMLCfg, TreeFilterEdit, PackageIntf,
|
||||||
IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, EnvironmentOpts, InputHistory,
|
IDEImagesIntf, IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, EnvironmentOpts,
|
||||||
LazConf, IDEProcs, PackageDefs, PackageSystem, PackageLinks,
|
InputHistory, LazConf, IDEProcs, PackageDefs, PackageSystem, PackageLinks,
|
||||||
IDEContextHelpEdit;
|
IDEContextHelpEdit;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -57,6 +57,7 @@ type
|
|||||||
LPKFilename: string;
|
LPKFilename: string;
|
||||||
InLazSrc: boolean; // lpk is in lazarus source directory
|
InLazSrc: boolean; // lpk is in lazarus source directory
|
||||||
Installed: TPackageInstallType;
|
Installed: TPackageInstallType;
|
||||||
|
Base: boolean; // is base package, can not be uninstalled
|
||||||
|
|
||||||
LPKParsed: boolean;
|
LPKParsed: boolean;
|
||||||
Author: string;
|
Author: string;
|
||||||
@ -90,6 +91,9 @@ type
|
|||||||
SaveAndRebuildButton: TBitBtn;
|
SaveAndRebuildButton: TBitBtn;
|
||||||
UninstallButton: TBitBtn;
|
UninstallButton: TBitBtn;
|
||||||
procedure AddToInstallButtonClick(Sender: TObject);
|
procedure AddToInstallButtonClick(Sender: TObject);
|
||||||
|
procedure TreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView;
|
||||||
|
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
|
||||||
|
var PaintImages, DefaultDraw: Boolean);
|
||||||
procedure AvailableTreeViewDblClick(Sender: TObject);
|
procedure AvailableTreeViewDblClick(Sender: TObject);
|
||||||
procedure AvailableTreeViewKeyPress(Sender: TObject; var Key: char);
|
procedure AvailableTreeViewKeyPress(Sender: TObject; var Key: char);
|
||||||
procedure AvailableTreeViewSelectionChanged(Sender: TObject);
|
procedure AvailableTreeViewSelectionChanged(Sender: TObject);
|
||||||
@ -337,6 +341,39 @@ begin
|
|||||||
AddToInstall;
|
AddToInstall;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TInstallPkgSetDialog.TreeViewAdvancedCustomDrawItem(
|
||||||
|
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
|
||||||
|
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
|
||||||
|
var
|
||||||
|
Info: TIPSPkgInfo;
|
||||||
|
NodeRect: TRect;
|
||||||
|
x: Integer;
|
||||||
|
Images: TCustomImageList;
|
||||||
|
CurCanvas: TCanvas;
|
||||||
|
y: Integer;
|
||||||
|
Tree: TTreeView;
|
||||||
|
begin
|
||||||
|
Tree:=Sender as TTreeView;
|
||||||
|
if Stage=cdPostPaint then begin
|
||||||
|
Info:=FindPkgInfo(Node.Text);
|
||||||
|
if Info=nil then exit;
|
||||||
|
Images:=Tree.Images;
|
||||||
|
CurCanvas:=Tree.Canvas;
|
||||||
|
|
||||||
|
NodeRect:=Node.DisplayRect(False);
|
||||||
|
x:=Node.DisplayIconLeft+1;
|
||||||
|
y:=(NodeRect.Top+NodeRect.Bottom-Images.Height) div 2;
|
||||||
|
if Info.InLazSrc then
|
||||||
|
Images.Draw(CurCanvas,x,y,ImgIndexOverlayLazarusPackage);
|
||||||
|
if Info.Base then
|
||||||
|
Images.Draw(CurCanvas,x,y,ImgIndexOverlayBasePackage);
|
||||||
|
if Info.PkgType=lptRunTimeOnly then
|
||||||
|
Images.Draw(CurCanvas,x,y,ImgIndexOverlayRuntimePackage);
|
||||||
|
if Info.PkgType=lptDesignTime then
|
||||||
|
Images.Draw(CurCanvas,x,y,ImgIndexOverlayDesigntimePackage);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TInstallPkgSetDialog.AvailableTreeViewDblClick(Sender: TObject);
|
procedure TInstallPkgSetDialog.AvailableTreeViewDblClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
AddToInstall;
|
AddToInstall;
|
||||||
@ -561,7 +598,6 @@ begin
|
|||||||
Info.LPKFilename:=Link.GetEffectiveFilename;
|
Info.LPKFilename:=Link.GetEffectiveFilename;
|
||||||
end else
|
end else
|
||||||
exit;
|
exit;
|
||||||
Info.InLazSrc:=FileIsInPath(Info.LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory);
|
|
||||||
|
|
||||||
if OldInfo<>nil then begin
|
if OldInfo<>nil then begin
|
||||||
if Info.LPKParsed
|
if Info.LPKParsed
|
||||||
@ -574,6 +610,10 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Info.InLazSrc:=FileIsInPath(Info.LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory);
|
||||||
|
Info.Base:=PackageGraph.IsStaticBasePackage(Info.ID.Name);
|
||||||
|
|
||||||
fAvailablePackages.Add(Info);
|
fAvailablePackages.Add(Info);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -672,7 +712,7 @@ begin
|
|||||||
AddState(lisInstalled)
|
AddState(lisInstalled)
|
||||||
else
|
else
|
||||||
AddState(lisNotInstalled);
|
AddState(lisNotInstalled);
|
||||||
if PackageGraph.IsStaticBasePackage(FSelectedPkg.ID.Name) then
|
if FSelectedPkg.Base then
|
||||||
AddState(lisPckExplBase);
|
AddState(lisPckExplBase);
|
||||||
AddState(LazPackageTypeIdents[FSelectedPkg.PkgType]);
|
AddState(LazPackageTypeIdents[FSelectedPkg.PkgType]);
|
||||||
PkgInfoMemo.Lines.Add(InfoStr);
|
PkgInfoMemo.Lines.Add(InfoStr);
|
||||||
|
Loading…
Reference in New Issue
Block a user