mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 10:19:22 +02:00
IDE: optional abort for run tool
git-svn-id: trunk@28705 -
This commit is contained in:
parent
2d8d01da6c
commit
25b1fc7114
@ -283,7 +283,7 @@ begin
|
||||
// append target CPU
|
||||
if Options.TargetCPU<>'' then
|
||||
Tool.CmdLineParams:=Tool.CmdLineParams+' CPU_TARGET='+Options.FPCTargetCPU;
|
||||
Result:=ExternalTools.Run(Tool,Macros);
|
||||
Result:=ExternalTools.Run(Tool,Macros,false);
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
|
||||
@ -351,7 +351,7 @@ begin
|
||||
if Options.TargetCPU<>'' then
|
||||
Tool.CmdLineParams:=Tool.CmdLineParams+' CPU_TARGET='+Options.FPCTargetCPU;
|
||||
// run
|
||||
Result:=ExternalTools.Run(Tool,Macros);
|
||||
Result:=ExternalTools.Run(Tool,Macros,false);
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
Result:=mrOk;
|
||||
|
@ -1607,7 +1607,7 @@ begin
|
||||
if SourceEditorManagerIntf<>nil then
|
||||
SourceEditorManagerIntf.ClearErrorLines;
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList,
|
||||
nil,CompOptions);
|
||||
nil,CompOptions,false);
|
||||
if LazarusIDE<>nil then
|
||||
LazarusIDE.DoCheckFilesOnDisk;
|
||||
end;
|
||||
|
@ -99,7 +99,7 @@ type
|
||||
function DoTestAll: TModalResult;
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
function RunTool(ExtTool: TExternalToolOptions): TModalResult;
|
||||
function RunTool(ExtTool: TExternalToolOptions; ShowAbort: Boolean): TModalResult;
|
||||
procedure Add(const Msg, CurDir: String; ProgressLine: boolean;
|
||||
OriginalIndex: integer);
|
||||
procedure AddMsg(const Msg, CurDir: String; OriginalIndex: integer);
|
||||
@ -402,7 +402,7 @@ begin
|
||||
CompileTool.Filename:=CompilerFilename;
|
||||
CompileTool.CmdLineParams:=CmdLineParams;
|
||||
|
||||
Result:=RunTool(CompileTool);
|
||||
Result:=RunTool(CompileTool,false);
|
||||
FreeThenNil(CompileTool);
|
||||
finally
|
||||
DeleteFileUTF8(BogusFilename);
|
||||
@ -1128,11 +1128,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TCheckCompilerOptsDlg.RunTool(ExtTool: TExternalToolOptions
|
||||
): TModalResult;
|
||||
function TCheckCompilerOptsDlg.RunTool(ExtTool: TExternalToolOptions;
|
||||
ShowAbort: Boolean): TModalResult;
|
||||
begin
|
||||
TestMemo.Lines.Text:=ExtTool.Filename+' '+ExtTool.CmdLineParams;
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList,ShowAbort);
|
||||
end;
|
||||
|
||||
procedure TCheckCompilerOptsDlg.Add(const Msg, CurDir: String;
|
||||
|
@ -42,7 +42,7 @@ uses
|
||||
Classes, SysUtils, Process, LCLType, LCLProc, Controls, Forms,
|
||||
Buttons, StdCtrls, ComCtrls, Dialogs, ExtCtrls,
|
||||
LazConfigStorage, FileUtil, UTF8Process,
|
||||
IDEExternToolIntf, IDEImagesIntf,
|
||||
IDEExternToolIntf, IDEImagesIntf, IDEDialogs,
|
||||
ExtToolEditDlg, IDECommands, KeyMapping, TransferMacros, IDEProcs,
|
||||
InfoBuild, CompilerOptions, OutputFilter, LazarusIDEStrConsts, ButtonPanel;
|
||||
|
||||
@ -79,12 +79,15 @@ type
|
||||
function Load(Config: TConfigStorage; const Path: string): TModalResult;
|
||||
procedure LoadShortCuts(KeyCommandRelationList: TKeyCommandRelationList);
|
||||
function Run(ExtTool: TIDEExternalToolOptions;
|
||||
Macros: TTransferMacroList): TModalResult;
|
||||
Macros: TTransferMacroList;
|
||||
ShowAbort: boolean): TModalResult;
|
||||
function Run(ExtTool: TIDEExternalToolOptions;
|
||||
Macros: TTransferMacroList;
|
||||
TheOutputFilter: TOutputFilter;
|
||||
CompilerOptions: TBaseCompilerOptions): TModalResult;
|
||||
function Run(Index: integer; Macros: TTransferMacroList): TModalResult;
|
||||
CompilerOptions: TBaseCompilerOptions;
|
||||
ShowAbort: boolean): TModalResult;
|
||||
function Run(Index: integer; Macros: TTransferMacroList;
|
||||
ShowAbort: boolean): TModalResult;
|
||||
function Save(Config: TConfigStorage): TModalResult;
|
||||
function Save(Config: TConfigStorage; const Path: string): TModalResult;
|
||||
procedure SaveShortCuts(KeyCommandRelationList: TKeyCommandRelationList);
|
||||
@ -281,26 +284,27 @@ begin
|
||||
end;
|
||||
|
||||
function TExternalToolList.Run(ExtTool: TIDEExternalToolOptions;
|
||||
Macros: TTransferMacroList): TModalResult;
|
||||
Macros: TTransferMacroList; ShowAbort: boolean): TModalResult;
|
||||
begin
|
||||
Result:=Run(ExtTool,Macros,nil,nil);
|
||||
Result:=Run(ExtTool,Macros,nil,nil,ShowAbort);
|
||||
end;
|
||||
|
||||
function TExternalToolList.Run(Index: integer;
|
||||
Macros: TTransferMacroList): TModalResult;
|
||||
Macros: TTransferMacroList; ShowAbort: boolean): TModalResult;
|
||||
begin
|
||||
Result:=mrCancel;
|
||||
if (Index<0) or (Index>=Count) then exit;
|
||||
Result:=Run(Items[Index],Macros);
|
||||
Result:=Run(Items[Index],Macros,ShowAbort);
|
||||
end;
|
||||
|
||||
function TExternalToolList.Run(ExtTool: TIDEExternalToolOptions;
|
||||
Macros: TTransferMacroList; TheOutputFilter: TOutputFilter;
|
||||
CompilerOptions: TBaseCompilerOptions): TModalResult;
|
||||
CompilerOptions: TBaseCompilerOptions; ShowAbort: boolean): TModalResult;
|
||||
var WorkingDir, Filename, Params, CmdLine, Title: string;
|
||||
TheProcess: TProcessUTF8;
|
||||
Abort, ErrorOccurred: boolean;
|
||||
NewFilename: String;
|
||||
Btns: TMsgDlgButtons;
|
||||
begin
|
||||
Result:=mrCancel;
|
||||
if ExtTool=nil then exit;
|
||||
@ -312,14 +316,17 @@ begin
|
||||
if (not Macros.SubstituteStr(Filename)) then exit;
|
||||
if (not Macros.SubstituteStr(WorkingDir)) then exit;
|
||||
if (not Macros.SubstituteStr(Params)) then exit;
|
||||
if ShowAbort then
|
||||
Btns:=[mbIgnore,mbAbort]
|
||||
else
|
||||
Btns:=[mbCancel];
|
||||
if not FilenameIsAbsolute(Filename) then begin
|
||||
NewFilename:=FindProgram(Filename,GetCurrentDirUTF8,false);
|
||||
if NewFilename='' then begin
|
||||
Result:=MessageDlg(lisExtToolFailedToRunTool,
|
||||
Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
|
||||
'Program '+Filename+' not found']
|
||||
),
|
||||
mtError,[mbIgnore,mbAbort],0);
|
||||
'Program '+Filename+' not found']),
|
||||
mtError,Btns,0);
|
||||
if Result=mrIgnore then Result:=mrCancel;
|
||||
|
||||
CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
|
||||
@ -415,16 +422,12 @@ begin
|
||||
on e: Exception do begin
|
||||
DebugLn('TExternalToolList.Run ',lisExtToolFailedToRunTool, ' ', E.Message);
|
||||
DumpExceptionBackTrace;
|
||||
DebugLn(['TExternalToolList.Run AAA1']);
|
||||
Result:=MessageDlg(lisExtToolFailedToRunTool,
|
||||
Result:=IDEMessageDialog(lisExtToolFailedToRunTool,
|
||||
Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message]
|
||||
),
|
||||
mtError,[mbIgnore,mbAbort],0);
|
||||
DebugLn(['TExternalToolList.Run AAA2']);
|
||||
mtError,Btns,'');
|
||||
if Result=mrIgnore then Result:=mrCancel;
|
||||
DebugLn(['TExternalToolList.Run AAA3']);
|
||||
CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message]);
|
||||
DebugLn(['TExternalToolList.Run AAA4']);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
@ -23,6 +23,7 @@
|
||||
Abstract:
|
||||
Editor dialog to edit nodes of Help for IDE windows (controls).
|
||||
}
|
||||
{%RunCommand bb$MakeExe($(EdFile))}
|
||||
unit IDEContextHelpEdit;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
33
ide/main.pp
33
ide/main.pp
@ -871,11 +871,11 @@ type
|
||||
// external tools
|
||||
function PrepareForCompile: TModalResult; override;
|
||||
function OnRunExternalTool(Tool: TIDEExternalToolOptions): TModalResult;
|
||||
function DoRunExternalTool(Index: integer): TModalResult;
|
||||
function DoRunExternalTool(Index: integer; ShowAbort: Boolean): TModalResult;
|
||||
function DoSaveBuildIDEConfigs(Flags: TBuildLazarusFlags): TModalResult; override;
|
||||
function DoBuildLazarus(Flags: TBuildLazarusFlags): TModalResult; override;
|
||||
function DoBuildAdvancedLazarus(ProfileNames: TStringList): TModalResult;
|
||||
function DoBuildFile: TModalResult;
|
||||
function DoBuildFile(ShowAbort: Boolean): TModalResult;
|
||||
function DoRunFile: TModalResult;
|
||||
function DoConfigBuildFile: TModalResult;
|
||||
function GetIDEDirectives(AnUnitInfo: TUnitInfo;
|
||||
@ -3066,7 +3066,7 @@ begin
|
||||
GetCurrentUnit(ASrcEdit,AnUnitInfo);
|
||||
if (AnUnitInfo<>nil)
|
||||
and AnUnitInfo.BuildFileIfActive then
|
||||
DoBuildFile
|
||||
DoBuildFile(false)
|
||||
else
|
||||
DoBuildProject(crCompile,[]);
|
||||
end;
|
||||
@ -3087,7 +3087,7 @@ begin
|
||||
end;
|
||||
|
||||
ecBuildFile:
|
||||
DoBuildFile;
|
||||
DoBuildFile(false);
|
||||
|
||||
ecRunFile:
|
||||
DoRunFile;
|
||||
@ -3173,7 +3173,7 @@ begin
|
||||
PkgBoss.ShowConfigureCustomComponents;
|
||||
|
||||
ecExtToolFirst..ecExtToolLast:
|
||||
DoRunExternalTool(Command-ecExtToolFirst);
|
||||
DoRunExternalTool(Command-ecExtToolFirst,false);
|
||||
|
||||
ecSyntaxCheck:
|
||||
DoCheckSyntax;
|
||||
@ -4086,7 +4086,7 @@ Begin
|
||||
GetCurrentUnit(ASrcEdit,AnUnitInfo);
|
||||
if (AnUnitInfo<>nil)
|
||||
and AnUnitInfo.BuildFileIfActive then
|
||||
DoBuildFile
|
||||
DoBuildFile(false)
|
||||
else
|
||||
DoBuildProject(crCompile,[]);
|
||||
end;
|
||||
@ -4165,7 +4165,7 @@ end;
|
||||
|
||||
procedure TMainIDE.mnuBuildFileClicked(Sender: TObject);
|
||||
begin
|
||||
DoBuildFile;
|
||||
DoBuildFile(false);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuRunFileClicked(Sender: TObject);
|
||||
@ -4417,7 +4417,7 @@ begin
|
||||
if not (Sender is TIDEMenuItem) then exit;
|
||||
Index:=itmCustomTools.IndexOf(TIDEMenuItem(Sender))-1;
|
||||
if (Index<0) or (Index>=EnvironmentOptions.ExternalTools.Count) then exit;
|
||||
DoRunExternalTool(Index);
|
||||
DoRunExternalTool(Index,false);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuEnvGeneralOptionsClicked(Sender: TObject);
|
||||
@ -11476,10 +11476,11 @@ end;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function TMainIDE.DoRunExternalTool(Index: integer): TModalResult;
|
||||
function TMainIDE.DoRunExternalTool(Index: integer; ShowAbort: Boolean
|
||||
): TModalResult;
|
||||
begin
|
||||
SourceEditorManager.ClearErrorLines;
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Index,GlobalMacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Index,GlobalMacroList,ShowAbort);
|
||||
DoCheckFilesOnDisk;
|
||||
end;
|
||||
|
||||
@ -11718,7 +11719,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TMainIDE.DoBuildFile: TModalResult;
|
||||
function TMainIDE.DoBuildFile(ShowAbort: Boolean): TModalResult;
|
||||
var
|
||||
ActiveSrcEdit: TSourceEditor;
|
||||
ActiveUnitInfo: TUnitInfo;
|
||||
@ -11786,7 +11787,7 @@ begin
|
||||
ExtTool.CmdLineParams:=Params;
|
||||
|
||||
// run
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList,true);
|
||||
finally
|
||||
// clean up
|
||||
ExtTool.Free;
|
||||
@ -11833,7 +11834,7 @@ begin
|
||||
IDEDirectiveNames[idedRunFlags],''));
|
||||
AlwaysBuildBeforeRun:=idedrfBuildBeforeRun in RunFlags;
|
||||
if AlwaysBuildBeforeRun then begin
|
||||
Result:=DoBuildFile;
|
||||
Result:=DoBuildFile(true);
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
RunWorkingDir:=GetIDEStringDirective(DirectiveList,
|
||||
@ -11873,7 +11874,7 @@ begin
|
||||
ExtTool.CmdLineParams:=Params;
|
||||
|
||||
// run
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList,false);
|
||||
finally
|
||||
// clean up
|
||||
ExtTool.Free;
|
||||
@ -12205,7 +12206,7 @@ end;
|
||||
function TMainIDE.OnRunExternalTool(Tool: TIDEExternalToolOptions): TModalResult;
|
||||
begin
|
||||
SourceEditorManager.ClearErrorLines;
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList,false);
|
||||
DoCheckFilesOnDisk;
|
||||
end;
|
||||
|
||||
@ -12624,7 +12625,7 @@ begin
|
||||
Tool.Title:=lisCommandAfterPublishingModule;
|
||||
Tool.WorkingDirectory:=DestDir;
|
||||
Tool.CmdLineParams:=CmdAfterParams;
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
|
||||
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList,false);
|
||||
if Result<>mrOk then exit;
|
||||
end else begin
|
||||
ShowErrorForCommandAfter;
|
||||
|
Loading…
Reference in New Issue
Block a user