mirror of https://gitlab.com/basile.b/dexed.git
added symbol smart-filtering
This commit is contained in:
parent
986c2f36ca
commit
0eb82a0dfe
|
@ -1,7 +1,7 @@
|
|||
inherited CESymbolListWidget: TCESymbolListWidget
|
||||
Left = 1548
|
||||
Left = 985
|
||||
Height = 430
|
||||
Top = 457
|
||||
Top = 215
|
||||
Width = 310
|
||||
Caption = 'Symbol list'
|
||||
ClientHeight = 430
|
||||
|
@ -25,18 +25,16 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
Align = alClient
|
||||
BorderSpacing.Around = 4
|
||||
DefaultItemHeight = 18
|
||||
ExpandSignType = tvestPlusMinus
|
||||
HideSelection = False
|
||||
Images = imgList
|
||||
ReadOnly = True
|
||||
RightClickSelect = True
|
||||
RowSelect = True
|
||||
ScrollBars = ssAutoBoth
|
||||
SelectionColor = clActiveBorder
|
||||
TabOrder = 0
|
||||
OnDeletion = TreeDeletion
|
||||
OnKeyPress = TreeKeyPress
|
||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
Items.Data = {
|
||||
F9FFFFFF02000B000000000000000000000000000000FFFFFFFF000000000000
|
||||
00000005000000416C696173010000000100000001000000FFFFFFFF00000000
|
||||
|
@ -73,6 +71,7 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
Top = 2
|
||||
Width = 272
|
||||
OnAfterFilter = TreeFilterEdit1AfterFilter
|
||||
OnFilterItem = TreeFilterEdit1FilterItem
|
||||
ButtonWidth = 28
|
||||
NumGlyphs = 1
|
||||
Align = alClient
|
||||
|
@ -80,6 +79,7 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
BorderSpacing.Around = 2
|
||||
MaxLength = 0
|
||||
TabOrder = 0
|
||||
OnMouseEnter = TreeFilterEdit1MouseEnter
|
||||
FilteredTreeview = Tree
|
||||
end
|
||||
object btnRefresh: TBitBtn
|
||||
|
|
|
@ -7,7 +7,7 @@ interface
|
|||
uses
|
||||
Classes, SysUtils, TreeFilterEdit, Forms, Controls, Graphics, ExtCtrls, Menus,
|
||||
ComCtrls, ce_widget, jsonparser, process, actnlist, Buttons, Clipbrd, LCLProc,
|
||||
ce_common, ce_observer, ce_synmemo, ce_interfaces, ce_writableComponent;
|
||||
ce_common, ce_observer, ce_synmemo, ce_interfaces, ce_writableComponent, EditBtn;
|
||||
|
||||
type
|
||||
|
||||
|
@ -77,18 +77,22 @@ type
|
|||
fRefreshOnFocus: boolean;
|
||||
fShowChildCategories: boolean;
|
||||
fAutoRefreshDelay: Integer;
|
||||
fSmartFilter: boolean;
|
||||
published
|
||||
property autoRefresh: boolean read fAutoRefresh write fAutoRefresh;
|
||||
property refreshOnChange: boolean read fRefreshOnChange write fRefreshOnChange;
|
||||
property refreshOnFocus: boolean read fRefreshOnFocus write fRefreshOnFocus default true;
|
||||
property showChildCategories: boolean read fShowChildCategories write fShowChildCategories default true;
|
||||
property autoRefreshDelay: Integer read fAutoRefreshDelay write fAutoRefreshDelay default 1500;
|
||||
property refreshOnFocus: boolean read fRefreshOnFocus write fRefreshOnFocus;
|
||||
property showChildCategories: boolean read fShowChildCategories write fShowChildCategories;
|
||||
property autoRefreshDelay: Integer read fAutoRefreshDelay write fAutoRefreshDelay;
|
||||
property smartFilter: boolean read fSmartFilter write fSmartFilter;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure AssignTo(Dest: TPersistent); override;
|
||||
end;
|
||||
|
||||
{ TCESymbolListWidget }
|
||||
|
||||
TCESymbolListWidget = class(TCEWidget, ICEMultiDocObserver, ICEEditableOptions)
|
||||
btnRefresh: TBitBtn;
|
||||
imgList: TImageList;
|
||||
|
@ -98,6 +102,9 @@ type
|
|||
procedure btnRefreshClick(Sender: TObject);
|
||||
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
|
||||
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean
|
||||
): Boolean;
|
||||
procedure TreeFilterEdit1MouseEnter(Sender: TObject);
|
||||
procedure TreeKeyPress(Sender: TObject; var Key: char);
|
||||
private
|
||||
fOptions: TCESymbolListOptions;
|
||||
|
@ -115,6 +122,7 @@ type
|
|||
fRefreshOnChange: boolean;
|
||||
fRefreshOnFocus: boolean;
|
||||
fShowChildCategories: boolean;
|
||||
fSmartFilter: boolean;
|
||||
fToolOutput: TMemoryStream;
|
||||
ndAlias, ndClass, ndEnum, ndFunc, ndUni: TTreeNode;
|
||||
ndImp, ndIntf, ndMix, ndStruct, ndTmp, ndVar: TTreeNode;
|
||||
|
@ -230,6 +238,7 @@ begin
|
|||
inherited;
|
||||
fRefreshOnFocus := true;
|
||||
fShowChildCategories := true;
|
||||
fSmartFilter := true;
|
||||
fAutoRefreshDelay := 1500;
|
||||
end;
|
||||
|
||||
|
@ -246,6 +255,7 @@ begin
|
|||
fRefreshOnChange := widg.fRefreshOnChange;
|
||||
fAutoRefresh := widg.fAutoRefresh;
|
||||
fShowChildCategories := widg.fShowChildCategories;
|
||||
fSmartFilter := widg.fSmartFilter;
|
||||
end
|
||||
else inherited;
|
||||
end;
|
||||
|
@ -263,6 +273,7 @@ begin
|
|||
widg.fRefreshOnChange := fRefreshOnChange;
|
||||
widg.fAutoRefresh := fAutoRefresh;
|
||||
widg.fShowChildCategories := fShowChildCategories;
|
||||
widg.fSmartFilter := fSmartFilter;
|
||||
//
|
||||
widg.fActAutoRefresh.Checked := fAutoRefresh;
|
||||
widg.fActRefreshOnChange.Checked:= fRefreshOnChange;
|
||||
|
@ -312,7 +323,8 @@ begin
|
|||
fSyms := TSymbolList.create(nil);
|
||||
fToolOutput := TMemoryStream.create;
|
||||
//
|
||||
fOptions := TCESymbolListOptions.Create(nil);
|
||||
fOptions := TCESymbolListOptions.Create(self);
|
||||
fOptions.Name:= 'symbolListOptions';
|
||||
fname := getCoeditDocPath + OptsFname;
|
||||
if FileExists(fname) then
|
||||
fOptions.loadFromFile(fname);
|
||||
|
@ -549,6 +561,26 @@ begin
|
|||
updateVisibleCat;
|
||||
end;
|
||||
|
||||
function TCESymbolListWidget.TreeFilterEdit1FilterItem(Item: TObject; out
|
||||
Done: Boolean): Boolean;
|
||||
begin
|
||||
if not fSmartFilter then exit;
|
||||
//
|
||||
if TreeFilterEdit1.Filter <> '' then
|
||||
tree.FullExpand
|
||||
else if tree.Selected = nil then
|
||||
tree.FullCollapse
|
||||
else tree.MakeSelectionVisible;
|
||||
result := false;
|
||||
end;
|
||||
|
||||
procedure TCESymbolListWidget.TreeFilterEdit1MouseEnter(Sender: TObject);
|
||||
begin
|
||||
if not fSmartFilter then exit;
|
||||
//
|
||||
tree.Selected := nil;
|
||||
end;
|
||||
|
||||
procedure TCESymbolListWidget.TreeKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if Key = #13 then TreeDblClick(nil);
|
||||
|
|
Loading…
Reference in New Issue