IDE: run external tool: check if working directory exists

git-svn-id: trunk@30670 -
This commit is contained in:
mattias 2011-05-11 01:26:20 +00:00
parent 92ad46ea4a
commit 9d36ba416b
2 changed files with 25 additions and 15 deletions

View File

@ -41,7 +41,7 @@ uses
{$ENDIF} {$ENDIF}
Classes, SysUtils, Process, LCLType, LCLProc, Controls, Forms, Classes, SysUtils, Process, LCLType, LCLProc, Controls, Forms,
Buttons, StdCtrls, ComCtrls, Dialogs, ExtCtrls, ButtonPanel, Buttons, StdCtrls, ComCtrls, Dialogs, ExtCtrls, ButtonPanel,
LazConfigStorage, FileUtil, UTF8Process, LazConfigStorage, FileProcs, UTF8Process,
IDEExternToolIntf, IDEImagesIntf, IDEDialogs, IDEHelpIntf, IDECommands, IDEExternToolIntf, IDEImagesIntf, IDEDialogs, IDEHelpIntf, IDECommands,
CompOptsIntf, ProjectIntf, CompOptsIntf, ProjectIntf,
EnvironmentOpts, EnvironmentOpts,
@ -293,7 +293,6 @@ var
TheProcess: TProcessUTF8; TheProcess: TProcessUTF8;
Abort, ErrorOccurred: boolean; Abort, ErrorOccurred: boolean;
NewFilename: String; NewFilename: String;
Btns: TMsgDlgButtons;
TheOutputFilter: TOutputFilter; TheOutputFilter: TOutputFilter;
begin begin
Result:=mrCancel; Result:=mrCancel;
@ -307,21 +306,30 @@ begin
if (not Macros.SubstituteStr(Filename)) then exit; if (not Macros.SubstituteStr(Filename)) then exit;
if (not Macros.SubstituteStr(WorkingDir)) then exit; if (not Macros.SubstituteStr(WorkingDir)) then exit;
if (not Macros.SubstituteStr(Params)) then exit; if (not Macros.SubstituteStr(Params)) then exit;
if ShowAbort then
Btns:=[mbIgnore,mbAbort] // expand working directory
else WorkingDir:=TrimAndExpandDirectory(WorkingDir);
Btns:=[mbCancel]; if (WorkingDir<>'')
and (not DirPathExists(WorkingDir)) then begin
Result:=IDEMessageDialogAb(lisExtToolFailedToRunTool,
Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
Format(lisWorkingDirectoryNotFound, [WorkingDir])]),
mtError,[mbCancel],ShowAbort);
CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
Format(lisWorkingDirectoryNotFound, [WorkingDir])]);
exit;
end;
// expand file name
if not FilenameIsAbsolute(Filename) then begin if not FilenameIsAbsolute(Filename) then begin
NewFilename:=FindProgram(Filename,GetCurrentDirUTF8,false); NewFilename:=FindProgram(Filename,GetCurrentDirUTF8,false);
if NewFilename='' then begin if NewFilename='' then begin
Result:=MessageDlg(lisExtToolFailedToRunTool, Result:=IDEMessageDialogAb(lisExtToolFailedToRunTool,
Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
'Program '+Filename+' not found']), Format(lisProgramNotFound, [Filename])]),
mtError,Btns,0); mtError,[mbCancel],ShowAbort);
if Result=mrIgnore then Result:=mrCancel;
CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13,
'Program '+Filename+' not found']); Format(lisProgramNotFound, [Filename])]);
exit; exit;
end; end;
Filename:=NewFilename; Filename:=NewFilename;
@ -413,11 +421,10 @@ begin
on e: Exception do begin on e: Exception do begin
DebugLn('TExternalToolList.Run ',lisExtToolFailedToRunTool, ' ', E.Message); DebugLn('TExternalToolList.Run ',lisExtToolFailedToRunTool, ' ', E.Message);
DumpExceptionBackTrace; DumpExceptionBackTrace;
Result:=IDEMessageDialog(lisExtToolFailedToRunTool, Result:=IDEMessageDialogAb(lisExtToolFailedToRunTool,
Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message] Format(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message]
), ),
mtError,Btns,''); mtError,[mbCancel],ShowAbort);
if Result=mrIgnore then Result:=mrCancel;
CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message]); CompileProgress.Ready(lisExtToolUnableToRunTheTool, ['"', Title, '"', #13, e.Message]);
end; end;
end; end;
@ -505,6 +512,7 @@ begin
end; end;
{ TExternalToolDialog } { TExternalToolDialog }
constructor TExternalToolDialog.Create(AnOwner: TComponent); constructor TExternalToolDialog.Create(AnOwner: TComponent);
begin begin
inherited Create(AnOwner); inherited Create(AnOwner);

View File

@ -3489,6 +3489,8 @@ resourcestring
// external tools // external tools
lisExtToolFailedToRunTool = 'Failed to run tool'; lisExtToolFailedToRunTool = 'Failed to run tool';
lisExtToolUnableToRunTheTool = 'Unable to run the tool %s%s%s:%s%s'; lisExtToolUnableToRunTheTool = 'Unable to run the tool %s%s%s:%s%s';
lisProgramNotFound = 'Program %s not found';
lisWorkingDirectoryNotFound = 'Working directory %s not found';
lisExtToolExternalTools = 'External tools'; lisExtToolExternalTools = 'External tools';
lisExtToolRemove = 'Remove'; lisExtToolRemove = 'Remove';
lisTheseSettingsAreStoredWithTheProject = 'These settings are stored with ' lisTheseSettingsAreStoredWithTheProject = 'These settings are stored with '