123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- {
- This file is part of the Free Pascal Integrated Development Environment
- Copyright (c) 1998 by Berczi Gabor
- Debug menu entries
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {$ifdef SUPPORT_REMOTE}
- procedure TIDEApp.TransferRemote;
- var
- DoSendCommand : string;
- Executed : boolean;
- begin
- DoSendCommand:=TransformRemoteString(RemoteSendCommand);
- if DoSendCommand<>'' then
- begin
- Executed:=DoExecute(DoSendCommand,'','','send___.out','send___.err',exNormal);
- if Executed then
- begin
- if (DosError<>0) or (DosExitCode<>0) then
- ErrorBox(#3'Execution of'#13#3+DoSendCommand+#13#3+
- 'returned ('+inttostr(DosError)+','+inttostr(DosExitCode)+')',nil);
- ProcessMessageFile('send___.out');
- ProcessMessageFile('send___.err');
- UpdateToolMessages;
- end
- else
- ErrorBox(#3'Unable to execute'#13#3+DoSendCommand,nil);
- end
- else
- ErrorBox(#3'Unable to transfer executable',nil);
- end;
- {$endif SUPPORT_REMOTE}
- procedure TIDEApp.DoUserScreenWindow;
- begin
- {$ifdef HASAMIGA}
- Exit; // Do not open the Userscreen on AMIGA systems, its not closeable
- {$endif}
- if UserScreenWindow=nil then
- begin
- New(UserScreenWindow, Init(UserScreen, SearchFreeWindowNo));
- Desktop^.Insert(UserScreenWindow);
- end;
- UserScreenWindow^.MakeFirst;
- end;
- procedure TIDEApp.DoCloseUserScreenWindow;
- begin
- if Assigned(UserScreenWindow) then
- Message(UserScreenWindow,evCommand,cmClose,nil);
- end;
- procedure TIDEApp.DoUserScreen;
- var Event : TEvent;
- ev : TMouseEvent;
- Clear : Boolean;
- begin
- if UserScreen=nil then
- begin
- ErrorBox(msg_userscreennotavailable,nil);
- Exit;
- end;
- ShowUserScreen;
- InitKeyBoard;
- { closing the user screen on mouse events makes copy paste impossible }
- repeat
- repeat
- GiveUpTimeSlice;
- Drivers.GetKeyEvent(Event);
- until Event.What=evKeyboard;
- Clear:=true;
- if not UserScreen^.CanScroll then
- Clear:=false
- else
- case Event.keycode of
- kbPgUp : UserScreen^.Scroll(-20);
- kbPgDn : UserScreen^.Scroll(20);
- kbUp : UserScreen^.Scroll(-1);
- kbDown : UserScreen^.Scroll(1);
- kbHome : UserScreen^.Scroll(-1024);
- kbEnd : UserScreen^.Scroll(+1024);
- else
- Clear:=false;
- end;
- if Clear then
- ClearEvent(Event);
- until Event.what=evKeyboard;
- while (Keyboard.PollKeyEvent<>0) do
- Keyboard.GetKeyEvent;
- DoneKeyboard;
- ShowIDEScreen;
- end;
- procedure TIDEApp.DoShowCallStack;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If not assigned(StackWindow) then
- InitStackWindow
- else
- StackWindow^.MakeFirst;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowDisassembly;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If not assigned(DisassemblyWindow) then
- InitDisassemblyWindow
- else
- DisassemblyWindow^.MakeFirst;
- DisassemblyWindow^.LoadFunction('');
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowRegisters;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If not assigned(RegistersWindow) then
- InitRegistersWindow
- else
- RegistersWindow^.MakeFirst;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowFPU;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If not assigned(FPUWindow) then
- InitFPUWindow
- else
- FPUWindow^.MakeFirst;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowVector;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If not assigned(VectorWindow) then
- InitVectorWindow
- else
- VectorWindow^.MakeFirst;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowBreakpointList;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If assigned(BreakpointsWindow) then
- begin
- BreakpointsWindow^.Update;
- BreakpointsWindow^.Show;
- BreakpointsWindow^.MakeFirst;
- end
- else
- begin
- New(BreakpointsWindow,Init);
- Desktop^.Insert(BreakpointsWindow);
- end;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoShowWatches;
- begin
- {$ifdef NODEBUG}
- NoDebugger;
- {$else}
- If assigned(WatchesWindow) then
- begin
- WatchesWindow^.Update;
- WatchesWindow^.MakeFirst;
- end
- else
- begin
- New(WatchesWindow,Init);
- Desktop^.Insert(WatchesWindow);
- end;
- {$endif NODEBUG}
- end;
- procedure TIDEApp.DoAddWatch;
- {$ifdef NODEBUG}
- begin
- NoDebugger;
- end;
- {$else}
- var
- P: PWatch;
- EditorWindow : PSourceWindow;
- EditorWasFirst : boolean;
- S : string;
- begin
- EditorWindow:=FirstEditorWindow;
- { Leave the editor first, but only if there was already an WatchesWindow }
- EditorWasFirst:=(PWindow(Desktop^.First)=PWindow(EditorWindow)) and
- assigned(WatchesWindow);
- If assigned(EditorWindow) then
- S:={LowerCaseStr(}EditorWindow^.Editor^.GetCurrentWord
- else
- S:='';
- P:=New(PWatch,Init(S));
- if ExecuteDialog(New(PWatchItemDialog,Init(P)),nil)<>cmCancel then
- begin
- WatchesCollection^.Insert(P);
- WatchesCollection^.Update;
- DoShowWatches;
- if EditorWasFirst then
- EditorWindow^.MakeFirst;
- end
- else
- dispose(P,Done);
- end;
- {$endif NODEBUG}
- {$ifdef NODEBUG}
- procedure TIDEapp.do_evaluate;
- begin
- nodebugger;
- end;
- {$else}
- procedure TIDEapp.do_evaluate;
- var d:Pevaluate_dialog;
- r:Trect;
- begin
- desktop^.getextent(r);
- r.b.x:=r.b.x*3 div 4;
- r.b.y:=12;
- new(d,init(r));
- desktop^.execview(d);
- dispose(d,done);
- end;
- {$endif}
|