mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-28 08:43:47 +02:00

* Add initialization keyword according to resource type: fix compilation of initial project. * Don't add LResources unit to uses section direct since inherited takes care of that. git-svn-id: trunk@26785 -
662 lines
19 KiB
ObjectPascal
662 lines
19 KiB
ObjectPascal
{
|
|
Copyright (C) 2007 Michael Van Canneyt
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; if not, write to the Free Software Foundation,
|
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
}
|
|
{$mode objfpc}
|
|
{$H+}
|
|
unit WebLazIDEIntf;
|
|
|
|
{$IFNDEF VER2_2}
|
|
{$DEFINE HasFastCGISupport}
|
|
{$ENDIF VER2_2}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fpWeb, fpHTML, fpdatasetform,
|
|
Controls, Dialogs, forms, LazIDEIntf, ProjectIntf;
|
|
|
|
type
|
|
{ TCGIApplicationDescriptor }
|
|
|
|
TCGIApplicationDescriptor = class(TProjectDescriptor)
|
|
public
|
|
constructor Create; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function InitProject(AProject: TLazProject): TModalResult; override;
|
|
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
|
end;
|
|
{ TApacheApplicationDescriptor }
|
|
|
|
TApacheApplicationDescriptor = class(TProjectDescriptor)
|
|
public
|
|
constructor Create; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function InitProject(AProject: TLazProject): TModalResult; override;
|
|
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
|
end;
|
|
|
|
{ TCustomCGIApplicationDescriptor }
|
|
TCustomCGIApplicationDescriptor = class(TProjectDescriptor)
|
|
public
|
|
constructor Create; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function InitProject(AProject: TLazProject): TModalResult; override;
|
|
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
|
end;
|
|
|
|
{$IFDEF HasFastCGISupport}
|
|
{ TCustomFCGIApplicationDescriptor }
|
|
TCustomFCGIApplicationDescriptor = class(TProjectDescriptor)
|
|
public
|
|
constructor Create; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function InitProject(AProject: TLazProject): TModalResult; override;
|
|
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
|
end;
|
|
|
|
{ TFCGIApplicationDescriptor }
|
|
|
|
TFCGIApplicationDescriptor = class(TProjectDescriptor)
|
|
public
|
|
constructor Create; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function InitProject(AProject: TLazProject): TModalResult; override;
|
|
function CreateStartFiles(AProject: TLazProject): TModalResult; override;
|
|
end;
|
|
{$ENDIF HasFastCGISupport}
|
|
|
|
{ TFileDescPascalUnitWithCGIDataModule }
|
|
|
|
TFileDescWebDataModule = class(TFileDescPascalUnitWithResource)
|
|
public
|
|
constructor Create; override;
|
|
function GetInterfaceUsesSection: string; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function GetImplementationSource(const Filename, SourceName, ResourceName: string): string;override;
|
|
end;
|
|
|
|
TFileDescHTMLModule = class(TFileDescPascalUnitWithResource)
|
|
public
|
|
constructor Create; override;
|
|
function GetInterfaceUsesSection: string; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function GetImplementationSource(const Filename, SourceName, ResourceName: string): string;override;
|
|
end;
|
|
|
|
var
|
|
ProjectDescriptorCustomCGIApplication: TCustomCGIApplicationDescriptor;
|
|
ProjectDescriptorCGIApplication: TCGIApplicationDescriptor;
|
|
ProjectDescriptorApacheApplication: TApacheApplicationDescriptor;
|
|
{$IFDEF HasFastCGISupport}
|
|
ProjectDescriptorCustomFCGIApplication: TCustomFCGIApplicationDescriptor;
|
|
ProjectDescriptorFCGIApplication: TFCGIApplicationDescriptor;
|
|
{$ENDIF HasFastCGISupport}
|
|
FileDescriptorHTMLModule: TFileDescHTMLModule;
|
|
FileDescriptorWebModule: TFileDescWebDataModule;
|
|
|
|
procedure Register;
|
|
|
|
resourcestring
|
|
rsCGIApplicati = 'CGI Application';
|
|
rsCGIApplicati2 = 'CGI Application%sA CGI (Common Gateway Interface) '
|
|
+'program in Free Pascal using webmodules. The program source is '
|
|
+'automatically maintained by Lazarus.';
|
|
rsCustomCGIApp = 'Custom CGI Application';
|
|
rsCustomCGIApp2 = 'Custom CGI Application%sA CGI (Common Gateway Interface) '
|
|
+'program in Free Pascal. The program source is automatically maintained '
|
|
+'by Lazarus.';
|
|
rsWebModule = 'Web Module';
|
|
rsWEBModuleADa = 'WEB Module%sA datamodule for WEB (HTTP) applications.';
|
|
rsHTMLWebModul = 'HTML Web Module';
|
|
rsHTMLWEBModul2 = 'HTML WEB Module%sA Web datamodule for producing strict '
|
|
+'HTML.';
|
|
rsApacheModule = 'Apache Module';
|
|
rsApacheModule2 = 'Apache module%sAn Apache loadable module in Free Pascal '
|
|
+'using webmodules. The main library file is automatically maintained by '
|
|
+'Lazarus.';
|
|
rsCustomFastCG = 'Custom FastCGI Application';
|
|
rsCustomFastCG2 = 'Custom FastCGI Application%sA FastCGI (Common Gateway '
|
|
+'Interface) program in Free Pascal. The program source is automatically '
|
|
+'maintained by Lazarus.';
|
|
rsFastCGIAppli = 'FastCGI Application';
|
|
rsFastCGIAppli2 = 'FastCGI Application%sA FastCGI (Common Gateway '
|
|
+'Interface) program in Free Pascal using webmodules. The program source '
|
|
+'is automatically maintained by Lazarus.';
|
|
|
|
implementation
|
|
|
|
uses LazarusPackageIntf,FormEditingIntf;
|
|
|
|
Const
|
|
fpWebTab = 'fpWeb';
|
|
|
|
Procedure RegisterHTMLComponents;
|
|
begin
|
|
RegisterComponents(fpWebTab,[THTMLDatasetContentProducer,
|
|
THTMLSelectProducer,
|
|
THTMLDatasetSelectProducer,
|
|
THTMLEntityProducer
|
|
{$IFNDEF VER2_2},THTMLPageProducer{$ENDIF}
|
|
])
|
|
|
|
end;
|
|
|
|
Procedure RegisterDatasetComponents;
|
|
|
|
begin
|
|
RegisterComponents(fpWebTab,[THTMLDataSetFormShowProducer,
|
|
THTMLDataSetFormEditProducer,
|
|
THTMLDataSetFormGridProducer]);
|
|
end;
|
|
|
|
|
|
Procedure RegisterComponents;
|
|
|
|
begin
|
|
RegisterUnit('fphtml',@RegisterHTMLComponents);
|
|
RegisterUnit('fpdatasetform',@RegisterdatasetComponents);
|
|
end;
|
|
|
|
procedure Register;
|
|
begin
|
|
RegisterComponents;
|
|
FileDescriptorWebModule:=TFileDescWebDataModule.Create;
|
|
RegisterProjectFileDescriptor(FileDescriptorWebModule);
|
|
ProjectDescriptorCGIApplication:=TCGIApplicationDescriptor.Create;
|
|
RegisterProjectDescriptor(ProjectDescriptorCGIApplication);
|
|
FileDescriptorHTMLModule:=TFileDescHTMLModule.Create;
|
|
RegisterProjectFileDescriptor(FileDescriptorHTMLModule);
|
|
ProjectDescriptorCustomCGIApplication:=TCustomCGIApplicationDescriptor.Create;
|
|
RegisterProjectDescriptor(ProjectDescriptorCustomCGIApplication);
|
|
ProjectDescriptorApacheApplication:=TApacheApplicationDescriptor.Create;
|
|
RegisterProjectDescriptor(ProjectDescriptorApacheApplication);
|
|
{$IFDEF HasFastCGISupport}
|
|
ProjectDescriptorFCGIApplication:=TFCGIApplicationDescriptor.Create;
|
|
RegisterProjectDescriptor(ProjectDescriptorFCGIApplication);
|
|
ProjectDescriptorCustomFCGIApplication:=TCustomFCGIApplicationDescriptor.Create;
|
|
RegisterProjectDescriptor(ProjectDescriptorCustomFCGIApplication);
|
|
{$ENDIF HasFastCGISupport}
|
|
FormEditingHook.RegisterDesignerBaseClass(TFPWebModule);
|
|
FormEditingHook.RegisterDesignerBaseClass(TFPHTMLModule);
|
|
end;
|
|
|
|
{ TCGIApplicationDescriptor }
|
|
|
|
constructor TCGIApplicationDescriptor.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='CGI Application';
|
|
end;
|
|
|
|
function TCGIApplicationDescriptor.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsCGIApplicati;
|
|
end;
|
|
|
|
function TCGIApplicationDescriptor.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsCGIApplicati2, [#13#13]);
|
|
end;
|
|
|
|
function TCGIApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult;
|
|
var
|
|
le: string;
|
|
NewSource: String;
|
|
MainFile: TLazProjectFile;
|
|
begin
|
|
inherited InitProject(AProject);
|
|
|
|
MainFile:=AProject.CreateProjectFile('cgiproject1.lpr');
|
|
MainFile.IsPartOfProject:=true;
|
|
AProject.AddFile(MainFile,false);
|
|
AProject.MainFileID:=0;
|
|
|
|
// create program source
|
|
le:=LineEnding;
|
|
NewSource:='program cgiproject1;'+le
|
|
+le
|
|
+'{$mode objfpc}{$H+}'+le
|
|
+le
|
|
+'uses'+le
|
|
+' fpCGI;'+le
|
|
+le
|
|
+'begin'+le
|
|
+' Application.Title:=''cgiproject1'';'+le
|
|
+' Application.Initialize;'+le
|
|
+' Application.Run;'+le
|
|
+'end.'+le
|
|
+le;
|
|
AProject.MainFile.SetSourceText(NewSource);
|
|
|
|
// add
|
|
AProject.AddPackageDependency('FCL');
|
|
AProject.AddPackageDependency('LCL');
|
|
AProject.AddPackageDependency('WebLaz');
|
|
|
|
// compiler options
|
|
AProject.LazCompilerOptions.Win32GraphicApp:=false;
|
|
AProject.Flags := AProject.Flags - [pfMainUnitHasCreateFormStatements];
|
|
AProject.Flags := AProject.Flags - [pfRunnable];
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
function TCGIApplicationDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult;
|
|
begin
|
|
LazarusIDE.DoNewEditorFile(FileDescriptorWebModule,'','',
|
|
[nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]);
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
{ TCustomCGIApplicationDescriptor }
|
|
|
|
constructor TCustomCGIApplicationDescriptor.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='Custom CGI Application';
|
|
end;
|
|
|
|
function TCustomCGIApplicationDescriptor.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsCustomCGIApp;
|
|
end;
|
|
|
|
function TCustomCGIApplicationDescriptor.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsCustomCGIApp2, [#13#13]);
|
|
end;
|
|
|
|
function TCustomCGIApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult;
|
|
var
|
|
le: string;
|
|
NewSource: String;
|
|
MainFile: TLazProjectFile;
|
|
begin
|
|
inherited InitProject(AProject);
|
|
|
|
MainFile:=AProject.CreateProjectFile('cgiproject1.lpr');
|
|
MainFile.IsPartOfProject:=true;
|
|
AProject.AddFile(MainFile,false);
|
|
AProject.MainFileID:=0;
|
|
|
|
// create program source
|
|
le:=LineEnding;
|
|
NewSource:='program cgiproject1;'+le
|
|
+le
|
|
+'{$mode objfpc}{$H+}'+le
|
|
+le
|
|
+'uses'+le
|
|
+' Classes,SysUtils,httpDefs,custcgi;'+le
|
|
+le
|
|
+'Type'+le
|
|
+' TCGIApp = Class(TCustomCGIApplication)'+le
|
|
+' Public'+le
|
|
+' Procedure HandleRequest(ARequest : Trequest; AResponse : TResponse); override;'+le
|
|
+' end;'+le
|
|
+le
|
|
+'Procedure TCGIApp.HandleRequest(ARequest : Trequest; AResponse : TResponse);'+le
|
|
+le
|
|
+'begin'+le
|
|
+' // Your code here'+le
|
|
+'end;'+le
|
|
+le
|
|
+'begin'+le
|
|
+' With TCGIApp.Create(Nil) do'+le
|
|
+' try'+le
|
|
+' Initialize;'+le
|
|
+' Run;'+le
|
|
+' finally'+le
|
|
+' Free;'+le
|
|
+' end;'+le
|
|
+'end.'+le;
|
|
AProject.MainFile.SetSourceText(NewSource);
|
|
|
|
// add
|
|
AProject.AddPackageDependency('FCL');
|
|
AProject.AddPackageDependency('WebLaz');
|
|
// compiler options
|
|
AProject.LazCompilerOptions.Win32GraphicApp:=false;
|
|
AProject.Flags := AProject.Flags - [pfMainUnitHasCreateFormStatements];
|
|
AProject.Flags := AProject.Flags - [pfRunnable];
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
function TCustomCGIApplicationDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult;
|
|
begin
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
{ TFileDescWebDataModule }
|
|
|
|
constructor TFileDescWebDataModule.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='Web Module';
|
|
ResourceClass:=TFPWebModule;
|
|
UseCreateFormStatements:=true;
|
|
end;
|
|
|
|
function TFileDescWebDataModule.GetInterfaceUsesSection: string;
|
|
begin
|
|
Result:=inherited GetInterfaceUsesSection;
|
|
Result:=Result+',HTTPDefs, websession, fpHTTP,fpWeb';
|
|
end;
|
|
|
|
function TFileDescWebDataModule.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsWebModule;
|
|
end;
|
|
|
|
function TFileDescWebDataModule.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsWEBModuleADa, [#13]);
|
|
end;
|
|
|
|
function TFileDescWebDataModule.GetImplementationSource(const Filename, SourceName, ResourceName: string): string;
|
|
|
|
begin
|
|
Result:=Inherited GetImplementationSource(FileName,SourceName,ResourceName);
|
|
if GetResourceType = rtRes then
|
|
Result:=Result+'initialization'+LineEnding;
|
|
Result:=Result+' RegisterHTTPModule(''T'+ResourceName+''',T'+ResourceName+');'+LineEnding;
|
|
end;
|
|
|
|
{ TFileDescHTMLModule }
|
|
|
|
constructor TFileDescHTMLModule.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='HTML Module';
|
|
ResourceClass:=TFPHTMLModule;
|
|
UseCreateFormStatements:=true;
|
|
end;
|
|
|
|
function TFileDescHTMLModule.GetInterfaceUsesSection: string;
|
|
begin
|
|
Result:=inherited GetInterfaceUsesSection;
|
|
Result:=Result+',HTTPDefs,websession,fpHTTP,htmlwriter,htmlelements,fphtml';
|
|
end;
|
|
|
|
function TFileDescHTMLModule.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsHTMLWebModul;
|
|
end;
|
|
|
|
function TFileDescHTMLModule.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsHTMLWEBModul2, [#13]);
|
|
end;
|
|
|
|
function TFileDescHTMLModule.GetImplementationSource(const Filename, SourceName, ResourceName: string): string;
|
|
|
|
begin
|
|
Result:=Inherited GetImplementationSource(FileName,SourceName,ResourceName);
|
|
if GetResourceType = rtRes then
|
|
Result:=Result+'initialization'+LineEnding;
|
|
Result:=Result+' RegisterHTTPModule(''T'+ResourceName+''',T'+ResourceName+');'+LineEnding;
|
|
end;
|
|
|
|
{ TApacheApplicationDescriptor }
|
|
|
|
constructor TApacheApplicationDescriptor.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='Apache Module';
|
|
end;
|
|
|
|
function TApacheApplicationDescriptor.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsApacheModule;
|
|
end;
|
|
|
|
function TApacheApplicationDescriptor.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsApacheModule2, [#13#13]);
|
|
end;
|
|
|
|
function TApacheApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult;
|
|
var
|
|
le: string;
|
|
NewSource: String;
|
|
MainFile: TLazProjectFile;
|
|
begin
|
|
inherited InitProject(AProject);
|
|
|
|
MainFile:=AProject.CreateProjectFile('mod_apache1.lpr');
|
|
MainFile.IsPartOfProject:=true;
|
|
AProject.AddFile(MainFile,false);
|
|
AProject.MainFileID:=0;
|
|
|
|
// create program source
|
|
le:=LineEnding;
|
|
NewSource:='Library mod_apache1;'+le
|
|
+le
|
|
+'{$mode objfpc}{$H+}'+le
|
|
+le
|
|
+'Uses'+le
|
|
+'{$ifdef unix}'+le
|
|
+' cthreads,'+le
|
|
+'{$endif}'+le
|
|
+' httpd,fpApache;'+le
|
|
+le
|
|
+'Const'+le
|
|
+le
|
|
+'{ The following constant is used to export the module record. It must '+le
|
|
+' always match the name in the LoadModule statement in the apache'+le
|
|
+' configuration file(s). It is case sensitive !}'+le
|
|
+' ModuleName=''mod_apache1'';'+le
|
|
+le
|
|
+'{ The following constant is used to determine whether the module will'+le
|
|
+' handle a request. It should match the name in the SetHandler statement'+le
|
|
+' in the apache configuration file(s). It is not case sensitive. }'+le
|
|
+le
|
|
+' HandlerName=ModuleName;'+le
|
|
+le
|
|
+'Var'+le
|
|
+' DefaultModule : module; {$ifdef unix} public name ModuleName;{$endif unix}'+le
|
|
+le
|
|
+'Exports defaultmodule name ModuleName;'+le
|
|
+le
|
|
+'begin'+le
|
|
+' Application.Title:=''mod_apache1'';'+le
|
|
+' Application.ModuleName:=ModuleName;'+le
|
|
+' Application.HandlerName:=HandlerName;'+le
|
|
+' Application.SetModuleRecord(DefaultModule);'+le
|
|
+' Application.Initialize;'+le
|
|
+'end.'+le
|
|
+le;
|
|
AProject.MainFile.SetSourceText(NewSource);
|
|
|
|
// add
|
|
AProject.AddPackageDependency('WebLaz');
|
|
|
|
// compiler options
|
|
AProject.LazCompilerOptions.Win32GraphicApp:=false;
|
|
AProject.ExecutableType:=petLibrary;
|
|
AProject.Flags := AProject.Flags - [pfMainUnitHasCreateFormStatements];
|
|
AProject.Flags := AProject.Flags - [pfRunnable];
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
function TApacheApplicationDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult;
|
|
begin
|
|
LazarusIDE.DoNewEditorFile(FileDescriptorWebModule,'','',
|
|
[nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]);
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
{$IFDEF HasFastCGISupport}
|
|
|
|
{ TCustomFCGIApplicationDescriptor }
|
|
|
|
constructor TCustomFCGIApplicationDescriptor.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='Custom FastCGI Application';
|
|
end;
|
|
|
|
function TCustomFCGIApplicationDescriptor.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsCustomFastCG;
|
|
end;
|
|
|
|
function TCustomFCGIApplicationDescriptor.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsCustomFastCG2, [#13#13]);
|
|
end;
|
|
|
|
function TCustomFCGIApplicationDescriptor.InitProject(AProject: TLazProject
|
|
): TModalResult;
|
|
var
|
|
le: string;
|
|
NewSource: String;
|
|
MainFile: TLazProjectFile;
|
|
begin
|
|
inherited InitProject(AProject);
|
|
|
|
MainFile:=AProject.CreateProjectFile('fcgiproject1.lpr');
|
|
MainFile.IsPartOfProject:=true;
|
|
AProject.AddFile(MainFile,false);
|
|
AProject.MainFileID:=0;
|
|
|
|
// create program source
|
|
le:=LineEnding;
|
|
NewSource:='program fcgiproject1;'+le
|
|
+le
|
|
+'{$mode objfpc}{$H+}'+le
|
|
+le
|
|
+'uses'+le
|
|
+' Classes,SysUtils,httpDefs,custfcgi;'+le
|
|
+le
|
|
+'Type'+le
|
|
+' TFCGIApp = Class(TCustomFCGIApplication)'+le
|
|
+' Public'+le
|
|
+' Procedure HandleRequest(ARequest : Trequest; AResponse : TResponse); override;'+le
|
|
+' end;'+le
|
|
+le
|
|
+'Procedure TFCGIApp.HandleRequest(ARequest : Trequest; AResponse : TResponse);'+le
|
|
+le
|
|
+'begin'+le
|
|
+' // Your code here'+le
|
|
+'end;'+le
|
|
+le
|
|
+'begin'+le
|
|
+' With TFCGIApp.Create(Nil) do'+le
|
|
+' try'+le
|
|
+' Initialize;'+le
|
|
+' Run;'+le
|
|
+' finally'+le
|
|
+' Free;'+le
|
|
+' end;'+le
|
|
+'end.'+le;
|
|
AProject.MainFile.SetSourceText(NewSource);
|
|
|
|
// add
|
|
AProject.AddPackageDependency('FCL');
|
|
AProject.AddPackageDependency('WebLaz');
|
|
// compiler options
|
|
AProject.LazCompilerOptions.Win32GraphicApp:=false;
|
|
AProject.Flags := AProject.Flags - [pfMainUnitHasCreateFormStatements];
|
|
AProject.Flags := AProject.Flags - [pfRunnable];
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
function TCustomFCGIApplicationDescriptor.CreateStartFiles(AProject: TLazProject
|
|
): TModalResult;
|
|
begin
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
{ TFCGIApplicationDescriptor }
|
|
|
|
constructor TFCGIApplicationDescriptor.Create;
|
|
begin
|
|
inherited Create;
|
|
Name:='FastCGI Application';
|
|
end;
|
|
|
|
function TFCGIApplicationDescriptor.GetLocalizedName: string;
|
|
begin
|
|
Result:=rsFastCGIAppli;
|
|
end;
|
|
|
|
function TFCGIApplicationDescriptor.GetLocalizedDescription: string;
|
|
begin
|
|
Result:=Format(rsFastCGIAppli2, [#13#13]);
|
|
end;
|
|
|
|
function TFCGIApplicationDescriptor.InitProject(AProject: TLazProject
|
|
): TModalResult;
|
|
var
|
|
le: string;
|
|
NewSource: String;
|
|
MainFile: TLazProjectFile;
|
|
begin
|
|
inherited InitProject(AProject);
|
|
|
|
MainFile:=AProject.CreateProjectFile('fcgiproject1.lpr');
|
|
MainFile.IsPartOfProject:=true;
|
|
AProject.AddFile(MainFile,false);
|
|
AProject.MainFileID:=0;
|
|
|
|
// create program source
|
|
le:=LineEnding;
|
|
NewSource:='program fcgiproject1;'+le
|
|
+le
|
|
+'{$mode objfpc}{$H+}'+le
|
|
+le
|
|
+'uses'+le
|
|
+' fpFCGI;'+le
|
|
+le
|
|
+'begin'+le
|
|
+' Application.Title:=''fcgiproject1'';'+le
|
|
+' Application.Initialize;'+le
|
|
+' Application.Run;'+le
|
|
+'end.'+le
|
|
+le;
|
|
AProject.MainFile.SetSourceText(NewSource);
|
|
|
|
// add
|
|
AProject.AddPackageDependency('FCL');
|
|
AProject.AddPackageDependency('LCL');
|
|
AProject.AddPackageDependency('WebLaz');
|
|
|
|
// compiler options
|
|
AProject.LazCompilerOptions.Win32GraphicApp:=false;
|
|
AProject.Flags := AProject.Flags - [pfMainUnitHasCreateFormStatements];
|
|
AProject.Flags := AProject.Flags - [pfRunnable];
|
|
Result:= mrOK;
|
|
end;
|
|
|
|
function TFCGIApplicationDescriptor.CreateStartFiles(AProject: TLazProject
|
|
): TModalResult;
|
|
begin
|
|
LazarusIDE.DoNewEditorFile(FileDescriptorWebModule,'','',
|
|
[nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]);
|
|
Result:= mrOK;
|
|
end;
|
|
{$ENDIF HasFastCGISupport}
|
|
|
|
end.
|
|
|