213 lines
6.3 KiB
ObjectPascal
213 lines
6.3 KiB
ObjectPascal
|
|
unit fServerProjectOptions;
|
||
|
|
|
||
|
|
{----------------------------------------------------------------------------}
|
||
|
|
{ RemObjects SDK Library - Delphi IDE Integration
|
||
|
|
{
|
||
|
|
{ compiler: Delphi 5 and up
|
||
|
|
{ platform: Win32
|
||
|
|
{
|
||
|
|
{ (c)opyright RemObjects Software. all rights reserved.
|
||
|
|
{
|
||
|
|
{ Using this code requires a valid license of the RemObjects SDK
|
||
|
|
{ which can be obtained at http://www.remobjects.com.
|
||
|
|
{----------------------------------------------------------------------------}
|
||
|
|
|
||
|
|
{$I ..\RemObjects.inc}
|
||
|
|
|
||
|
|
interface
|
||
|
|
|
||
|
|
uses
|
||
|
|
Windows, Messages, SysUtils,
|
||
|
|
{$IFDEF DELPHI6UP} Variants, {$ENDIF}
|
||
|
|
Classes, Graphics, Controls, Forms,
|
||
|
|
Dialogs, StdCtrls, Buttons, ComCtrls, ImgList, uROIDEPrjWizard, ExtCtrls;
|
||
|
|
|
||
|
|
type
|
||
|
|
TServerProjectOptions = class(TForm)
|
||
|
|
Label1: TLabel;
|
||
|
|
eSvcLibName: TEdit;
|
||
|
|
eSvcName: TEdit;
|
||
|
|
Label2: TLabel;
|
||
|
|
Label3: TLabel;
|
||
|
|
ePrjName: TEdit;
|
||
|
|
Label5: TLabel;
|
||
|
|
ePrjDir: TEdit;
|
||
|
|
Bevel1: TBevel;
|
||
|
|
Label4: TLabel;
|
||
|
|
eTemplateName: TEdit;
|
||
|
|
BitBtn1: TBitBtn;
|
||
|
|
Label6: TLabel;
|
||
|
|
cbMessageClass: TComboBox;
|
||
|
|
Label7: TLabel;
|
||
|
|
cbServerClass: TComboBox;
|
||
|
|
Label8: TLabel;
|
||
|
|
Image2: TImage;
|
||
|
|
Bevel2: TBevel;
|
||
|
|
Panel1: TPanel;
|
||
|
|
Image1: TImage;
|
||
|
|
cbCreateClientAndGroup: TCheckBox;
|
||
|
|
btn_Ok: TBitBtn;
|
||
|
|
Button2: TBitBtn;
|
||
|
|
Bevel3: TBevel;
|
||
|
|
procedure sbBrowseForDirClick(Sender: TObject);
|
||
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||
|
|
procedure FormCreate(Sender: TObject);
|
||
|
|
public
|
||
|
|
fTemplateDir,
|
||
|
|
fInvalidServers,
|
||
|
|
fDefaultServer,
|
||
|
|
fFixedServer,
|
||
|
|
fFixedChannel: string;
|
||
|
|
fWizardAvailable: boolean;
|
||
|
|
fProjectFolders: TStringList;
|
||
|
|
|
||
|
|
procedure LoadConfig;
|
||
|
|
|
||
|
|
public
|
||
|
|
constructor Create(const aTemplateDir : string); reintroduce;
|
||
|
|
destructor Destroy; override;
|
||
|
|
end;
|
||
|
|
|
||
|
|
var
|
||
|
|
ServerProjectOptions: TServerProjectOptions;
|
||
|
|
|
||
|
|
implementation
|
||
|
|
|
||
|
|
uses FileCtrl, INIFiles, uRODLGenTools, uROClient, uROServer, uROIDETools, fNewProjectForm;
|
||
|
|
|
||
|
|
{$R *.dfm}
|
||
|
|
|
||
|
|
{ TServerProjectOptions }
|
||
|
|
constructor TServerProjectOptions.Create(const aTemplateDir: string);
|
||
|
|
begin
|
||
|
|
inherited Create(NIL);
|
||
|
|
fTemplateDir := aTemplateDir;
|
||
|
|
fProjectFolders := TStringList.Create();
|
||
|
|
LoadConfig;
|
||
|
|
end;
|
||
|
|
|
||
|
|
destructor TServerProjectOptions.Destroy;
|
||
|
|
begin
|
||
|
|
FreeAndNil(fProjectFolders);
|
||
|
|
inherited;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TServerProjectOptions.LoadConfig;
|
||
|
|
var s : TStringList;
|
||
|
|
tmpldir : string;
|
||
|
|
begin
|
||
|
|
s := TStringList.Create;
|
||
|
|
|
||
|
|
with TIniFile.Create(GetTemplateConfigFileName) do try
|
||
|
|
ReadSection(sect_ClassFactories, s);
|
||
|
|
|
||
|
|
eTemplateName.Text := fTemplateDir;
|
||
|
|
eSvcLibName.Text := ReadString(sect_ProjectGeneration, id_SvcLibName, 'NewLibrary');
|
||
|
|
eSvcName.Text := ReadString(sect_ProjectGeneration, id_SvcName, 'NewService');
|
||
|
|
ePrjName.Text := ReadString(sect_ProjectGeneration, id_PrjName, 'NewProject');
|
||
|
|
cbCreateClientAndGroup.Checked := ReadBool(sect_ProjectGeneration, id_CreateClientAndGroup, TRUE);
|
||
|
|
|
||
|
|
tmpldir := GetTemplateDir;
|
||
|
|
Delete(tmpldir, Pos('Templates', tmpldir), 9);
|
||
|
|
Insert('Projects', tmpldir, Length(tmpldir));
|
||
|
|
|
||
|
|
ePrjDir.Text := ReadString(sect_ProjectGeneration, id_PrjDir, tmpldir);
|
||
|
|
ReadSection(sect_ProjectFolderHistory, fProjectFolders);
|
||
|
|
finally
|
||
|
|
Free;
|
||
|
|
s.Free;
|
||
|
|
end;
|
||
|
|
|
||
|
|
with TIniFile.Create(fTemplateDir+InfoName) do try
|
||
|
|
Caption := ReadString(sect_Information, id_Description, Caption);
|
||
|
|
fInvalidServers := ReadString(sect_Information, id_InvalidServers, '');
|
||
|
|
fInvalidServers := StringReplace(fInvalidServers,' ', '',[rfReplaceAll])+',';
|
||
|
|
|
||
|
|
fFixedServer := Trim(ReadString(sect_Information, id_FixedServer, ''));
|
||
|
|
fDefaultServer := Trim(ReadString(sect_Information, id_DefaultServer, fFixedServer));
|
||
|
|
fFixedChannel := Trim(ReadString(sect_Information, id_FixedChannel, ''));
|
||
|
|
|
||
|
|
fWizardAvailable := ReadString(sect_Information, id_WizardType, '') <> '';
|
||
|
|
|
||
|
|
cbCreateClientAndGroup.Enabled := ReadBool(sect_Information, 'AllowClient', TRUE);
|
||
|
|
if not cbCreateClientAndGroup.Enabled then cbCreateClientAndGroup.Checked := false;
|
||
|
|
finally
|
||
|
|
Free;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TServerProjectOptions.sbBrowseForDirClick(Sender: TObject);
|
||
|
|
var dir : string;
|
||
|
|
begin
|
||
|
|
dir := ePrjDir.Text;
|
||
|
|
if SelectDirectory('Select Project Directory','', Dir) then ePrjDir.Text := Dir;
|
||
|
|
//if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0{SELDIRHELP}) then ePrjDir.Text := Dir;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TServerProjectOptions.FormCloseQuery(Sender: TObject;
|
||
|
|
var CanClose: Boolean);
|
||
|
|
var errmsg : string;
|
||
|
|
begin
|
||
|
|
if (ModalResult=mrCancel) then begin
|
||
|
|
CanClose := TRUE;
|
||
|
|
Exit;
|
||
|
|
end
|
||
|
|
else CanClose := FALSE;
|
||
|
|
|
||
|
|
if (Trim(eSvcLibName.Text)='') then errmsg := 'Service Library Name cannot be blank'
|
||
|
|
else if (Trim(eSvcName.Text)='') then errmsg := 'Service Name cannot be blank'
|
||
|
|
else if (Trim(ePrjName.Text)='') then errmsg := 'Project name cannot be blank'
|
||
|
|
else if not DirectoryExists(ePrjDir.Text) and
|
||
|
|
not ForceDirectories(ePrjDir.Text) then errmsg := 'Specified directory does not exist or cannot be created'
|
||
|
|
|
||
|
|
else begin
|
||
|
|
CanClose := TRUE;
|
||
|
|
Exit;
|
||
|
|
end;
|
||
|
|
|
||
|
|
MessageDlg(errmsg, mtError, [mbOK], 0);
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TServerProjectOptions.FormCreate(Sender: TObject);
|
||
|
|
var i : integer;
|
||
|
|
svrclsname : string;
|
||
|
|
begin
|
||
|
|
cbMessageClass.Items.Clear;
|
||
|
|
for i := 0 to (GetMessageClassCount-1) do
|
||
|
|
cbMessageClass.Items.Add(GetMessageClass(i).ClassName);
|
||
|
|
|
||
|
|
i := cbMessageClass.Items.IndexOf('TROBinMessage');
|
||
|
|
if i = -1 then i := 0;
|
||
|
|
cbMessageClass.ItemIndex := i;
|
||
|
|
|
||
|
|
cbServerClass.Items.Clear;
|
||
|
|
|
||
|
|
for i := 0 to (GetServerClassCount-1) do begin
|
||
|
|
svrclsname := GetServerClass(i).ClassName;
|
||
|
|
|
||
|
|
if (Pos(svrclsname+',', fInvalidServers)=0) then begin
|
||
|
|
cbServerClass.Items.Add(svrclsname);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
cbServerClass.Enabled := (cbServerClass.Items.Count>1);
|
||
|
|
if (cbServerClass.Items.Count=0) then begin
|
||
|
|
cbServerClass.Visible := FALSE;
|
||
|
|
Exit;
|
||
|
|
end;
|
||
|
|
|
||
|
|
if (cbServerClass.Items.IndexOf(fDefaultServer)>0) then
|
||
|
|
cbServerClass.ItemIndex := cbServerClass.Items.IndexOf(fDefaultServer)
|
||
|
|
else
|
||
|
|
cbServerClass.ItemIndex := 0;
|
||
|
|
|
||
|
|
if fFixedServer <> '' then begin
|
||
|
|
cbServerClass.Enabled := false;
|
||
|
|
cbServerClass.Color := clBtnFace;
|
||
|
|
if cbServerClass.Text <> fFixedServer then
|
||
|
|
cbServerClass.ItemIndex := cbServerClass.Items.Add(fFixedServer);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
end.
|