mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-18 17:11:33 +02:00
220 lines
6.3 KiB
PHP
220 lines
6.3 KiB
PHP
{
|
|
$Id$
|
|
This file is part of the Free Pascal Integrated Development Environment
|
|
Copyright (c) 1998 by Berczi Gabor
|
|
|
|
Tools 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.
|
|
|
|
**********************************************************************}
|
|
|
|
procedure TIDEApp.DoAsciiTable;
|
|
var
|
|
P: PAsciiChart;
|
|
begin
|
|
P := New(PAsciiChart, Init);
|
|
P^.HelpCtx := hcAsciiTable;
|
|
InsertWindow(P);
|
|
end;
|
|
|
|
|
|
procedure TIDEApp.Calculator;
|
|
begin
|
|
with CalcWindow^ do
|
|
begin
|
|
if GetState(sfVisible)=false then Show;
|
|
MakeFirst;
|
|
end;
|
|
end;
|
|
|
|
procedure TIDEApp.ExecuteTool(Idx: integer);
|
|
var Title,ProgramPath,Params: string;
|
|
W: word;
|
|
Err: integer;
|
|
begin
|
|
if (Idx<1) or (Idx>GetToolCount) then Exit;
|
|
GetToolParams(Idx-1,Title,ProgramPath,Params,W);
|
|
Err:=ParseToolParams(Params,false);
|
|
if Err=-1 then Exit;
|
|
if Err<>0 then
|
|
begin ErrorBox(^C'Error parsing tool params.',nil); Exit; end;
|
|
DoExecute(ProgramPath,Params,false);
|
|
if (DosError<>0) then
|
|
ErrorBox('Error executing tool '+KillTilde(GetToolName(Idx-1)),nil) else
|
|
if DosExitCode<>0 then
|
|
ErrorBox('Execution successful. Exit code '+IntToStr(DosExitCode),nil);
|
|
end;
|
|
|
|
procedure TIDEApp.Grep;
|
|
|
|
var PGrepDialog : PCenterDialog;
|
|
R,R2 : TRect;
|
|
IL1,IL2 : PInputLine;
|
|
p,lineNb : longint;
|
|
error : word;
|
|
searchword,
|
|
GrepExe,GrepArgs,Line,ModuleName : String;
|
|
GrepOut : text;
|
|
Params : Array[0..4] of longint;
|
|
|
|
Const GrepOutName = 'grep$$.out';
|
|
{$ifdef linux}
|
|
GrepExeName = 'grep';
|
|
{$else linux}
|
|
GrepExeName = 'grep.exe';
|
|
{$endif linux}
|
|
begin
|
|
{ Find grep.exe }
|
|
GrepExe:=GrepExeName;
|
|
If not LocateExeFile(GrepExe) then
|
|
Begin
|
|
ErrorBox('Grep program not found',nil);
|
|
Exit;
|
|
End;
|
|
{ Try to load the word from the editor }
|
|
If not(DeskTop^.First=nil) and
|
|
(DeskTop^.First^.HelpCtx=hcSourceWindow) then
|
|
Searchword:=PSourceWindow(DeskTop^.First)^.Editor^.GetCurrentWord
|
|
else
|
|
Searchword:='';
|
|
{ add "" for args with spaces }
|
|
{ WARNING : text must still be entered in usual grep syntax }
|
|
GrepArgs:='-n -i "$TEXT" '+HighlightExts;
|
|
{ Dialog }
|
|
R.Assign(0,0,45,8);
|
|
new(PGrepDialog,Init(R,'Grep arguments'));
|
|
with PGrepDialog^ do
|
|
begin
|
|
R2.A.Y:=R.A.Y+3;
|
|
R2.B.Y:=R2.A.Y+1;
|
|
R2.A.X:=R.A.X+3;
|
|
R2.B.X:=R.B.X-3;
|
|
New(IL1, Init(R2, 128));
|
|
IL1^.Data^:=SearchWord;
|
|
Insert(IL1);
|
|
R2.Move(0,-1);
|
|
Insert(New(PLabel, Init(R2, '~T~ext to find', IL1)));
|
|
|
|
R2.Move(0,4);
|
|
New(IL2, Init(R2, 128));
|
|
IL2^.Data^:=GrepArgs;
|
|
Insert(IL2);
|
|
R2.Move(0,-1);
|
|
Insert(New(PLabel, Init(R2, '~G~rep arguments', IL2)));
|
|
end;
|
|
|
|
InsertButtons(PGrepDialog);
|
|
IL1^.Select;
|
|
|
|
if Desktop^.ExecView(PGrepDialog)=cmOK then
|
|
begin
|
|
SearchWord:=IL1^.Data^;
|
|
if SearchWord<>'' then
|
|
begin
|
|
GrepArgs:=IL2^.Data^;
|
|
ReplaceStr(GrepArgs,'$TEXT',SearchWord);
|
|
{ Linux ? }
|
|
if not ExecuteRedir(GrepExe,GrepArgs,GrepOutName,'grep$$.err') then
|
|
Begin
|
|
{ 2 as exit code just means that
|
|
some file vwere not found ! }
|
|
if (IOStatus<>0) or (ExecuteResult<>2) then
|
|
begin
|
|
Params[0]:=IOStatus;
|
|
Params[1]:=ExecuteResult;
|
|
WarningBox(#3'Error running Grep'#13#3'DosError = %d'#13#3'Exit code = %d',@Params);
|
|
end;
|
|
End;
|
|
{$I-}
|
|
Assign(GrepOut,GrepOutName);
|
|
Reset(GrepOut);
|
|
While not eof(GrepOut) do
|
|
begin
|
|
readln(GrepOut,Line);
|
|
p:=pos(':',line);
|
|
if p>0 then
|
|
begin
|
|
ModuleName:=copy(Line,1,p-1);
|
|
Line:=Copy(Line,p+1,255);
|
|
p:=pos(':',Line);
|
|
val(copy(Line,1,p-1),lineNb,error);
|
|
if error=0 then
|
|
ProgramInfoWindow^.AddMessage(V_Normal,Copy(Line,p+1,255),
|
|
ModuleName,LineNb,1);
|
|
end;
|
|
ProgramInfoWindow^.Show;
|
|
ProgramInfoWindow^.MakeFirst;
|
|
end;
|
|
Close(GrepOut);
|
|
Erase(GrepOut);
|
|
{$I+}
|
|
EatIO;
|
|
end;
|
|
end;
|
|
Dispose(PGrepDialog, Done);
|
|
end;
|
|
{
|
|
$Log$
|
|
Revision 1.9 1999-02-22 11:29:37 pierre
|
|
+ added col info in MessageItem
|
|
+ grep uses HighLightExts and should work for linux
|
|
|
|
Revision 1.8 1999/02/22 02:15:17 peter
|
|
+ default extension for save in the editor
|
|
+ Separate Text to Find for the grep dialog
|
|
* fixed redir crash with tp7
|
|
|
|
Revision 1.7 1999/02/20 15:18:31 peter
|
|
+ ctrl-c capture with confirm dialog
|
|
+ ascii table in the tools menu
|
|
+ heapviewer
|
|
* empty file fixed
|
|
* fixed callback routines in fpdebug to have far for tp7
|
|
|
|
Revision 1.6 1999/02/05 13:51:42 peter
|
|
* unit name of FPSwitches -> FPSwitch which is easier to use
|
|
* some fixes for tp7 compiling
|
|
|
|
Revision 1.5 1999/02/05 12:11:59 pierre
|
|
+ SourceDir that stores directories for sources that the
|
|
compiler should not know about
|
|
Automatically asked for addition when a new file that
|
|
needed filedialog to be found is in an unknown directory
|
|
Stored and retrieved from INIFile
|
|
+ Breakpoints conditions added to INIFile
|
|
* Breakpoints insterted and removed at debin and end of debug session
|
|
|
|
Revision 1.4 1999/02/04 15:59:08 pierre
|
|
* grep$$$.out was not closed
|
|
|
|
Revision 1.3 1999/02/04 13:32:09 pierre
|
|
* Several things added (I cannot commit them independently !)
|
|
+ added TBreakpoint and TBreakpointCollection
|
|
+ added cmResetDebugger,cmGrep,CmToggleBreakpoint
|
|
+ Breakpoint list in INIFile
|
|
* Select items now also depend of SwitchMode
|
|
* Reading of option '-g' was not possible !
|
|
+ added search for -Fu args pathes in TryToOpen
|
|
+ added code for automatic opening of FileDialog
|
|
if source not found
|
|
|
|
Revision 1.2 1999/01/21 11:54:21 peter
|
|
+ tools menu
|
|
+ speedsearch in symbolbrowser
|
|
* working run command
|
|
|
|
Revision 1.1 1998/12/22 14:27:54 peter
|
|
* moved
|
|
|
|
Revision 1.2 1998/12/22 10:39:49 peter
|
|
+ options are now written/read
|
|
+ find and replace routines
|
|
|
|
}
|