lazarus/components/pas2js/frmpas2jsbrowserprojectoptions.pp
2022-04-23 14:46:51 +02:00

319 lines
9.8 KiB
ObjectPascal

unit frmpas2jsbrowserprojectoptions;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel,
Spin, strpas2jsdesign;
const
WBBoolCreateHTML = 0;
WBBoolMainHTML = 1;
WBBoolRunOnReady = 2;
WBBoolShowUncaughtExceptions = 3;
WBBoolUseBrowserApp = 4;
WBBoolUseWASI = 5;
WBBoolUseBrowserConsole = 6;
WBBoolUseModule = 7;
WBBoolRunLocation = 8;
WBBoolRunServerAtPort = 9;
WBBoolRunBrowserWithURL = 10;
WBBoolRunDefault = 11;
type
{ TWebBrowserProjectOptionsForm }
TWebBrowserProjectOptionsForm = class(TForm)
BPHelpOptions: TButtonPanel;
CBCreateHTML: TCheckBox;
CBMaintainPage: TCheckBox;
CBRunLocationOnSWS: TComboBox;
CBRunOnReady: TCheckBox;
CBRunServerURL: TComboBox;
CBShowUncaughtExceptions: TCheckBox;
CBUseBrowserApp: TCheckBox;
CBUseBrowserConsole: TCheckBox;
CBUseModule: TCheckBox;
CBUseWASI: TCheckBox;
edtWasmProgram: TEdit;
RBRunLocationOnSWS: TRadioButton;
RBRunBrowserWithURL: TRadioButton;
RBRunDefault: TRadioButton;
RBRunServerAt: TRadioButton;
RunGroupBox: TGroupBox;
SERunPort: TSpinEdit;
procedure CBCreateHTMLChange(Sender: TObject);
procedure CBUseBrowserAppChange(Sender: TObject);
procedure CBUseHTTPServerChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RBRunLocationOnSWSChange(Sender: TObject);
procedure RBRunDefaultChange(Sender: TObject);
procedure RBRunServerAtChange(Sender: TObject);
procedure RBRunBrowserWithURLChange(Sender: TObject);
private
function GetB(AIndex: Integer): Boolean;
function GetLocation: string;
function GetServerPort: Word;
function GetURL: String;
function GetWasmProgramURL: String;
procedure SetB(AIndex: Integer; AValue: Boolean);
procedure SetLocation(const AValue: string);
procedure SetServerPort(AValue: Word);
procedure SetURL(AValue: String);
procedure SetWasmProgramURL(AValue: String);
procedure UpdateHTMLControls;
procedure UpdateBrowserAppControls;
procedure UpdateRunControls;
public
procedure HideWASM; virtual;
procedure HideModule; virtual;
procedure HideRunOnReady; virtual;
procedure HideUseBrowserApp; virtual;
procedure HideRunHTTPServer; virtual;
procedure HideRunLocation; virtual;
property CreateHTML : Boolean Index WBBoolCreateHTML read GetB Write SetB;
property MaintainHTML : Boolean Index WBBoolMainHTML read GetB Write SetB;
property UseRunOnReady : Boolean Index WBBoolRunOnReady read GetB Write SetB;
property ShowUncaughtExceptions : Boolean Index WBBoolShowUncaughtExceptions read GetB Write SetB;
property UseBrowserApp : Boolean Index WBBoolUseBrowserApp read GetB Write SetB;
property UseWASI : Boolean Index WBBoolUseWASI read GetB Write SetB;
property WasmProgramURL : String Read GetWasmProgramURL Write SetWasmProgramURL;
property UseBrowserConsole : Boolean Index WBBoolUseBrowserConsole read GetB Write SetB;
property UseModule : Boolean Index WBBoolUseModule read GetB Write SetB;
property RunLocation : Boolean Index WBBoolRunLocation read GetB Write SetB;
property Location : string Read GetLocation Write SetLocation;
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;
var
WebBrowserProjectOptionsForm: TWebBrowserProjectOptionsForm;
implementation
{$R *.lfm}
{ TWebBrowserProjectOptionsForm }
procedure TWebBrowserProjectOptionsForm.CBCreateHTMLChange(Sender: TObject);
Procedure DOCB(CB : TCheckbox);
begin
CB.Enabled:=CBCreateHTML.Checked;
if not CB.Enabled then
CB.Checked:=False;
end;
begin
UpdateHTMLControls;
DoCB(CBMaintainPage);
DoCB(CBRunOnReady);
end;
procedure TWebBrowserProjectOptionsForm.CBUseBrowserAppChange(Sender: TObject);
begin
UpdateBrowserAppControls;
end;
procedure TWebBrowserProjectOptionsForm.CBUseHTTPServerChange(Sender: TObject);
begin
end;
procedure TWebBrowserProjectOptionsForm.UpdateBrowserAppControls;
begin
CBUseWASI.Enabled:=UseBrowserApp;
edtWasmProgram.Enabled:=UseBrowserApp;
end;
procedure TWebBrowserProjectOptionsForm.FormCreate(Sender: TObject);
begin
// localize
Caption:=pjsdPas2JSBrowserProjectOptions;
CBCreateHTML.Caption:=pjsdCreateInitialHTMLPage;
CBMaintainPage.Caption:=pjsdMaintainHTMLPage;
CBRunOnReady.Caption:=pjsdRunRTLWhenAllPageResourcesAreFullyLoaded;
CBShowUncaughtExceptions.Caption:=pjsdLetRTLShowUncaughtExceptions;
CBUseBrowserApp.Caption:=pjsdUseBrowserApplicationObject;
CBUseWASI.Caption:=pjsdUseWASIApplicationObject;
edtWasmProgram.TextHint:=pjsWasiProgramFileTextHint;
CBUseBrowserConsole.Caption:=pjsdUseBrowserConsoleUnitToDisplayWritelnOutput;
CBUseModule.Caption:=pjsCreateAJavascriptModuleInsteadOfAScript;
RunGroupBox.Caption:=pjsdRun;
RBRunLocationOnSWS.Caption:=pjsdLocationOnSimpleWebServer;
RBRunLocationOnSWS.Hint:=pjsdTheSimpleWebServerIsAutomaticallyStartedOnRunTheLo;
RBRunServerAt.Caption:=pjsdStartHTTPServerOnPort;
RBRunBrowserWithURL.Caption:=pjsdUseThisURLToStartApplication;
RBRunBrowserWithURL.Hint:=pjsdUseThisWhenYouStartYourOwnHttpServer;
RBRunDefault.Caption:=pjsExecuteRunParameters;
CBCreateHTMLChange(self);
end;
procedure TWebBrowserProjectOptionsForm.RBRunLocationOnSWSChange(
Sender: TObject);
begin
UpdateRunControls;
end;
procedure TWebBrowserProjectOptionsForm.RBRunDefaultChange(Sender: TObject);
begin
UpdateRunControls;
end;
procedure TWebBrowserProjectOptionsForm.RBRunServerAtChange(Sender: TObject);
begin
UpdateRunControls;
end;
procedure TWebBrowserProjectOptionsForm.RBRunBrowserWithURLChange(Sender: TObject);
begin
UpdateRunControls;
end;
function TWebBrowserProjectOptionsForm.GetB(AIndex: Integer): Boolean;
begin
Case Aindex of
WBBoolCreateHTML : Result:=CBCreateHTML.Checked;
WBBoolMainHTML : Result:=CBMaintainPage.Checked;
WBBoolRunOnReady : Result:=CBRunOnReady.Checked;
WBBoolShowUncaughtExceptions : Result:=CBShowUncaughtExceptions.Checked;
WBBoolUseBrowserApp : Result:=CBUseBrowserApp.Checked;
WBBoolUseWASI : Result:=cbUseWASI.Checked;
WBBoolUseBrowserConsole : Result:=CBUseBrowserConsole.Checked;
WBBoolUseModule : Result:=cbUseModule.Checked;
WBBoolRunLocation : Result:=RBRunLocationOnSWS.Checked;
WBBoolRunServerAtPort : Result:=RBRunServerAt.Checked;
WBBoolRunBrowserWithURL : Result:=RBRunBrowserWithURL.Checked;
WBBoolRunDefault : Result:=RBRunDefault.Checked;
else
Result:=False;
end;
end;
function TWebBrowserProjectOptionsForm.GetLocation: string;
begin
Result:=CBRunLocationOnSWS.Text;
end;
function TWebBrowserProjectOptionsForm.GetServerPort: Word;
begin
Result:=SERunPort.Value;
end;
function TWebBrowserProjectOptionsForm.GetURL: String;
begin
Result:=CBRunServerURL.Text;
end;
function TWebBrowserProjectOptionsForm.GetWasmProgramURL: String;
begin
Result:=edtWasmProgram.Text;
end;
procedure TWebBrowserProjectOptionsForm.SetB(AIndex: Integer; AValue: Boolean);
begin
Case Aindex of
WBBoolCreateHTML : begin CBCreateHTML.Checked:=AValue; UpdateHTMLControls; end;
WBBoolMainHTML : CBMaintainPage.Checked:=AValue;
WBBoolRunOnReady : CBRunOnReady.Checked:=AValue;
WBBoolShowUncaughtExceptions : CBShowUncaughtExceptions.Checked:=AValue;
WBBoolUseBrowserConsole : CBUseBrowserConsole.Checked:=AValue;
WBBoolUseBrowserApp : begin CBUseBrowserApp.Checked:=AValue; UpdateBrowserAppControls; end;
WBBoolUseWASI : begin cbUseWASI.Checked:=AValue; UpdateBrowserAppControls; end;
WBBoolUseModule : cbUseModule.Checked:=AValue;
WBBoolRunLocation : begin RBRunLocationOnSWS.Checked:=AValue; UpdateRunControls; end;
WBBoolRunServerAtPort : begin RBRunServerAt.Checked:=AValue; UpdateRunControls; end;
WBBoolRunBrowserWithURL : begin RBRunBrowserWithURL.Checked:=AValue; UpdateRunControls; end;
WBBoolRunDefault : begin RBRunDefault.Checked:=AValue; UpdateRunControls; end;
end;
end;
procedure TWebBrowserProjectOptionsForm.SetLocation(const AValue: string);
begin
CBRunLocationOnSWS.Text:=AValue;
end;
procedure TWebBrowserProjectOptionsForm.SetServerPort(AValue: Word);
begin
SERunPort.Value:=AValue;
end;
procedure TWebBrowserProjectOptionsForm.SetURL(AValue: String);
begin
CBRunServerURL.Text:=AValue;
end;
procedure TWebBrowserProjectOptionsForm.SetWasmProgramURL(AValue: String);
begin
edtWasmProgram.Text:=aValue;
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
CBRunLocationOnSWS.Enabled:=RBRunLocationOnSWS.Enabled and RBRunLocationOnSWS.Checked;
SERunPort.Enabled:=RBRunServerAt.Enabled and RBRunServerAt.Checked;
CBRunServerURL.Enabled:=RBRunBrowserWithURL.Enabled and RBRunBrowserWithURL.Checked;
end;
procedure TWebBrowserProjectOptionsForm.HideWASM;
begin
CBUseWASI.Visible:=false;
edtWasmProgram.Visible:=false;
end;
procedure TWebBrowserProjectOptionsForm.HideModule;
begin
CBUseModule.Visible:=false;
end;
procedure TWebBrowserProjectOptionsForm.HideRunOnReady;
begin
CBRunOnReady.Visible:=false;
end;
procedure TWebBrowserProjectOptionsForm.HideUseBrowserApp;
begin
CBUseBrowserApp.Visible:=false;
end;
procedure TWebBrowserProjectOptionsForm.HideRunHTTPServer;
begin
RunGroupBox.Visible:=false;
end;
procedure TWebBrowserProjectOptionsForm.HideRunLocation;
begin
RBRunServerAt.Checked:=true;
RBRunLocationOnSWS.Visible:=false;
CBRunLocationOnSWS.Visible:=false;
end;
end.