IDE: clean package dependencies: select all, select none

git-svn-id: trunk@40771 -
This commit is contained in:
mattias 2013-04-09 19:50:08 +00:00
parent a5be13c6ff
commit 4cd89917de
4 changed files with 99 additions and 31 deletions

View File

@ -5665,6 +5665,7 @@ resourcestring
+'dependencies are not needed, because of the automatic transitivity ' +'dependencies are not needed, because of the automatic transitivity '
+'between package dependencies.'; +'between package dependencies.';
lisPkgDeleteDependencies = 'Delete dependencies'; lisPkgDeleteDependencies = 'Delete dependencies';
lisPkgClearSelection = 'Clear Selection';
implementation implementation

View File

@ -10,35 +10,19 @@ object CleanPkgDepsDlg: TCleanPkgDepsDlg
OnDestroy = FormDestroy OnDestroy = FormDestroy
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.1' LCLVersion = '1.1'
object ButtonPanel1: TButtonPanel
Left = 6
Height = 36
Top = 338
Width = 510
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True
HelpButton.Name = 'HelpButton'
HelpButton.DefaultCaption = True
CloseButton.Name = 'CloseButton'
CloseButton.DefaultCaption = True
CancelButton.Name = 'CancelButton'
CancelButton.DefaultCaption = True
TabOrder = 0
ShowButtons = [pbOK, pbCancel]
end
object TransitivityGroupBox: TGroupBox object TransitivityGroupBox: TGroupBox
Left = 0 Left = 0
Height = 332 Height = 338
Top = 0 Top = 0
Width = 522 Width = 522
Align = alClient Align = alClient
Caption = 'TransitivityGroupBox' Caption = 'TransitivityGroupBox'
ClientHeight = 315 ClientHeight = 321
ClientWidth = 518 ClientWidth = 518
TabOrder = 1 TabOrder = 0
object TransitivityTreeView: TTreeView object TransitivityTreeView: TTreeView
Left = 0 Left = 0
Height = 300 Height = 306
Top = 15 Top = 15
Width = 518 Width = 518
Align = alClient Align = alClient
@ -59,4 +43,63 @@ object CleanPkgDepsDlg: TCleanPkgDepsDlg
WordWrap = True WordWrap = True
end end
end end
object BtnPanel: TPanel
Left = 0
Height = 42
Top = 338
Width = 522
Align = alBottom
AutoSize = True
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.HorizontalSpacing = 6
ClientHeight = 42
ClientWidth = 522
TabOrder = 1
object DeleteSelectedBitBtn: TBitBtn
Left = 308
Height = 28
Top = 7
Width = 134
Align = alRight
AutoSize = True
Caption = 'DeleteSelectedBitBtn'
ModalResult = 1
TabOrder = 0
end
object CancelBitBtn: TBitBtn
Left = 448
Height = 28
Top = 7
Width = 67
Align = alRight
AutoSize = True
Cancel = True
Default = True
DefaultCaption = True
Kind = bkCancel
ModalResult = 2
TabOrder = 1
end
object SelectAllBitBtn: TBitBtn
Left = 88
Height = 28
Top = 7
Width = 75
Align = alLeft
Caption = 'SelectAllBitBtn'
OnClick = SelectAllBitBtnClick
TabOrder = 2
end
object SelectNoneBitBtn: TBitBtn
Left = 7
Height = 28
Top = 7
Width = 75
Align = alLeft
Caption = 'SelectNoneBitBtn'
OnClick = SelectNoneBitBtnClick
TabOrder = 3
end
end
end end

View File

@ -29,7 +29,7 @@ interface
uses uses
Classes, SysUtils, contnrs, FileUtil, AvgLvlTree, LazLogger, LvlGraphCtrl, Classes, SysUtils, contnrs, FileUtil, AvgLvlTree, LazLogger, LvlGraphCtrl,
Forms, Controls, Graphics, Dialogs, ButtonPanel, ComCtrls, ExtCtrls, StdCtrls, Forms, Controls, Graphics, Dialogs, ButtonPanel, ComCtrls, ExtCtrls, StdCtrls,
LazarusIDEStrConsts, Project, PackageDefs, IDEImagesIntf; Buttons, LazarusIDEStrConsts, Project, PackageDefs, IDEImagesIntf;
const const
CPDProjectName = '-Project-'; CPDProjectName = '-Project-';
@ -46,13 +46,18 @@ type
{ TCleanPkgDepsDlg } { TCleanPkgDepsDlg }
TCleanPkgDepsDlg = class(TForm) TCleanPkgDepsDlg = class(TForm)
ButtonPanel1: TButtonPanel; CancelBitBtn: TBitBtn;
DeleteSelectedBitBtn: TBitBtn;
BtnPanel: TPanel;
SelectAllBitBtn: TBitBtn;
SelectNoneBitBtn: TBitBtn;
TransitivityGroupBox: TGroupBox; TransitivityGroupBox: TGroupBox;
TransitivityLabel: TLabel; TransitivityLabel: TLabel;
TransitivityTreeView: TTreeView; TransitivityTreeView: TTreeView;
procedure ButtonPanel1OKButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure SelectAllBitBtnClick(Sender: TObject);
procedure SelectNoneBitBtnClick(Sender: TObject);
procedure TransitivityTreeViewMouseDown(Sender: TObject; procedure TransitivityTreeViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private private
@ -141,8 +146,10 @@ begin
TransitivityLabel.Caption:= TransitivityLabel.Caption:=
lisPkgTheFollowingDependenciesAreNotNeededBecauseOfTheAu; lisPkgTheFollowingDependenciesAreNotNeededBecauseOfTheAu;
TransitivityTreeView.Images:=IDEImages.Images_16; TransitivityTreeView.Images:=IDEImages.Images_16;
ButtonPanel1.OKButton.Caption:=lisPkgDeleteDependencies;
ButtonPanel1.OKButton.OnClick:=@ButtonPanel1OKButtonClick; SelectAllBitBtn.Caption:=lisMenuSelectAll;
SelectNoneBitBtn.Caption:=lisPkgClearSelection;
DeleteSelectedBitBtn.Caption:=lisPkgDeleteDependencies;
end; end;
procedure TCleanPkgDepsDlg.FormDestroy(Sender: TObject); procedure TCleanPkgDepsDlg.FormDestroy(Sender: TObject);
@ -150,6 +157,22 @@ begin
ClearTreeData; ClearTreeData;
end; end;
procedure TCleanPkgDepsDlg.SelectAllBitBtnClick(Sender: TObject);
var
i: Integer;
begin
for i:=0 to TransitivityTreeView.Items.Count-1 do
TVNodeChecked[TransitivityTreeView.Items[i]]:=true;
end;
procedure TCleanPkgDepsDlg.SelectNoneBitBtnClick(Sender: TObject);
var
i: Integer;
begin
for i:=0 to TransitivityTreeView.Items.Count-1 do
TVNodeChecked[TransitivityTreeView.Items[i]]:=false;
end;
procedure TCleanPkgDepsDlg.TransitivityTreeViewMouseDown(Sender: TObject; procedure TCleanPkgDepsDlg.TransitivityTreeViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var var
@ -164,11 +187,13 @@ end;
function TCleanPkgDepsDlg.GetTVNodeChecked(TVNode: TTreeNode): boolean; function TCleanPkgDepsDlg.GetTVNodeChecked(TVNode: TTreeNode): boolean;
begin begin
Result:=(TVNode<>nil) and (TVNode.ImageIndex=ImgIndexDelete); Result:=(TVNode<>nil) and (TVNode.Data<>nil) and (TVNode.ImageIndex=ImgIndexDelete);
end; end;
procedure TCleanPkgDepsDlg.SetTVNodeChecked(TVNode: TTreeNode; AValue: boolean); procedure TCleanPkgDepsDlg.SetTVNodeChecked(TVNode: TTreeNode; AValue: boolean);
begin begin
if TVNode.Data=nil then exit;
if TVNodeChecked[TVNode]=AValue then exit;
if AValue then if AValue then
TVNode.ImageIndex:=ImgIndexDelete TVNode.ImageIndex:=ImgIndexDelete
else else
@ -177,10 +202,6 @@ begin
UpdateButtons; UpdateButtons;
end; end;
procedure TCleanPkgDepsDlg.ButtonPanel1OKButtonClick(Sender: TObject);
begin
end;
procedure TCleanPkgDepsDlg.SetOwners(AValue: TFPList); procedure TCleanPkgDepsDlg.SetOwners(AValue: TFPList);
begin begin
if FOwners=AValue then Exit; if FOwners=AValue then Exit;
@ -238,7 +259,7 @@ begin
if TVNodeChecked[TVNode] then if TVNodeChecked[TVNode] then
CheckCnt+=1; CheckCnt+=1;
end; end;
ButtonPanel1.OKButton.Enabled:=CheckCnt>0; DeleteSelectedBitBtn.Enabled:=CheckCnt>0;
end; end;
procedure TCleanPkgDepsDlg.AddTransitivities(NodeCaption: string; procedure TCleanPkgDepsDlg.AddTransitivities(NodeCaption: string;

View File

@ -178,6 +178,9 @@ begin
end else begin end else begin
Pkg:=PackageGraph.FindPackageWithName(Info.Owner,nil); Pkg:=PackageGraph.FindPackageWithName(Info.Owner,nil);
if Pkg<>nil then begin if Pkg<>nil then begin
// open package editor
if Assigned(OnOpenPackage) then
OnOpenPackage(Self,Pkg);
end; end;
end; end;