lazarus/components/pas2js/pjsdsgnoptsframe.pas
michael 410e9e94ac * Extended NodeJS project source
git-svn-id: trunk@56769 -
2017-12-17 16:43:22 +00:00

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.