mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-05 13:56:00 +02:00
* Library project for pas2js
This commit is contained in:
parent
451ba64bde
commit
69c78284d8
@ -67,6 +67,14 @@ msgstr "Gérer la page HTML"
|
||||
msgid "missing path to pas2js"
|
||||
msgstr "chemin manquant vers pas2js"
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr "Paquet Atom"
|
||||
|
@ -67,6 +67,14 @@ msgstr "HTML lap karbantartása"
|
||||
msgid "missing path to pas2js"
|
||||
msgstr "a pas2js útvonala hiányzik"
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr ""
|
||||
|
@ -57,6 +57,14 @@ msgstr ""
|
||||
msgid "missing path to pas2js"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr ""
|
||||
|
@ -67,6 +67,14 @@ msgstr "Manter página HTML"
|
||||
msgid "missing path to pas2js"
|
||||
msgstr "caminho ausente para pas2js"
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr "Pacote Atom"
|
||||
|
@ -67,6 +67,14 @@ msgstr "Поддерживать страницу HTML"
|
||||
msgid "missing path to pas2js"
|
||||
msgstr "отсутствует путь к pas2js"
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr "Пакет Atom"
|
||||
|
@ -67,6 +67,14 @@ msgstr ""
|
||||
msgid "missing path to pas2js"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr ""
|
||||
|
@ -69,6 +69,14 @@ msgstr "Підтримувати HTML-сторінку"
|
||||
msgid "missing path to pas2js"
|
||||
msgstr "відсутній шлях до pas2js"
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr "Пакунок Atom"
|
||||
|
@ -68,6 +68,14 @@ msgstr ""
|
||||
msgid "missing path to pas2js"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleappdescription
|
||||
msgid "A pas2js library that is transpiled to a javascript module."
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdmoduleapplication
|
||||
msgid "Pas2JS Library/Javascript module"
|
||||
msgstr ""
|
||||
|
||||
#: strpas2jsdesign.pjsdnewatompackage
|
||||
msgid "Atom package"
|
||||
msgstr ""
|
||||
|
@ -18,7 +18,7 @@ uses
|
||||
const
|
||||
ProjDescNamePas2JSWebApp = 'Web Application';
|
||||
ProjDescNamePas2JSNodeJSApp = 'NodeJS Application';
|
||||
|
||||
ProjDescNamePas2JSModuleApp = 'Pas2JS Library';
|
||||
|
||||
type
|
||||
|
||||
@ -79,6 +79,19 @@ type
|
||||
property Options : TNodeJSApplicationOptions Read FOptions Write FOptions;
|
||||
end;
|
||||
|
||||
TProjectPas2JSModuleApp = class(TProjectDescriptor)
|
||||
protected
|
||||
function CreateProjectSource: String; virtual;
|
||||
public
|
||||
constructor Create; override;
|
||||
Function DoInitDescriptor : TModalResult; override;
|
||||
function GetLocalizedName: string; override;
|
||||
function GetLocalizedDescription: string; override;
|
||||
function InitProject(AProject: TLazProject): TModalResult; override;
|
||||
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
PJSOptionsFrameID: integer = 1000;
|
||||
|
||||
@ -119,6 +132,8 @@ begin
|
||||
// register new-project items
|
||||
RegisterProjectDescriptor(TProjectPas2JSWebApp.Create);
|
||||
RegisterProjectDescriptor(TProjectPas2JSNodeJSApp.Create);
|
||||
RegisterProjectDescriptor(TProjectPas2JSModuleApp.Create);
|
||||
|
||||
// add IDE options frame
|
||||
PJSOptionsFrameID:=RegisterIDEOptionsEditor(GroupEnvironment,TPas2jsOptionsFrame,
|
||||
PJSOptionsFrameID)^.Index;
|
||||
@ -598,5 +613,114 @@ begin
|
||||
[ofProjectLoading,ofRegularFile]);
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------
|
||||
Module
|
||||
----------------------------------------------------------------------}
|
||||
|
||||
{ TProjectPas2JSModuleApp }
|
||||
|
||||
function TProjectPas2JSModuleApp.CreateProjectSource: String;
|
||||
Var
|
||||
Src : TStrings;
|
||||
units : string;
|
||||
|
||||
Procedure Add(aLine : String);
|
||||
|
||||
begin
|
||||
Src.Add(aLine);
|
||||
end;
|
||||
|
||||
Procedure AddLn(aLine : String);
|
||||
|
||||
begin
|
||||
if (Aline<>'') then
|
||||
Aline:=Aline+';';
|
||||
Add(Aline);
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
Units:=' JS, Classes, SysUtils';
|
||||
Src:=TStringList.Create;
|
||||
try
|
||||
// create program source
|
||||
AddLn('library Project1');
|
||||
AddLn('');
|
||||
Add('{$mode objfpc}');
|
||||
Add('');
|
||||
Add('uses');
|
||||
AddLn(units) ;
|
||||
Add('');
|
||||
Add('// add functions/procedures here');
|
||||
Add('');
|
||||
Add('// Add your exports statement here: ');
|
||||
Add('// exports yourfunction {as functionalias} ;');
|
||||
Add('');
|
||||
Add('begin');
|
||||
Add(' // Your library initialization code here');
|
||||
Add('end.');
|
||||
Result:=Src.Text;
|
||||
finally
|
||||
Src.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
constructor TProjectPas2JSModuleApp.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
Name:= ProjDescNamePas2JSModuleApp;
|
||||
Flags:=DefaultProjectNoApplicationFlags-[pfRunnable];
|
||||
end;
|
||||
|
||||
function TProjectPas2JSModuleApp.DoInitDescriptor: TModalResult;
|
||||
begin
|
||||
Result:=mrOK;
|
||||
end;
|
||||
|
||||
function TProjectPas2JSModuleApp.GetLocalizedName: string;
|
||||
begin
|
||||
Result:=pjsdModuleApplication;
|
||||
end;
|
||||
|
||||
function TProjectPas2JSModuleApp.GetLocalizedDescription: string;
|
||||
begin
|
||||
Result:=pjsdModuleAppDescription;
|
||||
end;
|
||||
|
||||
function TProjectPas2JSModuleApp.InitProject(AProject: TLazProject ): TModalResult;
|
||||
|
||||
var
|
||||
MainFile : TLazProjectFile;
|
||||
CompOpts : TLazCompilerOptions;
|
||||
|
||||
begin
|
||||
Result:=inherited InitProject(AProject);
|
||||
MainFile:=AProject.CreateProjectFile('project1.lpr');
|
||||
MainFile.IsPartOfProject:=true;
|
||||
AProject.AddFile(MainFile,false);
|
||||
AProject.MainFileID:=0;
|
||||
CompOpts:=AProject.LazBuildModes.BuildModes[0].LazCompilerOptions;
|
||||
SetDefaultModuleCompileOptions(CompOpts);
|
||||
CompOpts.TargetFilename:='js/project1';
|
||||
|
||||
SetDefaultNodeRunParams(AProject.RunParameters.GetOrCreate('Default'));
|
||||
|
||||
// create program source
|
||||
AProject.MainFile.SetSourceText(CreateProjectSource,true);
|
||||
|
||||
//AProject.AddPackageDependency('pas2js_rtl');
|
||||
//if naoUseNodeJSApp in Options then
|
||||
// AProject.AddPackageDependency('fcl_base_pas2js');
|
||||
end;
|
||||
|
||||
function TProjectPas2JSModuleApp.CreateStartFiles(AProject: TLazProject
|
||||
): TModalResult;
|
||||
begin
|
||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||
[ofProjectLoading,ofRegularFile]);
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -57,6 +57,8 @@ Procedure SetDefaultWebRunParams(RunParams : TAbstractRunParamsOptionsMode);
|
||||
Procedure SetDefaultNodeRunParams(RunParams : TAbstractRunParamsOptionsMode);
|
||||
Procedure SetDefaultWebCompileOptions(CompOpts: TLazCompilerOptions);
|
||||
Procedure SetDefaultNodeJSCompileOptions(CompOpts: TLazCompilerOptions);
|
||||
Procedure SetDefaultModuleCompileOptions(CompOpts: TLazCompilerOptions);
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
@ -131,6 +133,13 @@ begin
|
||||
SetPasJSCompileOptions(CompOpts,'nodejs','-Jeutf-8 -Jminclude');
|
||||
end;
|
||||
|
||||
Procedure SetDefaultModuleCompileOptions(CompOpts: TLazCompilerOptions);
|
||||
|
||||
begin
|
||||
SetPasJSCompileOptions(CompOpts,'module','-Jeutf-8 -Jirtl.js -Jc -Jminclude');
|
||||
end;
|
||||
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TPas2JSProjectOptionsFrame }
|
||||
|
@ -12,6 +12,8 @@ Resourcestring
|
||||
pjsdWebAppDescription = 'A pas2js program running in the browser.';
|
||||
pjsdNodeJSApplication = 'Node.js Application';
|
||||
pjsdNodeJSAppDescription = 'A pas2js program running in node.js.';
|
||||
pjsdModuleApplication = 'Pas2JS Library/Javascript module';
|
||||
pjsdModuleAppDescription = 'A pas2js library that is transpiled to a javascript module.';
|
||||
pjsdNewAtomPackage = 'Atom package';
|
||||
pjsdNewAtomPackageDescr = 'A pas2js program running as Atom package.';
|
||||
pjsdNewVSCodeExtension = 'Visual Studio Code extension';
|
||||
|
Loading…
Reference in New Issue
Block a user