lazarus/components/pas2js/frmpas2jsatompackagesettings.pas
michael b6d3957d72 * Atom package support
git-svn-id: trunk@64265 -
2020-12-22 10:54:57 +00:00

168 lines
4.3 KiB
ObjectPascal

unit frmPas2jsAtomPackageSettings;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ValEdit,
ButtonPanel, EditBtn;
type
{ TAtomPackageSettingsForm }
TAtomPackageSettingsForm = class(TForm)
ButtonPanel1: TButtonPanel;
cbLink: TCheckBox;
dePackage: TDirectoryEdit;
edtDescription: TEdit;
edtKeywords: TEdit;
edtName: TEdit;
edtLicense: TEdit;
edtClassName: TEdit;
lblCommands1: TLabel;
lblDescription: TLabel;
lblDescription1: TLabel;
lblLicense1: TLabel;
lblName: TLabel;
lblLicense: TLabel;
lblCommands: TLabel;
lblClassName: TLabel;
vleCommands: TValueListEditor;
vleActivationCommands: TValueListEditor;
procedure edtClassNameKeyPress(Sender: TObject; var Key: char);
procedure edtNameEditingDone(Sender: TObject);
procedure edtNameKeyPress(Sender: TObject; var Key: char);
procedure FormShow(Sender: TObject);
private
Function GetValueCtl(aIndex : Integer) : TWinControl;
function GetB(AIndex: Integer): Boolean;
function GetS(AIndex: Integer): String;
function GetSL(AIndex: Integer): TStrings;
procedure SetB(AIndex: Integer; AValue: Boolean);
procedure SetS(AIndex: Integer; AValue: String);
procedure SetSL(AIndex: Integer; AValue: TStrings);
public
Property PkgDescription: String Index 0 read GetS Write SetS;
Property PkgName : String Index 1 read GetS Write Sets;
Property PkgKeyWords : String Index 2 read GetS Write SetS;
Property PkgLink : Boolean Index 3 read GetB Write SetB;
Property PkgCommands : TStrings Index 4 Read GetSL Write SetSL;
Property PkgActivationCommands : TStrings Index 5 Read GetSL Write SetSL;
Property PkgLicense : String Index 6 read GetS Write SetS;
Property PkgDir : String Index 7 read GetS Write SetS;
Property PkgClassName : String Index 8 read GetS Write SetS;
end;
function StripNonIdentifierChars(S : String) : string;
var
AtomPackageSettingsForm: TAtomPackageSettingsForm;
implementation
{$R *.lfm}
{ TAtomPackageSettingsForm }
procedure TAtomPackageSettingsForm.edtNameKeyPress(Sender: TObject;
var Key: char);
begin
if Not (Upcase(key) in ['A'..'Z','-',#8,#127]) then
Key:=#0;
end;
procedure TAtomPackageSettingsForm.FormShow(Sender: TObject);
begin
{$IFDEF WINDOWS}
cbLink.checked:=False;
cbLink.Enabled:=False;
{$ENDIF}
end;
procedure TAtomPackageSettingsForm.edtClassNameKeyPress(Sender: TObject;
var Key: char);
begin
if Not (Upcase(Key) in ['A'..'Z','_',#8,#127]) then
Key:=#0;
end;
function StripNonIdentifierChars(S : String) : string;
begin
// Name will only contain characters and -
Result:=StringReplace(S,'-','_',[rfReplaceAll]);
end;
procedure TAtomPackageSettingsForm.edtNameEditingDone(Sender: TObject);
begin
if (edtClassName.Text='') then
edtClassName.Text:='T'+StripNonIdentifierChars(edtName.Text)+'Application';
end;
function TAtomPackageSettingsForm.GetValueCtl(aIndex: Integer): TWinControl;
begin
Case AIndex of
0 : Result:=edtDescription;
1 : Result:=edtName;
2 : Result:=edtKeywords;
3 : Result:=cbLink;
4 : Result:=vleCommands;
5 : Result:=vleActivationCommands;
6 : Result:=edtLicense;
7 : Result:=dePackage;
8 : Result:=edtClassName;
end;
end;
function TAtomPackageSettingsForm.GetB(AIndex: Integer): Boolean;
begin
Result:=(GetValueCtl(aIndex) as TCheckbox).Checked;
end;
function TAtomPackageSettingsForm.GetS(AIndex: Integer): String;
Var
Ctl : TWinControl;
begin
ctl:=GetValueCtl(aIndex);
if Ctl is TCustomEdit then
Result:=(Ctl as TCustomEdit).text
else
Result:=(Ctl as TCustomEditButton).Text;
end;
function TAtomPackageSettingsForm.GetSL(AIndex: Integer): TStrings;
begin
Result:=(GetValueCtl(aIndex) as TValueListEditor).Strings;
end;
procedure TAtomPackageSettingsForm.SetB(AIndex: Integer; AValue: Boolean);
begin
(GetValueCtl(aIndex) as TCheckbox).Checked:=aValue;
end;
procedure TAtomPackageSettingsForm.SetS(AIndex: Integer; AValue: String);
Var
Ctl : TWinControl;
begin
ctl:=GetValueCtl(aIndex);
if Ctl is TCustomEdit then
(Ctl as TCustomEdit).text:=aValue
else
(Ctl as TCustomEditButton).Text:=aValue;
end;
procedure TAtomPackageSettingsForm.SetSL(AIndex: Integer; AValue: TStrings);
begin
(GetValueCtl(aIndex) as TValueListEditor).Strings.Assign(aValue);
end;
end.