mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-30 23:03:40 +02:00
213 lines
6.4 KiB
ObjectPascal
213 lines
6.4 KiB
ObjectPascal
{ IDE options frame for pas2js options
|
|
|
|
Author: Mattias Gaertner
|
|
}
|
|
unit PJSDsgnOptsFrame;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$Inline on}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, StdCtrls, Dialogs, Spin, IDEOptionsIntf,
|
|
IDEUtils, LazFileCache, PJSDsgnOptions,
|
|
LazFileUtils;
|
|
|
|
Type
|
|
{ TPas2jsOptionsFrame }
|
|
|
|
TPas2jsOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
BBrowserBrowseButton: TButton;
|
|
NodeJSBrowseButton: TButton;
|
|
BrowserComboBox: TComboBox;
|
|
NodeJSComboBox: TComboBox;
|
|
BrowserLabel1: TLabel;
|
|
HTTPServerBrowseButton: TButton;
|
|
HTTPServerComboBox: TComboBox;
|
|
HTTPServerCmdLabel: TLabel;
|
|
BrowserLabel: TLabel;
|
|
ServerPortLabel: TLabel;
|
|
Pas2jsPathBrowseButton: TButton;
|
|
Pas2jsPathComboBox: TComboBox;
|
|
Pas2jsPathLabel: TLabel;
|
|
ServerPortSpinEdit: TSpinEdit;
|
|
procedure BBrowserBrowseButtonClick(Sender: TObject);
|
|
procedure HTTPServerBrowseButtonClick(Sender: TObject);
|
|
procedure NodeJSBrowseButtonClick(Sender: TObject);
|
|
procedure Pas2jsPathBrowseButtonClick(Sender: TObject);
|
|
private
|
|
function CheckCompiler(Buttons: TMsgDlgButtons): boolean;
|
|
public
|
|
function GetTitle: String; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TPas2jsOptionsFrame }
|
|
|
|
procedure TPas2jsOptionsFrame.Pas2jsPathBrowseButtonClick(Sender: TObject);
|
|
var
|
|
OpenDialog: TOpenDialog;
|
|
AFilename: String;
|
|
begin
|
|
OpenDialog:=TOpenDialog.Create(nil);
|
|
try
|
|
//InputHistories.ApplyFileDialogSettings(OpenDialog);
|
|
OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist];
|
|
OpenDialog.Title:='Select pas2js executable';
|
|
if OpenDialog.Execute then begin
|
|
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
|
SetComboBoxText(Pas2jsPathComboBox,AFilename,cstFilename,30);
|
|
CheckCompiler([mbOk]);
|
|
end;
|
|
finally
|
|
OpenDialog.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.HTTPServerBrowseButtonClick(Sender: TObject);
|
|
|
|
var
|
|
OpenDialog: TOpenDialog;
|
|
AFilename: String;
|
|
|
|
begin
|
|
OpenDialog:=TOpenDialog.Create(nil);
|
|
try
|
|
//InputHistories.ApplyFileDialogSettings(OpenDialog);
|
|
OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist];
|
|
OpenDialog.Title:='Select simpleserver executable';
|
|
if OpenDialog.Execute then begin
|
|
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
|
SetComboBoxText(HTTPServerComboBox,AFilename,cstFilename,30);
|
|
PJSOptions.HTTPServerFileName:=AFileName;
|
|
end;
|
|
finally
|
|
OpenDialog.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.NodeJSBrowseButtonClick(Sender: TObject);
|
|
var
|
|
OpenDialog: TOpenDialog;
|
|
AFilename: String;
|
|
|
|
begin
|
|
OpenDialog:=TOpenDialog.Create(nil);
|
|
try
|
|
//InputHistories.ApplyFileDialogSettings(OpenDialog);
|
|
OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist];
|
|
OpenDialog.Title:='Select browser executable';
|
|
if OpenDialog.Execute then begin
|
|
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
|
SetComboBoxText(NodeJSComboBox,AFilename,cstFilename,30);
|
|
PJSOptions.NodeJSFileName:=AFileName;
|
|
end;
|
|
finally
|
|
OpenDialog.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.BBrowserBrowseButtonClick(Sender: TObject);
|
|
|
|
var
|
|
OpenDialog: TOpenDialog;
|
|
AFilename: String;
|
|
|
|
begin
|
|
OpenDialog:=TOpenDialog.Create(nil);
|
|
try
|
|
//InputHistories.ApplyFileDialogSettings(OpenDialog);
|
|
OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist];
|
|
OpenDialog.Title:='Select browser executable';
|
|
if OpenDialog.Execute then begin
|
|
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
|
SetComboBoxText(BrowserComboBox,AFilename,cstFilename,30);
|
|
PJSOptions.BrowserFileName:=AFileName;
|
|
end;
|
|
finally
|
|
OpenDialog.Free;
|
|
end;
|
|
end;
|
|
|
|
function TPas2jsOptionsFrame.CheckCompiler(Buttons: TMsgDlgButtons): boolean;
|
|
|
|
var
|
|
NewExe: string;
|
|
|
|
begin
|
|
NewExe:=Pas2jsPathComboBox.Text;
|
|
if NewExe=PJSOptions.CompilerFilename then exit(true);
|
|
Result:=false;
|
|
PJSOptions.CompilerFilename:=NewExe;
|
|
// ToDo: check file
|
|
//NewExe:=PJSOptions.GetParsedCompilerExe;
|
|
end;
|
|
|
|
function TPas2jsOptionsFrame.GetTitle: String;
|
|
begin
|
|
Result:='Pas2JS';
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
|
|
var
|
|
ExeName: String;
|
|
ServerName : String;
|
|
//BrowserName : String;
|
|
|
|
begin
|
|
ExeName:=GetStandardPas2jsExe;
|
|
ServerName:=GetStandardHTTPServer;
|
|
//BrowserName:=GetStandardBrowser;
|
|
Pas2jsPathLabel.Caption:='Path of '+ExeName;
|
|
Pas2jsPathLabel.Hint:='You can use IDE macros like $MakeExe(). Without a full path, '+ExeName+' is searched in PATH.';
|
|
Pas2jsPathBrowseButton.Caption:='...';
|
|
Pas2jsPathBrowseButton.Hint:='Browse';
|
|
HTTPServerCmdLabel.Caption:='Path of '+ServerName;
|
|
HTTPServerCmdLabel.Hint:='You can use IDE macros like $MakeExe(). Without a full path, '+ServerName+' is searched in PATH.';
|
|
HTTPServerBrowseButton.Caption:='...';
|
|
HTTPServerBrowseButton.Hint:='Browse';
|
|
ServerPortLabel.Caption:='Port numbers to start allocating from '+ServerName;
|
|
ServerPortLabel.Hint:='Server instances will be started with a port starting from this number, increasing per new project';
|
|
BrowserLabel.Caption:='Browser to use when opening HTML page';
|
|
BrowserLabel.Hint:='Use this browser when opening the URL or HTML file of a web browser project';
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
SetComboBoxText(Pas2jsPathComboBox,PJSOptions.CompilerFilename,cstFilename,30);
|
|
SetComboBoxText(HTTPServerComboBox,PJSOptions.HTTPServerFileName,cstFilename,30);
|
|
SetComboBoxText(BrowserComboBox,PJSOptions.BrowserFileName,cstFilename,30);
|
|
SetComboBoxText(NodeJSComboBox,PJSOptions.NodejsFileName,cstFilename,30);
|
|
ServerPortSpinEdit.Value:=PJSOptions.StartAtPort;
|
|
end;
|
|
|
|
procedure TPas2jsOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
PJSOptions.CompilerFilename:=Pas2jsPathComboBox.Text;
|
|
PJSOptions.HTTPServerFileName:=HTTPServerComboBox.Text;
|
|
PJSOptions.BrowserFileName:=BrowserComboBox.Text;
|
|
PJSOptions.NodeJSFileName:=NodeJSComboBox.Text;
|
|
PJSOptions.StartAtPort:=ServerPortSpinEdit.Value;
|
|
If PJSOptions.Modified then
|
|
PJSOptions.Save;
|
|
end;
|
|
|
|
class function TPas2jsOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result:=IDEEditorGroups.GetByIndex(GroupEnvironment)^.GroupClass;
|
|
end;
|
|
|
|
end.
|
|
|