lazarus/components/pas2js/frmpas2jsvscodeextensionsettings.pas
michael 965f4823f2 * Remove windows-only code
git-svn-id: trunk@64287 -
2020-12-27 16:55:33 +00:00

173 lines
4.6 KiB
ObjectPascal

unit frmPas2jsVSCodeExtensionSettings;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ValEdit,
ButtonPanel, EditBtn;
type
{ TVSCodeExtensionSettingsForm }
TVSCodeExtensionSettingsForm = class(TForm)
ButtonPanel1: TButtonPanel;
edtPublisher: TEdit;
dePackage: TDirectoryEdit;
edtDescription: TEdit;
edtKeywords: TEdit;
edtName: TEdit;
edtLicense: TEdit;
edtClassName: TEdit;
Label1: TLabel;
lblCommands1: TLabel;
lblDescription: TLabel;
lblDescription1: TLabel;
lblLicense1: TLabel;
lblName: TLabel;
lblLicense: TLabel;
lblCommands: TLabel;
lblClassName: TLabel;
vleContributesCommands: TValueListEditor;
vleCommands: TValueListEditor;
procedure edtClassNameKeyPress(Sender: TObject; var Key: char);
procedure edtNameEditingDone(Sender: TObject);
procedure edtNameKeyPress(Sender: TObject; var Key: char);
procedure edtPublisherKeyPress(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 PkgPublisher : String Index 3 read GetS Write SetS;
Property PkgCommands : TStrings Index 4 Read GetSL Write SetSL;
Property PkgContributesCommands : 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
VSCodeExtensionSettingsForm: TVSCodeExtensionSettingsForm;
implementation
{$R *.lfm}
{ TVSCodeExtensionSettingsForm }
procedure TVSCodeExtensionSettingsForm.edtNameKeyPress(Sender: TObject;
var Key: char);
begin
if Not (Upcase(key) in ['A'..'Z','-',#8,#127]) then
Key:=#0;
end;
procedure TVSCodeExtensionSettingsForm.edtPublisherKeyPress(Sender: TObject;
var Key: char);
begin
if Not (Upcase(key) in ['A'..'Z',#8,#127]) then
Key:=#0;
end;
procedure TVSCodeExtensionSettingsForm.FormShow(Sender: TObject);
begin
end;
procedure TVSCodeExtensionSettingsForm.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 TVSCodeExtensionSettingsForm.edtNameEditingDone(Sender: TObject);
begin
if (edtClassName.Text='') then
edtClassName.Text:='T'+StripNonIdentifierChars(edtName.Text)+'Application';
end;
function TVSCodeExtensionSettingsForm.GetValueCtl(aIndex: Integer): TWinControl;
begin
Case AIndex of
0 : Result:=edtDescription;
1 : Result:=edtName;
2 : Result:=edtKeywords;
3 : Result:=edtPublisher;
4 : Result:=vleCommands;
5 : Result:=vleContributesCommands;
6 : Result:=edtLicense;
7 : Result:=dePackage;
8 : Result:=edtClassName;
end;
end;
function TVSCodeExtensionSettingsForm.GetB(AIndex: Integer): Boolean;
begin
Result:=(GetValueCtl(aIndex) as TCheckbox).Checked;
end;
function TVSCodeExtensionSettingsForm.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 TVSCodeExtensionSettingsForm.GetSL(AIndex: Integer): TStrings;
begin
Result:=(GetValueCtl(aIndex) as TValueListEditor).Strings;
end;
procedure TVSCodeExtensionSettingsForm.SetB(AIndex: Integer; AValue: Boolean);
begin
(GetValueCtl(aIndex) as TCheckbox).Checked:=aValue;
end;
procedure TVSCodeExtensionSettingsForm.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 TVSCodeExtensionSettingsForm.SetSL(AIndex: Integer; AValue: TStrings);
begin
(GetValueCtl(aIndex) as TValueListEditor).Strings.Assign(aValue);
end;
end.