#97, rename consistently the list + clear them all together

This commit is contained in:
Basile Burg 2016-11-28 04:46:22 +01:00
parent 0d76b2250b
commit 450375e6e9
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
2 changed files with 49 additions and 39 deletions

View File

@ -3,7 +3,6 @@ inherited CEGdbWidget: TCEGdbWidget
Height = 668
Top = 333
Width = 517
ActiveControl = Splitter2
Caption = 'GDB commander'
ClientHeight = 668
ClientWidth = 517
@ -38,7 +37,7 @@ inherited CEGdbWidget: TCEGdbWidget
ClientHeight = 149
ClientWidth = 513
TabOrder = 0
object cpuVIewer: TTIPropertyGrid
object cpuViewer: TTIPropertyGrid
Left = 0
Height = 149
Hint = 'cpu registers'
@ -78,7 +77,7 @@ inherited CEGdbWidget: TCEGdbWidget
Caption = 'Variables'
ClientHeight = 164
ClientWidth = 509
object varList: TListView
object lstVariables: TListView
Left = 2
Height = 138
Top = 24
@ -124,7 +123,7 @@ inherited CEGdbWidget: TCEGdbWidget
Caption = 'Assembly'
ClientHeight = 164
ClientWidth = 509
object asmList: TListView
object lstAsm: TListView
Left = 2
Height = 160
Top = 2

View File

@ -344,7 +344,7 @@ type
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
varList: TListView;
lstVariables: TListView;
lstCallStack: TListView;
mnuReadW: TMenuItem;
mnuWriteW: TMenuItem;
@ -354,13 +354,13 @@ type
Panel1: TPanel;
Panel3: TPanel;
btnSendCom: TSpeedButton;
cpuVIewer: TTIPropertyGrid;
cpuViewer: TTIPropertyGrid;
mnuProjRunnable: TPopupMenu;
mnuWatch: TPopupMenu;
Splitter2: TSplitter;
Splitter3: TSplitter;
Splitter4: TSplitter;
asmList: TListView;
lstAsm: TListView;
varListFlt: TListViewFilterEdit;
procedure btnContClick(Sender: TObject);
procedure btnVariablesClick(Sender: TObject);
@ -414,6 +414,7 @@ type
fLastFunction: string;
fLastOffset: string;
fLastLine: string;
procedure clearDisplays;
procedure updateMenu;
procedure optionsChangesApplied(sender: TObject);
procedure disableEditor;
@ -966,7 +967,6 @@ begin
fMsg:= getMessageDisplay;
fLog := TStringList.Create;
fInspState := TInspectableCPU.Create(@setGpr, @setSsr, @setFlag, @setFpr);
cpuVIewer.TIObject := fInspState;
fJson := TJsonObject.Create;
fStackItems := TStackItems.create;
fSubj:= TCEDebugObserverSubject.Create;
@ -1130,6 +1130,16 @@ begin
bmp.Free;
end;
procedure TCEGdbWidget.clearDisplays;
begin
lstVariables.Clear;
lstCallStack.Clear;
lstThreads.Clear;
lstAsm.Clear;
cpuViewer.Clear;
cpuViewer.TIObject := nil;
end;
procedure TCEGdbWidget.optionsChangesApplied(sender: TObject);
begin
updateMenu;
@ -1304,7 +1314,7 @@ begin
btnReg.Enabled:=false;
btnVariables.Enabled:=false;
btnStack.Enabled:=false;
varList.Clear;
clearDisplays;
end;
gsPaused:
begin
@ -1364,18 +1374,18 @@ var
begin
if varListFlt.Filter = '' then
exit;
for i:= 0 to varList.Items.Count-1 do
if AnsiContainsText(varList.Items[i].Caption, varListFlt.Filter) then
for i:= 0 to lstVariables.Items.Count-1 do
if AnsiContainsText(lstVariables.Items[i].Caption, varListFlt.Filter) then
begin
varList.ItemIndex:=i;
varList.Selected.MakeVisible(false);
lstVariables.ItemIndex:=i;
lstVariables.Selected.MakeVisible(false);
break;
end;
end;
procedure TCEGdbWidget.disableEditor;
begin
cpuVIewer.ItemIndex:=-1;
cpuViewer.ItemIndex:=-1;
end;
procedure TCEGdbWidget.startDebugging;
@ -1385,7 +1395,7 @@ var
i: integer;
b: TPersistentBreakPoint;
begin
varList.Clear;
clearDisplays;
if not fDbgRunnable and (fProj = nil) then
begin
dlgOkInfo('No project to debug', 'GDB commander');
@ -1452,7 +1462,6 @@ begin
bpkBreak: str := 'break ' + b.filename + ':' + intToStr(b.line) + #10;
bpkWatch: {TODO-cGDB: put watchpoint from persistent};
end;
fGdb.Input.Write(str[1], str.length);
end;
// break on druntime exceptions + any throw'
@ -1477,6 +1486,8 @@ begin
gdbCommand('-gdb-set mi-async on');
fGdb.OnReadData := @gdboutJsonize;
// launch
cpuViewer.TIObject := fInspState;
cpuViewer.RefreshPropertyValues;
gdbCommand('run >' + fOutputName + '< ' + fInputName);
setState(gsRunning);
end;
@ -1694,7 +1705,7 @@ procedure TCEGdbWidget.interpretJson;
var
itm: TListItem;
begin
itm := asmList.FindCaption(0, fLastOffset, false, true, false);
itm := lstAsm.FindCaption(0, fLastOffset, false, true, false);
if itm.isNotNil then
begin
itm.Selected:=true;
@ -1761,10 +1772,10 @@ begin
val := obj.Find('exp');
if val.isNotNil then
begin
k := varList.FindCaption(0, val.AsString, false, true, false);
k := lstVariables.FindCaption(0, val.AsString, false, true, false);
if k.isNotNil then
begin
varList.ItemIndex:=k.index;
lstVariables.ItemIndex:=k.index;
k.MakeVisible(false);
end;
end;
@ -1938,7 +1949,7 @@ begin
// TODO-cGDB: get SSE registers
end;
end;
cpuVIewer.RefreshPropertyValues;
cpuViewer.RefreshPropertyValues;
end;
val := fJson.Find('stack');
@ -1979,9 +1990,9 @@ begin
val := fJson.Find('locals');
if val.isNotNil and (val.JSONType = jtArray) then
begin
j := varList.ItemIndex;
varList.BeginUpdate;
varList.Clear;
j := lstVariables.ItemIndex;
lstVariables.BeginUpdate;
lstVariables.Clear;
arr := TJSONArray(val);
for i := 0 to arr.Count-1 do
begin
@ -1996,20 +2007,20 @@ begin
val := obj.Find('value');
if val.isNil then
continue;
varList.AddItem(nme, nil);
with varList.Items[varList.Items.Count-1] do
lstVariables.AddItem(nme, nil);
with lstVariables.Items[lstVariables.Items.Count-1] do
SubItems.Add(val.AsString);
end;
if (j <> -1) and (j <= varList.Items.Count) then
varList.ItemIndex := j;
varList.EndUpdate;
if (j <> -1) and (j <= lstVariables.Items.Count) then
lstVariables.ItemIndex := j;
lstVariables.EndUpdate;
end;
val := fJson.Find('asm_insns');
if val.isNotNil and (val.JSONType = jtArray) then
begin
asmList.BeginUpdate;
asmList.Clear;
lstAsm.BeginUpdate;
lstAsm.Clear;
arr := TJSONArray(val);
for i := 0 to arr.Count-1 do
begin
@ -2022,18 +2033,18 @@ begin
val := obj.Find('inst');
if val.isNotNil then
begin
asmList.AddItem(nme, nil);
lstAsm.AddItem(nme, nil);
if nme = fLastOffset then
asmList.Selected := asmList.Items[asmList.Items.Count-1];
lstAsm.Selected := lstAsm.Items[lstAsm.Items.Count-1];
if fOptions.autoDemangle then
asmList.Items[asmList.Items.Count-1].SubItems.Add(demangle(val.AsString))
lstAsm.Items[lstAsm.Items.Count-1].SubItems.Add(demangle(val.AsString))
else
asmList.Items[asmList.Items.Count-1].SubItems.Add(val.AsString);
lstAsm.Items[lstAsm.Items.Count-1].SubItems.Add(val.AsString);
end;
end;
if asmList.Selected.isNotNil then
asmList.Selected.MakeVisible(false);
asmList.EndUpdate;
if lstAsm.Selected.isNotNil then
lstAsm.Selected.MakeVisible(false);
lstAsm.EndUpdate;
selectAsmInstr;
end;
@ -2269,9 +2280,9 @@ const
var
nme: string;
begin
if varList.ItemIndex = -1 then
if lstVariables.ItemIndex = -1 then
exit;
nme := varList.Items[varList.ItemIndex].Caption;
nme := lstVariables.Items[lstVariables.ItemIndex].Caption;
gdbCommand(cmd[fAddWatchPointKind] + nme);
end;