mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-06 04:37:45 +01:00
ide: implement show execution point command by Flávio Etrusco (issue #0001920)
git-svn-id: trunk@23576 -
This commit is contained in:
parent
14bc095539
commit
66884f2359
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -252,6 +252,7 @@ type
|
||||
//itmRunnning: TIDEMenuSection;
|
||||
itmRunMenuRun: TIDEMenuCommand;
|
||||
itmRunMenuPause: TIDEMenuCommand;
|
||||
itmRunMenuShowExecutionPoint: TIDEMenuCommand;
|
||||
itmRunMenuStepInto: TIDEMenuCommand;
|
||||
itmRunMenuStepOver: TIDEMenuCommand;
|
||||
itmRunMenuRunToCursor: TIDEMenuCommand;
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -231,6 +231,7 @@ const
|
||||
ecInspect = ecFirstLazarus + 415;
|
||||
ecEvaluate = ecFirstLazarus + 416;
|
||||
ecAddWatch = ecFirstLazarus + 417;
|
||||
ecShowExecutionPoint = ecFirstLazarus + 418;
|
||||
|
||||
// project menu
|
||||
ecNewProject = ecFirstLazarus + 500;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user