home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************}
- { }
- { eXpert Development Kit }
- { }
- { Copyright (c) 1996,97 Sergey Orlik }
- { - product manager of Borland Russia }
- { }
- {*******************************************************}
- unit XDKGen;
-
- interface
- uses
- Windows, SysUtils, Classes, Graphics, Forms,
- DsgnIntf, ExptIntf, EditIntf, FileIntf, ToolIntf, LibIntf;
-
- const
- CRLF = #13#10; // inserting to begin new source code string
- CRLF2 = #13#10#13#10;
-
- DefaultModuleFlags = [cmShowSource,cmShowForm,cmMarkModified,cmAddToProject,cmUnNamed];
-
- type
- TProjectSourceWritingEvent = function (const ProjectName:string):string of object;
- TModuleSourceWritingEvent = function (UnitIdent, FormIdent, AncestorIdent: string): string of object;
- TModuleCreatedEvent = procedure (Sender:TObject; IModule:TIModuleInterface) of object;
- TFormCreatedEvent = procedure (Sender:TObject; IForm:TIFormInterface) of object;
-
- TxdkProjectCreator = class;
- TxdkModuleCreator = class;
-
- TxdkProjectCreator = class(TComponent)
- private
- FExisting : boolean;
- FFlags : TCreateProjectFlags;
- FFileName : string;
- FFileSystem : string;
- FMainModule : TxdkModuleCreator;
- FOnSourceWriting : TProjectSourceWritingEvent;
- FOnResourceCreated: TModuleCreatedEvent;
- protected
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- public
- constructor Create(AOwner:TComponent); override;
- destructor Destroy; override;
- procedure ProjectCreate;
- published
- property Existing:boolean read FExisting write FExisting;
- property Flags:TCreateProjectFlags read FFlags write FFlags;
- property FileName:string read FFileName write FFileName;
- property FileSystem:string read FFileSystem write FFileSystem;
- property MainModule:TxdkModuleCreator read FMainModule write FMainModule;
- property OnSourceWriting:TProjectSourceWritingEvent read FOnSourceWriting write FOnSourceWriting;
- property OnResourceCreated:TModuleCreatedEvent read FOnResourceCreated write FOnResourceCreated;
- end;
-
- TxdkModuleCreator = class(TComponent)
- private
- FExisting : boolean;
- FAncestorName : string;
- FFormName : string;
- FFlags : TCreateModuleFlags;
- FFileName : string;
- FFileSystem : string;
- FOnSourceWriting: TModuleSourceWritingEvent;
- FOnModuleCreated: TModuleCreatedEvent;
- FOnFormCreated : TFormCreatedEvent;
- public
- constructor Create(AOwner:TComponent); override;
- procedure ModuleCreate;
- published
- property Existing:boolean read FExisting write FExisting;
- property AncestorName:string read FAncestorName write FAncestorName;
- property FormName:string read FFormName write FFormName;
- property Flags:TCreateModuleFlags read FFlags write FFlags default DefaultModuleFlags;
- property FileName:string read FFileName write FFileName;
- property FileSystem:string read FFileSystem write FFileSystem;
- property OnSourceWriting:TModuleSourceWritingEvent read FOnSourceWriting write FOnSourceWriting;
- property OnModuleCreated:TModuleCreatedEvent read FOnModuleCreated write FOnModuleCreated;
- property OnFormCreated:TFormCreatedEvent read FOnFormCreated write FOnFormCreated;
- end;
-
- //================================================================
- implementation
- //================================================================
-
- type
- TxdkIProjectCreator = class(TIProjectCreator)
- private
- FCreator : TxdkProjectCreator;
- public
- constructor Create(ACreator:TxdkProjectCreator);
- function Existing:boolean; override;
- function GetFileName:string; override;
- function GetFileSystem:string; override;
- function NewProjectSource(const ProjectName:string):string; override;
- procedure NewDefaultModule; override;
- procedure NewProjectResource(Module:TIModuleInterface); override;
- end;
-
- TxdkIModuleCreator = class(TIModuleCreator)
- private
- FCreator : TxdkModuleCreator;
- public
- constructor Create(ACreator:TxdkModuleCreator);
- function Existing:boolean; override;
- function GetAncestorName:string; override;
- function GetFileName:string; override;
- function GetFileSystem:string; override;
- function GetFormName:string; override;
- function NewModuleSource(UnitIdent, FormIdent, AncestorIdent: string): string; override;
- procedure FormCreated(Form: TIFormInterface); override;
- end;
-
- //================================================================
- // TxdkIProjectCreator
-
- constructor TxdkIProjectCreator.Create(ACreator:TxdkProjectCreator);
- begin
- inherited Create;
- FCreator:=ACreator;
- end;
-
- function TxdkIProjectCreator.Existing:boolean;
- begin
- Result:=FCreator.FExisting;
- end;
-
- function TxdkIProjectCreator.GetFileName:string;
- begin
- Result:=FCreator.FFileName;
- end;
-
- function TxdkIProjectCreator.GetFileSystem:string;
- begin
- Result:=FCreator.FFileSystem;
- end;
-
- function TxdkIProjectCreator.NewProjectSource(const ProjectName:string):string;
- begin
- if Assigned(FCreator.FOnSourceWriting) then
- Result:=FCreator.FOnSourceWriting(ProjectName);
- end;
-
- procedure TxdkIProjectCreator.NewDefaultModule;
- begin
- if Assigned(FCreator.FMainModule) then
- FCreator.FMainModule.ModuleCreate;
- end;
-
- procedure TxdkIProjectCreator.NewProjectResource(Module:TIModuleInterface);
- begin
- if Assigned(FCreator.FOnResourceCreated) then
- FCreator.FOnResourceCreated(FCreator,Module);
- end;
-
- //================================================================
- // TxdkProjectCreator
-
- constructor TxdkProjectCreator.Create(AOwner:TComponent);
- begin
- inherited Create(AOwner);
- FMainModule:=nil;
- end;
-
- destructor TxdkProjectCreator.Destroy;
- begin
- FMainModule:=nil;
- inherited Destroy;
- end;
-
- procedure TxdkProjectCreator.Notification(AComponent: TComponent; Operation: TOperation);
- begin
- inherited Notification(AComponent,Operation);
- if (Operation=opRemove) and (AComponent=FMainModule) then
- FMainModule:=nil;
- end;
-
- procedure TxdkProjectCreator.ProjectCreate;
- var
- IProjectCreator : TxdkIProjectCreator;
- begin
- IProjectCreator:=TxdkIProjectCreator.Create(Self);
- try
- ToolServices.ProjectCreate(IProjectCreator,FFlags);
- finally
- IProjectCreator.Free;
- end;
- end;
-
- //================================================================
- // TxdkIModuleCreator
-
- constructor TxdkIModuleCreator.Create(ACreator:TxdkModuleCreator);
- begin
- inherited Create;
- FCreator:=ACreator;
- end;
-
- function TxdkIModuleCreator.Existing:boolean;
- begin
- Result:=FCreator.FExisting;
- end;
-
- function TxdkIModuleCreator.GetAncestorName:string;
- begin
- Result:=FCreator.FAncestorName;
- end;
-
- function TxdkIModuleCreator.GetFileName:string;
- begin
- Result:=FCreator.FFileName;
- end;
-
- function TxdkIModuleCreator.GetFileSystem:string;
- begin
- Result:=FCreator.FFileSystem;
- end;
-
- function TxdkIModuleCreator.GetFormName:string;
- begin
- Result:=FCreator.FFormName;
- end;
-
- function TxdkIModuleCreator.NewModuleSource(UnitIdent,FormIdent,AncestorIdent:string):string;
- begin
- if Assigned(FCreator.FOnSourceWriting) then
- Result:=FCreator.FOnSourceWriting(UnitIdent,FormIdent,AncestorIdent);
- end;
-
- procedure TxdkIModuleCreator.FormCreated(Form:TIFormInterface);
- begin
- if Assigned(FCreator.FOnFormCreated) then
- FCreator.FOnFormCreated(FCreator,Form);
- end;
-
- //================================================================
- // TxdkModuleCreator
-
- constructor TxdkModuleCreator.Create(AOwner:TComponent);
- begin
- inherited Create(AOwner);
- FFlags:=DefaultModuleFlags;
- end;
-
- procedure TxdkModuleCreator.ModuleCreate;
- var
- IModuleCreator : TxdkIModuleCreator;
- IModule : TIModuleInterface;
- begin
- IModuleCreator:=TxdkIModuleCreator.Create(Self);
- try
- IModule:=ToolServices.ModuleCreate(IModuleCreator,FFlags);
- try
- if Assigned(FOnModuleCreated) then
- FOnModuleCreated(Self,IModule);
- finally
- IModule.Free;
- end;
- finally
- IModuleCreator.Free;
- end;
- end;
-
- //================================================================
-
- end.
-