pas2js: project options: updated layout and added execute run parameters

This commit is contained in:
mattias 2022-04-12 21:53:18 +02:00
parent ba8174b384
commit c046f130e9
17 changed files with 592 additions and 452 deletions

View File

@ -1,13 +1,12 @@
object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
Left = 431 Left = 1434
Height = 538 Height = 490
Top = 310 Top = 765
Width = 632 Width = 632
Caption = 'Pas2JS Browser project options' Caption = 'Pas2JS Browser project options'
ClientHeight = 538 ClientHeight = 490
ClientWidth = 632 ClientWidth = 632
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '2.3.0.0' LCLVersion = '2.3.0.0'
object CBCreateHTML: TCheckBox object CBCreateHTML: TCheckBox
@ -27,11 +26,11 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
end end
object CBUseBrowserApp: TCheckBox object CBUseBrowserApp: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = cbShowUncaughtExceptions AnchorSideTop.Control = CBUseBrowserConsole
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 23
Top = 122 Top = 151
Width = 198 Width = 198
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Use Browser Application object' Caption = 'Use Browser Application object'
@ -40,12 +39,13 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
end end
object CBUseBrowserConsole: TCheckBox object CBUseBrowserConsole: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = edtWasmProgram AnchorSideTop.Control = cbShowUncaughtExceptions
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 38
Height = 23 Height = 23
Top = 216 Top = 122
Width = 313 Width = 313
BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Use Browser Console unit to display writeln() output' Caption = 'Use Browser Console unit to display writeln() output'
TabOrder = 2 TabOrder = 2
@ -53,7 +53,7 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
object BPHelpOptions: TButtonPanel object BPHelpOptions: TButtonPanel
Left = 6 Left = 6
Height = 40 Height = 40
Top = 492 Top = 444
Width = 620 Width = 620
OKButton.Name = 'OKButton' OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True OKButton.DefaultCaption = True
@ -66,114 +66,44 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
TabOrder = 3 TabOrder = 3
ShowButtons = [pbOK, pbCancel] ShowButtons = [pbOK, pbCancel]
end end
object SEPort: TSpinEdit
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = RBStartServerAt
AnchorSideTop.Side = asrBottom
Left = 70
Height = 30
Top = 303
Width = 128
BorderSpacing.Left = 32
BorderSpacing.Top = 6
MaxValue = 65354
MinValue = 1024
TabOrder = 4
Value = 3000
end
object CBUseHTTPServer: TCheckBox
AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBUseBrowserConsole
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 245
Width = 182
BorderSpacing.Top = 6
Caption = 'Project needs a HTTP Server'
OnChange = CBUseHTTPServerChange
TabOrder = 5
end
object RBStartServerAt: TRadioButton
AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBUseHTTPServer
AnchorSideTop.Side = asrBottom
Left = 38
Height = 23
Top = 274
Width = 168
BorderSpacing.Left = 32
BorderSpacing.Top = 6
Caption = 'Start HTTP Server on port'
Checked = True
TabOrder = 6
TabStop = True
end
object RBUseURL: TRadioButton
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = SEPort
AnchorSideTop.Side = asrBottom
Left = 38
Height = 23
Top = 335
Width = 161
BorderSpacing.Top = 2
Caption = 'Use this URL to start app'
TabOrder = 7
end
object CBServerURL: TComboBox
AnchorSideLeft.Control = RBUseURL
AnchorSideTop.Control = RBUseURL
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 70
Height = 30
Top = 364
Width = 556
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 32
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
ItemHeight = 0
TabOrder = 8
end
object CBMaintainPage: TCheckBox object CBMaintainPage: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBCreateHTML AnchorSideTop.Control = CBCreateHTML
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 38
Height = 23 Height = 23
Top = 35 Top = 35
Width = 137 Width = 137
BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Maintain HTML Page' Caption = 'Maintain HTML Page'
TabOrder = 9 TabOrder = 4
end end
object CBRunOnReady: TCheckBox object CBRunOnReady: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBMaintainPage AnchorSideTop.Control = CBMaintainPage
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 38
Height = 23 Height = 23
Top = 64 Top = 64
Width = 287 Width = 287
BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Run rtl when all page resources are fully loaded' Caption = 'Run rtl when all page resources are fully loaded'
TabOrder = 10 TabOrder = 5
end end
object cbShowUncaughtExceptions: TCheckBox object cbShowUncaughtExceptions: TCheckBox
AnchorSideLeft.Control = CBRunOnReady AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBRunOnReady AnchorSideTop.Control = CBRunOnReady
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 38
Height = 23 Height = 23
Top = 93 Top = 93
Width = 209 Width = 209
BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Let rtl show uncaught exceptions' Caption = 'Let rtl show uncaught exceptions'
TabOrder = 11 TabOrder = 6
end end
object CBUseWASI: TCheckBox object CBUseWASI: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
@ -181,13 +111,13 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 38 Left = 38
Height = 23 Height = 23
Top = 151 Top = 180
Width = 176 Width = 176
BorderSpacing.Left = 32 BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Host webassembly program' Caption = 'Host webassembly program'
Enabled = False Enabled = False
TabOrder = 12 TabOrder = 7
end end
object edtWasmProgram: TEdit object edtWasmProgram: TEdit
AnchorSideLeft.Control = CBUseWASI AnchorSideLeft.Control = CBUseWASI
@ -197,27 +127,120 @@ object WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 70 Left = 70
Height = 30 Height = 30
Top = 180 Top = 209
Width = 556 Width = 556
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 32 BorderSpacing.Left = 32
BorderSpacing.Top = 6 BorderSpacing.Top = 6
BorderSpacing.Right = 6 BorderSpacing.Right = 6
Enabled = False Enabled = False
TabOrder = 13 TabOrder = 8
TextHint = 'Name of your webassembly file' TextHint = 'Name of your webassembly file'
end end
object CBUseModule: TCheckBox object CBUseModule: TCheckBox
AnchorSideLeft.Control = CBCreateHTML AnchorSideLeft.Control = CBCreateHTML
AnchorSideTop.Control = CBServerURL AnchorSideTop.Control = edtWasmProgram
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 23
Top = 400 Top = 245
Width = 272 Width = 272
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Create a javascript module instead of a script' Caption = 'Create a javascript module instead of a script'
OnChange = CBUseHTTPServerChange OnChange = CBUseHTTPServerChange
TabOrder = 14 TabOrder = 9
end
object RunGroupBox: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = CBUseModule
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 6
Height = 123
Top = 274
Width = 620
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'Run'
ClientHeight = 107
ClientWidth = 618
TabOrder = 10
object RBRunServerAt: TRadioButton
AnchorSideLeft.Control = RunGroupBox
AnchorSideTop.Control = SEPort
AnchorSideTop.Side = asrCenter
Left = 6
Height = 23
Top = 10
Width = 168
BorderSpacing.Left = 6
Caption = 'Start HTTP Server on port'
Checked = True
OnChange = RBRunServerAtChange
TabOrder = 4
TabStop = True
end
object SEPort: TSpinEdit
AnchorSideLeft.Control = RBRunServerAt
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = RunGroupBox
Left = 180
Height = 30
Top = 6
Width = 76
BorderSpacing.Left = 6
BorderSpacing.Top = 6
MaxValue = 65354
MinValue = 1024
TabOrder = 0
Value = 3000
end
object RBRunBrowserWithURL: TRadioButton
AnchorSideLeft.Control = RBRunServerAt
AnchorSideTop.Control = CBServerURL
AnchorSideTop.Side = asrCenter
Left = 6
Height = 23
Top = 46
Width = 138
Caption = 'Use URL to start app'
OnChange = RBRunBrowserWithURLChange
TabOrder = 1
end
object CBServerURL: TComboBox
AnchorSideLeft.Control = RBRunBrowserWithURL
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = SEPort
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = RunGroupBox
AnchorSideRight.Side = asrBottom
Left = 150
Height = 30
Top = 42
Width = 462
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
ItemHeight = 0
TabOrder = 2
end
object RBRunDefault: TRadioButton
AnchorSideTop.Control = CBServerURL
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 78
Width = 162
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
Caption = 'Execute Run Parameters'
OnChange = RBRunDefaultChange
TabOrder = 3
end
end end
end end

View File

@ -8,6 +8,18 @@ uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel,
Spin, strpas2jsdesign; Spin, strpas2jsdesign;
const
WBBoolCreateHTML = 0;
WBBoolMainHTML = 1;
WBBoolRunOnReady = 2;
WBBoolShowUncaughtExceptions = 3;
WBBoolUseBrowserApp = 4;
WBBoolUseWASI = 5;
WBBoolUseBrowserConsole = 6;
WBBoolUseModule = 7;
WBBoolRunServerAtPort = 8;
WBBoolRunBrowserWithURL = 9;
WBBoolRunDefault = 10;
type type
{ TWebBrowserProjectOptionsForm } { TWebBrowserProjectOptionsForm }
@ -15,26 +27,28 @@ type
TWebBrowserProjectOptionsForm = class(TForm) TWebBrowserProjectOptionsForm = class(TForm)
BPHelpOptions: TButtonPanel; BPHelpOptions: TButtonPanel;
CBCreateHTML: TCheckBox; CBCreateHTML: TCheckBox;
CBServerURL: TComboBox;
CBUseBrowserApp: TCheckBox; CBUseBrowserApp: TCheckBox;
CBUseModule: TCheckBox; CBUseModule: TCheckBox;
CBUseWASI: TCheckBox; CBUseWASI: TCheckBox;
CBUseBrowserConsole: TCheckBox; CBUseBrowserConsole: TCheckBox;
CBUseHTTPServer: TCheckBox;
CBServerURL: TComboBox;
CBMaintainPage: TCheckBox; CBMaintainPage: TCheckBox;
CBRunOnReady: TCheckBox; CBRunOnReady: TCheckBox;
cbShowUncaughtExceptions: TCheckBox; cbShowUncaughtExceptions: TCheckBox;
edtWasmProgram: TEdit; edtWasmProgram: TEdit;
RBUseURL: TRadioButton; RBRunDefault: TRadioButton;
RBStartServerAt: TRadioButton; RBRunServerAt: TRadioButton;
RBRunBrowserWithURL: TRadioButton;
RunGroupBox: TGroupBox;
SEPort: TSpinEdit; SEPort: TSpinEdit;
procedure CBCreateHTMLChange(Sender: TObject); procedure CBCreateHTMLChange(Sender: TObject);
procedure CBUseBrowserAppChange(Sender: TObject); procedure CBUseBrowserAppChange(Sender: TObject);
procedure CBUseHTTPServerChange(Sender: TObject); procedure CBUseHTTPServerChange(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject); procedure RBRunDefaultChange(Sender: TObject);
procedure RBRunServerAtChange(Sender: TObject);
procedure RBRunBrowserWithURLChange(Sender: TObject);
private private
procedure CheckWasi;
function GetB(AIndex: Integer): Boolean; function GetB(AIndex: Integer): Boolean;
function GetServerPort: Word; function GetServerPort: Word;
function GetURL: String; function GetURL: String;
@ -43,22 +57,30 @@ type
procedure SetServerPort(AValue: Word); procedure SetServerPort(AValue: Word);
procedure SetURL(AValue: String); procedure SetURL(AValue: String);
procedure SetWasmProgramURL(AValue: String); procedure SetWasmProgramURL(AValue: String);
procedure UpdateHTMLControls;
procedure UpdateBrowserAppControls;
procedure UpdateRunControls;
public public
procedure HideWASM; virtual; procedure HideWASM; virtual;
procedure HideModule; virtual; procedure HideModule; virtual;
property CreateHTML : Boolean Index 0 read GetB Write SetB;
property MaintainHTML : Boolean Index 1 read GetB Write SetB; property CreateHTML : Boolean Index WBBoolCreateHTML read GetB Write SetB;
property UseBrowserApp : Boolean Index 2 read GetB Write SetB; property MaintainHTML : Boolean Index WBBoolMainHTML read GetB Write SetB;
property UseBrowserConsole : Boolean Index 3 read GetB Write SetB; property UseRunOnReady : Boolean Index WBBoolRunOnReady read GetB Write SetB;
property StartHTTPServer : Boolean Index 4 read GetB Write SetB; property ShowUncaughtExceptions : Boolean Index WBBoolShowUncaughtExceptions read GetB Write SetB;
property UseURL : Boolean Index 5 read GetB Write SetB;
property UseRunOnReady : Boolean Index 6 read GetB Write SetB; property UseBrowserApp : Boolean Index WBBoolUseBrowserApp read GetB Write SetB;
property ShowUncaughtExceptions : Boolean Index 7 read GetB Write SetB; property UseWASI : Boolean Index WBBoolUseWASI read GetB Write SetB;
property UseWASI : Boolean Index 8 read GetB Write SetB; property WasmProgramURL : String Read GetWasmProgramURL Write SetWasmProgramURL;
property UseModule : Boolean Index 9 read GetB Write SetB;
Property ServerPort : Word Read GetServerPort Write SetServerPort; property UseBrowserConsole : Boolean Index WBBoolUseBrowserConsole read GetB Write SetB;
Property URL : String Read GetURL Write SetURL; property UseModule : Boolean Index WBBoolUseModule read GetB Write SetB;
Property WasmProgramURL : String Read GetWasmProgramURL Write SetWasmProgramURL;
property RunServerAtPort : Boolean Index WBBoolRunServerAtPort read GetB Write SetB;
property ServerPort : Word Read GetServerPort Write SetServerPort;
property RunBrowserWithURL : Boolean Index WBBoolRunBrowserWithURL read GetB Write SetB;
property URL : String Read GetURL Write SetURL;
property RunDefault : Boolean Index WBBoolRunDefault read GetB Write SetB;
end; end;
var var
@ -81,78 +103,80 @@ procedure TWebBrowserProjectOptionsForm.CBCreateHTMLChange(Sender: TObject);
end; end;
begin begin
DoCB(CBRunOnReady); UpdateHTMLControls;
DoCB(CBMaintainPage); DoCB(CBMaintainPage);
DoCB(CBRunOnReady);
end; end;
procedure TWebBrowserProjectOptionsForm.CBUseBrowserAppChange(Sender: TObject); procedure TWebBrowserProjectOptionsForm.CBUseBrowserAppChange(Sender: TObject);
begin begin
CheckWASI; UpdateBrowserAppControls;
end; end;
procedure TWebBrowserProjectOptionsForm.CheckWasi; procedure TWebBrowserProjectOptionsForm.CBUseHTTPServerChange(Sender: TObject);
begin
end;
procedure TWebBrowserProjectOptionsForm.UpdateBrowserAppControls;
begin begin
CBUseWASI.Enabled:=UseBrowserApp; CBUseWASI.Enabled:=UseBrowserApp;
edtWasmProgram.Enabled:=UseBrowserApp; edtWasmProgram.Enabled:=UseBrowserApp;
end; end;
procedure TWebBrowserProjectOptionsForm.CBUseHTTPServerChange(Sender: TObject);
procedure disen(C : TControl);
begin
C.Enabled:=CBUseHTTPServer.Checked;
if C is TRadioButton then
if not C.Enabled then
TRadioButton(C).Checked:=False;
end;
begin
disen(RBStartServerAt);
disen(RBUseURL);
disen(SEPort);
disen(CBServerURL);
end;
procedure TWebBrowserProjectOptionsForm.FormCreate(Sender: TObject); procedure TWebBrowserProjectOptionsForm.FormCreate(Sender: TObject);
begin begin
// localize
Caption:=pjsdPas2JSBrowserProjectOptions; Caption:=pjsdPas2JSBrowserProjectOptions;
CBCreateHTML.Caption:=pjsdCreateInitialHTMLPage; CBCreateHTML.Caption:=pjsdCreateInitialHTMLPage;
CBMaintainPage.Caption:=pjsdMaintainHTMLPage; CBMaintainPage.Caption:=pjsdMaintainHTMLPage;
CBRunOnReady.Caption:=pjsdRunRTLWhenAllPageResourcesAreFullyLoaded; CBRunOnReady.Caption:=pjsdRunRTLWhenAllPageResourcesAreFullyLoaded;
cbShowUncaughtExceptions.Caption:=pjsdLetRTLShowUncaughtExceptions; cbShowUncaughtExceptions.Caption:=pjsdLetRTLShowUncaughtExceptions;
CBUseBrowserApp.Caption:=pjsdUseBrowserApplicationObject; CBUseBrowserApp.Caption:=pjsdUseBrowserApplicationObject;
CBUseBrowserConsole.Caption:=pjsdUseBrowserConsoleUnitToDisplayWritelnOutput;
CBUseHTTPServer.Caption:=pjsdProjectNeedsAHTTPServer;
RBStartServerAt.Caption:=pjsdStartHTTPServerOnPort;
RBUseURL.Caption:=pjsdUseThisURLToStartApplication;
CBUseWASI.Caption:=pjsdUseWASIApplicationObject; CBUseWASI.Caption:=pjsdUseWASIApplicationObject;
edtWasmProgram.TextHint:=pjsWasiProgramFileTextHint; edtWasmProgram.TextHint:=pjsWasiProgramFileTextHint;
CBUseBrowserConsole.Caption:=pjsdUseBrowserConsoleUnitToDisplayWritelnOutput;
CBUseModule.Caption:=pjsCreateAJavascriptModuleInsteadOfAScript;
RBRunServerAt.Caption:=pjsdStartHTTPServerOnPort;
RBRunBrowserWithURL.Caption:=pjsdUseThisURLToStartApplication;
RBRunDefault.Caption:=pjsExecuteRunParameters;
CBCreateHTMLChange(self); CBCreateHTMLChange(self);
CBUseHTTPServerChange(Self);
end; end;
procedure TWebBrowserProjectOptionsForm.FormShow(Sender: TObject); procedure TWebBrowserProjectOptionsForm.RBRunDefaultChange(Sender: TObject);
begin begin
// Need to do this again, in case options were set before show UpdateRunControls;
CBCreateHTMLChange(self); end;
CBUseHTTPServerChange(Self);
procedure TWebBrowserProjectOptionsForm.RBRunServerAtChange(Sender: TObject);
begin
UpdateRunControls;
end;
procedure TWebBrowserProjectOptionsForm.RBRunBrowserWithURLChange(Sender: TObject);
begin
UpdateRunControls;
end; end;
function TWebBrowserProjectOptionsForm.GetB(AIndex: Integer): Boolean; function TWebBrowserProjectOptionsForm.GetB(AIndex: Integer): Boolean;
begin begin
Case Aindex of Case Aindex of
0 : Result:=CBCreateHTML.Checked; WBBoolCreateHTML : Result:=CBCreateHTML.Checked;
1 : Result:=CBMaintainPage.Checked; WBBoolMainHTML : Result:=CBMaintainPage.Checked;
2 : Result:=CBUseBrowserApp.Checked; WBBoolRunOnReady : Result:=CBRunOnReady.Checked;
3 : Result:=CBUseBrowserConsole.Checked; WBBoolShowUncaughtExceptions : Result:=cbShowUncaughtExceptions.Checked;
4 : Result:=RBStartServerAt.Checked; WBBoolUseBrowserApp : Result:=CBUseBrowserApp.Checked;
5 : Result:=RBUseURL.Checked; WBBoolUseWASI : Result:=cbUseWASI.Checked;
6 : Result:=CBRunOnReady.Checked; WBBoolUseBrowserConsole : Result:=CBUseBrowserConsole.Checked;
7 : Result:=cbShowUncaughtExceptions.Checked; WBBoolUseModule : Result:=cbUseModule.Checked;
8 : Result:=cbUseWASI.Checked; WBBoolRunServerAtPort : Result:=RBRunServerAt.Checked;
9 : Result:=cbUseModule.Checked; WBBoolRunBrowserWithURL : Result:=RBRunBrowserWithURL.Checked;
WBBoolRunDefault : Result:=RBRunDefault.Checked;
else else
Result:=False; Result:=False;
end; end;
@ -176,30 +200,17 @@ end;
procedure TWebBrowserProjectOptionsForm.SetB(AIndex: Integer; AValue: Boolean); procedure TWebBrowserProjectOptionsForm.SetB(AIndex: Integer; AValue: Boolean);
begin begin
Case Aindex of Case Aindex of
0 : CBCreateHTML.Checked:=AValue; WBBoolCreateHTML : begin CBCreateHTML.Checked:=AValue; UpdateHTMLControls; end;
1 : CBMaintainPage.Checked:=AValue; WBBoolMainHTML : CBMaintainPage.Checked:=AValue;
2 : WBBoolRunOnReady : CBRunOnReady.Checked:=AValue;
begin WBBoolShowUncaughtExceptions : cbShowUncaughtExceptions.Checked:=AValue;
CBUseBrowserApp.Checked:=AValue; WBBoolUseBrowserConsole : CBUseBrowserConsole.Checked:=AValue;
CheckWASI; WBBoolUseBrowserApp : begin CBUseBrowserApp.Checked:=AValue; UpdateBrowserAppControls; end;
end; WBBoolUseWASI : begin cbUseWASI.Checked:=AValue; UpdateBrowserAppControls; end;
3 : CBUseBrowserConsole.Checked:=AValue; WBBoolUseModule : cbUseModule.Checked:=AValue;
4 : WBBoolRunServerAtPort : begin RBRunServerAt.Checked:=AValue; UpdateRunControls; end;
begin WBBoolRunBrowserWithURL : begin RBRunBrowserWithURL.Checked:=AValue; UpdateRunControls; end;
RBStartServerAt.Checked:=AValue; WBBoolRunDefault : begin RBRunDefault.Checked:=AValue; UpdateRunControls; end;
if AValue then
CBUseHTTPServer.Checked:=true
end;
5 :
begin
RBUseURL.Checked:=AValue;
if AValue then
CBUseHTTPServer.Checked:=true
end;
6 : CBRunOnReady.Checked:=Avalue;
7 : cbShowUncaughtExceptions.Checked:=aValue;
8 : cbUseWASI.Checked:=aValue;
9 : cbUseModule.Checked:=aValue;
end; end;
end; end;
@ -218,6 +229,23 @@ begin
edtWasmProgram.Text:=aValue; edtWasmProgram.Text:=aValue;
end; end;
procedure TWebBrowserProjectOptionsForm.UpdateHTMLControls;
var
aEnabled: Boolean;
begin
aEnabled:=CBCreateHTML.Checked;
CBMaintainPage.Enabled:=aEnabled;
CBRunOnReady.Enabled:=aEnabled;
cbShowUncaughtExceptions.Enabled:=aEnabled;
CBUseBrowserConsole.Enabled:=aEnabled;
end;
procedure TWebBrowserProjectOptionsForm.UpdateRunControls;
begin
SEPort.Enabled:=RBRunServerAt.Enabled and RBRunServerAt.Checked;
CBServerURL.Enabled:=RBRunBrowserWithURL.Enabled and RBRunBrowserWithURL.Checked;
end;
procedure TWebBrowserProjectOptionsForm.HideWASM; procedure TWebBrowserProjectOptionsForm.HideWASM;
begin begin
CBUseWASI.Visible:=false; CBUseWASI.Visible:=false;

View File

@ -11,6 +11,10 @@ msgstr ""
"Language: fr\n" "Language: fr\n"
"X-Generator: Poedit 3.0\n" "X-Generator: Poedit 3.0\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "Répertoire des modèles de paquets Atom" msgstr "Répertoire des modèles de paquets Atom"
@ -191,10 +195,6 @@ msgstr "Page du projet HTML :"
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "Le projet est un projet de navigateur Web (pas2js)" msgstr "Le projet est un projet de navigateur Web (pas2js)"
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr "Le projet requiert un serveur HTTP"
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "Réinitialiser la commande de compilation" msgstr "Réinitialiser la commande de compilation"
@ -254,7 +254,9 @@ msgid "Use Browser Application object"
msgstr "Utiliser l'objet application du navigateur" msgstr "Utiliser l'objet application du navigateur"
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" #, fuzzy
#| msgid "Use Browser Console unit to display writeln() output"
msgid "Use BrowserConsole unit to display writeln() output"
msgstr "Utiliser l'unité de la console du navigateur pour afficher la sortie writeln ()" msgstr "Utiliser l'unité de la console du navigateur pour afficher la sortie writeln ()"
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -294,6 +296,14 @@ msgstr "Projet Web (pas2js)"
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "Vous pouvez utiliser des macros de l'EDI comme $MakeExe(). Sans chemin complet, %s est recherché dans PATH." msgstr "Vous pouvez utiliser des macros de l'EDI comme $MakeExe(). Sans chemin complet, %s est recherché dans PATH."
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -11,6 +11,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n" "X-Generator: Poedit 2.0.6\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "" msgstr ""
@ -193,10 +197,6 @@ msgstr "A projekt HTML lapja:"
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "A projekt egy webböngészős (pas2js) projekt" msgstr "A projekt egy webböngészős (pas2js) projekt"
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr "A projektnek egy HTTP kiszolgálóra van szüksége"
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "A fordítás parancs alaphelyzetbe állítása" msgstr "A fordítás parancs alaphelyzetbe állítása"
@ -256,7 +256,9 @@ msgid "Use Browser Application object"
msgstr "Webböngésző alkalmazásobjektum használata" msgstr "Webböngésző alkalmazásobjektum használata"
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" #, fuzzy
#| msgid "Use Browser Console unit to display writeln() output"
msgid "Use BrowserConsole unit to display writeln() output"
msgstr "Böngészőkonzol használata a writeln() kimenet megjelenítésére" msgstr "Böngészőkonzol használata a writeln() kimenet megjelenítésére"
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -298,6 +300,14 @@ msgstr "Web projekt (pas2js)"
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "Használhatók az IDE makrók, mint a $MakeExe(). Teljes útvonal nélkül a PATH-ban felsorolt helyeken lesz keresve a(z) %s." msgstr "Használhatók az IDE makrók, mint a $MakeExe(). Teljes útvonal nélkül a PATH-ban felsorolt helyeken lesz keresve a(z) %s."
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -1,6 +1,10 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "" msgstr ""
@ -181,10 +185,6 @@ msgstr ""
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr ""
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "" msgstr ""
@ -244,7 +244,7 @@ msgid "Use Browser Application object"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" msgid "Use BrowserConsole unit to display writeln() output"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -284,6 +284,14 @@ msgstr ""
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "" msgstr ""
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -11,6 +11,10 @@ msgstr ""
"Language: pt_BR\n" "Language: pt_BR\n"
"X-Generator: Poedit 1.8.13\n" "X-Generator: Poedit 1.8.13\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "Diretório de modelos de pacote do Atom" msgstr "Diretório de modelos de pacote do Atom"
@ -193,10 +197,6 @@ msgstr "Página HTML do projeto:"
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "Projeto é uma Navegador Web (pas2js)" msgstr "Projeto é uma Navegador Web (pas2js)"
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr "Projeto precisa de um servidor HTTP"
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "Comando redefinir compilação" msgstr "Comando redefinir compilação"
@ -255,7 +255,9 @@ msgid "Use Browser Application object"
msgstr "Usar objeto \"Browser Application\"" msgstr "Usar objeto \"Browser Application\""
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" #, fuzzy
#| msgid "Use Browser Console unit to display writeln() output"
msgid "Use BrowserConsole unit to display writeln() output"
msgstr "Usar a unidade \"Browser Console\" para exibir saídas \"writeln()\"" msgstr "Usar a unidade \"Browser Console\" para exibir saídas \"writeln()\""
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -297,6 +299,14 @@ msgstr "Projeto Web (pas2js)"
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "Você pode usar macros IDE como \"$MakeExe()\". Sem um caminho completo, %s é pesquisado em \"PATH\"" msgstr "Você pode usar macros IDE como \"$MakeExe()\". Sem um caminho completo, %s é pesquisado em \"PATH\""
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -11,6 +11,10 @@ msgstr ""
"Language: ru\n" "Language: ru\n"
"X-Generator: Poedit 2.4.3\n" "X-Generator: Poedit 2.4.3\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "Каталог шаблона пакета Atom" msgstr "Каталог шаблона пакета Atom"
@ -194,10 +198,6 @@ msgstr "Страница HTML проекта:"
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "Проект предназначен для веб-браузера (pas2js)" msgstr "Проект предназначен для веб-браузера (pas2js)"
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr "Проекту требуется сервер HTTP"
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "Сбросить команду компиляции" msgstr "Сбросить команду компиляции"
@ -257,7 +257,9 @@ msgid "Use Browser Application object"
msgstr "Использовать объект приложения для браузера" msgstr "Использовать объект приложения для браузера"
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" #, fuzzy
#| msgid "Use Browser Console unit to display writeln() output"
msgid "Use BrowserConsole unit to display writeln() output"
msgstr "Отображать вывод writeln() посредством модуля консоли браузера" msgstr "Отображать вывод writeln() посредством модуля консоли браузера"
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -297,6 +299,14 @@ msgstr "Веб-проект (pas2js)"
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "Можно использовать макросы IDE, например, $MakeExe(). Если полный путь не указан, поиск %s производится при помощи переменной окружения PATH." msgstr "Можно использовать макросы IDE, например, $MakeExe(). Если полный путь не указан, поиск %s производится при помощи переменной окружения PATH."
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "Обновить все классы из исходного текста HTML" msgstr "Обновить все классы из исходного текста HTML"

View File

@ -11,6 +11,10 @@ msgstr ""
"Language: tr\n" "Language: tr\n"
"X-Generator: Poedit 2.2.3\n" "X-Generator: Poedit 2.2.3\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "" msgstr ""
@ -193,10 +197,6 @@ msgstr ""
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr ""
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "" msgstr ""
@ -256,7 +256,7 @@ msgid "Use Browser Application object"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" msgid "Use BrowserConsole unit to display writeln() output"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -298,6 +298,14 @@ msgstr ""
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "" msgstr ""
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -13,6 +13,10 @@ msgstr ""
"X-Generator: Lokalize 19.12.3\n" "X-Generator: Lokalize 19.12.3\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "Тека шаблонів пакунка Atom" msgstr "Тека шаблонів пакунка Atom"
@ -193,10 +197,6 @@ msgstr "HTML-сторінка проєкту:"
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "Це проєкт веб-оглядача (pas2js)" msgstr "Це проєкт веб-оглядача (pas2js)"
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr "Проєкту потрібен HTTP-сервер"
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "Скинути команду компіляції" msgstr "Скинути команду компіляції"
@ -256,7 +256,9 @@ msgid "Use Browser Application object"
msgstr "Використати об'єкт програми-оглядача" msgstr "Використати об'єкт програми-оглядача"
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" #, fuzzy
#| msgid "Use Browser Console unit to display writeln() output"
msgid "Use BrowserConsole unit to display writeln() output"
msgstr "Для виведення команди writeln() використати модуль консолі оглядача" msgstr "Для виведення команди writeln() використати модуль консолі оглядача"
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -296,6 +298,14 @@ msgstr "Веб-проєкт (pas2js)"
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "Можна використовувати макроси ІСР на зразок $MakeExe(). Без повного шляху %s буде шукатись у PATH." msgstr "Можна використовувати макроси ІСР на зразок $MakeExe(). Без повного шляху %s буде шукатись у PATH."
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -12,6 +12,10 @@ msgstr ""
"X-Generator: Poedit 1.8.7.1\n" "X-Generator: Poedit 1.8.7.1\n"
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
#: strpas2jsdesign.pjscreateajavascriptmoduleinsteadofascript
msgid "Create a javascript module instead of a script"
msgstr ""
#: strpas2jsdesign.pjsdatompackagetemplatedirectory #: strpas2jsdesign.pjsdatompackagetemplatedirectory
msgid "Atom package template directory" msgid "Atom package template directory"
msgstr "" msgstr ""
@ -194,10 +198,6 @@ msgstr ""
msgid "Project is a Web Browser (pas2js) project" msgid "Project is a Web Browser (pas2js) project"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdprojectneedsahttpserver
msgid "Project needs a HTTP server"
msgstr ""
#: strpas2jsdesign.pjsdresetcompilecommand #: strpas2jsdesign.pjsdresetcompilecommand
msgid "Reset Compile command" msgid "Reset Compile command"
msgstr "" msgstr ""
@ -257,7 +257,7 @@ msgid "Use Browser Application object"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput #: strpas2jsdesign.pjsdusebrowserconsoleunittodisplaywritelnoutput
msgid "Use Browser Console unit to display writeln() output" msgid "Use BrowserConsole unit to display writeln() output"
msgstr "" msgstr ""
#: strpas2jsdesign.pjsdusenodejsapplicationobject #: strpas2jsdesign.pjsdusenodejsapplicationobject
@ -299,6 +299,14 @@ msgstr ""
msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH." msgid "You can use IDE macros like $MakeExe(). Without a full path, %s is searched in PATH."
msgstr "" msgstr ""
#: strpas2jsdesign.pjsexecuterunparameters
msgid "Execute Run Parameters"
msgstr ""
#: strpas2jsdesign.pjsmakepas2jsproject
msgid "Make pas2js project"
msgstr ""
#: strpas2jsdesign.pjsrefreshallclassesfromhtml #: strpas2jsdesign.pjsrefreshallclassesfromhtml
msgid "Refresh all classes from HTML source" msgid "Refresh all classes from HTML source"
msgstr "" msgstr ""

View File

@ -54,11 +54,6 @@ Const
// Custom settings in .lpi // Custom settings in .lpi
PJSProject = 'Pas2JSProject'; // Project is pas2js project PJSProject = 'Pas2JSProject'; // Project is pas2js project
PJSProjectWebBrowser = 'PasJSWebBrowserProject'; // Web browser project PJSProjectWebBrowser = 'PasJSWebBrowserProject'; // Web browser project
PJSProjectServiceWorker = 'PJSProjectServiceWorker'; // Service Worker project
PJSProjectNodeJS = 'PJSProjectNodeJS'; // NodeJS project
PJSProjectModule = 'PJSProjectModule'; // Module project
PJSProjectVSCode = 'PJSProjectVSCode'; // VS Code project
PJSProjectAtom = 'PJSProjectAtom'; // Atom project
PJSProjectHTMLFile = 'PasJSHTMLFile'; PJSProjectHTMLFile = 'PasJSHTMLFile';
PJSIsProjectHTMLFile = 'PasJSIsProjectHTMLFile'; PJSIsProjectHTMLFile = 'PasJSIsProjectHTMLFile';
PJSProjectMaintainHTML = 'MaintainHTML'; PJSProjectMaintainHTML = 'MaintainHTML';

View File

@ -40,13 +40,13 @@ type
TBrowserApplicationOption = (baoCreateHtml, // Create template HTML page TBrowserApplicationOption = (baoCreateHtml, // Create template HTML page
baoMaintainHTML, // Maintain the template HTML page baoMaintainHTML, // Maintain the template HTML page
baoRunOnReady, // Run in document.onReady baoRunOnReady, // Run in document.onReady
baoUseBrowserApp, // Use browser app object
baoUseBrowserConsole, // use browserconsole unit to display Writeln()
baoStartServer, // Start simple server
baoUseURL, // Use this URL to run/show project in browser
baoShowException, // let RTL show uncaught exceptions baoShowException, // let RTL show uncaught exceptions
baoUseBrowserApp, // Use browser app object
baoUseWASI, // Use WASI browser app object baoUseWASI, // Use WASI browser app object
baoUseModule // include as module as opposed to regular script baoUseBrowserConsole, // use browserconsole unit to display Writeln()
baoUseModule, // include as module as opposed to regular script
baoStartServer, // Start simple server
baoUseURL // Use this URL to run/show project in browser
); );
TBrowserApplicationOptions = set of TBrowserApplicationOption; TBrowserApplicationOptions = set of TBrowserApplicationOption;
@ -677,8 +677,6 @@ begin
AProject.MainFileID:=-1; AProject.MainFileID:=-1;
AProject.RemoveUnit(0,false); AProject.RemoveUnit(0,false);
AProject.CustomData.Remove(PJSProjectServiceWorker);
// initialize PWA project // initialize PWA project
AProject.ProjectInfoFile:=ChangeFileExt(MainSrcFileName,'.lpi'); AProject.ProjectInfoFile:=ChangeFileExt(MainSrcFileName,'.lpi');
// create PWA lpr and index.html // create PWA lpr and index.html
@ -795,7 +793,6 @@ begin
SetDefaultServiceWorkerRunParams(AProject.RunParameters.GetOrCreate('Default')); SetDefaultServiceWorkerRunParams(AProject.RunParameters.GetOrCreate('Default'));
AProject.MainFile.SetSourceText(CreateProjectSource,true); AProject.MainFile.SetSourceText(CreateProjectSource,true);
AProject.CustomData.Values[PJSProject]:='1'; AProject.CustomData.Values[PJSProject]:='1';
AProject.CustomData.Values[PJSProjectServiceWorker]:='1';
Result:=mrOk; Result:=mrOk;
end; end;
@ -1312,7 +1309,6 @@ begin
AProject.AddFile(MainFile,false); AProject.AddFile(MainFile,false);
AProject.MainFileID:=0; AProject.MainFileID:=0;
AProject.CustomData.Values[PJSProject]:='1'; AProject.CustomData.Values[PJSProject]:='1';
AProject.CustomData.Values[PJSProjectNodeJS]:='1';
CompOpts:=AProject.LazBuildModes.BuildModes[0].LazCompilerOptions; CompOpts:=AProject.LazBuildModes.BuildModes[0].LazCompilerOptions;
SetDefaultNodeJSCompileOptions(CompOpts); SetDefaultNodeJSCompileOptions(CompOpts);
CompOpts.TargetFilename:=ExtractFileNameOnly(MainFile.Filename); CompOpts.TargetFilename:=ExtractFileNameOnly(MainFile.Filename);
@ -1389,44 +1385,51 @@ begin
try try
CreateHTML:=CO(baoCreateHtml); CreateHTML:=CO(baoCreateHtml);
MaintainHTML:=CO(baoCreateHtml) and Co(baoMaintainHTML); MaintainHTML:=CO(baoCreateHtml) and Co(baoMaintainHTML);
UseBrowserApp:=CO(baoUseBrowserApp);
UseBrowserConsole:=CO(baoUseBrowserConsole);
StartHTTPServer:=CO(baoStartServer);
UseRunOnReady:=CO(baoRunOnReady); UseRunOnReady:=CO(baoRunOnReady);
UseWASI:=CO(baoUseWASI);
UseModule:=CO(baoUseModule);
ShowUncaughtExceptions:=CO(baoShowException); ShowUncaughtExceptions:=CO(baoShowException);
UseBrowserConsole:=CO(baoUseBrowserConsole);
UseBrowserApp:=CO(baoUseBrowserApp);
UseWASI:=CO(baoUseWASI);
WasmProgramURL:='';
UseModule:=CO(baoUseModule);
if CO(baoStartServer) then
RunServerAtPort:=true
else if CO(baoUseURL) then
RunBrowserWithURL:=true
else
RunDefault:=true;
// We allocate the new port in all cases. // We allocate the new port in all cases.
ServerPort:=GetNextPort; ServerPort:=GetNextPort;
URL:=''; URL:='';
WasmProgramURL:='';
if Not CO(baoStartServer) then
UseURL:=CO(baoUseURL);
Result:=ShowModalOptions(Frm); Result:=ShowModalOptions(Frm);
if Result=mrOK then if Result=mrOK then
begin begin
SO(CreateHTML,baoCreateHtml); SO(CreateHTML,baoCreateHtml);
SO(MaintainHTML,baoCreateHtml); SO(MaintainHTML,baoCreateHtml);
SO(UseBrowserApp,baoUseBrowserApp);
SO(UseBrowserConsole,baoUseBrowserConsole);
SO(StartHTTPServer,baoStartServer);
SO(UseRunOnReady,baoRunOnReady); SO(UseRunOnReady,baoRunOnReady);
SO(UseBrowserConsole,baoUseBrowserConsole);
SO(ShowUncaughtExceptions,baoShowException); SO(ShowUncaughtExceptions,baoShowException);
SO(UseBrowserApp,baoUseBrowserApp);
SO(UseWASI,baoUseWASI); SO(UseWASI,baoUseWASI);
SO(UseModule,baoUseModule);
Self.ProjectPort:=ServerPort;
SO(UseURL,baoUseURL);
if baoStartServer in FOptions then
begin
DebugLN(['Info: Start server port: ', Self.ProjectPort,' from: ',ServerPort]);
end
else
begin
if baoUseURL in Options then
FProjectURL:=URL;
end;
end;
FProjectWasmURL:=WasmProgramURL; FProjectWasmURL:=WasmProgramURL;
SO(UseModule,baoUseModule);
Self.ProjectPort:=ServerPort;
SO(RunServerAtPort,baoStartServer);
SO(RunBrowserWithURL,baoUseURL);
if baoStartServer in FOptions then
DebugLN(['Info: Start server port: ', Self.ProjectPort,' from: ',ServerPort])
else if baoUseURL in FOptions then
FProjectURL:=URL;
end;
finally finally
Free; Free;
end; end;
@ -1566,12 +1569,12 @@ Var
begin begin
Units:=''; Units:='';
if baoUseBrowserConsole in Options then if baoUseBrowserConsole in Options then
Units:=' browserconsole,'; Units:=' BrowserConsole,';
if baoUseBrowserApp in Options then if baoUseBrowserApp in Options then
begin begin
Units:=Units+' browserapp,' ; Units:=Units+' BrowserApp,' ;
if baoUseWASI in options then if baoUseWASI in options then
Units:=Units+' wasihostapp,' ; Units:=Units+' WASIHostApp,' ;
end; end;
Units:=Units+' JS, Classes, SysUtils, Web'; Units:=Units+' JS, Classes, SysUtils, Web';
Src:=TStringList.Create; Src:=TStringList.Create;
@ -1782,7 +1785,6 @@ begin
AProject.AddFile(MainFile,false); AProject.AddFile(MainFile,false);
AProject.MainFileID:=0; AProject.MainFileID:=0;
AProject.CustomData.Values[PJSProject]:='1'; AProject.CustomData.Values[PJSProject]:='1';
AProject.CustomData.Values[PJSProjectModule]:='1';
CompOpts:=AProject.LazBuildModes.BuildModes[0].LazCompilerOptions; CompOpts:=AProject.LazBuildModes.BuildModes[0].LazCompilerOptions;
SetDefaultModuleCompileOptions(CompOpts); SetDefaultModuleCompileOptions(CompOpts);
CompOpts.TargetFilename:='js/project1'; CompOpts.TargetFilename:='js/project1';

View File

@ -1,18 +1,22 @@
object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
Left = 0 Left = 0
Height = 372 Height = 423
Top = 0 Top = 0
Width = 492 Width = 750
ClientHeight = 372 ClientHeight = 423
ClientWidth = 492 ClientWidth = 750
TabOrder = 0 TabOrder = 0
DesignLeft = 473 DesignLeft = 1404
DesignTop = 400 DesignTop = 244
object CBWebProject: TCheckBox object CBWebProject: TCheckBox
Left = 12 AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 6
Height = 23 Height = 23
Top = 8 Top = 6
Width = 250 Width = 250
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'Project is a Web Browser (pas2js) project' Caption = 'Project is a Web Browser (pas2js) project'
OnChange = CBWebProjectChange OnChange = CBWebProjectChange
TabOrder = 0 TabOrder = 0
@ -21,9 +25,9 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
AnchorSideLeft.Control = CBWebProject AnchorSideLeft.Control = CBWebProject
AnchorSideTop.Control = CBWebProject AnchorSideTop.Control = CBWebProject
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 12 Left = 6
Height = 15 Height = 15
Top = 37 Top = 35
Width = 98 Width = 98
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Project HTML file:' Caption = 'Project HTML file:'
@ -35,10 +39,10 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 12 Left = 6
Height = 30 Height = 30
Top = 54 Top = 52
Width = 464 Width = 728
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2 BorderSpacing.Top = 2
BorderSpacing.Right = 16 BorderSpacing.Right = 16
@ -50,9 +54,9 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
AnchorSideLeft.Control = CBWebProject AnchorSideLeft.Control = CBWebProject
AnchorSideTop.Control = CBHTMLFile AnchorSideTop.Control = CBHTMLFile
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 12 Left = 6
Height = 23 Height = 23
Top = 90 Top = 88
Width = 129 Width = 129
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Maintain HTML File' Caption = 'Maintain HTML File'
@ -63,123 +67,50 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
AnchorSideLeft.Control = CBUseBrowserConsole AnchorSideLeft.Control = CBUseBrowserConsole
AnchorSideTop.Control = CBUseBrowserConsole AnchorSideTop.Control = CBUseBrowserConsole
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 36 Left = 30
Height = 23 Height = 23
Top = 148 Top = 146
Width = 287 Width = 287
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Run rtl when all page resources are fully loaded' Caption = 'Run rtl when all page resources are fully loaded'
TabOrder = 3 TabOrder = 3
end end
object SEPort: TSpinEdit
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = RBStartServerAt
AnchorSideTop.Side = asrBottom
Left = 76
Height = 30
Top = 231
Width = 82
BorderSpacing.Left = 32
BorderSpacing.Top = 2
MaxValue = 65354
MinValue = 1024
TabOrder = 4
Value = 3000
end
object RBStartServerAt: TRadioButton
AnchorSideLeft.Control = CBUseHTTPServer
AnchorSideTop.Control = CBUseHTTPServer
AnchorSideTop.Side = asrBottom
Left = 44
Height = 23
Top = 206
Width = 168
BorderSpacing.Left = 32
BorderSpacing.Top = 6
Caption = 'Start HTTP Server on port'
Checked = True
OnChange = RBStartServerAtChange
TabOrder = 5
TabStop = True
end
object CBServerURL: TComboBox
AnchorSideLeft.Control = SEPort
AnchorSideTop.Control = RBUseURL
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 76
Height = 30
Top = 288
Width = 400
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
BorderSpacing.Right = 16
ItemHeight = 0
TabOrder = 6
end
object RBUseURL: TRadioButton
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = SEPort
AnchorSideTop.Side = asrBottom
Left = 44
Height = 23
Top = 263
Width = 161
BorderSpacing.Top = 2
Caption = 'Use this URL to start app'
OnChange = RBUseURLChange
TabOrder = 7
end
object CBUseHTTPServer: TCheckBox
AnchorSideLeft.Control = CBMaintainHTMLFile
AnchorSideTop.Control = CBRunOnReady
AnchorSideTop.Side = asrBottom
Left = 12
Height = 23
Top = 177
Width = 182
BorderSpacing.Top = 6
Caption = 'Project needs a HTTP Server'
OnChange = CBUseHTTPServerChange
TabOrder = 8
end
object CBUseBrowserConsole: TCheckBox object CBUseBrowserConsole: TCheckBox
AnchorSideLeft.Control = CBMaintainHTMLFile AnchorSideLeft.Control = CBMaintainHTMLFile
AnchorSideTop.Control = CBMaintainHTMLFile AnchorSideTop.Control = CBMaintainHTMLFile
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 36 Left = 30
Height = 23 Height = 23
Top = 119 Top = 117
Width = 313 Width = 313
BorderSpacing.Left = 24 BorderSpacing.Left = 24
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'Use Browser Console unit to display writeln() output' Caption = 'Use Browser Console unit to display writeln() output'
TabOrder = 9 TabOrder = 4
end end
object BResetRunCommand: TButton object BResetRunCommand: TButton
AnchorSideLeft.Control = CBWebProject AnchorSideLeft.Control = CBWebProject
AnchorSideBottom.Control = Owner AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 12 Left = 6
Height = 31 Height = 31
Top = 335 Top = 386
Width = 130 Width = 130
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
AutoSize = True AutoSize = True
BorderSpacing.Bottom = 6 BorderSpacing.Bottom = 6
Caption = 'Reset Run Command' Caption = 'Reset Run Command'
OnClick = BResetRunCommandClick OnClick = BResetRunCommandClick
TabOrder = 10 TabOrder = 5
end end
object BResetCompileCommand: TButton object BResetCompileCommand: TButton
AnchorSideLeft.Control = BResetRunCommand AnchorSideLeft.Control = BResetRunCommand
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = Owner AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 148 Left = 142
Height = 31 Height = 31
Top = 335 Top = 386
Width = 150 Width = 150
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
AutoSize = True AutoSize = True
@ -187,16 +118,16 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
BorderSpacing.Bottom = 6 BorderSpacing.Bottom = 6
Caption = 'Reset compile Command' Caption = 'Reset compile Command'
OnClick = BResetCompileCommandClick OnClick = BResetCompileCommandClick
TabOrder = 11 TabOrder = 6
end end
object BMakePas2jsPoject: TButton object BMakePas2jsPoject: TButton
AnchorSideLeft.Control = BResetCompileCommand AnchorSideLeft.Control = BResetCompileCommand
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = Owner AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 304 Left = 298
Height = 31 Height = 31
Top = 335 Top = 386
Width = 124 Width = 124
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
AutoSize = True AutoSize = True
@ -204,6 +135,97 @@ object Pas2JSProjectOptionsFrame: TPas2JSProjectOptionsFrame
BorderSpacing.Bottom = 6 BorderSpacing.Bottom = 6
Caption = 'Make pas2js project' Caption = 'Make pas2js project'
OnClick = BMakePas2jsPojectClick OnClick = BMakePas2jsPojectClick
TabOrder = 12 TabOrder = 7
end
object RunGroupBox: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = CBRunOnReady
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 6
Height = 161
Top = 175
Width = 738
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'Run'
ClientHeight = 145
ClientWidth = 736
TabOrder = 8
object RBStartServerAt: TRadioButton
AnchorSideLeft.Control = RunGroupBox
AnchorSideTop.Control = RunGroupBox
Left = 6
Height = 23
Top = 2
Width = 168
BorderSpacing.Left = 6
BorderSpacing.Top = 2
Caption = 'Start HTTP Server on port'
Checked = True
OnChange = RBStartServerAtChange
TabOrder = 0
TabStop = True
end
object SEPort: TSpinEdit
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = RBStartServerAt
AnchorSideTop.Side = asrBottom
Left = 38
Height = 30
Top = 27
Width = 82
BorderSpacing.Left = 32
BorderSpacing.Top = 2
MaxValue = 65354
MinValue = 1024
TabOrder = 1
Value = 3000
end
object RBUseURL: TRadioButton
AnchorSideLeft.Control = RBStartServerAt
AnchorSideTop.Control = SEPort
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 59
Width = 161
BorderSpacing.Top = 2
Caption = 'Use this URL to start app'
OnChange = RBUseURLChange
TabOrder = 2
end
object CBServerURL: TComboBox
AnchorSideLeft.Control = SEPort
AnchorSideTop.Control = RBUseURL
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = RunGroupBox
AnchorSideRight.Side = asrBottom
Left = 38
Height = 30
Top = 84
Width = 692
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
BorderSpacing.Right = 6
ItemHeight = 0
TabOrder = 3
end
object RBRunDefault: TRadioButton
AnchorSideTop.Control = CBServerURL
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 116
Width = 162
BorderSpacing.Left = 6
BorderSpacing.Top = 2
BorderSpacing.Bottom = 6
Caption = 'Execute Run Parameters'
OnChange = RBStartServerAtChange
TabOrder = 4
end
end end
end end

View File

@ -5,13 +5,15 @@ unit PJSProjectOptions;
interface interface
uses uses
Classes, SysUtils, Classes, SysUtils, Math,
// LCL // LCL
StdCtrls, Spin, StdCtrls, Spin,
// LazUtils // LazUtils
LazLoggerBase, LazFileUtils, LazUTF8, LazLoggerBase, LazFileUtils, LazUTF8,
// IdeIntf // IdeIntf
LazIDEIntf, ProjectIntf, CompOptsIntf, IDEOptionsIntf, IDEOptEditorIntf; LazIDEIntf, ProjectIntf, CompOptsIntf, IDEOptionsIntf, IDEOptEditorIntf,
// pas2js
PJSDsgnOptions, PJSController, StrPas2JSDesign;
type type
@ -24,29 +26,27 @@ type
CBRunOnReady: TCheckBox; CBRunOnReady: TCheckBox;
CBServerURL: TComboBox; CBServerURL: TComboBox;
CBUseBrowserConsole: TCheckBox; CBUseBrowserConsole: TCheckBox;
CBUseHTTPServer: TCheckBox;
CBWebProject: TCheckBox; CBWebProject: TCheckBox;
CBHTMLFile: TComboBox; CBHTMLFile: TComboBox;
CBMaintainHTMLFile: TCheckBox; CBMaintainHTMLFile: TCheckBox;
LCBProjectHTMLFile: TLabel; LCBProjectHTMLFile: TLabel;
RBRunDefault: TRadioButton;
RBStartServerAt: TRadioButton; RBStartServerAt: TRadioButton;
RBUseURL: TRadioButton; RBUseURL: TRadioButton;
RunGroupBox: TGroupBox;
SEPort: TSpinEdit; SEPort: TSpinEdit;
procedure BMakePas2jsPojectClick(Sender: TObject); procedure BMakePas2jsPojectClick(Sender: TObject);
procedure BResetCompileCommandClick(Sender: TObject); procedure BResetCompileCommandClick(Sender: TObject);
procedure BResetRunCommandClick(Sender: TObject); procedure BResetRunCommandClick(Sender: TObject);
procedure CBMaintainHTMLFileChange(Sender: TObject); procedure CBMaintainHTMLFileChange(Sender: TObject);
procedure CBUseHTTPServerChange(Sender: TObject);
procedure CBWebProjectChange(Sender: TObject); procedure CBWebProjectChange(Sender: TObject);
procedure RBStartServerAtChange(Sender: TObject); procedure RBStartServerAtChange(Sender: TObject);
procedure RBUseURLChange(Sender: TObject); procedure RBUseURLChange(Sender: TObject);
private private
procedure CheckAllControls(aEnabled: Boolean); procedure CheckAllControls(aEnabled: Boolean);
procedure CheckHTMLOptions(aEnabled: Boolean); procedure UpdateHTMLControls;
procedure CheckServerOptions(aEnabled: Boolean);
function FillFilesCombo(PRJ: TLazProject): Integer; function FillFilesCombo(PRJ: TLazProject): Integer;
procedure ToggleCB(CB: TCheckBox; aEnabled: Boolean); procedure UpdateRunControls;
public public
function GetTitle: string; override; function GetTitle: string; override;
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
@ -66,7 +66,7 @@ Procedure SetDefaultModuleCompileOptions(CompOpts: TLazCompilerOptions);
implementation implementation
uses pjsdsgnoptions, pjscontroller, strpas2jsdesign; {$R *.lfm}
Procedure ResetRunParams(RunParams : TAbstractRunParamsOptionsMode); Procedure ResetRunParams(RunParams : TAbstractRunParamsOptionsMode);
@ -156,9 +156,6 @@ begin
SetPasJSCompileOptions(CompOpts,'module','-Jeutf-8 -Jirtl.js -Jc -Jminclude'); SetPasJSCompileOptions(CompOpts,'module','-Jeutf-8 -Jirtl.js -Jc -Jminclude');
end; end;
{$R *.lfm}
{ TPas2JSProjectOptionsFrame } { TPas2JSProjectOptionsFrame }
function TPas2JSProjectOptionsFrame.GetTitle: string; function TPas2JSProjectOptionsFrame.GetTitle: string;
@ -173,11 +170,14 @@ begin
CBMaintainHTMLFile.Caption:=pjsdMaintainHTMLPage; CBMaintainHTMLFile.Caption:=pjsdMaintainHTMLPage;
CBUseBrowserConsole.Caption:=pjsdUseBrowserConsoleUnitToDisplayWritelnOutput; CBUseBrowserConsole.Caption:=pjsdUseBrowserConsoleUnitToDisplayWritelnOutput;
CBRunOnReady.Caption:=pjsdRunRTLWhenAllPageResourcesAreFullyLoaded; CBRunOnReady.Caption:=pjsdRunRTLWhenAllPageResourcesAreFullyLoaded;
CBUseHTTPServer.Caption:=pjsdProjectNeedsAHTTPServer;
RBStartServerAt.Caption:=pjsdStartHTTPServerOnPort; RBStartServerAt.Caption:=pjsdStartHTTPServerOnPort;
RBUseURL.Caption:=pjsdUseThisURLToStartApplication; RBUseURL.Caption:=pjsdUseThisURLToStartApplication;
RBRunDefault.Caption:=pjsExecuteRunParameters;
BResetRunCommand.Caption:=pjsdResetRunCommand; BResetRunCommand.Caption:=pjsdResetRunCommand;
BResetCompileCommand.Caption:=pjsdResetCompileCommand; BResetCompileCommand.Caption:=pjsdResetCompileCommand;
BMakePas2jsPoject.Caption:=pjsMakePas2jsProject;
end; end;
procedure TPas2JSProjectOptionsFrame.CBWebProjectChange(Sender: TObject); procedure TPas2JSProjectOptionsFrame.CBWebProjectChange(Sender: TObject);
@ -187,17 +187,17 @@ end;
procedure TPas2JSProjectOptionsFrame.RBStartServerAtChange(Sender: TObject); procedure TPas2JSProjectOptionsFrame.RBStartServerAtChange(Sender: TObject);
begin begin
SEPort.Enabled:=RBStartServerAt.Enabled and RBStartServerAt.Checked;; UpdateRunControls;
end; end;
procedure TPas2JSProjectOptionsFrame.RBUseURLChange(Sender: TObject); procedure TPas2JSProjectOptionsFrame.RBUseURLChange(Sender: TObject);
begin begin
CBServerURL.Enabled:=RBUseURL.Enabled and RBUseURL.Checked; UpdateRunControls;
end; end;
procedure TPas2JSProjectOptionsFrame.CBMaintainHTMLFileChange(Sender: TObject); procedure TPas2JSProjectOptionsFrame.CBMaintainHTMLFileChange(Sender: TObject);
begin begin
CheckHTMLOptions(CBMaintainHTMLFile.Checked); UpdateHTMLControls;
end; end;
procedure TPas2JSProjectOptionsFrame.BResetRunCommandClick(Sender: TObject); procedure TPas2JSProjectOptionsFrame.BResetRunCommandClick(Sender: TObject);
@ -230,54 +230,34 @@ begin
PRJ.CustomData.Values[PJSProject]:='1'; PRJ.CustomData.Values[PJSProject]:='1';
end; end;
procedure TPas2JSProjectOptionsFrame.CBUseHTTPServerChange(Sender: TObject); procedure TPas2JSProjectOptionsFrame.UpdateHTMLControls;
begin begin
CheckServerOptions(CBUseHTTPServer.Checked); CBUseBrowserConsole.Enabled:=CBWebProject.Enabled and CBMaintainHTMLFile.Enabled;
end; CBRunOnReady.Enabled:=CBUseBrowserConsole.Enabled;
procedure TPas2JSProjectOptionsFrame.ToggleCB(CB : TCheckBox; aEnabled: Boolean);
begin
With CB do
begin
Enabled:=aEnabled;
if not AEnabled then
Checked:=False;
end;
end;
procedure TPas2JSProjectOptionsFrame.CheckHTMLOptions(aEnabled : Boolean);
begin
ToggleCB(CBUseBrowserConsole,aEnabled);
ToggleCB(CBRunOnReady,aEnabled);
end;
procedure TPas2JSProjectOptionsFrame.CheckServerOptions(aEnabled : Boolean);
begin
RBStartServerAt.Enabled:=aEnabled;
RBUseURL.Enabled:=aEnabled;
SEPort.Enabled:=aEnabled and RBStartServerAt.Checked;
CBServerURL.Enabled:=aEnabled and RBUseURL.Checked;
end; end;
procedure TPas2JSProjectOptionsFrame.CheckAllControls(aEnabled : Boolean); procedure TPas2JSProjectOptionsFrame.CheckAllControls(aEnabled : Boolean);
begin begin
CBHTMLFile.Enabled:=aEnabled;
CBMaintainHTMLFile.Enabled:=aEnabled;
CBUseBrowserConsole.Enabled:=aEnabled;
CBRunOnReady.Enabled:=aEnabled;
RBStartServerAt.Enabled:=aEnabled;
SEPort.Enabled:=aEnabled and RBStartServerAt.Checked;
RBUseURL.Enabled:=aEnabled;
CBServerURL.Enabled:=aEnabled and RBUseURL.Checked;
RBRunDefault.Enabled:=aEnabled;
BResetRunCommand.enabled:=aEnabled; BResetRunCommand.enabled:=aEnabled;
BResetCompileCommand.Enabled:=aEnabled; BResetCompileCommand.Enabled:=aEnabled;
CBHTMLFile.Enabled:=aEnabled;
ToggleCB(CBMaintainHTMLFile,aEnabled);
CheckHTMLOptions(CBMaintainHTMLFile.Checked);
ToggleCB(CBUseHTTPServer,aEnabled);
CheckServerOptions(CBUseHTTPServer.Checked)
end; end;
// Fill combo with HTM(L) files. // Fill combo with HTM(L) files.
// Return index of file that has IsProjectHTMLFile set. // Return index of file that has IsProjectHTMLFile set.
Function TPas2JSProjectOptionsFrame.FillFilesCombo(PRJ : TLazProject) : Integer; function TPas2JSProjectOptionsFrame.FillFilesCombo(PRJ: TLazProject): Integer;
Var Var
I : integer; I : integer;
@ -299,8 +279,8 @@ begin
HPF:=PF; HPF:=PF;
end; end;
end; end;
L.Sort; L.Sort;
CBHTMLFile.Items:=L; CBHTMLFile.Items:=L;
finally finally
L.Free; L.Free;
end; end;
@ -308,6 +288,12 @@ begin
Result:=CBHTMLFile.Items.IndexOfObject(HPF); Result:=CBHTMLFile.Items.IndexOfObject(HPF);
end; end;
procedure TPas2JSProjectOptionsFrame.UpdateRunControls;
begin
SEPort.Enabled:=CBWebProject.Enabled and RBStartServerAt.Enabled and RBStartServerAt.Checked;
CBServerURL.Enabled:=CBWebProject.Enabled and RBUseURL.Enabled and RBUseURL.Checked;
end;
procedure TPas2JSProjectOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); procedure TPas2JSProjectOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
Var Var
@ -319,48 +305,56 @@ Var
begin begin
if AOptions=nil then ; if AOptions=nil then ;
PRJ:=LazarusIDE.ActiveProject; Prj:=LazarusIDE.ActiveProject;
HTMLIdx:=FillFilesCombo(PRJ); HTMLIdx:=FillFilesCombo(Prj);
CBWebProject.Checked:=PRJ.CustomData[PJSProjectWebBrowser]='1'; CBWebProject.Checked:=Prj.CustomData[PJSProjectWebBrowser]='1';
if HTMLIdx=-1 then if HTMLIdx=-1 then
begin begin
HFN:=PRJ.CustomData[PJSProjectHTMLFile]; HFN:=Prj.CustomData[PJSProjectHTMLFile];
HTMLIdx:=CBHTMLFile.Items.IndexOf(HFN); HTMLIdx:=CBHTMLFile.Items.IndexOf(HFN);
end; end;
CBHTMLFile.ItemIndex:=HTMLIdx; CBHTMLFile.ItemIndex:=HTMLIdx;
CBMaintainHTMLFile.Checked:=PRJ.CustomData[PJSProjectMaintainHTML]='1';
CBUseBrowserConsole.Checked:=PRJ.CustomData[PJSProjectWebBrowser]='1'; CBMaintainHTMLFile.Checked:=Prj.CustomData[PJSProjectMaintainHTML]='1';
CBRunOnReady.Checked:=PRJ.CustomData[PJSProjectRunAtReady]='1'; CBUseBrowserConsole.Checked:=Prj.CustomData[PJSProjectUseBrowserConsole]='1';
Port:=StrToIntDef(PRJ.CustomData[PJSProjectPort],0); CBRunOnReady.Checked:=Prj.CustomData[PJSProjectRunAtReady]='1';
URL:=PRJ.CustomData[PJSProjectURL];
CBUseHTTPServer.Checked:=(Port>0) or (URL<>''); Port:=StrToIntDef(Prj.CustomData[PJSProjectPort],0);
SEPort.Value:=Port; URL:=Prj.CustomData[PJSProjectURL];
SEPort.Value:=Min(Max(0,Port),65535);
CBServerURL.AddHistoryItem(URL,10,True,False); CBServerURL.AddHistoryItem(URL,10,True,False);
if Prj.CustomData.Contains(PJSProjectPort) then
RBStartServerAt.Checked:=true
else if Prj.CustomData.Contains(PJSProjectURL) then
RBUseURL.Checked:=true
else
RBRunDefault.Checked:=true;
UpdateHTMLControls;
UpdateRunControls;
end; end;
procedure TPas2JSProjectOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); procedure TPas2JSProjectOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
Var Var
Prj : TLazProject; Prj : TLazProject;
Procedure DoBool(N : String; AValue : Boolean); Procedure DoBool(N : String; AValue : Boolean);
begin begin
if AValue then if AValue then
PRJ.CustomData[N]:='1'; Prj.CustomData[N]:='1';
end; end;
begin begin
if AOptions=nil then ; if AOptions=nil then ;
PRJ:=LazarusIDE.ActiveProject; Prj:=LazarusIDE.ActiveProject;
// Clear everything // Clear everything
With PRJ.CustomData do With Prj.CustomData do
begin begin
Remove(PJSProject); Remove(PJSProject);
Remove(PJSProjectHTMLFile);
Remove(PJSProjectNodeJS);
Remove(PJSProjectMaintainHTML);
Remove(PJSProjectWebBrowser); Remove(PJSProjectWebBrowser);
Remove(PJSProjectHTMLFile);
Remove(PJSProjectMaintainHTML);
Remove(PJSProjectUseBrowserConsole);
Remove(PJSProjectRunAtReady); Remove(PJSProjectRunAtReady);
Remove(PJSProjectPort); Remove(PJSProjectPort);
Remove(PJSProjectURL); Remove(PJSProjectURL);
@ -368,21 +362,22 @@ begin
// Set what is needed // Set what is needed
if CBWebProject.Checked then if CBWebProject.Checked then
begin begin
PRJ.CustomData[PJSProject]:='1'; Prj.CustomData[PJSProject]:='1';
PRJ.CustomData[PJSProjectWebBrowser]:='1'; Prj.CustomData[PJSProjectWebBrowser]:='1';
With CBHTMLFile do With CBHTMLFile do
if ItemIndex<>-1 then if ItemIndex<>-1 then
(Items.Objects[ItemIndex] as TLazProjectFile).CustomData[PJSIsProjectHTMLFile]:='1'; (Items.Objects[ItemIndex] as TLazProjectFile).CustomData[PJSIsProjectHTMLFile]:='1';
DoBool(PJSProjectMaintainHTML,CBMaintainHTMLFile.Checked); DoBool(PJSProjectMaintainHTML,CBMaintainHTMLFile.Checked);
DoBool(PJSProjectWebBrowser,CBUseBrowserConsole.Checked); DoBool(PJSProjectUseBrowserConsole,CBUseBrowserConsole.Checked);
DoBool(PJSProjectRunAtReady,CBRunOnReady.Checked); DoBool(PJSProjectRunAtReady,CBRunOnReady.Checked);
if CBUseHTTPServer.Checked then
begin if RBStartServerAt.Checked and (SEPort.Value>=0) then
if RBStartServerAt.Checked and (SEPort.Value>0) then Prj.CustomData[PJSProjectPort]:=IntToStr(SEPort.Value)
PRJ.CustomData[PJSProjectPort]:=IntToStr(SEPort.Value); else if RBUseURL.Checked and (CBServerURL.Text<>'') then
if RBUseURL.Checked and (CBServerURL.Text<>'') then Prj.CustomData[PJSProjectURL]:=CBServerURL.Text;
PRJ.CustomData[PJSProjectURL]:=CBServerURL.Text;
end;
end; end;
end; end;

View File

@ -481,7 +481,6 @@ begin
AProject.Title:=FPackageName; AProject.Title:=FPackageName;
AProject.ProjectInfoFile:=FPackageDir+StripNonIdentifierChars(FPackageName)+'.lpi'; AProject.ProjectInfoFile:=FPackageDir+StripNonIdentifierChars(FPackageName)+'.lpi';
AProject.CustomData.Values[PJSProject]:='1'; AProject.CustomData.Values[PJSProject]:='1';
AProject.CustomData.Values[PJSProjectAtom]:='1';
CreateProjectDirs; CreateProjectDirs;
CompOpts:=AProject.LazCompilerOptions; CompOpts:=AProject.LazCompilerOptions;
SetDefaultNodeJSCompileOptions(CompOpts); SetDefaultNodeJSCompileOptions(CompOpts);

View File

@ -452,7 +452,6 @@ begin
AProject.Title:=FPackageName; AProject.Title:=FPackageName;
AProject.ProjectInfoFile:=FPackageDir+StripNonIdentifierChars(FPackageName)+'.lpi'; AProject.ProjectInfoFile:=FPackageDir+StripNonIdentifierChars(FPackageName)+'.lpi';
AProject.CustomData.Values[PJSProject]:='1'; AProject.CustomData.Values[PJSProject]:='1';
AProject.CustomData.Values[PJSProjectVSCode]:='1';
CreateProjectDirs; CreateProjectDirs;
CompOpts:=AProject.LazCompilerOptions; CompOpts:=AProject.LazCompilerOptions;
SetDefaultNodeJSCompileOptions(CompOpts); SetDefaultNodeJSCompileOptions(CompOpts);

View File

@ -56,15 +56,18 @@ Resourcestring
+'project'; +'project';
pjsdProjectHTMLPage = 'Project HTML page:'; pjsdProjectHTMLPage = 'Project HTML page:';
pjsdMaintainHTMLPage = 'Maintain HTML page'; pjsdMaintainHTMLPage = 'Maintain HTML page';
pjsdUseBrowserConsoleUnitToDisplayWritelnOutput = 'Use Browser Console unit ' pjsdUseBrowserConsoleUnitToDisplayWritelnOutput = 'Use BrowserConsole unit '
+'to display writeln() output'; +'to display writeln() output';
pjsdRunRTLWhenAllPageResourcesAreFullyLoaded = 'Run RTL when all page ' pjsdRunRTLWhenAllPageResourcesAreFullyLoaded = 'Run RTL when all page '
+'resources are fully loaded'; +'resources are fully loaded';
pjsdProjectNeedsAHTTPServer = 'Project needs a HTTP server';
pjsdStartHTTPServerOnPort = 'Start HTTP Server on port'; pjsdStartHTTPServerOnPort = 'Start HTTP Server on port';
pjsCreateAJavascriptModuleInsteadOfAScript = 'Create a javascript module '
+'instead of a script';
pjsdUseThisURLToStartApplication = 'Use this URL to start application'; pjsdUseThisURLToStartApplication = 'Use this URL to start application';
pjsExecuteRunParameters = 'Execute Run Parameters';
pjsdResetRunCommand = 'Reset Run command'; pjsdResetRunCommand = 'Reset Run command';
pjsdResetCompileCommand = 'Reset Compile command'; pjsdResetCompileCommand = 'Reset Compile command';
pjsMakePas2jsProject = 'Make pas2js project';
// New browser project options form // New browser project options form
pjsdPas2JSBrowserProjectOptions = 'Pas2JS Browser project options'; pjsdPas2JSBrowserProjectOptions = 'Pas2JS Browser project options';