pas2js: store pas2js macro for lazbuild

This commit is contained in:
mattias 2023-03-01 19:28:58 +01:00
parent d62359e968
commit 23c628ea6d
3 changed files with 17 additions and 7 deletions

View File

@ -23,6 +23,7 @@ Type
TPJSController = Class TPJSController = Class
Private Private
FMacroPas2js: TTransferMacro;
FOnRefresh: TNotifyEvent; FOnRefresh: TNotifyEvent;
function GetPas2JSPath(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 GetPas2JSBrowser(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string; function GetPas2JSBrowser(const s: string; const {%H-}Data: PtrInt; var Abort: boolean): string;
@ -44,9 +45,10 @@ Type
Constructor Create; Constructor Create;
Destructor Destroy; override; Destructor Destroy; override;
Class Procedure DoneInstance; Class Procedure DoneInstance;
Class Function instance : TPJSController; Class Function Instance: TPJSController;
Procedure Hook; virtual; Procedure Hook; virtual;
Procedure UnHook; virtual; Procedure UnHook; virtual;
Procedure StoreMacros; virtual;
// Determine project HTML file from custom data // Determine project HTML file from custom data
class function GetProjectHTMLFile(aProject: TLazProject): TLazProjectFile; class function GetProjectHTMLFile(aProject: TLazProject): TLazProjectFile;
class function GetProjectHTMLFilename(aProject: TLazProject): string; class function GetProjectHTMLFilename(aProject: TLazProject): string;
@ -56,6 +58,7 @@ Type
function GetProjectLocation(aProject: TLazProject): string; virtual; function GetProjectLocation(aProject: TLazProject): string; virtual;
function GetProjectURL(aProject: TLazProject): string; virtual; function GetProjectURL(aProject: TLazProject): string; virtual;
Property OnRefresh : TNotifyEvent Read FOnRefresh Write FonRefresh; Property OnRefresh : TNotifyEvent Read FOnRefresh Write FonRefresh;
property MacroPas2js: TTransferMacro read FMacroPas2js;
end; end;
Const Const
@ -84,7 +87,7 @@ begin
FreeAndNil(Ctrl) FreeAndNil(Ctrl)
end; end;
class function TPJSController.instance: TPJSController; class function TPJSController.Instance: TPJSController;
begin begin
if Ctrl=Nil then if Ctrl=Nil then
Ctrl:=TPJSController.Create; Ctrl:=TPJSController.Create;
@ -170,6 +173,7 @@ begin
Result:=mrOk; Result:=mrOk;
aProject:=LazarusIDE.ActiveProject; aProject:=LazarusIDE.ActiveProject;
if aProject=nil then exit; if aProject=nil then exit;
StoreMacros;
if aProject.IsVirtual then if aProject.IsVirtual then
begin begin
if not SaveHTMLFileToTestDir(aProject) then if not SaveHTMLFileToTestDir(aProject) then
@ -520,8 +524,7 @@ end;
procedure TPJSController.Hook; procedure TPJSController.Hook;
begin begin
IDEMacros.Add(TTransferMacro.Create('Pas2JS', '', pjsdPas2JSExecutable, @ FMacroPas2js:=IDEMacros.Add('Pas2JS', '', pjsdPas2JSExecutable, @GetPas2JSPath, [tmfLazbuild]);
GetPas2JSPath, []));
IDEMacros.Add(TTransferMacro.Create('Pas2JSBrowser', '', IDEMacros.Add(TTransferMacro.Create('Pas2JSBrowser', '',
pjsdPas2JSSelectedBrowserExecutable, @GetPas2JSBrowser, [])); pjsdPas2JSSelectedBrowserExecutable, @GetPas2JSBrowser, []));
IDEMacros.Add(TTransferMacro.Create('Pas2JSNodeJS', '', IDEMacros.Add(TTransferMacro.Create('Pas2JSNodeJS', '',
@ -538,7 +541,13 @@ end;
procedure TPJSController.UnHook; procedure TPJSController.UnHook;
begin begin
// Nothing for the moment FMacroPas2js:=nil;
end;
procedure TPJSController.StoreMacros;
begin
if PJSOptions=nil then exit;
FMacroPas2js.LazbuildValue:=PJSOptions.GetParsedCompilerFilename;
end; end;
finalization finalization

View File

@ -18,7 +18,7 @@ uses
// IdeIntf // IdeIntf
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils, IDEDialogs, IDEOptionsIntf, IDEOptEditorIntf, IDEUtils, IDEDialogs,
// Pas2Js // Pas2Js
PJSDsgnOptions, strpas2jsdesign, SimpleWebSrvOptionsFrame; PJSDsgnOptions, strpas2jsdesign, PJSController, SimpleWebSrvOptionsFrame;
Type Type
{ TPas2jsOptionsFrame } { TPas2jsOptionsFrame }
@ -238,6 +238,7 @@ begin
PJSOptions.ElectronFileName:=ElectronExeComboBox.Text; PJSOptions.ElectronFileName:=ElectronExeComboBox.Text;
PJSOptions.AtomTemplateDir:=AtomTemplateDirComboBox.Text; PJSOptions.AtomTemplateDir:=AtomTemplateDirComboBox.Text;
PJSOptions.VSCodeTemplateDir:=VSCodeTemplateDirComboBox.Text; PJSOptions.VSCodeTemplateDir:=VSCodeTemplateDirComboBox.Text;
TPJSController.Instance.StoreMacros;
If PJSOptions.Modified then If PJSOptions.Modified then
PJSOptions.Save; PJSOptions.Save;
end; end;

View File

@ -346,7 +346,7 @@ begin
if Assigned(Pas2JSHandler) then; // Silence compiler warning if Assigned(Pas2JSHandler) then; // Silence compiler warning
PJSOptions:=TPas2jsOptions.Create; PJSOptions:=TPas2jsOptions.Create;
PJSOptions.Load; PJSOptions.Load;
TPJSController.Instance.Hook; TPJSController.Instance.Hook; // this registers macros and events
// register new-project items // register new-project items
RegisterProjectDescriptor(TProjectPas2JSWebApp.Create); RegisterProjectDescriptor(TProjectPas2JSWebApp.Create);