ide: implement show execution point command by Flávio Etrusco (issue #0001920)

git-svn-id: trunk@23576 -
This commit is contained in:
paul 2010-01-28 03:50:48 +00:00
parent 14bc095539
commit 66884f2359
8 changed files with 36 additions and 0 deletions

View File

@ -102,6 +102,7 @@ type
function InitDebugger: Boolean; virtual; abstract;
function DoPauseProject: TModalResult; virtual; abstract;
function DoShowExecutionPoint: TModalResult; virtual; abstract;
function DoStepIntoProject: TModalResult; virtual; abstract;
function DoStepOverProject: TModalResult; virtual; abstract;
function DoRunToCursor: TModalResult; virtual; abstract;

View File

@ -160,6 +160,7 @@ type
function InitDebugger: Boolean; override;
function DoPauseProject: TModalResult; override;
function DoShowExecutionPoint: TModalResult; override;
function DoStepIntoProject: TModalResult; override;
function DoStepOverProject: TModalResult; override;
function DoRunToCursor: TModalResult; override;
@ -1978,6 +1979,7 @@ begin
PauseSpeedButton.Enabled := (not DebuggerInvalid)
and (dcPause in FDebugger.Commands);
itmRunMenuPause.Enabled := PauseSpeedButton.Enabled;
itmRunMenuShowExecutionPoint.Enabled := (not DebuggerInvalid) and (FDebugger.State = dsPause);
StepIntoSpeedButton.Enabled := DebuggerInvalid
or (dcStepInto in FDebugger.Commands) or (FDebugger.State = dsIdle);
itmRunMenuStepInto.Enabled := StepIntoSpeedButton.Enabled;
@ -2302,6 +2304,20 @@ begin
Result := mrOk;
end;
function TDebugManager.DoShowExecutionPoint: TModalResult;
var
DummyLocation: TDBGLocationRec;
begin
Result := mrCancel;
if (MainIDE.ToolStatus <> itDebugger)
or (FDebugger = nil) or Destroying
then Exit;
DummyLocation.SrcLine := 0;
DebuggerCurrentLine(FDebugger, DummyLocation);
Result := mrOk;
end;
function TDebugManager.DoStepIntoProject: TModalResult;
begin
if (MainIDE.DoInitProjectRun <> mrOK)

View File

@ -535,6 +535,7 @@ begin
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
@ -955,6 +956,7 @@ begin
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1557,6 +1559,7 @@ begin
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_R,[ssMeta],VK_UNKNOWN,[]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecStepInto: SetResult(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]);
ecStepOver: SetResult(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]);
ecRunToCursor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1719,6 +1722,7 @@ begin
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_F9,[],VK_F9,[ssMeta]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]);
ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]);
ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]);
@ -2071,6 +2075,7 @@ begin
ecAbortBuild : Result:= srkmecAbortBuild;
ecRun : Result:= srkmecRun;
ecPause : Result:= srkmecPause;
ecShowExecutionPoint : Result:= srkmecShowExecutionPoint;
ecStepInto : Result:= lisMenuStepInto;
ecStepOver : Result:= lisMenuStepOver;
ecRunToCursor : Result:= lisMenuRunToCursor;
@ -2761,6 +2766,7 @@ begin
AddDefault(C, 'Abort building', lisKMAbortBuilding, ecAbortBuild);
AddDefault(C, 'Run program', lisKMRunProgram, ecRun);
AddDefault(C, 'Pause program', lisKMPauseProgram, ecPause);
AddDefault(C, 'Show execution point', lisMenuShowExecutionPoint, ecShowExecutionPoint);
AddDefault(C, 'Step into', lisMenuStepInto, ecStepInto);
AddDefault(C, 'Step over', lisMenuStepOver, ecStepOver);
AddDefault(C, 'Run to cursor', lisMenuRunToCursor, ecRunToCursor);

View File

@ -331,6 +331,7 @@ resourcestring
+'empty for file path)';
lisBFRunCommand = 'Run Command';
lisMenuPause = 'Pause';
lisMenuShowExecutionPoint = 'Show execution point';
lisMenuStepInto = 'Step into';
lisMenuStepOver = 'Step over';
lisMenuRunToCursor = 'Run to cursor';
@ -2370,6 +2371,7 @@ resourcestring
srkmecAbortBuild = 'abort build';
srkmecRun = 'run program';
srkmecPause = 'pause program';
srkmecShowExecutionPoint = 'show execution point';
srkmecStopProgram = 'stop program';
srkmecResetDebugger = 'reset debugger';
srkmecToggleBreakPoint = 'toggle break point';

View File

@ -293,6 +293,7 @@ type
procedure mnuAbortBuildProjectClicked(Sender: TObject);
procedure mnuRunProjectClicked(Sender: TObject);
procedure mnuPauseProjectClicked(Sender: TObject);
procedure mnuShowExecutionPointClicked(Sender: TObject);
procedure mnuStepIntoProjectClicked(Sender: TObject);
procedure mnuStepOverProjectClicked(Sender: TObject);
procedure mnuRunToCursorProjectClicked(Sender: TObject);
@ -2413,6 +2414,8 @@ begin
itmRunMenuRun.OnClick := @mnuRunProjectClicked;
itmRunMenuPause.Enabled := False;
itmRunMenuPause.OnClick := @mnuPauseProjectClicked;
itmRunMenuShowExecutionPoint.Enabled := False;
itmRunMenuShowExecutionPoint.OnClick := @mnuShowExecutionPointClicked;
itmRunMenuStepInto.OnClick := @mnuStepIntoProjectClicked;
itmRunMenuStepOver.OnClick := @mnuStepOverProjectClicked;
itmRunMenuRunToCursor.OnClick := @mnuRunToCursorProjectClicked;
@ -3844,6 +3847,11 @@ begin
DebugBoss.DoPauseProject;
end;
Procedure TMainIDE.mnuShowExecutionPointClicked(Sender: TObject);
begin
DebugBoss.DoShowExecutionPoint;
end;
Procedure TMainIDE.mnuStepIntoProjectClicked(Sender: TObject);
begin
DebugBoss.DoStepIntoProject;

View File

@ -252,6 +252,7 @@ type
//itmRunnning: TIDEMenuSection;
itmRunMenuRun: TIDEMenuCommand;
itmRunMenuPause: TIDEMenuCommand;
itmRunMenuShowExecutionPoint: TIDEMenuCommand;
itmRunMenuStepInto: TIDEMenuCommand;
itmRunMenuStepOver: TIDEMenuCommand;
itmRunMenuRunToCursor: TIDEMenuCommand;

View File

@ -652,6 +652,7 @@ begin
CreateMenuItem(ParentMI,itmRunMenuRun,'itmRunMenuRun',lisMenuProjectRun,'menu_run');
CreateMenuItem(ParentMI,itmRunMenuPause,'itmRunMenuPause',lisMenuPause,'menu_pause');
CreateMenuItem(ParentMI,itmRunMenuShowExecutionPoint,'itmRunMenuShowExecutionPoint',lisMenuShowExecutionPoint,'debugger_show_execution_point');
CreateMenuItem(ParentMI,itmRunMenuStepInto,'itmRunMenuStepInto',lisMenuStepInto,'menu_stepinto');
CreateMenuItem(ParentMI,itmRunMenuStepOver,'itmRunMenuStepOver',lisMenuStepOver,'menu_stepover');
CreateMenuItem(ParentMI,itmRunMenuRunToCursor,'itmRunMenuRunToCursor',lisMenuRunToCursor,'menu_run_cursor');

View File

@ -231,6 +231,7 @@ const
ecInspect = ecFirstLazarus + 415;
ecEvaluate = ecFirstLazarus + 416;
ecAddWatch = ecFirstLazarus + 417;
ecShowExecutionPoint = ecFirstLazarus + 418;
// project menu
ecNewProject = ecFirstLazarus + 500;