restemplate/indy/Protocols/IdDsnRegister.pas

227 lines
5.2 KiB
Plaintext

{
$Project$
$Workfile$
$Revision$
$DateUTC$
$Id$
This file is part of the Indy (Internet Direct) project, and is offered
under the dual-licensing agreement described on the Indy website.
(http://www.indyproject.org/)
Copyright:
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
$Log$
}
{
Rev 1.7 9/5/2004 3:16:58 PM JPMugaas
Should work in D9 DotNET.
Rev 1.6 3/8/2004 10:14:54 AM JPMugaas
Property editor for SASL mechanisms now supports TIdDICT.
Rev 1.5 2/26/2004 8:53:14 AM JPMugaas
Hack to restore the property editor for SASL mechanisms.
Rev 1.4 1/25/2004 4:28:42 PM JPMugaas
Removed a discontinued Unit.
Rev 1.3 1/25/2004 3:11:06 PM JPMugaas
SASL Interface reworked to make it easier for developers to use.
SSL and SASL reenabled components.
Rev 1.2 10/12/2003 1:49:28 PM BGooijen
Changed comment of last checkin
Rev 1.1 10/12/2003 1:43:28 PM BGooijen
Changed IdCompilerDefines.inc to Core\IdCompilerDefines.inc
Rev 1.0 11/14/2002 02:18:56 PM JPMugaas
}
unit IdDsnRegister;
interface
{$I IdCompilerDefines.inc}
uses
Classes,
{$IFDEF DOTNET}
Borland.Vcl.Design.DesignIntF,
Borland.Vcl.Design.DesignEditors
{$ELSE}
{$IFDEF FPC}
PropEdits,
ComponentEditors
{$ELSE}
{$IFDEF VCL_6_OR_ABOVE}
DesignIntf,
DesignEditors
{$ELSE}
Dsgnintf
{$ENDIF}
{$ENDIF}
{$ENDIF}
;
// Procs
type
TIdPropEdSASL = class(TClassProperty)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
procedure SetValue(const Value: string); override;
end;
{$IFDEF TSelectionEditor}
{$IFDEF USE_OPENSSL}
TIdOpenSSLSelectionEditor = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;
end;
{$ENDIF}
TIdFTPServerSelectionEditor = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;
end;
{$ENDIF}
procedure Register;
implementation
uses
IdDsnResourceStrings,
{$IFDEF WIDGET_WINFORMS}
IdDsnSASLListEditorFormNET,
{$R 'IdDsnSASLListEditorFormNET.TfrmSASLListEditor.resources' 'IdDsnSASLListEditorFormNET.resx'}
{$ENDIF}
{$IFDEF WIDGET_VCL_LIKE_OR_KYLIX}
IdDsnSASLListEditorFormVCL,
{$ENDIF}
{$IFDEF TSelectionEditor}
{$IFDEF USE_OPENSSL}
IdSSLOpenSSL,
{$ENDIF}
IdFTPServer,
{$ENDIF}
IdSASL, IdSASLCollection,
SysUtils, TypInfo;
{Since we are removing New Design-Time part, we remove the "New Message Part Editor"}
{IdDsnNewMessagePart, }
type
{$IFDEF WIDGET_WINFORMS}
//we make a create here because I'm not sure how the Visual Designer for WinForms
//we behave in a package. I know it can act weird if something is renamed
TfrmSASLListEditor = class(IdDsnSASLListEditorFormNET.TfrmSASLListEditor)
public
constructor Create(AOwner : TComponent);
end;
{$ENDIF}
{$IFDEF WIDGET_VCL_LIKE_OR_KYLIX}
TfrmSASLListEditor = class(TfrmSASLListEditorVCL);
{$ENDIF}
{ TfrmSASLListEditor }
{$IFDEF WIDGET_WINFORMS}
constructor TfrmSASLListEditor.Create(AOwner : TComponent);
begin
inherited Create;
end;
{$ENDIF}
{$IFDEF TSelectionEditor}
{$IFDEF USE_OPENSSL}
{TIdOpenSSLSelectionEditor}
procedure TIdOpenSSLSelectionEditor.RequiresUnits(Proc: TGetStrProc);
begin
inherited RequiresUnits(Proc);
//for new callback event
Proc('IdCTypes');
Proc('IdSSLOpenSSLHeaders');
end;
{$ENDIF}
{TIdFTPServerSelectionEditor}
procedure TIdFTPServerSelectionEditor.RequiresUnits(Proc: TGetStrProc);
begin
inherited RequiresUnits(Proc);
Proc('IdFTPListOutput');
Proc('IdFTPList');
end;
{$ENDIF}
{ TIdPropEdSASL }
procedure TIdPropEdSASL.Edit;
var
LF: TfrmSASLListEditor;
LComp: TPersistent;
LList: TIdSASLEntries;
begin
inherited Edit;
LComp := GetComponent(0);
//done this way to prevent invalid typecast error.
{$IFDEF HAS_GetObjectProp}
LList := TIdSASLEntries(GetObjectProp(LComp, GetPropInfo, TIdSASLEntries));
{$ELSE}
LList := TObject(GetOrdProp(LComp, GetPropInfo)) as TIdSASLEntries;
{$ENDIF}
LF := TfrmSASLListEditor.Create(nil);
try
if LComp is TComponent then begin
LF.SetComponentName(TComponent(LComp).Name);
end;
LF.SetList(LList);
if LF.Execute then begin
LF.GetList(LList);
end;
finally
FreeAndNil(LF);
end;
end;
function TIdPropEdSASL.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes + [paDialog];
end;
function TIdPropEdSASL.GetValue: string;
begin
Result := GetStrValue;
end;
procedure TIdPropEdSASL.SetValue(const Value: string);
begin
inherited SetValue(Value);
end;
procedure Register;
begin
RegisterPropertyEditor(TypeInfo(TIdSASLEntries), nil, '', TIdPropEdSASL);
{$IFDEF TSelectionEditor}
{$IFDEF USE_OPENSSL}
RegisterSelectionEditor(TIdServerIOHandlerSSLOpenSSL, TIdOpenSSLSelectionEditor);
RegisterSelectionEditor(TIdSSLIOHandlerSocketOpenSSL, TIdOpenSSLSelectionEditor);
{$ENDIF}
RegisterSelectionEditor(TIdFTPServer,TIdFTPServerSelectionEditor);
{$ENDIF}
end;
end.