pas2js: added macro $(pas2js), do not add packages

git-svn-id: trunk@58096 -
This commit is contained in:
mattias 2018-06-03 13:02:11 +00:00
parent 50cce1a623
commit 72edd414d8
5 changed files with 50 additions and 38 deletions

View File

@ -52,9 +52,10 @@ Type
Private Private
FOnRefresh: TNotifyEvent; FOnRefresh: TNotifyEvent;
FServerInstances: TServerInstanceList; FServerInstances: TServerInstanceList;
function GetPasJSBrowser(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string; function GetPas2JSPath(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string;
function GetPasJSNodeJS(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string; function GetPas2JSBrowser(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string;
function GetProjectURL(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string; function GetPas2JSNodeJS(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string;
function GetPas2jsProjectURL(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string;
function MaybeStartServer(Sender: TObject; var Handled: boolean): TModalResult; function MaybeStartServer(Sender: TObject; var Handled: boolean): TModalResult;
Public Public
Constructor Create; Constructor Create;
@ -189,42 +190,62 @@ end;
{ TPJSController } { TPJSController }
function TPJSController.GetPasJSBrowser(const s: string; const Data: PtrInt; var Abort: boolean): string; function TPJSController.GetPas2JSPath(const s: string; const Data: PtrInt;
var Abort: boolean): string;
begin
Abort:=False;
if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetPas2JSPath] ignoring macro Pas2JS parameter "',s,'"']);
Result:=PJSOptions.CompilerFilename;
if Result='' then
Result:='pas2js'+GetExeExt
else
IdeMacros.SubstituteMacros(Result);
if (Result<>'') and (ExtractFilePath(Result)='') then
Result:=FindDefaultExecutablePath(Result);
if (Result<>'') and not FilenameIsAbsolute(Result) then begin
if ConsoleVerbosity>=0 then
debugln(['Hint: (lazarus) [TPJSController.GetPas2JSPath] invalid pas2js filename "',Result,'"']);
Result:='';
end;
end;
function TPJSController.GetPas2JSBrowser(const s: string; const Data: PtrInt; var Abort: boolean): string;
begin begin
Abort:=False; Abort:=False;
if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetPas2JSBrowser] ignoring macro Pas2JSBrowser parameter "',s,'"']);
Result:=PJSOptions.BrowserFileName; Result:=PJSOptions.BrowserFileName;
if Result='' then if Result='' then
Result:=GetStandardBrowser; Result:=GetStandardBrowser;
IdeMacros.SubstituteMacros(Result); IdeMacros.SubstituteMacros(Result);
if (Result<>'') and not FilenameIsAbsolute(Result) then if (Result<>'') and not FilenameIsAbsolute(Result) then
Result:=FindDefaultExecutablePath(Result); Result:=FindDefaultExecutablePath(Result);
if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetPasJSBrowser] ignoring macro Pas2JSBrowser parameter "',s,'"']);
end; end;
function TPJSController.GetPasJSNodeJS(const s: string; const Data: PtrInt; var Abort: boolean): string; function TPJSController.GetPas2JSNodeJS(const s: string; const Data: PtrInt; var Abort: boolean): string;
begin begin
Abort:=False; Abort:=False;
if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetPas2JSNodeJS] ignoring macro Pas2JSNodeJS parameter "',s,'"']);
Result:=PJSOptions.NodeJSFileName; Result:=PJSOptions.NodeJSFileName;
if Result='' then if Result='' then
Result:=GetStandardNodeJS; Result:=GetStandardNodeJS;
IdeMacros.SubstituteMacros(Result); IdeMacros.SubstituteMacros(Result);
if (Result<>'') and not FilenameIsAbsolute(Result) then if (Result<>'') and not FilenameIsAbsolute(Result) then
Result:=FindDefaultExecutablePath(Result); Result:=FindDefaultExecutablePath(Result);
if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetPasJSNodeJS] ignoring macro Pas2JSNodeJS parameter "',s,'"']);
end; end;
function TPJSController.GetProjectURL(const s: string; const Data: PtrInt; var Abort: boolean): string; function TPJSController.GetPas2jsProjectURL(const s: string; const Data: PtrInt; var Abort: boolean): string;
Var Var
FN : String; FN : String;
begin begin
if (s<>'') and (ConsoleVerbosity>=0) then if (s<>'') and (ConsoleVerbosity>=0) then
debugln(['Hint: (lazarus) [TPJSController.GetProjectURL] ignoring macro Pas2JSProjectURL parameter "',s,'"']); debugln(['Hint: (lazarus) [TPJSController.GetPas2jsProjectURL] ignoring macro Pas2JSProjectURL parameter "',s,'"']);
if ConsoleVerbosity>0 then if ConsoleVerbosity>0 then
DebugLN(['LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]: ',LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]]); DebugLN(['LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]: ',LazarusIDE.ActiveProject.CustomData[PJSProjectWebBrowser]]);
@ -253,7 +274,7 @@ begin
end; end;
Abort:=(Result=''); Abort:=(Result='');
if ConsoleVerbosity>0 then if ConsoleVerbosity>0 then
DebugLN(['GetProjectURL : ',Result]); DebugLN(['GetPas2jsProjectURL : ',Result]);
end; end;
function TPJSController.MaybeStartServer(Sender: TObject; var Handled: boolean): TModalResult; function TPJSController.MaybeStartServer(Sender: TObject; var Handled: boolean): TModalResult;
@ -320,9 +341,10 @@ end;
procedure TPJSController.Hook; procedure TPJSController.Hook;
begin begin
IDEMacros.Add(TTransferMacro.Create('Pas2JSBrowser','','Pas2JS selected Browser executable',@GetPasJSBrowser,[])); IDEMacros.Add(TTransferMacro.Create('Pas2JS','','Pas2JS executable',@GetPas2JSPath,[]));
IDEMacros.Add(TTransferMacro.Create('Pas2JSNodeJS','','Pas2JS selected NodeJS xecutable',@GetPasJSNodeJS,[])); IDEMacros.Add(TTransferMacro.Create('Pas2JSBrowser','','Pas2JS selected Browser executable',@GetPas2JSBrowser,[]));
IDEMacros.Add(TTransferMacro.Create('Pas2JSProjectURL','','Pas2JS current project URL',@GetProjectURL,[])); IDEMacros.Add(TTransferMacro.Create('Pas2JSNodeJS','','Pas2JS selected NodeJS excutable',@GetPas2JSNodeJS,[]));
IDEMacros.Add(TTransferMacro.Create('Pas2JSProjectURL','','Pas2JS current project URL',@GetPas2jsProjectURL,[]));
LazarusIDE.AddHandlerOnRunWithoutDebugInit(@MaybeStartServer); LazarusIDE.AddHandlerOnRunWithoutDebugInit(@MaybeStartServer);
end; end;

View File

@ -17,7 +17,7 @@ const
PJSDsgnOptsFile = 'pas2jsdsgnoptions.xml'; PJSDsgnOptsFile = 'pas2jsdsgnoptions.xml';
PJSDefaultCompiler = '$MakeExe(IDE,pas2js)'; PJSDefaultCompiler = '$MakeExe(IDE,pas2js)';
PJSDefaultHTTPServer = '$MakeExe(IDE,simpleserver)'; PJSDefaultHTTPServer = '$MakeExe(IDE,simpleserver)';
PJSDefaultStartAtPort = 3000; // Simpleserver default PJSDefaultStartAtPort = 4000; // Simpleserver default
PJSDefaultBrowser = '$MakeExe(IDE,firefox)'; PJSDefaultBrowser = '$MakeExe(IDE,firefox)';
PJSDefaultNodeJS = '$MakeExe(IDE,nodejs)'; PJSDefaultNodeJS = '$MakeExe(IDE,nodejs)';
@ -75,7 +75,7 @@ implementation
function GetStandardPas2jsExe: string; function GetStandardPas2jsExe: string;
begin begin
Result:='$MakeExe(IDE,pas2js)'; Result:=PJSDefaultCompiler;
if not IDEMacros.SubstituteMacros(Result) then if not IDEMacros.SubstituteMacros(Result) then
Result:='pas2js'; Result:='pas2js';
end; end;
@ -83,7 +83,7 @@ end;
function GetStandardNodeJS: string; function GetStandardNodeJS: string;
begin begin
Result:='$MakeExe(IDE,nodejs)'; Result:=PJSDefaultNodeJS;
if not IDEMacros.SubstituteMacros(Result) then if not IDEMacros.SubstituteMacros(Result) then
Result:='nodejs'; Result:='nodejs';
end; end;
@ -91,7 +91,7 @@ end;
function GetStandardHTTPServer: string; function GetStandardHTTPServer: string;
begin begin
Result:='$MakeExe(IDE,simpleserver)'; Result:=PJSDefaultHTTPServer;
if not IDEMacros.SubstituteMacros(Result) then if not IDEMacros.SubstituteMacros(Result) then
Result:='simpleserver'; Result:='simpleserver';
end; end;
@ -233,7 +233,7 @@ Const
procedure TPas2jsOptions.LoadFromConfig(Cfg: TConfigStorage); procedure TPas2jsOptions.LoadFromConfig(Cfg: TConfigStorage);
begin begin
CompilerFilename:=Cfg.GetValue(KeyCompiler ,PJSDefaultCompiler); CompilerFilename:=Cfg.GetValue(KeyCompiler,PJSDefaultCompiler);
HTTPServerFileName:=Cfg.GetValue(KeyHTTPServer,PJSDefaultHTTPServer); HTTPServerFileName:=Cfg.GetValue(KeyHTTPServer,PJSDefaultHTTPServer);
BrowserFileName:=Cfg.GetValue(KeyBrowser,PJSDefaultBrowser); BrowserFileName:=Cfg.GetValue(KeyBrowser,PJSDefaultBrowser);
NodeJSFileName:=Cfg.GetValue(KeyNodeJS,PJSDefaultNodeJS); NodeJSFileName:=Cfg.GetValue(KeyNodeJS,PJSDefaultNodeJS);

View File

@ -37,7 +37,7 @@ Type
procedure NodeJSBrowseButtonClick(Sender: TObject); procedure NodeJSBrowseButtonClick(Sender: TObject);
procedure Pas2jsPathBrowseButtonClick(Sender: TObject); procedure Pas2jsPathBrowseButtonClick(Sender: TObject);
private private
function CheckCompiler(Buttons: TMsgDlgButtons): boolean; function CheckCompiler({%H-}Buttons: TMsgDlgButtons): boolean;
public public
function GetTitle: String; override; function GetTitle: String; override;
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;

View File

@ -108,7 +108,6 @@ begin
RegisterIdeMenuCommand(itmViewDebugWindows,'Pas2JSWebservers',SPasJSWebserversCaption,nil,@ShowServerDialog); RegisterIdeMenuCommand(itmViewDebugWindows,'Pas2JSWebservers',SPasJSWebserversCaption,nil,@ShowServerDialog);
// Add project options frame // Add project options frame
RegisterIDEOptionsEditor(GroupProject,TPas2JSProjectOptionsFrame, Pas2JSOptionsIndex); RegisterIDEOptionsEditor(GroupProject,TPas2JSProjectOptionsFrame, Pas2JSOptionsIndex);
end; end;
{ TProjectPas2JSNodeJSApp } { TProjectPas2JSNodeJSApp }
@ -256,9 +255,9 @@ begin
// create program source // create program source
AProject.MainFile.SetSourceText(CreateProjectSource,true); AProject.MainFile.SetSourceText(CreateProjectSource,true);
AProject.AddPackageDependency('pas2js_rtl'); //AProject.AddPackageDependency('pas2js_rtl');
if naoUseNodeJSApp in Options then //if naoUseNodeJSApp in Options then
AProject.AddPackageDependency('fcl_base_pas2js'); // AProject.AddPackageDependency('fcl_base_pas2js');
end; end;
function TProjectPas2JSNodeJSApp.CreateStartFiles(AProject: TLazProject function TProjectPas2JSNodeJSApp.CreateStartFiles(AProject: TLazProject
@ -277,12 +276,6 @@ begin
Flags:=DefaultProjectNoApplicationFlags-[pfRunnable]; Flags:=DefaultProjectNoApplicationFlags-[pfRunnable];
end; end;
(*function TProjectPas2JSWebApp.GetBrowserCommand(AFileName : string): String;
begin
Result:='$(Pas2JSBrowser) $(Pas2JSProjectURL)'
end; *)
function TProjectPas2JSWebApp.GetNextPort : Word; function TProjectPas2JSWebApp.GetNextPort : Word;
begin begin
@ -537,9 +530,9 @@ begin
if baoRunOnReady in options then if baoRunOnReady in options then
AProject.CustomData[PJSProjectRunAtReady]:='1'; AProject.CustomData[PJSProjectRunAtReady]:='1';
end; end;
AProject.AddPackageDependency('pas2js_rtl'); //AProject.AddPackageDependency('pas2js_rtl');
if baoUseBrowserApp in Options then //if baoUseBrowserApp in Options then
AProject.AddPackageDependency('fcl_base_pas2js'); // AProject.AddPackageDependency('fcl_base_pas2js');
end; end;
function TProjectPas2JSWebApp.CreateStartFiles(AProject: TLazProject function TProjectPas2JSWebApp.CreateStartFiles(AProject: TLazProject

View File

@ -107,10 +107,7 @@ begin
CompOpts.WriteFPCLogo:=true; CompOpts.WriteFPCLogo:=true;
CompOpts.CustomOptions:=CustomOpts; CompOpts.CustomOptions:=CustomOpts;
if PJSOptions.CompilerFilename='' then Compiler:='$(pas2js)';
Compiler:='$MakeExe(IDE,pas2js)'
else
Compiler:=PJSOptions.CompilerFilename;
CompOpts.CompilerPath:=Compiler; CompOpts.CompilerPath:=Compiler;
debugln(['Hint: (lazarus) [pjsprojectoptions.SetPasJSCompileOptions] Compiler=',CompOpts.CompilerPath,' TargetOS=',CompOpts.TargetOS,' Custom="',CompOpts.CustomOptions,'"']); debugln(['Hint: (lazarus) [pjsprojectoptions.SetPasJSCompileOptions] Compiler=',CompOpts.CompilerPath,' TargetOS=',CompOpts.TargetOS,' Custom="',CompOpts.CustomOptions,'"']);
end; end;