mirror of https://gitlab.com/basile.b/dexed.git
more for #24
This commit is contained in:
parent
44b48164ae
commit
cf0d62f0b7
|
@ -79,6 +79,7 @@ type
|
||||||
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
private
|
private
|
||||||
fDemangle: boolean;
|
fDemangle: boolean;
|
||||||
|
fDemanglerAvailable: boolean;
|
||||||
fMsgColors: array[TCEAppMessageKind] of TColor;
|
fMsgColors: array[TCEAppMessageKind] of TColor;
|
||||||
fActAutoSel: TAction;
|
fActAutoSel: TAction;
|
||||||
fActClearAll: TAction;
|
fActClearAll: TAction;
|
||||||
|
@ -117,7 +118,7 @@ type
|
||||||
function iconIndex(aKind: TCEAppMessageKind): Integer;
|
function iconIndex(aKind: TCEAppMessageKind): Integer;
|
||||||
procedure handleMessageClick(Sender: TObject);
|
procedure handleMessageClick(Sender: TObject);
|
||||||
procedure callDemangler;
|
procedure callDemangler;
|
||||||
procedure freeMangler;
|
procedure freeDemangler;
|
||||||
//
|
//
|
||||||
procedure setColorError(aValue: TColor);
|
procedure setColorError(aValue: TColor);
|
||||||
procedure setColorInfo(aValue: TColor);
|
procedure setColorInfo(aValue: TColor);
|
||||||
|
@ -325,6 +326,7 @@ begin
|
||||||
//
|
//
|
||||||
fToDemangle := TStringList.Create;
|
fToDemangle := TStringList.Create;
|
||||||
fToDemangleObjs:= TFPList.Create;
|
fToDemangleObjs:= TFPList.Create;
|
||||||
|
fDemanglerAvailable := exeInSysPath('ddemangle' + exeExt);
|
||||||
//
|
//
|
||||||
EntitiesConnector.addObserver(self);
|
EntitiesConnector.addObserver(self);
|
||||||
EntitiesConnector.addSingleService(self);
|
EntitiesConnector.addSingleService(self);
|
||||||
|
@ -334,7 +336,7 @@ destructor TCEMessagesWidget.destroy;
|
||||||
begin
|
begin
|
||||||
fToDemangle.Free;
|
fToDemangle.Free;
|
||||||
fToDemangleObjs.Free;
|
fToDemangleObjs.Free;
|
||||||
freeMangler;
|
freeDemangler;
|
||||||
fOptions.saveToFile(getCoeditDocPath + optname);
|
fOptions.saveToFile(getCoeditDocPath + optname);
|
||||||
EntitiesConnector.removeObserver(self);
|
EntitiesConnector.removeObserver(self);
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -683,20 +685,6 @@ begin
|
||||||
exit('ICEMessagesDisplay');
|
exit('ICEMessagesDisplay');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.demanglerOutput(sender: TObject);
|
|
||||||
var
|
|
||||||
itm: TTreeNode;
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
fToDemangle.LoadFromStream(fDemangler.OutputStack);
|
|
||||||
for i := 0 to fToDemangleObjs.Count -1 do
|
|
||||||
begin
|
|
||||||
itm := TTreeNode(fToDemangleObjs.Items[i]);
|
|
||||||
if itm = nil then continue;
|
|
||||||
itm.Text := fToDemangle.Strings[i];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMessagesWidget.message(const aValue: string; aData: Pointer;
|
procedure TCEMessagesWidget.message(const aValue: string; aData: Pointer;
|
||||||
aCtxt: TCEAppMessageCtxt; aKind: TCEAppMessageKind);
|
aCtxt: TCEAppMessageCtxt; aKind: TCEAppMessageKind);
|
||||||
var
|
var
|
||||||
|
@ -772,14 +760,15 @@ var
|
||||||
i: integer;
|
i: integer;
|
||||||
str: string;
|
str: string;
|
||||||
begin
|
begin
|
||||||
freeMangler;
|
if not fDemanglerAvailable then
|
||||||
|
exit;
|
||||||
|
//
|
||||||
|
freeDemangler;
|
||||||
fDemangler := TCEProcess.Create(nil);
|
fDemangler := TCEProcess.Create(nil);
|
||||||
fDemangler.Executable := 'ddemangle' + exeExt;
|
fDemangler.Executable := 'ddemangle' + exeExt;
|
||||||
fDemangler.OnTerminate:= @demanglerOutput;
|
fDemangler.OnTerminate:= @demanglerOutput;
|
||||||
fDemangler.Options:= fDemangler.Options + [poUsePipes];
|
fDemangler.Options:= fDemangler.Options + [poUsePipes];
|
||||||
fDemangler.ShowWindow:= swoHIDE;
|
fDemangler.ShowWindow:= swoHIDE;
|
||||||
if exeInSysPath(fDemangler.Executable) then
|
|
||||||
begin
|
|
||||||
fToDemangle.Clear;
|
fToDemangle.Clear;
|
||||||
fToDemangleObjs.Clear;
|
fToDemangleObjs.Clear;
|
||||||
for i := 0 to list.Items.Count-1 do
|
for i := 0 to list.Items.Count-1 do
|
||||||
|
@ -802,18 +791,31 @@ begin
|
||||||
fDemangler.CloseInput;
|
fDemangler.CloseInput;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEMessagesWidget.demanglerOutput(sender: TObject);
|
||||||
|
var
|
||||||
|
itm: TTreeNode;
|
||||||
|
i: integer;
|
||||||
|
begin
|
||||||
|
fToDemangle.LoadFromStream(fDemangler.OutputStack);
|
||||||
|
for i := 0 to fToDemangleObjs.Count -1 do
|
||||||
|
begin
|
||||||
|
itm := TTreeNode(fToDemangleObjs.Items[i]);
|
||||||
|
if itm = nil then continue;
|
||||||
|
itm.Text := fToDemangle.Strings[i];
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMessagesWidget.freeMangler;
|
procedure TCEMessagesWidget.freeDemangler;
|
||||||
begin
|
|
||||||
if fDemangler <> nil then
|
|
||||||
begin
|
begin
|
||||||
|
if fDemangler = nil then
|
||||||
|
exit;
|
||||||
|
//
|
||||||
if fDemangler.Active then
|
if fDemangler.Active then
|
||||||
fDemangler.Terminate(0);
|
fDemangler.Terminate(0);
|
||||||
fDemangler.Free;
|
fDemangler.Free;
|
||||||
fDemangler := nil;
|
fDemangler := nil;
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMessagesWidget.updateLoop;
|
procedure TCEMessagesWidget.updateLoop;
|
||||||
begin
|
begin
|
||||||
|
|
Loading…
Reference in New Issue