Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Source/IDE/fServerProjectOptions.pas
david 472097efe5 - Eliminadas las librerías para Delphi 6 (Dcu\D6) en RO y DA.
- Recompilación de todos los paquetes de RO para poner RemObjects_Core_D10 como paquete de runtime/designtime.

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@5 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 11:08:08 +00:00

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.