mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 12:08:09 +02:00
ide, debugger: implement *step out* debugger action by Flávio Etrusco (issue #0015760)
git-svn-id: trunk@23717 -
This commit is contained in:
parent
b9871028b6
commit
f5fa216d8b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -3955,6 +3955,7 @@ images/menu/menu_search_previous_bookmark.png -text
|
||||
images/menu/menu_search_replace.png -text svneol=unset#image/png
|
||||
images/menu/menu_select_all.png -text svneol=unset#image/png
|
||||
images/menu/menu_stepinto.png -text svneol=unset#image/png
|
||||
images/menu/menu_stepout.png -text svneol=unset#image/png
|
||||
images/menu/menu_stepover.png -text svneol=unset#image/png
|
||||
images/menu/menu_stop.png -text svneol=unset#image/png
|
||||
images/menu/menu_tool_check_lfm.png -text svneol=unset#image/png
|
||||
|
@ -57,6 +57,7 @@ type
|
||||
dcStop,
|
||||
dcStepOver,
|
||||
dcStepInto,
|
||||
dcStepOut,
|
||||
dcRunTo,
|
||||
dcJumpto,
|
||||
dcBreak,
|
||||
@ -1323,6 +1324,7 @@ type
|
||||
procedure Stop; // quit debugging
|
||||
procedure StepOver;
|
||||
procedure StepInto;
|
||||
procedure StepOut;
|
||||
procedure RunTo(const ASource: String; const ALine: Integer); // Executes til a certain point
|
||||
procedure JumpTo(const ASource: String; const ALine: Integer); // No execute, only set exec point
|
||||
function Evaluate(const AExpression: String; var AResult: String;
|
||||
@ -1370,6 +1372,7 @@ const
|
||||
'Stop',
|
||||
'StepOver',
|
||||
'StepInto',
|
||||
'StepOut',
|
||||
'RunTo',
|
||||
'Jumpto',
|
||||
'Break',
|
||||
@ -1415,9 +1418,9 @@ const
|
||||
COMMANDMAP: array[TDBGState] of TDBGCommands = (
|
||||
{dsNone } [],
|
||||
{dsIdle } [dcEnvironment],
|
||||
{dsStop } [dcRun, dcStepOver, dcStepInto, dcRunTo, dcJumpto, dcBreak, dcWatch,
|
||||
{dsStop } [dcRun, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto, dcBreak, dcWatch,
|
||||
dcEvaluate, dcEnvironment],
|
||||
{dsPause} [dcRun, dcStop, dcStepOver, dcStepInto, dcRunTo, dcJumpto, dcBreak,
|
||||
{dsPause} [dcRun, dcStop, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto, dcBreak,
|
||||
dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment, dcSetStackFrame,
|
||||
dcDisassemble],
|
||||
{dsInit } [],
|
||||
@ -1894,6 +1897,12 @@ begin
|
||||
DebugLn('TDebugger.StepInto Class=',ClassName,' failed.');
|
||||
end;
|
||||
|
||||
procedure TDebugger.StepOut;
|
||||
begin
|
||||
if ReqCmd(dcStepOut, []) then exit;
|
||||
DebugLn('TDebugger.StepOut Class=', ClassName, ' failed.');
|
||||
end;
|
||||
|
||||
procedure TDebugger.StepOver;
|
||||
begin
|
||||
if ReqCmd(dcStepOver, []) then exit;
|
||||
|
@ -143,6 +143,7 @@ type
|
||||
function GDBStop: Boolean;
|
||||
function GDBStepOver: Boolean;
|
||||
function GDBStepInto: Boolean;
|
||||
function GDBStepOut: Boolean;
|
||||
function GDBRunTo(const ASource: String; const ALine: Integer): Boolean;
|
||||
function GDBJumpTo(const ASource: String; const ALine: Integer): Boolean;
|
||||
function GDBDisassemble(AAddr: TDbgPtr; ABackward: Boolean; out ANextAddr: TDbgPtr;
|
||||
@ -2791,6 +2792,22 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGDBMIDebugger.GDBStepOut: Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
case State of
|
||||
dsStop: begin
|
||||
Result := StartDebugging('');
|
||||
end;
|
||||
dsPause: begin
|
||||
Result := ExecuteCommand('-exec-finish', [cfExternal]);
|
||||
end;
|
||||
dsIdle: begin
|
||||
DebugLn('[WARNING] Debugger: Unable to step out in idle state');
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGDBMIDebugger.GDBStepOver: Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
@ -3068,7 +3085,7 @@ end;
|
||||
|
||||
function TGDBMIDebugger.GetSupportedCommands: TDBGCommands;
|
||||
begin
|
||||
Result := [dcRun, dcPause, dcStop, dcStepOver, dcStepInto, dcRunTo, dcJumpto,
|
||||
Result := [dcRun, dcPause, dcStop, dcStepOver, dcStepInto, dcStepOut, dcRunTo, dcJumpto,
|
||||
dcBreak, dcWatch, dcLocal, dcEvaluate, dcModify, dcEnvironment,
|
||||
dcSetStackFrame, dcDisassemble];
|
||||
end;
|
||||
@ -3782,6 +3799,7 @@ begin
|
||||
dcStop: Result := GDBStop;
|
||||
dcStepOver: Result := GDBStepOver;
|
||||
dcStepInto: Result := GDBStepInto;
|
||||
dcStepOut: Result := GDBStepOut;
|
||||
dcRunTo: Result := GDBRunTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
||||
dcJumpto: Result := GDBJumpTo(String(AParams[0].VAnsiString), AParams[1].VInteger);
|
||||
dcEvaluate: Result := GDBEvaluate(String(AParams[0].VAnsiString), String(AParams[1].VPointer^),TGDBType(AParams[2].VPointer^));
|
||||
|
@ -105,6 +105,7 @@ type
|
||||
function DoShowExecutionPoint: TModalResult; virtual; abstract;
|
||||
function DoStepIntoProject: TModalResult; virtual; abstract;
|
||||
function DoStepOverProject: TModalResult; virtual; abstract;
|
||||
function DoStepOutProject: TModalResult; virtual; abstract;
|
||||
function DoRunToCursor: TModalResult; virtual; abstract;
|
||||
function DoStopProject: TModalResult; virtual; abstract;
|
||||
procedure DoToggleCallStack; virtual; abstract;
|
||||
|
@ -163,6 +163,7 @@ type
|
||||
function DoShowExecutionPoint: TModalResult; override;
|
||||
function DoStepIntoProject: TModalResult; override;
|
||||
function DoStepOverProject: TModalResult; override;
|
||||
function DoStepOutProject: TModalResult; override;
|
||||
function DoRunToCursor: TModalResult; override;
|
||||
function DoStopProject: TModalResult; override;
|
||||
procedure DoToggleCallStack; override;
|
||||
@ -1986,6 +1987,9 @@ begin
|
||||
StepOverSpeedButton.Enabled := DebuggerInvalid or
|
||||
(dcStepOver in FDebugger.Commands) or (FDebugger.State = dsIdle);
|
||||
itmRunMenuStepOver.Enabled := StepOverSpeedButton.Enabled;
|
||||
StepOutSpeedButton.Enabled := DebuggerInvalid or
|
||||
(dcStepOut in FDebugger.Commands) or (FDebugger.State = dsIdle);
|
||||
itmRunMenuStepOut.Enabled := StepOutSpeedButton.Enabled;
|
||||
|
||||
itmRunMenuRunToCursor.Enabled := DebuggerInvalid
|
||||
or (dcRunTo in FDebugger.Commands);
|
||||
@ -2347,6 +2351,20 @@ begin
|
||||
Result := mrOk;
|
||||
end;
|
||||
|
||||
function TDebugManager.DoStepOutProject: TModalResult;
|
||||
begin
|
||||
if (MainIDE.DoInitProjectRun <> mrOK)
|
||||
or (MainIDE.ToolStatus <> itDebugger)
|
||||
or (FDebugger = nil) or Destroying
|
||||
then begin
|
||||
Result := mrAbort;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
FDebugger.StepOut;
|
||||
Result := mrOk;
|
||||
end;
|
||||
|
||||
function TDebugManager.DoStopProject: TModalResult;
|
||||
begin
|
||||
Result := mrCancel;
|
||||
@ -2375,6 +2393,7 @@ begin
|
||||
ecPause: DoPauseProject;
|
||||
ecStepInto: DoStepIntoProject;
|
||||
ecStepOver: DoStepOverProject;
|
||||
ecStepOut: DoStepOutProject;
|
||||
ecRunToCursor: DoRunToCursor;
|
||||
ecStopProgram: DoStopProject;
|
||||
ecResetDebugger: ResetDebugger;
|
||||
|
@ -538,6 +538,7 @@ begin
|
||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
|
||||
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
|
||||
ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[]);
|
||||
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
|
||||
ecStopProgram: SetResult(VK_F2,[SSCtrl],VK_UNKNOWN,[]);
|
||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
@ -959,6 +960,7 @@ begin
|
||||
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,[]);
|
||||
ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecStopProgram: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
@ -1562,6 +1564,7 @@ begin
|
||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecStepInto: SetResult(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]);
|
||||
ecStepOver: SetResult(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]);
|
||||
ecStepOut: SetResult(VK_T,[ssMeta,ssShift],VK_UNKNOWN,[]);
|
||||
ecRunToCursor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecStopProgram: SetResult(VK_RETURN,[ssShift,ssMeta],VK_UNKNOWN,[]);
|
||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
@ -1725,6 +1728,7 @@ begin
|
||||
ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]);
|
||||
ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]);
|
||||
ecStepOut: SetResult(VK_F8,[],VK_F8,[ssShift,ssMeta]);
|
||||
ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]);
|
||||
ecStopProgram: SetResult(VK_F2,[ssCtrl],VK_F2,[ssCtrl,ssMeta]);
|
||||
ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||
@ -2078,6 +2082,7 @@ begin
|
||||
ecShowExecutionPoint : Result:= srkmecShowExecutionPoint;
|
||||
ecStepInto : Result:= lisMenuStepInto;
|
||||
ecStepOver : Result:= lisMenuStepOver;
|
||||
ecStepOut : Result:= lisMenuStepOut;
|
||||
ecRunToCursor : Result:= lisMenuRunToCursor;
|
||||
ecStopProgram : Result:= srkmecStopProgram;
|
||||
ecResetDebugger : Result:= srkmecResetDebugger;
|
||||
@ -2769,6 +2774,7 @@ begin
|
||||
AddDefault(C, 'Show execution point', lisMenuShowExecutionPoint, ecShowExecutionPoint);
|
||||
AddDefault(C, 'Step into', lisMenuStepInto, ecStepInto);
|
||||
AddDefault(C, 'Step over', lisMenuStepOver, ecStepOver);
|
||||
AddDefault(C, 'Step out', lisMenuStepOut, ecStepOut);
|
||||
AddDefault(C, 'Run to cursor', lisMenuRunToCursor, ecRunToCursor);
|
||||
AddDefault(C, 'Stop program', lisKMStopProgram, ecStopProgram);
|
||||
AddDefault(C, 'Reset debugger', lisMenuResetDebugger, ecResetDebugger);
|
||||
|
@ -334,6 +334,7 @@ resourcestring
|
||||
lisMenuShowExecutionPoint = 'Show execution point';
|
||||
lisMenuStepInto = 'Step into';
|
||||
lisMenuStepOver = 'Step over';
|
||||
lisMenuStepOut = 'Step out';
|
||||
lisMenuRunToCursor = 'Run to cursor';
|
||||
lisKMStopProgram = 'Stop program';
|
||||
lisMenuStop = 'Stop';
|
||||
@ -815,7 +816,8 @@ resourcestring
|
||||
lisHintStop = 'Stop';
|
||||
lisHintStepInto = 'Step Into';
|
||||
lisHintStepOver = 'Step Over';
|
||||
|
||||
lisHintStepOut = 'Run until function returns';
|
||||
|
||||
lisGPLNotice =
|
||||
'<description>'
|
||||
+'%s'
|
||||
|
@ -296,6 +296,7 @@ type
|
||||
procedure mnuShowExecutionPointClicked(Sender: TObject);
|
||||
procedure mnuStepIntoProjectClicked(Sender: TObject);
|
||||
procedure mnuStepOverProjectClicked(Sender: TObject);
|
||||
procedure mnuStepOutProjectClicked(Sender: TObject);
|
||||
procedure mnuRunToCursorProjectClicked(Sender: TObject);
|
||||
procedure mnuStopProjectClicked(Sender: TObject);
|
||||
procedure mnuRunParametersClicked(Sender: TObject);
|
||||
@ -1757,6 +1758,7 @@ begin
|
||||
MainIDEBar.StopSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StopSpeedButton' , 'menu_stop' , @mnuStopProjectClicked, lisHintStop);
|
||||
MainIDEBar.StepIntoSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepIntoSpeedButton', 'menu_stepinto' , @mnuStepIntoProjectClicked, lisHintStepInto);
|
||||
MainIDEBar.StepOverSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOverpeedButton' , 'menu_stepover' , @mnuStepOverProjectClicked, lisHintStepOver);
|
||||
MainIDEBar.StepOutSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOutSpeedButton' , 'menu_stepout' , @mnuStepOutProjectClicked, lisHintStepOut);
|
||||
|
||||
MainIDEBar.CreatePopupMenus(OwningComponent);
|
||||
|
||||
@ -2418,6 +2420,7 @@ begin
|
||||
itmRunMenuShowExecutionPoint.OnClick := @mnuShowExecutionPointClicked;
|
||||
itmRunMenuStepInto.OnClick := @mnuStepIntoProjectClicked;
|
||||
itmRunMenuStepOver.OnClick := @mnuStepOverProjectClicked;
|
||||
itmRunMenuStepOut.OnClick := @mnuStepOutProjectClicked;
|
||||
itmRunMenuRunToCursor.OnClick := @mnuRunToCursorProjectClicked;
|
||||
itmRunMenuStop.Enabled := False;
|
||||
itmRunMenuStop.OnClick := @mnuStopProjectClicked;
|
||||
@ -3862,6 +3865,11 @@ begin
|
||||
DebugBoss.DoStepOverProject;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuStepOutProjectClicked(Sender: TObject);
|
||||
begin
|
||||
DebugBoss.DoStepOutProject;
|
||||
end;
|
||||
|
||||
Procedure TMainIDE.mnuRunToCursorProjectClicked(Sender: TObject);
|
||||
begin
|
||||
DebugBoss.DoRunToCursor;
|
||||
|
@ -71,6 +71,7 @@ type
|
||||
StopSpeedButton : TToolButton;
|
||||
StepIntoSpeedButton : TToolButton;
|
||||
StepOverSpeedButton : TToolButton;
|
||||
StepOutSpeedButton : TToolButton;
|
||||
|
||||
NewUnitFormPopupMenu : TPopupMenu;
|
||||
NewUFSetDefaultMenuItem: TMenuItem;
|
||||
@ -255,6 +256,7 @@ type
|
||||
itmRunMenuShowExecutionPoint: TIDEMenuCommand;
|
||||
itmRunMenuStepInto: TIDEMenuCommand;
|
||||
itmRunMenuStepOver: TIDEMenuCommand;
|
||||
itmRunMenuStepOut: TIDEMenuCommand;
|
||||
itmRunMenuRunToCursor: TIDEMenuCommand;
|
||||
itmRunMenuStop: TIDEMenuCommand;
|
||||
itmRunMenuRunParameters: TIDEMenuCommand;
|
||||
|
@ -655,6 +655,7 @@ begin
|
||||
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,itmRunMenuStepOut,'itmRunMenuStepOut',lisMenuStepOut,'menu_stepout');
|
||||
CreateMenuItem(ParentMI,itmRunMenuRunToCursor,'itmRunMenuRunToCursor',lisMenuRunToCursor,'menu_run_cursor');
|
||||
CreateMenuItem(ParentMI,itmRunMenuStop,'itmRunMenuStop',lisMenuStop,'menu_stop');
|
||||
CreateMenuItem(ParentMI,itmRunMenuRunParameters,'itmRunMenuRunParameters',lisMenuRunParameters, 'menu_run_parameters');
|
||||
@ -952,6 +953,7 @@ begin
|
||||
itmRunMenuPause.Command:=GetCommand(ecPause);
|
||||
itmRunMenuStepInto.Command:=GetCommand(ecStepInto);
|
||||
itmRunMenuStepOver.Command:=GetCommand(ecStepOver);
|
||||
itmRunMenuStepOut.Command:=GetCommand(ecStepOut);
|
||||
itmRunMenuRunToCursor.Command:=GetCommand(ecRunToCursor);
|
||||
itmRunMenuStop.Command:=GetCommand(ecStopProgram);
|
||||
itmRunMenuResetDebugger.Command:=GetCommand(ecResetDebugger);
|
||||
|
@ -232,6 +232,7 @@ const
|
||||
ecEvaluate = ecFirstLazarus + 416;
|
||||
ecAddWatch = ecFirstLazarus + 417;
|
||||
ecShowExecutionPoint = ecFirstLazarus + 418;
|
||||
ecStepOut = ecFirstLazarus + 419;
|
||||
|
||||
// project menu
|
||||
ecNewProject = ecFirstLazarus + 500;
|
||||
|
@ -7607,6 +7607,32 @@ LazarusResources.Add('menu_stepover','PNG',[
|
||||
+#174'<'#155#254#141#177'&0E'#184'l'#157#227#249#233'$'#166#167#167#30#221#198
|
||||
+#255#229#235'7>oE;>'#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('menu_stepout','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
||||
+#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
|
||||
+#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#218#2
|
||||
+#14#2#6#28#164#177#158#29#0#0#1#242'IDAT8'#203#149#147';kTA'#24#134#159#153
|
||||
+'9'#231#236'& (QBP'#17#193'FD'#237#21#4#181#176#20'b%$'#193#206#31#144#248#11
|
||||
+#20'1^~ED'#172#20','#188#20#137#196#152'tZx!'#130#149'A'#13'F'#179#168'dwg'
|
||||
+#231#246'Yl'#142#187'k'#18#209#23#6'f'#134#247'}x?'#134'Qtiaa^'#248'Oe'#221
|
||||
+#135#166'mr'#234#228#233#127#14#207'<'#157'F'#1#188'Xz">8'#154#173':>:B'#240
|
||||
+#248#232'8s'#232#194#150#225#162#168#240#232#241#195'v'#3#235#26#248#224#177
|
||||
+#174'A'#136#30#31#28'>:*'#213#190'M'#195#141#250#26#0#214#218#18#208'$'#4'G'
|
||||
+#237'm'#193#185#225#243#0#196#24'i'#212'/n'#10'0'#198#252#9'h'#16#130#195#218
|
||||
+'b'#131#233'o'#218#208'@$'#239'1L'#221#158'"'#198'H'#140#177#231'~lt'#140#162
|
||||
+#168't'#0'-'#215#192'G'#135#170'V'#19' '#128#1#24#29#25#237#9#139#8'"'#130
|
||||
+#214#186#183#193'rm'#233#139'Rz0W'#9#17#137'J)'#211'=J'#25','#149'R{'#223'j'
|
||||
+#173#3'V'#127','#15#250#232#25#192#136#136'$!E'#173#140#185'~c'#18#17#217'0'
|
||||
+#194#196#248#165#222#6#223#215'jT'#242#10'?'#243#207'jv'#241'^'#182#189#127
|
||||
+#167':'#186#239'DZ7*'#239#189'*['#136#200#239#6#214'Z'#244#200#173'#'#226#130
|
||||
+#197'G'#143'Ku='#255#238'A6'#253#250#174'>{e'#143'&'#165#148#146'x'#165'4'
|
||||
+#229#210'Z#'#146':'#13'B'#240#4#237#240':'#195#232#12#163#29'3/'#239'3wg'#215
|
||||
+'''}u['#14#244#1#9#168#150'#|]Y'#233#0#150'V'#222#179#127#232' &:B'#204#152
|
||||
+'{5'#195#179'I'#251#205'^n'#237#136'!d)I'#17'B'#160'{'#4#163'U'#7'0'#127#211
|
||||
+#15#28#159#200#223#28#216'}xh'#241#195'sf'#175'5k'#198#152#162#191#175#31'h'
|
||||
+#255#149#238#23'('#165#148#194'Z'#219'6'#0#28#27#207'd'#239#199#225'Ukm'#21
|
||||
+#200#215#127#170'*!['#233#23'Jg/'#196'4'#4#9#139#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('menu_stop','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
|
||||
+#0#0#0#245'IDATx^'#197#147'AJ'#196'P'#16'D'#171#131'x'#7'='#134''''#152#149
|
||||
|
@ -90,6 +90,7 @@ menu/menu_search_replace.png
|
||||
menu/menu_select_all.png
|
||||
menu/menu_stepinto.png
|
||||
menu/menu_stepover.png
|
||||
menu/menu_stepout.png
|
||||
menu/menu_stop.png
|
||||
menu/menu_tool_check_lfm.png
|
||||
menu/menu_tool_dfm_to_lfm.png
|
||||
|
BIN
images/menu/menu_stepout.png
Normal file
BIN
images/menu/menu_stepout.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 626 B |
Loading…
Reference in New Issue
Block a user