IDE: Add a filter clear button in Code Explorer. Merge request !74 by Sergey Larin.

This commit is contained in:
Juha 2022-02-24 12:39:00 +02:00
parent b0d263f11d
commit cd0b898131
2 changed files with 37 additions and 6 deletions

View File

@ -55,7 +55,7 @@ object CodeExplorerView: TCodeExplorerView
ClientHeight = 24 ClientHeight = 24
ClientWidth = 218 ClientWidth = 218
TabOrder = 0 TabOrder = 0
object CodeFilterEdit: TEdit object CodeFilterEdit: TEditButton
AnchorSideLeft.Control = CodeTreeviewButtonPanel AnchorSideLeft.Control = CodeTreeviewButtonPanel
AnchorSideTop.Control = CodeTreeviewButtonPanel AnchorSideTop.Control = CodeTreeviewButtonPanel
AnchorSideRight.Control = CodeRefreshSpeedButton AnchorSideRight.Control = CodeRefreshSpeedButton
@ -64,8 +64,15 @@ object CodeExplorerView: TCodeExplorerView
Top = 0 Top = 0
Width = 149 Width = 149
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Right = 2
ButtonWidth = 23
MaxLength = 0
NumGlyphs = 1
OnButtonClick = FilterEditButtonClick
OnChange = CodeFilterEditChange OnChange = CodeFilterEditChange
OnEnter = FilterEditEnter OnEnter = FilterEditEnter
PasswordChar = #0
Spacing = 2
TabOrder = 0 TabOrder = 0
Text = 'CodeFilterEdit' Text = 'CodeFilterEdit'
end end
@ -131,15 +138,22 @@ object CodeExplorerView: TCodeExplorerView
ClientHeight = 24 ClientHeight = 24
ClientWidth = 218 ClientWidth = 218
TabOrder = 0 TabOrder = 0
object DirectivesFilterEdit: TEdit object DirectivesFilterEdit: TEditButton
AnchorSideRight.Control = DirRefreshSpeedButton AnchorSideRight.Control = DirRefreshSpeedButton
Left = 0 Left = 0
Height = 24 Height = 24
Top = 0 Top = 0
Width = 172 Width = 172
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Right = 2
ButtonWidth = 23
MaxLength = 0
NumGlyphs = 1
OnButtonClick = FilterEditButtonClick
OnChange = DirectivesFilterEditChange OnChange = DirectivesFilterEditChange
OnEnter = FilterEditEnter OnEnter = FilterEditEnter
PasswordChar = #0
Spacing = 2
TabOrder = 0 TabOrder = 0
Text = 'DirectivesFilterEdit' Text = 'DirectivesFilterEdit'
end end

View File

@ -43,7 +43,7 @@ uses
// LazUtils // LazUtils
LazStringUtils, LazLoggerBase, LazStringUtils, LazLoggerBase,
// LCL // LCL
LCLProc, LCLType, Forms, Controls, Dialogs, Buttons, ComCtrls, Menus, StdCtrls, ExtCtrls, LCLProc, LCLType, Forms, Controls, Dialogs, Buttons, ComCtrls, Menus, ExtCtrls, EditBtn,
// CodeTools // CodeTools
FileProcs, BasicCodeTools, CustomCodeTool, CodeToolManager, CodeAtom, FileProcs, BasicCodeTools, CustomCodeTool, CodeToolManager, CodeAtom,
CodeCache, CodeTree, KeywordFuncLists, FindDeclarationTool, DirectivesTree, CodeCache, CodeTree, KeywordFuncLists, FindDeclarationTool, DirectivesTree,
@ -113,10 +113,10 @@ type
{ TCodeExplorerView } { TCodeExplorerView }
TCodeExplorerView = class(TForm) TCodeExplorerView = class(TForm)
CodeFilterEdit: TEdit; CodeFilterEdit: TEditButton;
CodePage: TTabSheet; CodePage: TTabSheet;
CodeTreeview: TTreeView; CodeTreeview: TTreeView;
DirectivesFilterEdit: TEdit; DirectivesFilterEdit: TEditButton;
DirectivesPage: TTabSheet; DirectivesPage: TTabSheet;
DirectivesTreeView: TTreeView; DirectivesTreeView: TTreeView;
IdleTimer1: TIdleTimer; IdleTimer1: TIdleTimer;
@ -137,6 +137,7 @@ type
{%H-}Shift: TShiftState; X, Y: Integer); {%H-}Shift: TShiftState; X, Y: Integer);
procedure DirectivesFilterEditChange(Sender: TObject); procedure DirectivesFilterEditChange(Sender: TObject);
procedure DirRefreshSpeedButtonClick(Sender: TObject); procedure DirRefreshSpeedButtonClick(Sender: TObject);
procedure FilterEditButtonClick(Sender: TObject);
procedure FilterEditEnter(Sender: TObject); procedure FilterEditEnter(Sender: TObject);
procedure FormActivate(Sender: TObject); procedure FormActivate(Sender: TObject);
procedure IdleTimer1Timer(Sender: TObject); procedure IdleTimer1Timer(Sender: TObject);
@ -486,6 +487,8 @@ begin
DirOptionsSpeedButton.Hint:=lisOptions; DirOptionsSpeedButton.Hint:=lisOptions;
CodeFilterEdit.TextHint:=lisCEFilter; CodeFilterEdit.TextHint:=lisCEFilter;
DirectivesFilterEdit.TextHint:=lisCEFilter; DirectivesFilterEdit.TextHint:=lisCEFilter;
CodeFilterEdit.Button.Enabled:=false;
DirectivesFilterEdit.Button.Enabled:=false;
AssignAllImages; AssignAllImages;
// assign the root TMenuItem to the registered menu root. // assign the root TMenuItem to the registered menu root.
@ -543,9 +546,15 @@ begin
RefreshDirectives(true); RefreshDirectives(true);
end; end;
procedure TCodeExplorerView.FilterEditButtonClick(Sender: TObject);
begin
(Sender as TEditButton).Text:='';
IdleTimer1Timer(nil); // immediately reset filter
end;
procedure TCodeExplorerView.FilterEditEnter(Sender: TObject); procedure TCodeExplorerView.FilterEditEnter(Sender: TObject);
begin begin
(Sender as TEdit).SelectAll; (Sender as TEditButton).SelectAll;
end; end;
procedure TCodeExplorerView.FormActivate(Sender: TObject); procedure TCodeExplorerView.FormActivate(Sender: TObject);
@ -725,6 +734,9 @@ begin
CheckOnIdle; CheckOnIdle;
end; end;
type
TSpeedButtonFriend = class(TSpeedButton);
procedure TCodeExplorerView.AssignAllImages; procedure TCodeExplorerView.AssignAllImages;
begin begin
IDEImages.AssignImage(CodeRefreshSpeedButton, 'laz_refresh'); IDEImages.AssignImage(CodeRefreshSpeedButton, 'laz_refresh');
@ -758,6 +770,9 @@ begin
// sections // sections
ImgIDSection := IDEImages.GetImageIndex('ce_section'); ImgIDSection := IDEImages.GetImageIndex('ce_section');
ImgIDHint := IDEImages.GetImageIndex('state_hint'); ImgIDHint := IDEImages.GetImageIndex('state_hint');
TSpeedButtonFriend(CodeFilterEdit.Button).ButtonGlyph.LCLGlyphName := ResBtnListFilter;
TSpeedButtonFriend(DirectivesFilterEdit.Button).ButtonGlyph.LCLGlyphName := ResBtnListFilter;
end; end;
function TCodeExplorerView.GetCodeNodeDescription(ACodeTool: TCodeTool; function TCodeExplorerView.GetCodeNodeDescription(ACodeTool: TCodeTool;
@ -2587,6 +2602,7 @@ var
TheFilter: String; TheFilter: String;
begin begin
TheFilter:=GetCodeFilter; TheFilter:=GetCodeFilter;
CodeFilterEdit.Button.Enabled:=TheFilter<>'';
if FLastCodeFilter=TheFilter then exit; if FLastCodeFilter=TheFilter then exit;
if (FUpdateCount>0) or (CurrentPage<>cepCode) then begin if (FUpdateCount>0) or (CurrentPage<>cepCode) then begin
Include(FFlags,cevCodeRefreshNeeded); Include(FFlags,cevCodeRefreshNeeded);
@ -2606,6 +2622,7 @@ var
TheFilter: String; TheFilter: String;
begin begin
TheFilter:=DirectivesFilterEdit.Text; TheFilter:=DirectivesFilterEdit.Text;
DirectivesFilterEdit.Button.Enabled:=TheFilter<>'';
if FLastDirectivesFilter=TheFilter then exit; if FLastDirectivesFilter=TheFilter then exit;
if (FUpdateCount>0) or (CurrentPage<>cepDirectives) then begin if (FUpdateCount>0) or (CurrentPage<>cepDirectives) then begin
Include(FFlags,cevDirectivesRefreshNeeded); Include(FFlags,cevDirectivesRefreshNeeded);