|
@@ -16,9 +16,10 @@ interface
|
|
|
|
|
|
uses
|
|
|
LCLProc, LCLType, Classes, SysUtils, FormEditingIntf, PropEdits, LazIDEIntf,
|
|
|
- LCLIntf, Graphics, Controls, Forms, ProjectIntf, LazLoggerBase, Fresnel.DOM,
|
|
|
- Fresnel.Controls, Fresnel.Forms, Fresnel.Renderer, Fresnel.Classes,
|
|
|
- Fresnel.LCLApp, Fresnel.LCL, Fresnel.DsgnStrConsts, Fresnel.StylePropEdit;
|
|
|
+ ComponentEditors, LCLIntf, Graphics, Controls, Forms, ProjectIntf,
|
|
|
+ PackageIntf, LazLoggerBase, Fresnel.DOM, Fresnel.Controls, Fresnel.Forms,
|
|
|
+ Fresnel.Renderer, Fresnel.Classes, Fresnel.LCLApp, Fresnel.LCL,
|
|
|
+ Fresnel.DsgnStrConsts, Fresnel.StylePropEdit;
|
|
|
|
|
|
const
|
|
|
ProjDescNameFresnelApplication = 'Fresnel Application';
|
|
@@ -101,6 +102,13 @@ type
|
|
|
function GetAttributes: TPropertyAttributes; override;
|
|
|
end;
|
|
|
|
|
|
+ { TFresnelComponentRequirements }
|
|
|
+
|
|
|
+ TFresnelComponentRequirements = class(TComponentRequirements)
|
|
|
+ public
|
|
|
+ procedure RequiredPkgs(Pkgs: TStrings); override;
|
|
|
+ end;
|
|
|
+
|
|
|
var
|
|
|
FileDescFresnelForm: TFileDescFresnelForm;
|
|
|
ProjDescFresnelApplication: TProjDescFresnelApplication;
|
|
@@ -117,6 +125,7 @@ begin
|
|
|
FormEditingHook.SetDesignerBaseClassCanAppCreateForm(TFresnelCustomForm,true);
|
|
|
|
|
|
RegisterComponents('Fresnel',[TDiv,TSpan,TLabel,TButton,TImage,TBody]);
|
|
|
+ RegisterComponentRequirements([TDiv,TSpan,TLabel,TButton,TImage,TBody],TFresnelComponentRequirements);
|
|
|
|
|
|
FileDescFresnelForm:=TFileDescFresnelForm.Create;
|
|
|
RegisterProjectFileDescriptor(FileDescFresnelForm,FileDescGroupName);
|
|
@@ -520,5 +529,39 @@ begin
|
|
|
Result := [paMultiSelect, paDialog, paRevertable, paReadOnly];
|
|
|
end;
|
|
|
|
|
|
+{ TFresnelComponentRequirements }
|
|
|
+
|
|
|
+procedure TFresnelComponentRequirements.RequiredPkgs(Pkgs: TStrings);
|
|
|
+
|
|
|
+ procedure RemoveFresnelBase;
|
|
|
+ var
|
|
|
+ i: Integer;
|
|
|
+ begin
|
|
|
+ i:=Pkgs.IndexOf('FresnelBase');
|
|
|
+ if i<0 then exit;
|
|
|
+ Pkgs.Delete(i);
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ aProject: TLazProject;
|
|
|
+ DependencyOwner: TObject;
|
|
|
+begin
|
|
|
+ // the Fresnel components are part of package FresnelBase, but the project
|
|
|
+ // actually needs a Fresnel backend.
|
|
|
+
|
|
|
+ // if project is using the LCL then use FresnelLCL else Fresnel
|
|
|
+ aProject:=LazarusIDE.ActiveProject;
|
|
|
+ if aProject<>nil then
|
|
|
+ begin
|
|
|
+ RemoveFresnelBase;
|
|
|
+ if PackageEditingInterface.IsOwnerDependingOnPkg(aProject,'LCL',DependencyOwner) then
|
|
|
+ begin
|
|
|
+ Pkgs.Add('FresnelLCL');
|
|
|
+ end else begin
|
|
|
+ Pkgs.Add('Fresnel');
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
end.
|
|
|
|