- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@7 b6239004-a887-0f4b-9937-50029ccdca16
204 lines
6.9 KiB
ObjectPascal
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.
|