mirror of https://gitlab.com/basile.b/dexed.git
fix, messages widget, te message filter could break the category filter
This commit is contained in:
parent
c8556aacfa
commit
159bfdf0f2
|
@ -145,6 +145,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 3
|
Top = 3
|
||||||
Width = 199
|
Width = 199
|
||||||
|
OnAfterFilter = TreeFilterEdit1AfterFilter
|
||||||
ButtonWidth = 23
|
ButtonWidth = 23
|
||||||
NumGlyphs = 1
|
NumGlyphs = 1
|
||||||
Align = alRight
|
Align = alRight
|
||||||
|
@ -152,6 +153,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
|
||||||
BorderSpacing.Around = 1
|
BorderSpacing.Around = 1
|
||||||
MaxLength = 0
|
MaxLength = 0
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
OnButtonClick = TreeFilterEdit1ButtonClick
|
||||||
FilteredTreeview = List
|
FilteredTreeview = List
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,13 +8,10 @@ uses
|
||||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
|
||||||
lcltype, ce_widget, ActnList, Menus, clipbrd, AnchorDocking, TreeFilterEdit,
|
lcltype, ce_widget, ActnList, Menus, clipbrd, AnchorDocking, TreeFilterEdit,
|
||||||
Buttons, math, process, ce_writableComponent, ce_common, ce_synmemo, GraphType,
|
Buttons, math, process, ce_writableComponent, ce_common, ce_synmemo, GraphType,
|
||||||
ce_dlangutils, ce_interfaces, ce_observer, ce_symstring, ce_processes, ce_sharedres;
|
ce_dlangutils, ce_interfaces, ce_observer, ce_symstring, ce_processes, ce_sharedres, EditBtn;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
//TODO-cbugfix: the filter does not respect the categories
|
|
||||||
// e.g filter, reset filter, all the messages are displayed regardless of the selected category.
|
|
||||||
|
|
||||||
(**
|
(**
|
||||||
* the struct linked to a log message. allow to be filtered.
|
* the struct linked to a log message. allow to be filtered.
|
||||||
*)
|
*)
|
||||||
|
@ -78,6 +75,8 @@ type
|
||||||
procedure ListCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
|
procedure ListCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
|
||||||
State: TCustomDrawState; var DefaultDraw: Boolean);
|
State: TCustomDrawState; var DefaultDraw: Boolean);
|
||||||
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
|
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||||
|
procedure TreeFilterEdit1ButtonClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
fDemanglerAvailable: boolean;
|
fDemanglerAvailable: boolean;
|
||||||
fMsgColors: array[TCEAppMessageKind] of TColor;
|
fMsgColors: array[TCEAppMessageKind] of TColor;
|
||||||
|
@ -101,6 +100,8 @@ type
|
||||||
fBtns: array[TCEAppMessageCtxt] of TToolButton;
|
fBtns: array[TCEAppMessageCtxt] of TToolButton;
|
||||||
fToDemangle: TStringList;
|
fToDemangle: TStringList;
|
||||||
fToDemangleObjs: TFPList;
|
fToDemangleObjs: TFPList;
|
||||||
|
fFiltering: boolean;
|
||||||
|
function itemShouldBeVisible(item: TTreeNode; aCtxt: TCEAppMessageCtxt): boolean;
|
||||||
procedure demanglerOutput(sender: TObject);
|
procedure demanglerOutput(sender: TObject);
|
||||||
procedure filterMessages(aCtxt: TCEAppMessageCtxt);
|
procedure filterMessages(aCtxt: TCEAppMessageCtxt);
|
||||||
procedure clearOutOfRangeMessg;
|
procedure clearOutOfRangeMessg;
|
||||||
|
@ -371,6 +372,18 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEMessagesWidget.TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||||
|
begin
|
||||||
|
fFiltering := TreeFilterEdit1.Filter <> '';
|
||||||
|
filterMessages(fCtxt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEMessagesWidget.TreeFilterEdit1ButtonClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
fFiltering := false;
|
||||||
|
filterMessages(fCtxt);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.selCtxtClick(Sender: TObject);
|
procedure TCEMessagesWidget.selCtxtClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
btn: TToolButton;
|
btn: TToolButton;
|
||||||
|
@ -871,29 +884,37 @@ begin
|
||||||
fDoc.SelectLine;
|
fDoc.SelectLine;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCEMessagesWidget.itemShouldBeVisible(item: TTreeNode;
|
||||||
|
aCtxt: TCEAppMessageCtxt): boolean;
|
||||||
|
var
|
||||||
|
msgDt: PMessageData;
|
||||||
|
begin
|
||||||
|
result := false;
|
||||||
|
msgDt := PMessageData(item.Data);
|
||||||
|
if aCtxt = amcAll then
|
||||||
|
result := true
|
||||||
|
else case msgDt^.ctxt of
|
||||||
|
amcEdit: result := (fDoc = TCESynMemo(msgDt^.data)) and (aCtxt = amcEdit);
|
||||||
|
amcProj: result := (fProj = ICECommonProject(msgDt^.data)) and (aCtxt = amcProj);
|
||||||
|
amcApp: result := aCtxt = amcApp;
|
||||||
|
amcMisc: result := aCtxt = amcMisc;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.filterMessages(aCtxt: TCEAppMessageCtxt);
|
procedure TCEMessagesWidget.filterMessages(aCtxt: TCEAppMessageCtxt);
|
||||||
var
|
var
|
||||||
msgdt: PMessageData;
|
|
||||||
itm: TTreeNode;
|
itm: TTreeNode;
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
if updating then
|
if updating then
|
||||||
exit;
|
exit;
|
||||||
List.BeginUpdate;
|
List.BeginUpdate;
|
||||||
for i := 0 to List.Items.Count-1 do
|
for itm in List.Items do
|
||||||
begin
|
begin
|
||||||
itm := List.Items[i];
|
if not fFiltering then
|
||||||
Itm.Visible := false;
|
itm.Visible := itemShouldBeVisible(itm, aCtxt)
|
||||||
Itm.Selected := false;
|
else
|
||||||
msgdt := PMessageData(itm.Data);
|
itm.Visible := itm.Visible and itemShouldBeVisible(itm, aCtxt);
|
||||||
if aCtxt = amcAll then
|
itm.Selected := false;
|
||||||
Itm.Visible := true
|
|
||||||
else case msgdt^.ctxt of
|
|
||||||
amcEdit: itm.Visible := (fDoc = TCESynMemo(msgdt^.data)) and (aCtxt = amcEdit);
|
|
||||||
amcProj: itm.Visible := (fProj = ICECommonProject(msgdt^.data)) and (aCtxt = amcProj);
|
|
||||||
amcApp: itm.Visible := aCtxt = amcApp;
|
|
||||||
amcMisc: itm.Visible := aCtxt = amcMisc;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
list.EndUpdate;
|
list.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
Loading…
Reference in New Issue