* Fixes so running/compiling browser and nodejs programs works

git-svn-id: trunk@56787 -
This commit is contained in:
michael 2017-12-18 22:01:10 +00:00
parent 88c07ee45a
commit 0737a593d7
2 changed files with 37 additions and 11 deletions

View File

@ -19,6 +19,8 @@ Type
Public
Constructor Create;
Destructor Destroy; override;
Class Procedure DoneInstance;
Class Function instance : TPJSController;
Procedure Hook; virtual;
Procedure UnHook; virtual;
end;
@ -30,16 +32,21 @@ Const
PJSProjectHTMLFile = 'PasJSHTMLFile';
PJSProjectPort = 'PasJSPort';
Function PJSController : TPJSController;
implementation
uses PJSDsgnOptions;
uses FileUtil, LazFileUtils, PJSDsgnOptions;
Var
ctrl : TPJSController;
Function PJSController : TPJSController;
Class Procedure TPJSController.DoneInstance;
begin
FreeAndNil(Ctrl)
end;
Class Function TPJSController.Instance : TPJSController;
begin
if ctrl=Nil then
@ -56,6 +63,9 @@ begin
Result:=PJSOptions.BrowserFileName;
if Result='' then
Result:=GetStandardBrowser;
IdeMacros.SubstituteMacros(Result);
if (Result<>'') and not FilenameIsAbsolute(Result) then
Result:=FindDefaultExecutablePath(Result);
end;
function TPJSController.GetPasJSNodeJS(const s: string; const Data: PtrInt;
@ -65,6 +75,9 @@ begin
Result:=PJSOptions.NodeJSFileName;
if Result='' then
Result:=GetStandardNodeJS;
IdeMacros.SubstituteMacros(Result);
if (Result<>'') and not FilenameIsAbsolute(Result) then
Result:=FindDefaultExecutablePath(Result);
end;
function TPJSController.GetProjectURL(const s: string; const Data: PtrInt; var Abort: boolean): string;
@ -74,24 +87,34 @@ Var
begin
Abort:=LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]<>'1';
Writeln('LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]: ',LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]);
if Abort then
exit;
Result:=LazarusIDE.ActiveProject.CustomData[PJSProjectURL];
Writeln('LazarusIDE.ActiveProject.CustomData[PJSProjectURL]: ',LazarusIDE.ActiveProject.CustomData[PJSProjectURL]);
if (Result='') then
begin
FN:=LazarusIDE.ActiveProject.CustomData[PJSProjectHTMLFile];
Writeln('LazarusIDE.ActiveProject.CustomData[PJSProjectHTMLFile]: ',LazarusIDE.ActiveProject.CustomData[PJSProjectHTMLFile]);
if (FN='') then
FN:=ChangeFileExt(ExtractFileName(LazarusIDE.ActiveProject.ProjectInfoFile),'.html');
Result:=LazarusIDE.ActiveProject.CustomData[PJSProjectPort];
if (Result<>'') then
if (Result<>'') and (Result<>'0') then
Result:=Format('http://localhost:%s/%s',[Result,FN])
else
{$IFDEF WINDOWS}
Result:=Format('file:///%s',[ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile)+FN]);
{$ELSE}
Result:=Format('file://%s',[ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile)+FN]);
{$ENDIF}
end;
Abort:=(Result='');
Writeln('GetProjectURL : ',Result);
end;
constructor TPJSController.Create;
begin
Hook;
// Nothing for the moment
end;
destructor TPJSController.Destroy;
@ -109,10 +132,10 @@ end;
procedure TPJSController.UnHook;
begin
// Nothing for the moment
end;
finalization
FreeAndNil(Ctrl);
TPJSController.DoneInstance;
end.

View File

@ -90,6 +90,7 @@ procedure Register;
begin
PJSOptions:=TPas2jsOptions.Create;
PJSOptions.Load;
TPJSController.Instance.Hook;
// register new-project items
RegisterProjectDescriptor(TProjectPas2JSWebApp.Create);
RegisterProjectDescriptor(TProjectPas2JSNodeJSApp.Create);
@ -246,14 +247,16 @@ begin
CompOpts.SetAlternativeCompile(
'$MakeExe(pas2js) -Jc -Jminclude -Tnodejs "-Fu$(ProjUnitPath)" $Name($(ProjFile))',true);
RunParams:=AProject.RunParameters;
//ToDo RunParams.UseLaunchingApplication:=True;
//ToDo RunParams.LaunchingApplicationPathPlusParams:='$(Pas2JSNodeJS) "$MakeDir($(ProjPath))$NameOnly($(ProjFile)).js"';
RunParams.UseLaunchingApplication:=True;
RunParams.LaunchingApplicationPathPlusParams:='$(Pas2JSNodeJS) "$MakeDir($(ProjPath))$NameOnly($(ProjFile)).js"';
// create program source
NewSource:=CreateProjectSource;
AProject.MainFile.SetSourceText(NewSource,true);
AProject.AddPackageDependency('pas2js_rtl');
if naoUseNodeJSApp in Options then
AProject.AddPackageDependency('fcl_base_pas2js');
end;
@ -497,8 +500,8 @@ begin
CompOpts.SetAlternativeCompile(
'$MakeExe(pas2js) -Jirtl.js -Jc -Jminclude -Tbrowser "-Fu$(ProjUnitPath)" $Name($(ProjFile))',true);
RunParams:=AProject.RunParameters;
//ToDo RunParams.UseLaunchingApplication:=True;
//ToDo RunParams.LaunchingApplicationPathPlusParams:=GetBrowserCommand(CompOpts.TargetFileName);
RunParams.UseLaunchingApplication:=True;
RunParams.LaunchingApplicationPathPlusParams:=GetBrowserCommand(CompOpts.TargetFileName);
AProject.MainFile.SetSourceText(CreateProjectSource,true);
AProject.CustomData.Values[PJSProjectWebBrowser]:='1';
if baoUseURL in Options then