mirror of https://gitlab.com/basile.b/dexed.git
messages, store position in the messages, close #20
+ only when the editor context + only when auto select is set as option
This commit is contained in:
parent
bb4bf42ccd
commit
798fff06ba
|
|
@ -6,12 +6,15 @@ interface
|
||||||
|
|
||||||
uses
|
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,
|
EditBtn, lcltype, ce_widget, ActnList, Menus, clipbrd, AnchorDocking, math,
|
||||||
Buttons, math, process, ce_writableComponent, ce_common, ce_synmemo, GraphType,
|
TreeFilterEdit, Buttons, process, GraphType, fgl,
|
||||||
ce_dlangutils, ce_interfaces, ce_observer, ce_symstring, ce_processes, ce_sharedres, EditBtn;
|
ce_writableComponent, ce_common, ce_synmemo, ce_dlangutils, ce_interfaces,
|
||||||
|
ce_observer, ce_symstring, ce_processes, ce_sharedres;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
TCEEditorMessagePos = class(specialize TFPGMap<string,integer>);
|
||||||
|
|
||||||
(**
|
(**
|
||||||
* the struct linked to a log message. allow to be filtered.
|
* the struct linked to a log message. allow to be filtered.
|
||||||
*)
|
*)
|
||||||
|
|
@ -78,6 +81,7 @@ type
|
||||||
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
procedure TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||||
procedure TreeFilterEdit1ButtonClick(Sender: TObject);
|
procedure TreeFilterEdit1ButtonClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
|
fEditorMessagePos: TCEEditorMessagePos;
|
||||||
fDemanglerAvailable: boolean;
|
fDemanglerAvailable: boolean;
|
||||||
fMsgColors: array[TCEAppMessageKind] of TColor;
|
fMsgColors: array[TCEAppMessageKind] of TColor;
|
||||||
fActAutoSel: TAction;
|
fActAutoSel: TAction;
|
||||||
|
|
@ -312,6 +316,8 @@ begin
|
||||||
btnClearCat.OnClick := @actClearCurCatExecute;
|
btnClearCat.OnClick := @actClearCurCatExecute;
|
||||||
AssignPng(btnClearCat, 'clean');
|
AssignPng(btnClearCat, 'clean');
|
||||||
//
|
//
|
||||||
|
fEditorMessagePos := TCEEditorMessagePos.Create;
|
||||||
|
//
|
||||||
fname := getCoeditDocPath + optname;
|
fname := getCoeditDocPath + optname;
|
||||||
if fname.fileExists then
|
if fname.fileExists then
|
||||||
begin
|
begin
|
||||||
|
|
@ -328,6 +334,7 @@ end;
|
||||||
|
|
||||||
destructor TCEMessagesWidget.destroy;
|
destructor TCEMessagesWidget.destroy;
|
||||||
begin
|
begin
|
||||||
|
fEditorMessagePos.Free;
|
||||||
fToDemangle.Free;
|
fToDemangle.Free;
|
||||||
FreeAndNil(fToDemangleObjs);
|
FreeAndNil(fToDemangleObjs);
|
||||||
freeDemangler;
|
freeDemangler;
|
||||||
|
|
@ -665,6 +672,15 @@ end;
|
||||||
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
{$REGION ICEMultiDocObserver ---------------------------------------------------}
|
||||||
procedure TCEMessagesWidget.docNew(aDoc: TCESynMemo);
|
procedure TCEMessagesWidget.docNew(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
if fDoc.isNotNil and fOptions.fAutoSelect and (fCtxt = amcEdit) then
|
||||||
|
begin
|
||||||
|
if list.Selected.isNotNil then
|
||||||
|
fEditorMessagePos[fDoc.fileName] := list.Selected.Index
|
||||||
|
else
|
||||||
|
fEditorMessagePos[fDoc.fileName] := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
filterMessages(fCtxt);
|
filterMessages(fCtxt);
|
||||||
end;
|
end;
|
||||||
|
|
@ -673,15 +689,41 @@ procedure TCEMessagesWidget.docClosing(aDoc: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
if aDoc <> fDoc then exit;
|
if aDoc <> fDoc then exit;
|
||||||
clearbyData(fDoc);
|
clearbyData(fDoc);
|
||||||
|
fEditorMessagePos.Remove(fDoc.fileName);
|
||||||
fDoc := nil;
|
fDoc := nil;
|
||||||
filterMessages(fCtxt);
|
filterMessages(fCtxt);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.docFocused(aDoc: TCESynMemo);
|
procedure TCEMessagesWidget.docFocused(aDoc: TCESynMemo);
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
if fDoc = aDoc then exit;
|
if fDoc = aDoc then exit;
|
||||||
|
|
||||||
|
if fDoc.isNotNil and fOptions.fAutoSelect and (fCtxt = amcEdit) then
|
||||||
|
begin
|
||||||
|
if list.Selected.isNotNil then
|
||||||
|
fEditorMessagePos[fDoc.fileName] := list.Selected.Index
|
||||||
|
else
|
||||||
|
fEditorMessagePos[fDoc.fileName] := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
fDoc := aDoc;
|
fDoc := aDoc;
|
||||||
filterMessages(fCtxt);
|
filterMessages(fCtxt);
|
||||||
|
|
||||||
|
if fOptions.fAutoSelect and (fCtxt = amcEdit) then
|
||||||
|
begin
|
||||||
|
i := fEditorMessagePos.IndexOf(fDoc.fileName);
|
||||||
|
if i <> -1 then
|
||||||
|
begin
|
||||||
|
i := fEditorMessagePos.Data[i];
|
||||||
|
if (i <> -1) and (i < list.Items.Count) then
|
||||||
|
begin
|
||||||
|
list.Selected := list.Items[i];
|
||||||
|
list.Selected.MakeVisible;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.docChanged(aDoc: TCESynMemo);
|
procedure TCEMessagesWidget.docChanged(aDoc: TCESynMemo);
|
||||||
|
|
@ -753,6 +795,8 @@ var
|
||||||
begin
|
begin
|
||||||
if aData.isNil then
|
if aData.isNil then
|
||||||
exit;
|
exit;
|
||||||
|
if (TObject(aData) = fDoc) and (fDoc.isNotNil) then
|
||||||
|
fEditorMessagePos[fDoc.fileName] := -1;
|
||||||
list.BeginUpdate;
|
list.BeginUpdate;
|
||||||
for i := List.Items.Count-1 downto 0 do
|
for i := List.Items.Count-1 downto 0 do
|
||||||
begin
|
begin
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue