|
@@ -17,12 +17,17 @@ interface
|
|
uses
|
|
uses
|
|
LCLProc, LCLType, Classes, SysUtils, FormEditingIntf, PropEdits, LazIDEIntf,
|
|
LCLProc, LCLType, Classes, SysUtils, FormEditingIntf, PropEdits, LazIDEIntf,
|
|
ComponentEditors, LCLIntf, Graphics, Controls, Forms, ProjectIntf,
|
|
ComponentEditors, LCLIntf, Graphics, Controls, Forms, ProjectIntf,
|
|
- PackageIntf, LazLoggerBase, Fresnel.DOM, Fresnel.Controls, Fresnel.Forms,
|
|
|
|
|
|
+ PackageIntf, LazLoggerBase, CodeToolManager, CodeCache, CodeTree,
|
|
|
|
+ SourceChanger, StdCodeTools, Fresnel.DOM, Fresnel.Controls, Fresnel.Forms,
|
|
Fresnel.Renderer, Fresnel.Classes, Fresnel.LCLApp, Fresnel.LCL,
|
|
Fresnel.Renderer, Fresnel.Classes, Fresnel.LCLApp, Fresnel.LCL,
|
|
Fresnel.DsgnStrConsts, Fresnel.StylePropEdit;
|
|
Fresnel.DsgnStrConsts, Fresnel.StylePropEdit;
|
|
|
|
|
|
const
|
|
const
|
|
ProjDescNameFresnelApplication = 'Fresnel Application';
|
|
ProjDescNameFresnelApplication = 'Fresnel Application';
|
|
|
|
+ FresnelPkgName = 'Fresnel';
|
|
|
|
+ FresnelLCLPkgName = 'FresnelLCL';
|
|
|
|
+ FresnelBasePkgName = 'FresnelBase';
|
|
|
|
+ FresnelDesignPkgName = 'FresnelDsgn';
|
|
|
|
|
|
type
|
|
type
|
|
|
|
|
|
@@ -72,6 +77,7 @@ type
|
|
constructor Create; override;
|
|
constructor Create; override;
|
|
function Init(var NewFilename: string; NewOwner: TObject;
|
|
function Init(var NewFilename: string; NewOwner: TObject;
|
|
var NewSource: string; Quiet: boolean): TModalResult; override;
|
|
var NewSource: string; Quiet: boolean): TModalResult; override;
|
|
|
|
+ function Initialized(NewFile: TLazProjectFile): TModalResult; override;
|
|
function GetInterfaceUsesSection: string; override;
|
|
function GetInterfaceUsesSection: string; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedName: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
function GetLocalizedDescription: string; override;
|
|
@@ -386,20 +392,53 @@ end;
|
|
|
|
|
|
function TFileDescFresnelForm.Init(var NewFilename: string; NewOwner: TObject;
|
|
function TFileDescFresnelForm.Init(var NewFilename: string; NewOwner: TObject;
|
|
var NewSource: string; Quiet: boolean): TModalResult;
|
|
var NewSource: string; Quiet: boolean): TModalResult;
|
|
|
|
+var
|
|
|
|
+ DependencyOwner, aOwner: TObject;
|
|
|
|
+begin
|
|
|
|
+ Result:=inherited Init(NewFilename, NewOwner, NewSource, Quiet);
|
|
|
|
+
|
|
|
|
+ // if project uses the LCL, add dependency FresnelLCL else Fresnel
|
|
|
|
+ RequiredPackages:=FresnelPkgName+';'+FresnelDesignPkgName;
|
|
|
|
+ aOwner:=NewOwner;
|
|
|
|
+ if aOwner=nil then
|
|
|
|
+ aOwner:=LazarusIDE.ActiveProject;
|
|
|
|
+
|
|
|
|
+ if aOwner<>nil then
|
|
|
|
+ begin
|
|
|
|
+ if PackageEditingInterface.IsOwnerDependingOnPkg(aOwner,'LCL',DependencyOwner) then
|
|
|
|
+ RequiredPackages:=FresnelLCLPkgName+';'+FresnelDesignPkgName;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TFileDescFresnelForm.Initialized(NewFile: TLazProjectFile
|
|
|
|
+ ): TModalResult;
|
|
var
|
|
var
|
|
aProject: TLazProject;
|
|
aProject: TLazProject;
|
|
|
|
+ MainFilename: String;
|
|
|
|
+ Code: TCodeBuffer;
|
|
DependencyOwner: TObject;
|
|
DependencyOwner: TObject;
|
|
begin
|
|
begin
|
|
- // if project uses the LCL, add dependency FresnelLCL else Fresnel
|
|
|
|
|
|
+ Result:=inherited Initialized(NewFile);
|
|
aProject:=LazarusIDE.ActiveProject;
|
|
aProject:=LazarusIDE.ActiveProject;
|
|
- RequiredPackages:='Fresnel;FresnelDsgn';
|
|
|
|
- if aProject<>nil then
|
|
|
|
|
|
+ if aProject=nil then begin
|
|
|
|
+ debugln(['Warning: TFileDescFresnelForm.Initialized: not adding uses Fresnel, because ActiveProject=nil']);
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
|
|
+ if aProject.MainFile=nil then begin
|
|
|
|
+ debugln(['Warning: TFileDescFresnelForm.Initialized: not adding uses Fresnel, because ActiveProject.MainFile=nil']);
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
|
|
+ if PackageEditingInterface.IsOwnerDependingOnPkg(aProject,'LCL',DependencyOwner) then
|
|
begin
|
|
begin
|
|
- if PackageEditingInterface.IsOwnerDependingOnPkg(aProject,'LCL',DependencyOwner) then
|
|
|
|
- RequiredPackages:='FresnelLCL;FresnelDsgn';
|
|
|
|
|
|
+ // a lcl app -> add FresnelLCL behind 'interfaces'
|
|
|
|
+ MainFilename:=aProject.MainFile.Filename;
|
|
|
|
+ Code:=CodeToolBoss.LoadFile(MainFilename,true,false);
|
|
|
|
+ if not CodeToolBoss.AddUnitToMainUsesSectionIfNeeded(Code,'Fresnel','',[aufLast]) then
|
|
|
|
+ begin
|
|
|
|
+ debugln(['Warning: TFileDescFresnelForm.Initialized: failed adding uses Fresnel to "',MainFilename,'"']);
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
-
|
|
|
|
- Result:=inherited Init(NewFilename, NewOwner, NewSource, Quiet);
|
|
|
|
end;
|
|
end;
|
|
|
|
|
|
function TFileDescFresnelForm.GetInterfaceUsesSection: string;
|
|
function TFileDescFresnelForm.GetInterfaceUsesSection: string;
|