mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-16 06:09:29 +02:00
* Fixes so running/compiling browser and nodejs programs works
git-svn-id: trunk@56787 -
This commit is contained in:
parent
88c07ee45a
commit
0737a593d7
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user