diff --git a/ide/buildlazdialog.pas b/ide/buildlazdialog.pas index 53ca3d3566..8d1a326012 100644 --- a/ide/buildlazdialog.pas +++ b/ide/buildlazdialog.pas @@ -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; diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas index b74c5ee9fe..dffb5ee43b 100644 --- a/ide/buildmanager.pas +++ b/ide/buildmanager.pas @@ -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; diff --git a/ide/checkcompileropts.pas b/ide/checkcompileropts.pas index 10c7399dc3..2b5319432c 100644 --- a/ide/checkcompileropts.pas +++ b/ide/checkcompileropts.pas @@ -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; diff --git a/ide/exttooldialog.pas b/ide/exttooldialog.pas index 828050b3d1..37325024d2 100644 --- a/ide/exttooldialog.pas +++ b/ide/exttooldialog.pas @@ -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; diff --git a/ide/idecontexthelpedit.pas b/ide/idecontexthelpedit.pas index ae07b9fb36..fb46702298 100644 --- a/ide/idecontexthelpedit.pas +++ b/ide/idecontexthelpedit.pas @@ -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+} diff --git a/ide/main.pp b/ide/main.pp index d0aecd2d05..c0bd2d710a 100644 --- a/ide/main.pp +++ b/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;