mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 10:57:55 +02:00
149 lines
3.6 KiB
ObjectPascal
149 lines
3.6 KiB
ObjectPascal
unit frmTemplateVariables;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes,
|
|
// LCL
|
|
Controls, Forms, ExtCtrls, Grids, StdCtrls, EditBtn, ButtonPanel,
|
|
// ProjectTemplates
|
|
ProjectTemplates, ptstrconst;
|
|
|
|
type
|
|
|
|
{ TProjectVariablesForm }
|
|
|
|
TProjectVariablesForm = class(TForm)
|
|
ButtonPanel1: TButtonPanel;
|
|
DEDestDir: TDirectoryEdit;
|
|
EProjectName: TEdit;
|
|
ProjNameLabel: TLabel;
|
|
DEDestDirLabel: TLabel;
|
|
PDescription: TPanel;
|
|
SGVariables: TStringGrid;
|
|
procedure BOKClick(Sender: TObject);
|
|
procedure EssentialDataChange(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure ProjectVariablesFormShow(Sender: TObject);
|
|
procedure SGVariablesSelectEditor(Sender: TObject; aCol, aRow: Integer;
|
|
var Editor: TWinControl);
|
|
private
|
|
FSChanged: Boolean;
|
|
FTemplates: TProjectTemplates;
|
|
FVariables : TStrings;
|
|
function GetProjectDir: String;
|
|
function GetProjectName: String;
|
|
procedure SetVariables(const AValue: TStrings);
|
|
public
|
|
Property Templates : TProjectTemplates Read FTemplates Write FTemplates;
|
|
Property ProjectName : String Read GetProjectName;
|
|
Property ProjectDir : String Read GetProjectDir;
|
|
Property Variables : TStrings Read FVariables Write SetVariables;
|
|
Property SettingsChanged: Boolean Read FSChanged Write FSChanged;
|
|
end;
|
|
|
|
var
|
|
ProjectVariablesForm: TProjectVariablesForm;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TProjectVariablesForm }
|
|
|
|
procedure TProjectVariablesForm.ProjectVariablesFormShow(Sender: TObject);
|
|
begin
|
|
SGVariables.Cells[0,0]:=SVariable;
|
|
SGVariables.Cells[1,0]:=SValue;
|
|
SGVariables.Cells[2,0]:=SDescription;
|
|
end;
|
|
|
|
procedure TProjectVariablesForm.SGVariablesSelectEditor(Sender: TObject; aCol,
|
|
aRow: Integer; var Editor: TWinControl);
|
|
begin
|
|
if aCol<>1 then
|
|
Editor:=nil;
|
|
end;
|
|
|
|
procedure TProjectVariablesForm.BOKClick(Sender: TObject);
|
|
|
|
Var
|
|
N,V : String;
|
|
I : Integer;
|
|
begin
|
|
For I:=0 to FVariables.Count-1 do
|
|
begin
|
|
FVariables.GetNameValue(I,N,V);
|
|
V:=SGVariables.Cells[1,I+1];
|
|
if V='' then
|
|
V:=N; // Let Value=Name if not given by user.
|
|
FVariables[i]:=N+'='+V;
|
|
end;
|
|
end;
|
|
|
|
procedure TProjectVariablesForm.EssentialDataChange(Sender: TObject);
|
|
begin
|
|
ButtonPanel1.OKButton.Enabled:=(EProjectName.Text<>'') and (DEDestDir.Text<>'');
|
|
end;
|
|
|
|
procedure TProjectVariablesForm.FormCreate(Sender: TObject);
|
|
begin
|
|
Caption := SNewFromTemplate;
|
|
ProjNameLabel.Caption:= SNameforProject;
|
|
DEDestDirLabel.Caption:= SCreateinDir;
|
|
PDescription.Caption:= SThisProject;
|
|
// This is good for most projects and can be changed later. Only directory must be selected.
|
|
EProjectName.Text:='project1';
|
|
EssentialDataChange(Nil);
|
|
end;
|
|
|
|
procedure TProjectVariablesForm.SetVariables(const AValue: TStrings);
|
|
|
|
Var
|
|
N,V : String;
|
|
I,J : Integer;
|
|
|
|
begin
|
|
FVariables:=AValue;
|
|
If (FVariables.Count=0) then
|
|
begin
|
|
SGVariables.Enabled:=False;
|
|
PDescription.Caption:=SNoAdditionalVars;
|
|
end
|
|
else
|
|
begin
|
|
SGVariables.RowCount:=FVariables.Count+1;
|
|
For I:=1 to FVariables.Count do
|
|
begin
|
|
FVariables.GetNameValue(I-1,N,V);
|
|
SGVariables.Cells[0,I]:=N;
|
|
J:=Pos('|',V);
|
|
if J>0 then
|
|
begin
|
|
SGVariables.Cells[1,I]:=copy(V,J+1,Length(V));
|
|
SGVariables.Cells[2,I]:=copy(V,1,J-1);
|
|
end
|
|
else
|
|
begin
|
|
SGVariables.Cells[1,I]:='';
|
|
SGVariables.Cells[2,I]:=V;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TProjectVariablesForm.GetProjectDir: String;
|
|
begin
|
|
Result:=DEDestDir.Text;
|
|
end;
|
|
|
|
function TProjectVariablesForm.GetProjectName: String;
|
|
begin
|
|
Result:=EProjectName.Text;
|
|
end;
|
|
|
|
end.
|
|
|