Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Source/IDE/fNewProjectForm.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10
- Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 14:06:19 +00:00

204 lines
6.9 KiB
ObjectPascal

unit fNewProjectForm;
{----------------------------------------------------------------------------}
{ 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, ExtCtrls,
Dialogs, StdCtrls, Buttons, ComCtrls, ImgList,
uROIDEPrjWizard, fServerProjectOptions;
type
TNewProjectForm = class(TForm)
Bevel1: TBevel;
Image2: TImage;
Bevel2: TBevel;
Panel1: TPanel;
btn_Ok: TBitBtn;
btn_Cancel: TBitBtn;
Bevel3: TBevel;
cb_CreateClientAndGroup: TCheckBox;
Label1: TLabel;
cb_GuideWizard: TCheckBox;
btn_AdvancedOptions: TBitBtn;
lbl_CreateClientAndGroup: TLabel;
lbl_GuideWizard: TLabel;
Label5: TLabel;
ed_ProjectFolder: TComboBox;
btn_Browse: TBitBtn;
Label2: TLabel;
ed_ProjectName: TEdit;
procedure btn_AdvancedOptionsClick(Sender: TObject);
procedure cb_CreateClientAndGroupClick(Sender: TObject);
procedure ed_ProjectFolderChange(Sender: TObject);
procedure btn_BrowseClick(Sender: TObject);
procedure ed_ProjectNameChange(Sender: TObject);
private
fOptions: TServerProjectOptions;
public
constructor Create(const aTemplateDir : string); reintroduce;
destructor Destroy; override;
end;
var
NewProjectForm: TNewProjectForm;
function PromptProjectOptions(
const aTemplateDir : string;
out someProjectOptions : TROIDEProjectOptions) : boolean;
implementation
uses IniFiles, uRODLGenTools, uROClient, uROServer, uROIDETools, uEWHelpers;
{$R *.dfm}
const MAX_FOLDER_HISTORY = 10;
function PromptProjectOptions(const aTemplateDir : string; out someProjectOptions : TROIDEProjectOptions) : boolean;
var
i: integer;
begin
with TNewProjectForm.Create(aTemplateDir) do try
cb_GuideWizard.Enabled := fOptions.fWizardAvailable;
cb_GuideWizard.Checked := fOptions.fWizardAvailable;
lbl_GuideWizard.Enabled := fOptions.fWizardAvailable;
cb_CreateClientAndGroup.Enabled := fOptions.cbCreateClientAndGroup.Enabled;
lbl_CreateClientAndGroup.Enabled := fOptions.cbCreateClientAndGroup.Enabled;
if not cb_CreateClientAndGroup.Enabled then cb_CreateClientAndGroup.Checked := false;
ed_ProjectFolder.Text := fOptions.ePrjDir.Text;
ed_ProjectFolder.Items := fOptions.fProjectFolders;
ed_ProjectName.Text := fOptions.ePrjName.Text;
ed_ProjectFolderChange(nil);
ed_ProjectNameChange(nil);
result := (ShowModal=mrOK);
if result then with someProjectOptions do begin
TemplateDir := aTemplateDir;
ServiceLibraryName := StringReplace(fOptions.eSvcLibName.Text, ' ', '_', [rfReplaceAll]);
ServiceName := StringReplace(fOptions.eSvcName.Text, ' ', '_', [rfReplaceAll]);
ProjectName := StringReplace(ChangeFileExt(ExtractFileName(fOptions.ePrjName.Text), ''), ' ', '_', [rfReplaceAll]);
ProjectDir := IncludeTrailingBackslash(fOptions.ePrjDir.Text);
MessageClassName := Copy(fOptions.cbMessageClass.Text,4,Length(fOptions.cbMessageClass.Text));
ServerClassName := Copy(fOptions.cbServerClass.Text,4,Length(fOptions.cbServerClass.Text));
with TMemIniFile.Create(GetTemplateOptionsFileName) do
try
if fOptions.fFixedChannel <> '' then begin
ChannelClassName := fOptions.fFixedChannel;
end
else begin
ChannelClassName := StringReplace(someProjectOptions.ServerClassName, 'Server', 'Channel', []);
ChannelClassName := ReadString('ServerToChannelMapping',ServerClassName,ChannelClassName);
end;
ServerUnitName := ReadString('ComponentToUnitMapping', ServerClassName, 'uRO'+ServerClassName);
ChannelUnitName := ReadString('ComponentToUnitMapping', ChannelClassName, 'uRO'+ChannelClassName);
MessageUnitName := ReadString('ComponentToUnitMapping', MessageClassName, 'uRO'+MessageClassName);
finally
Free;
end;
CreateClientAndGroup := cb_CreateClientAndGroup.Checked;
WizardEnabled := cb_GuideWizard.Checked;
// Update Project Folder History
i := fOptions.fProjectFolders.IndexOf(ed_ProjectFolder.Text);
case i of
-1: begin
if fOptions.fProjectFolders.Count >= MAX_FOLDER_HISTORY then
fOptions.fProjectFolders.Delete(fOptions.fProjectFolders.Count-1);
fOptions.fProjectFolders.Insert(0, ed_ProjectFolder.Text);
end;
0: { noop }
else begin
fOptions.fProjectFolders.Delete(i);
fOptions.fProjectFolders.Insert(0, ed_ProjectFolder.Text);
end;
end;
// Saves last path entered
with TIniFile.Create(GetTemplateConfigFileName) do try
WriteString(sect_ProjectGeneration, id_PrjDir, ExtractFilePath(ProjectDir));
EraseSection(sect_ProjectFolderHistory);
for i := 0 to fOptions.fProjectFolders.Count-1 do
WriteString(sect_ProjectFolderHistory, fOptions.fProjectFolders[i], IntToStr(i));
finally
Free;
end;
end;
finally
Free;
end;
end;
{ TNewProjectForm }
constructor TNewProjectForm.Create(const aTemplateDir: string);
begin
inherited Create(nil);
fOptions := TServerProjectOptions.Create(aTemplateDir);
end;
destructor TNewProjectForm.Destroy;
begin
FreeAndnil(fOptions);
inherited;
end;
procedure TNewProjectForm.btn_AdvancedOptionsClick(Sender: TObject);
begin
fOptions.ShowModal();
cb_CreateClientAndGroup.Checked := fOptions.cbCreateClientAndGroup.Checked;
ed_ProjectFolder.Text := fOptions.ePrjDir.Text;
ed_ProjectName.Text := fOptions.ePrjName.Text;
end;
procedure TNewProjectForm.cb_CreateClientAndGroupClick(Sender: TObject);
begin
fOptions.cbCreateClientAndGroup.Checked := cb_CreateClientAndGroup.Checked;
end;
procedure TNewProjectForm.ed_ProjectFolderChange(Sender: TObject);
begin
fOptions.ePrjDir.Text := ed_ProjectFolder.Text;
btn_Ok.Enabled := (ed_ProjectFolder.Text <> '') and (ed_ProjectName.Text <> '');
end;
procedure TNewProjectForm.ed_ProjectNameChange(Sender: TObject);
begin
fOptions.ePrjName.Text := ed_ProjectName.Text;
btn_Ok.Enabled := (ed_ProjectFolder.Text <> '') and (ed_ProjectName.Text <> '');
end;
procedure TNewProjectForm.btn_BrowseClick(Sender: TObject);
var dir : string;
begin
dir := ed_ProjectFolder.Text;
if SelectDirectory(Application.Handle, 'Select Project Folder','', Dir) then
ed_ProjectFolder.Text := Dir;
ed_ProjectFolderChange(nil);
end;
end.