mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-12 08:48:15 +02:00
* Move property/component editors to separate unit, not in registration unit
This commit is contained in:
parent
2f3c43eef4
commit
1a036a3dac
678
components/pas2js/components/pas2jscompedits.pas
Normal file
678
components/pas2js/components/pas2jscompedits.pas
Normal file
@ -0,0 +1,678 @@
|
|||||||
|
unit pas2jscompedits;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, ProjectIntf, PropEdits, ComponentEditors, fpjsondataset, dbpropedits,
|
||||||
|
db, stub.htmlfragment, stub.htmlactions, stub.data.htmlactions, stub.restdataset,
|
||||||
|
stub.webwidget, stub.bootstrapwidgets, stub.bootstraptablewidget, stub.bulmawidgets,
|
||||||
|
stub.templateloader, stub.jsondataset, stub.dbwebwidget, stub.dbhtmlwidgets,
|
||||||
|
stub.fprpcclient;
|
||||||
|
|
||||||
|
Type
|
||||||
|
|
||||||
|
{ THTMLElementActionListComponentEditor }
|
||||||
|
|
||||||
|
THTMLElementActionListComponentEditor = class(TComponentEditor)
|
||||||
|
private
|
||||||
|
FActionList: THTMLElementActionList;
|
||||||
|
FCompDesigner: TComponentEditorDesigner;
|
||||||
|
protected
|
||||||
|
public
|
||||||
|
constructor Create(AComponent: TComponent;
|
||||||
|
ADesigner: TComponentEditorDesigner); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
procedure CreateMissing;
|
||||||
|
property ActionList: THTMLElementActionList read FActionList write FActionList;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
function GetVerb({%H-}Index: Integer): string; override;
|
||||||
|
procedure ExecuteVerb({%H-}Index: Integer); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBootstrapModalComponentEditor }
|
||||||
|
|
||||||
|
TBootstrapModalComponentEditor = class(TComponentEditor)
|
||||||
|
private
|
||||||
|
FModal: TBootstrapModal;
|
||||||
|
protected
|
||||||
|
public
|
||||||
|
constructor Create(AComponent: TComponent;
|
||||||
|
ADesigner: TComponentEditorDesigner); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
Procedure EditTemplate;
|
||||||
|
property Modal : TBootstrapModal read FModal write FModal;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
function GetVerb({%H-}Index: Integer): string; override;
|
||||||
|
procedure ExecuteVerb({%H-}Index: Integer); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TPas2JSRPCClientComponentEditor }
|
||||||
|
|
||||||
|
TPas2JSRPCClientComponentEditor = class(TComponentEditor)
|
||||||
|
private
|
||||||
|
FClient : TPas2JSRPCClient;
|
||||||
|
protected
|
||||||
|
Procedure CreateServiceClient;
|
||||||
|
public
|
||||||
|
property Client : TPas2JSRPCClient read FClient write FClient;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
function GetVerb({%H-}Index: Integer): string; override;
|
||||||
|
procedure ExecuteVerb({%H-}Index: Integer); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TElementIDPropertyEditor }
|
||||||
|
// Get element ID list from HTML file associated with component
|
||||||
|
TElementIDPropertyEditor = class(TStringPropertyEditor)
|
||||||
|
Public
|
||||||
|
Function GetHTMLFileName : String;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
Function ProcessID(S : String) : String; virtual;
|
||||||
|
Procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TElementIDSelectorPropertyEditor }
|
||||||
|
|
||||||
|
TElementIDSelectorPropertyEditor = class(TElementIDPropertyEditor)
|
||||||
|
Public
|
||||||
|
Function ProcessID(S : String) : String; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
// Get element ID list from HTML file associated with project
|
||||||
|
|
||||||
|
{ TProjectElementIDPropertyEditor }
|
||||||
|
|
||||||
|
TProjectElementIDPropertyEditor = class(TElementIDPropertyEditor)
|
||||||
|
Function GetHTMLFileName : String;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ THTMLFileNamePropertyEditor }
|
||||||
|
|
||||||
|
THTMLFileNamePropertyEditor = class(TStringPropertyEditor)
|
||||||
|
Public
|
||||||
|
Procedure Edit; override;
|
||||||
|
Function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSQLDBRestResourceNamePropertyEditor }
|
||||||
|
|
||||||
|
TSQLDBRestResourceNamePropertyEditor = class(TStringPropertyEditor)
|
||||||
|
Public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
Procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSQLDBRestDatabaseConnectionPropertyEditor }
|
||||||
|
|
||||||
|
TSQLDBRestDatabaseConnectionPropertyEditor = class(TStringPropertyEditor)
|
||||||
|
Public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
Procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTemplatePropertyEditor }
|
||||||
|
|
||||||
|
THTMLFragmentPropertyEditor = Class(TStringPropertyEditor)
|
||||||
|
Public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
Procedure Edit; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Edit a HTML fragment
|
||||||
|
TTemplatePropertyEditor = THTMLFragmentPropertyEditor;
|
||||||
|
|
||||||
|
{ TTemplateNamePropertyEditor }
|
||||||
|
|
||||||
|
TTemplateNamePropertyEditor = Class(TStringPropertyEditor)
|
||||||
|
private
|
||||||
|
Protected
|
||||||
|
function GetTemplateLoader: TCustomTemplateLoader; virtual;
|
||||||
|
Public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
Procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBootStrapModalTemplateNamePropertyEditor }
|
||||||
|
|
||||||
|
TBootStrapModalTemplateNamePropertyEditor = Class(TTemplateNamePropertyEditor)
|
||||||
|
Protected
|
||||||
|
function GetTemplateLoader: TCustomTemplateLoader; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TWidthUnitsProperty }
|
||||||
|
|
||||||
|
TWidthUnitsProperty = class(TStringPropertyEditor)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TDBHTMLElementActionFieldProperty }
|
||||||
|
|
||||||
|
TDBHTMLElementActionFieldProperty = Class(TFieldProperty)
|
||||||
|
procedure FillValues(const Values: TStringList); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TBSColumnFieldProperty }
|
||||||
|
|
||||||
|
TBSColumnFieldProperty = Class(TFieldProperty)
|
||||||
|
procedure FillValues(const Values: TStringList); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTargetProperty }
|
||||||
|
|
||||||
|
TTargetProperty = class(TStringPropertyEditor)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSelectFieldProperty }
|
||||||
|
|
||||||
|
TDBSelectFieldProperty = Class(TFieldProperty)
|
||||||
|
procedure FillValues(const Values: TStringList); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
// LCL/Lazarus
|
||||||
|
Types, IDEWindowIntf, controls, forms, dialogs, formeditingintf, lazideintf, idemsgintf, IDEExternToolIntf, Menuintf,
|
||||||
|
idehtmltools,
|
||||||
|
frmHTMLActionsEditor, strpas2jscomponents, pas2jsrestutils, pas2jsrestcmd, frmpas2jsedithtml, p2jselementactions,
|
||||||
|
frmcreaterpcserviceclient;
|
||||||
|
|
||||||
|
{ TDBHTMLElementActionFieldProperty }
|
||||||
|
|
||||||
|
procedure TDBHTMLElementActionFieldProperty.FillValues(const Values: TStringList
|
||||||
|
);
|
||||||
|
Var
|
||||||
|
Act : TDBHTMLInputElementAction;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Act:=TDBHTMLInputElementAction(GetComponent(0));
|
||||||
|
if Assigned(Act) and Assigned(Act.DataSource) then
|
||||||
|
ListDataSourceFields(Act.DataSource,Values)
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TPas2JSRPCClientComponentEditor }
|
||||||
|
|
||||||
|
procedure TPas2JSRPCClientComponentEditor.CreateServiceClient;
|
||||||
|
|
||||||
|
Var
|
||||||
|
aFile,aSvcFile : TLazProjectFile;
|
||||||
|
aFileName : string;
|
||||||
|
frm : TCreateRPCClientServiceForm;
|
||||||
|
|
||||||
|
begin
|
||||||
|
aFileName:='';
|
||||||
|
aFile:=LazarusIDE.GetProjectFileWithRootComponent(Client.Owner);
|
||||||
|
if Assigned(aFile) then
|
||||||
|
aFileName:=aFile.CustomData[Client.Name+'_filename'];
|
||||||
|
if aFileName<>'' then
|
||||||
|
begin
|
||||||
|
aSvcFile:=LazarusIDE.ActiveProject.FindFile(aFileName,[pfsfOnlyProjectFiles]);
|
||||||
|
// look harder - not sure if the IDE does not do this by itself.
|
||||||
|
if aSvcFile=Nil then
|
||||||
|
aSvcFile:=LazarusIDE.ActiveProject.FindFile(ExtractFileName(aFileName),[pfsfOnlyProjectFiles]);
|
||||||
|
end;
|
||||||
|
frm:=TCreateRPCClientServiceForm.Create(Application);
|
||||||
|
try
|
||||||
|
frm.Client:=Self.Client;
|
||||||
|
frm.ProjectDir:=ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
|
||||||
|
if (aFileName<>'') then
|
||||||
|
begin
|
||||||
|
frm.UnitFileName:=aFileName;
|
||||||
|
frm.ServiceUnitName:=ChangeFileExt(ExtractFileName(aFileName),'');
|
||||||
|
frm.AllowAddUnitToProject:=(aSvcFile=Nil);
|
||||||
|
end;
|
||||||
|
if (frm.ShowModal=mrOK) and (frm.UnitFileName<>'') and FileExists(frm.UnitFileName) then
|
||||||
|
begin
|
||||||
|
if Assigned(aFile) then
|
||||||
|
aFile.CustomData[Client.Name+'_filename']:=frm.UnitFileName;
|
||||||
|
Modified;
|
||||||
|
if frm.AddUnitToProject then
|
||||||
|
LazarusIDE.DoOpenEditorFile(frm.UnitFileName,0,0,[ofAddToProject]);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
frm.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TPas2JSRPCClientComponentEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result:=1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TPas2JSRPCClientComponentEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
Case Index of
|
||||||
|
0 : Result:=rsCreateServiceClient;
|
||||||
|
else
|
||||||
|
Result:=inherited GetVerb(Index);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPas2JSRPCClientComponentEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
FClient:=GetComponent as TPas2jsRPCClient;
|
||||||
|
case Index of
|
||||||
|
0 : CreateServiceClient;
|
||||||
|
else
|
||||||
|
inherited ExecuteVerb(Index);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TSelectFieldProperty }
|
||||||
|
|
||||||
|
procedure TDBSelectFieldProperty.FillValues(const Values: TStringList);
|
||||||
|
|
||||||
|
Var
|
||||||
|
L : TDBSelectWidget;
|
||||||
|
DataSource: TDataSource;
|
||||||
|
|
||||||
|
begin
|
||||||
|
L:=TDBSelectWidget(GetComponent(0));
|
||||||
|
DataSource := L.Datasource;
|
||||||
|
ListDataSourceFields(DataSource, Values);
|
||||||
|
ShowMessage('Fields: '+Values.Text)
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTargetProperty }
|
||||||
|
|
||||||
|
function TTargetProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:= [paValueList, paSortList, paMultiSelect];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTargetProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
|
||||||
|
Const
|
||||||
|
targets : array[0..3] of string = ('_self','_blank','_parent','_top');
|
||||||
|
|
||||||
|
Var S : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
for S in Targets do
|
||||||
|
Proc(S);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBSColumnFieldProperty }
|
||||||
|
|
||||||
|
procedure TBSColumnFieldProperty.FillValues(const Values: TStringList);
|
||||||
|
|
||||||
|
Var
|
||||||
|
BS : TBSTableColumn;
|
||||||
|
BSTW : TDBBootstrapTableWidget;
|
||||||
|
|
||||||
|
begin
|
||||||
|
BS:=TBSTableColumn(GetComponent(0));
|
||||||
|
BSTW:=(BS.Collection as TBSTableColumns).Owner as TDBBootstrapTableWidget;
|
||||||
|
if Assigned(BSTW) and Assigned(BSTW.Datasource) then
|
||||||
|
ListDataSourceFields(BSTW.Datasource,Values)
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TWidthUnitsProperty }
|
||||||
|
|
||||||
|
function TWidthUnitsProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:= [paValueList, paSortList, paMultiSelect];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWidthUnitsProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
|
||||||
|
Const
|
||||||
|
Units : array[0..7] of string = ('px','ch','em','ic','lg','rem','vw','%');
|
||||||
|
|
||||||
|
Var S : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
for S in Units do
|
||||||
|
Proc(S);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TElementIDSelectorPropertyEditor }
|
||||||
|
|
||||||
|
function TElementIDSelectorPropertyEditor.ProcessID(S: String): String;
|
||||||
|
begin
|
||||||
|
Result:='#'+S;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBootstrapModalComponentEditor }
|
||||||
|
|
||||||
|
constructor TBootstrapModalComponentEditor.Create(AComponent: TComponent;
|
||||||
|
ADesigner: TComponentEditorDesigner);
|
||||||
|
begin
|
||||||
|
inherited Create(AComponent, ADesigner);
|
||||||
|
FModal:=aComponent as TBootstrapModal;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TBootstrapModalComponentEditor.Destroy;
|
||||||
|
begin
|
||||||
|
FModal:=Nil;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModalComponentEditor.Edit;
|
||||||
|
begin
|
||||||
|
EditTemplate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TBootstrapModalComponentEditor.EditTemplate;
|
||||||
|
|
||||||
|
Var
|
||||||
|
HTML : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
HTML:=Modal.Template;
|
||||||
|
if EditHTML(Modal.Name+'.Template',HTML) then
|
||||||
|
begin
|
||||||
|
Modal.Template:=HTML;
|
||||||
|
Designer.Modified;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TBootstrapModalComponentEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result:=1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TBootstrapModalComponentEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0 : Result:=rsEditTemplate;
|
||||||
|
else
|
||||||
|
Result:=inherited GetVerb(Index);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModalComponentEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
Case Index of
|
||||||
|
0 : EditTemplate;
|
||||||
|
else
|
||||||
|
inherited ExecuteVerb(Index);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBootStrapModalTemplateNamePropertyEditor }
|
||||||
|
|
||||||
|
function TBootStrapModalTemplateNamePropertyEditor.GetTemplateLoader: TCustomTemplateLoader;
|
||||||
|
begin
|
||||||
|
Result:=(GetComponent(0) as TBootstrapModal).TemplateLoader;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTemplateNamePropertyEditor }
|
||||||
|
|
||||||
|
function TTemplateNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function TTemplateNamePropertyEditor.GetTemplateLoader : TCustomTemplateLoader;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=Nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTemplateNamePropertyEditor.GetValues(Proc: TGetStrProc);
|
||||||
|
|
||||||
|
Var
|
||||||
|
T : TCustomTemplateLoader;
|
||||||
|
I : Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
T:=GetTemplateLoader;
|
||||||
|
if Not Assigned(T) then
|
||||||
|
exit;
|
||||||
|
For I:=0 to T.PreloadTemplates.Count-1 do
|
||||||
|
Proc(T.PreloadTemplates[I].Name);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTemplateEditor }
|
||||||
|
|
||||||
|
function THTMLFragmentPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTMLFragmentPropertyEditor.Edit;
|
||||||
|
|
||||||
|
Var
|
||||||
|
HTML : String;
|
||||||
|
aName : string;
|
||||||
|
|
||||||
|
begin
|
||||||
|
HTML:=GetStrValue;
|
||||||
|
aName:=GetPropertyPath(0);
|
||||||
|
If EditHTML(aName,HTML) then
|
||||||
|
SetStrValue(HTML);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSQLDBRestDatabaseConnectionPropertyEditor }
|
||||||
|
|
||||||
|
function TSQLDBRestDatabaseConnectionPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSQLDBRestDatabaseConnectionPropertyEditor.GetValues(Proc: TGetStrProc
|
||||||
|
);
|
||||||
|
Var
|
||||||
|
aList : TStringList;
|
||||||
|
aDataset : TSQLDBRestDataset;
|
||||||
|
S : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
aDataset:=GetComponent(0) as TSQLDBRestDataset;
|
||||||
|
if not assigned(aDataset.Connection) then
|
||||||
|
exit;
|
||||||
|
aList:=TStringList.Create;
|
||||||
|
try
|
||||||
|
IDERestUtils.GetConnectionList(aDataset.Connection,aList);
|
||||||
|
aList.Sort;
|
||||||
|
For S in aList do
|
||||||
|
Proc(S);
|
||||||
|
finally
|
||||||
|
aList.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSQLDBRestResourceNamePropertyEditor }
|
||||||
|
|
||||||
|
function TSQLDBRestResourceNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSQLDBRestResourceNamePropertyEditor.GetValues(Proc: TGetStrProc);
|
||||||
|
Var
|
||||||
|
aList : TStringList;
|
||||||
|
aDataset : TSQLDBRestDataset;
|
||||||
|
S : String;
|
||||||
|
|
||||||
|
begin
|
||||||
|
aDataset:=GetComponent(0) as TSQLDBRestDataset;
|
||||||
|
if not assigned(aDataset.Connection) then
|
||||||
|
exit;
|
||||||
|
aList:=TStringList.Create;
|
||||||
|
try
|
||||||
|
IDERestUtils.GetResourceList(aDataset.Connection,aList);
|
||||||
|
aList.Sort;
|
||||||
|
For S in aList do
|
||||||
|
Proc(S);
|
||||||
|
finally
|
||||||
|
aList.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TProjectElementIDPropertyEditor }
|
||||||
|
|
||||||
|
function TProjectElementIDPropertyEditor.GetHTMLFileName: String;
|
||||||
|
begin
|
||||||
|
Result:=HTMLTools.GetProjectHTMLFile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ THTMLFileNamePropertyEditor }
|
||||||
|
|
||||||
|
procedure THTMLFileNamePropertyEditor.Edit;
|
||||||
|
|
||||||
|
var
|
||||||
|
Dlg : TOpenDialog;
|
||||||
|
FN : String;
|
||||||
|
|
||||||
|
|
||||||
|
begin
|
||||||
|
Dlg:=TOpenDialog.Create(Application);
|
||||||
|
With Dlg do
|
||||||
|
try
|
||||||
|
Filter:=rsHTMLFIleFilters;
|
||||||
|
FN:=GetStrValue;
|
||||||
|
if FN<>ExpandFileName(FN) then
|
||||||
|
FN:=TIDEHTMLTools.HTMLBaseDir+FN;
|
||||||
|
FileName:=FN;
|
||||||
|
if Execute then
|
||||||
|
begin
|
||||||
|
FN:=FileName;
|
||||||
|
FN:=ExtractRelativePath(TIDEHTMLTools.HTMLBaseDir,FN);
|
||||||
|
SetStrValue(FN);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function THTMLFileNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TElementIDPropertyEditor }
|
||||||
|
|
||||||
|
function TElementIDPropertyEditor.GetHTMLFileName: String;
|
||||||
|
|
||||||
|
var
|
||||||
|
aComponent : TPersistent;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
aComponent:=GetComponent(0);
|
||||||
|
if (aComponent is TComponent) then
|
||||||
|
Result:=HTMLTools.GetHTMLFileForComponent(TComponent(aComponent));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TElementIDPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result:=[paMultiSelect,paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TElementIDPropertyEditor.ProcessID(S: String): String;
|
||||||
|
begin
|
||||||
|
Result:=S;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TElementIDPropertyEditor.GetValues(Proc: TGetStrProc);
|
||||||
|
|
||||||
|
Var
|
||||||
|
FN,aTag : String;
|
||||||
|
aTags : TStringDynArray;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FN:=GetHTMLFileName;
|
||||||
|
if FN<>'' then
|
||||||
|
begin
|
||||||
|
aTags:=HTMLTools.GetTagIDs(FN);
|
||||||
|
For aTag in aTags do
|
||||||
|
Proc(ProcessID(aTag));
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ THTMLElementActionListComponentEditor }
|
||||||
|
|
||||||
|
constructor THTMLElementActionListComponentEditor.Create(AComponent: TComponent;
|
||||||
|
ADesigner: TComponentEditorDesigner);
|
||||||
|
begin
|
||||||
|
inherited Create(AComponent, ADesigner);
|
||||||
|
FCompDesigner := ADesigner;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor THTMLElementActionListComponentEditor.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTMLElementActionListComponentEditor.Edit;
|
||||||
|
var
|
||||||
|
AActionList: THTMLCustomElementActionList;
|
||||||
|
AEditor: THTMLActionListEditorForm;
|
||||||
|
begin
|
||||||
|
AActionList := GetComponent as THTMLCustomElementActionList;
|
||||||
|
if Not Assigned(AActionList) then
|
||||||
|
raise Exception.Create('THTMLElementActionListComponentEditor.Edit AActionList=nil');
|
||||||
|
AEditor := FindActionEditor(AActionList);
|
||||||
|
if not Assigned(AEditor) then begin
|
||||||
|
AEditor := THTMLActionListEditorForm.Create(Application);
|
||||||
|
AEditor.lstActionName.ItemIndex := -1;
|
||||||
|
AEditor.ComponentDesigner := Self.FCompDesigner;
|
||||||
|
AEditor.ComponentEditor := Self;
|
||||||
|
AEditor.HTMLActionList:=AActionList;
|
||||||
|
end;
|
||||||
|
SetPopupModeParentForPropertyEditor(AEditor);
|
||||||
|
AEditor.ShowOnTop;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTMLElementActionListComponentEditor.CreateMissing;
|
||||||
|
|
||||||
|
var
|
||||||
|
AActionList: THTMLCustomElementActionList;
|
||||||
|
aCount : Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
AActionList := GetComponent as THTMLCustomElementActionList;
|
||||||
|
if Not Assigned(AActionList) then
|
||||||
|
raise Exception.Create('THTMLElementActionListComponentEditor.Edit AActionList=nil');
|
||||||
|
aCount:=CreateMissingActions(Self,aActionList);
|
||||||
|
if (aCount<>-1) then
|
||||||
|
ShowMessage(Format(rsHTMLActionsCreated,[aCount]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function THTMLElementActionListComponentEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function THTMLElementActionListComponentEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0 : Result := rsActionListComponentEditor;
|
||||||
|
1 : Result := rsActionListCreateMissing;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTMLElementActionListComponentEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0 : Edit;
|
||||||
|
1 : CreateMissing;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -130,6 +130,10 @@
|
|||||||
<Filename Value="frmcreaterpcserviceclient.pas"/>
|
<Filename Value="frmcreaterpcserviceclient.pas"/>
|
||||||
<UnitName Value="frmcreaterpcserviceclient"/>
|
<UnitName Value="frmcreaterpcserviceclient"/>
|
||||||
</Item>
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<Filename Value="pas2jscompedits.pas"/>
|
||||||
|
<UnitName Value="pas2jscompedits"/>
|
||||||
|
</Item>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs>
|
<RequiredPkgs>
|
||||||
<Item>
|
<Item>
|
||||||
|
@ -15,7 +15,7 @@ uses
|
|||||||
Stub.Data.HTMLActions, frmselecthtmlactions, stub.jsondataset,
|
Stub.Data.HTMLActions, frmselecthtmlactions, stub.jsondataset,
|
||||||
stub.bootstraptablewidget, stub.dbwebwidget, stub.dbhtmlwidgets,
|
stub.bootstraptablewidget, stub.dbwebwidget, stub.dbhtmlwidgets,
|
||||||
stub.htmlwidgets, stub.bulmawidgets, stub.fprpcclient, iderpccodegen,
|
stub.htmlwidgets, stub.bulmawidgets, stub.fprpcclient, iderpccodegen,
|
||||||
frmcreaterpcserviceclient, LazarusPackageIntf;
|
frmcreaterpcserviceclient, pas2jscompedits, LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -11,87 +11,9 @@ uses
|
|||||||
stub.templateloader, stub.jsondataset, stub.dbwebwidget, stub.dbhtmlwidgets,
|
stub.templateloader, stub.jsondataset, stub.dbwebwidget, stub.dbhtmlwidgets,
|
||||||
stub.fprpcclient;
|
stub.fprpcclient;
|
||||||
|
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
{ THTMLElementActionListComponentEditor }
|
|
||||||
|
|
||||||
THTMLElementActionListComponentEditor = class(TComponentEditor)
|
|
||||||
private
|
|
||||||
FActionList: THTMLElementActionList;
|
|
||||||
FCompDesigner: TComponentEditorDesigner;
|
|
||||||
protected
|
|
||||||
public
|
|
||||||
constructor Create(AComponent: TComponent;
|
|
||||||
ADesigner: TComponentEditorDesigner); override;
|
|
||||||
destructor Destroy; override;
|
|
||||||
procedure Edit; override;
|
|
||||||
procedure CreateMissing;
|
|
||||||
property ActionList: THTMLElementActionList read FActionList write FActionList;
|
|
||||||
function GetVerbCount: Integer; override;
|
|
||||||
function GetVerb({%H-}Index: Integer): string; override;
|
|
||||||
procedure ExecuteVerb({%H-}Index: Integer); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TBootstrapModalComponentEditor }
|
|
||||||
|
|
||||||
TBootstrapModalComponentEditor = class(TComponentEditor)
|
|
||||||
private
|
|
||||||
FModal: TBootstrapModal;
|
|
||||||
protected
|
|
||||||
public
|
|
||||||
constructor Create(AComponent: TComponent;
|
|
||||||
ADesigner: TComponentEditorDesigner); override;
|
|
||||||
destructor Destroy; override;
|
|
||||||
procedure Edit; override;
|
|
||||||
Procedure EditTemplate;
|
|
||||||
property Modal : TBootstrapModal read FModal write FModal;
|
|
||||||
function GetVerbCount: Integer; override;
|
|
||||||
function GetVerb({%H-}Index: Integer): string; override;
|
|
||||||
procedure ExecuteVerb({%H-}Index: Integer); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TPas2JSRPCClientComponentEditor }
|
|
||||||
|
|
||||||
TPas2JSRPCClientComponentEditor = class(TComponentEditor)
|
|
||||||
private
|
|
||||||
FClient : TPas2JSRPCClient;
|
|
||||||
protected
|
|
||||||
Procedure CreateServiceClient;
|
|
||||||
public
|
|
||||||
property Client : TPas2JSRPCClient read FClient write FClient;
|
|
||||||
function GetVerbCount: Integer; override;
|
|
||||||
function GetVerb({%H-}Index: Integer): string; override;
|
|
||||||
procedure ExecuteVerb({%H-}Index: Integer); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TElementIDPropertyEditor }
|
|
||||||
// Get element ID list from HTML file associated with component
|
|
||||||
TElementIDPropertyEditor = class(TStringPropertyEditor)
|
|
||||||
Public
|
|
||||||
Function GetHTMLFileName : String;
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
Function ProcessID(S : String) : String; virtual;
|
|
||||||
Procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TElementIDSelectorPropertyEditor }
|
|
||||||
|
|
||||||
TElementIDSelectorPropertyEditor = class(TElementIDPropertyEditor)
|
|
||||||
Public
|
|
||||||
Function ProcessID(S : String) : String; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
// Get element ID list from HTML file associated with project
|
|
||||||
|
|
||||||
{ TProjectElementIDPropertyEditor }
|
|
||||||
|
|
||||||
TProjectElementIDPropertyEditor = class(TElementIDPropertyEditor)
|
|
||||||
Function GetHTMLFileName : String;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TFileDescHTMLFragment }
|
{ TFileDescHTMLFragment }
|
||||||
|
|
||||||
TFileDescHTMLFragment = class(TFileDescPascalUnitWithResource)
|
TFileDescHTMLFragment = class(TFileDescPascalUnitWithResource)
|
||||||
@ -105,97 +27,6 @@ Type
|
|||||||
function GetImplementationSource(const Filename, SourceName, ResourceName: string): string;override;
|
function GetImplementationSource(const Filename, SourceName, ResourceName: string): string;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ THTMLFileNamePropertyEditor }
|
|
||||||
|
|
||||||
THTMLFileNamePropertyEditor = class(TStringPropertyEditor)
|
|
||||||
Public
|
|
||||||
Procedure Edit; override;
|
|
||||||
Function GetAttributes: TPropertyAttributes; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSQLDBRestResourceNamePropertyEditor }
|
|
||||||
|
|
||||||
TSQLDBRestResourceNamePropertyEditor = class(TStringPropertyEditor)
|
|
||||||
Public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
Procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSQLDBRestDatabaseConnectionPropertyEditor }
|
|
||||||
|
|
||||||
TSQLDBRestDatabaseConnectionPropertyEditor = class(TStringPropertyEditor)
|
|
||||||
Public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
Procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TTemplatePropertyEditor }
|
|
||||||
|
|
||||||
THTMLFragmentPropertyEditor = Class(TStringPropertyEditor)
|
|
||||||
Public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
Procedure Edit; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// Edit a HTML fragment
|
|
||||||
TTemplatePropertyEditor = THTMLFragmentPropertyEditor;
|
|
||||||
|
|
||||||
{ TTemplateNamePropertyEditor }
|
|
||||||
|
|
||||||
TTemplateNamePropertyEditor = Class(TStringPropertyEditor)
|
|
||||||
private
|
|
||||||
Protected
|
|
||||||
function GetTemplateLoader: TCustomTemplateLoader; virtual;
|
|
||||||
Public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
Procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TBootStrapModalTemplateNamePropertyEditor }
|
|
||||||
|
|
||||||
TBootStrapModalTemplateNamePropertyEditor = Class(TTemplateNamePropertyEditor)
|
|
||||||
Protected
|
|
||||||
function GetTemplateLoader: TCustomTemplateLoader; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TWidthUnitsProperty }
|
|
||||||
|
|
||||||
TWidthUnitsProperty = class(TStringPropertyEditor)
|
|
||||||
public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TDBHTMLElementActionFieldProperty }
|
|
||||||
|
|
||||||
TDBHTMLElementActionFieldProperty = Class(TFieldProperty)
|
|
||||||
procedure FillValues(const Values: TStringList); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TBSColumnFieldProperty }
|
|
||||||
|
|
||||||
TBSColumnFieldProperty = Class(TFieldProperty)
|
|
||||||
procedure FillValues(const Values: TStringList); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TTargetProperty }
|
|
||||||
|
|
||||||
TTargetProperty = class(TStringPropertyEditor)
|
|
||||||
public
|
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
|
||||||
procedure GetValues(Proc: TGetStrProc); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSelectFieldProperty }
|
|
||||||
|
|
||||||
TDBSelectFieldProperty = Class(TFieldProperty)
|
|
||||||
procedure FillValues(const Values: TStringList); override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TStubRequirements }
|
{ TStubRequirements }
|
||||||
|
|
||||||
TSQLDBRestStubRequirements = Class(TComponentRequirements)
|
TSQLDBRestStubRequirements = Class(TComponentRequirements)
|
||||||
@ -297,7 +128,7 @@ uses
|
|||||||
pjscontroller, idehtmltools,
|
pjscontroller, idehtmltools,
|
||||||
// pas2jscomponents
|
// pas2jscomponents
|
||||||
frmHTMLActionsEditor, strpas2jscomponents, pas2jsrestutils, pas2jsrestcmd, frmpas2jsedithtml, p2jselementactions,
|
frmHTMLActionsEditor, strpas2jscomponents, pas2jsrestutils, pas2jsrestcmd, frmpas2jsedithtml, p2jselementactions,
|
||||||
frmcreaterpcserviceclient;
|
frmcreaterpcserviceclient, pas2jscompedits;
|
||||||
|
|
||||||
{$r pas2jsc_images.res}
|
{$r pas2jsc_images.res}
|
||||||
|
|
||||||
@ -358,6 +189,7 @@ begin
|
|||||||
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'ParentID',TElementIDPropertyEditor);
|
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'ParentID',TElementIDPropertyEditor);
|
||||||
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'ElementID',TElementIDPropertyEditor);
|
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'ElementID',TElementIDPropertyEditor);
|
||||||
RegisterPropertyEditor(TypeInfo(String),TDBBootstrapTableWidget,'ElementID',TElementIDPropertyEditor);
|
RegisterPropertyEditor(TypeInfo(String),TDBBootstrapTableWidget,'ElementID',TElementIDPropertyEditor);
|
||||||
|
RegisterPropertyEditor(TypeInfo(String),TDBBootstrapTableWidget,'ParentIDID',TElementIDPropertyEditor);
|
||||||
RegisterPropertyEditor(TypeInfo(String),TReferenceItem,'Selector',TElementIDSelectorPropertyEditor);
|
RegisterPropertyEditor(TypeInfo(String),TReferenceItem,'Selector',TElementIDSelectorPropertyEditor);
|
||||||
// RegisterPropertyEditor(TypeInfo(String),TDBHTMLButtonElementAction,'ElementID',TElementIDPropertyEditor);
|
// RegisterPropertyEditor(TypeInfo(String),TDBHTMLButtonElementAction,'ElementID',TElementIDPropertyEditor);
|
||||||
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'Template',TTemplatePropertyEditor);
|
RegisterPropertyEditor(TypeInfo(String),TBootstrapModal,'Template',TTemplatePropertyEditor);
|
||||||
@ -430,86 +262,6 @@ begin
|
|||||||
RegisterRESTHandling;
|
RegisterRESTHandling;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TDBHTMLElementActionFieldProperty }
|
|
||||||
|
|
||||||
procedure TDBHTMLElementActionFieldProperty.FillValues(const Values: TStringList
|
|
||||||
);
|
|
||||||
Var
|
|
||||||
Act : TDBHTMLInputElementAction;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Act:=TDBHTMLInputElementAction(GetComponent(0));
|
|
||||||
if Assigned(Act) and Assigned(Act.DataSource) then
|
|
||||||
ListDataSourceFields(Act.DataSource,Values)
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TPas2JSRPCClientComponentEditor }
|
|
||||||
|
|
||||||
procedure TPas2JSRPCClientComponentEditor.CreateServiceClient;
|
|
||||||
|
|
||||||
Var
|
|
||||||
aFile,aSvcFile : TLazProjectFile;
|
|
||||||
aFileName : string;
|
|
||||||
frm : TCreateRPCClientServiceForm;
|
|
||||||
|
|
||||||
begin
|
|
||||||
aFileName:='';
|
|
||||||
aFile:=LazarusIDE.GetProjectFileWithRootComponent(Client.Owner);
|
|
||||||
if Assigned(aFile) then
|
|
||||||
aFileName:=aFile.CustomData[Client.Name+'_filename'];
|
|
||||||
if aFileName<>'' then
|
|
||||||
begin
|
|
||||||
aSvcFile:=LazarusIDE.ActiveProject.FindFile(aFileName,[pfsfOnlyProjectFiles]);
|
|
||||||
// look harder - not sure if the IDE does not do this by itself.
|
|
||||||
if aSvcFile=Nil then
|
|
||||||
aSvcFile:=LazarusIDE.ActiveProject.FindFile(ExtractFileName(aFileName),[pfsfOnlyProjectFiles]);
|
|
||||||
end;
|
|
||||||
frm:=TCreateRPCClientServiceForm.Create(Application);
|
|
||||||
try
|
|
||||||
frm.Client:=Self.Client;
|
|
||||||
frm.ProjectDir:=ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
|
|
||||||
if (aFileName<>'') then
|
|
||||||
begin
|
|
||||||
frm.UnitFileName:=aFileName;
|
|
||||||
frm.ServiceUnitName:=ChangeFileExt(ExtractFileName(aFileName),'');
|
|
||||||
frm.AllowAddUnitToProject:=(aSvcFile=Nil);
|
|
||||||
end;
|
|
||||||
if (frm.ShowModal=mrOK) and (frm.UnitFileName<>'') and FileExists(frm.UnitFileName) then
|
|
||||||
begin
|
|
||||||
if Assigned(aFile) then
|
|
||||||
aFile.CustomData[Client.Name+'_filename']:=frm.UnitFileName;
|
|
||||||
Modified;
|
|
||||||
if frm.AddUnitToProject then
|
|
||||||
LazarusIDE.DoOpenEditorFile(frm.UnitFileName,0,0,[ofAddToProject]);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
frm.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPas2JSRPCClientComponentEditor.GetVerbCount: Integer;
|
|
||||||
begin
|
|
||||||
Result:=1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPas2JSRPCClientComponentEditor.GetVerb(Index: Integer): string;
|
|
||||||
begin
|
|
||||||
Case Index of
|
|
||||||
0 : Result:=rsCreateServiceClient;
|
|
||||||
else
|
|
||||||
Result:=inherited GetVerb(Index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPas2JSRPCClientComponentEditor.ExecuteVerb(Index: Integer);
|
|
||||||
begin
|
|
||||||
FClient:=GetComponent as TPas2jsRPCClient;
|
|
||||||
case Index of
|
|
||||||
0 : CreateServiceClient;
|
|
||||||
else
|
|
||||||
inherited ExecuteVerb(Index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TFPRPCClientRequirements }
|
{ TFPRPCClientRequirements }
|
||||||
|
|
||||||
@ -525,21 +277,6 @@ begin
|
|||||||
Units.text:='bulmawidgets';
|
Units.text:='bulmawidgets';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSelectFieldProperty }
|
|
||||||
|
|
||||||
procedure TDBSelectFieldProperty.FillValues(const Values: TStringList);
|
|
||||||
|
|
||||||
Var
|
|
||||||
L : TDBSelectWidget;
|
|
||||||
DataSource: TDataSource;
|
|
||||||
|
|
||||||
begin
|
|
||||||
L:=TDBSelectWidget(GetComponent(0));
|
|
||||||
DataSource := L.Datasource;
|
|
||||||
ListDataSourceFields(DataSource, Values);
|
|
||||||
ShowMessage('Fields: '+Values.Text)
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TDBHTMLWebWidgetRequirements }
|
{ TDBHTMLWebWidgetRequirements }
|
||||||
|
|
||||||
procedure TDBHTMLWebWidgetRequirements.RequiredUnits(Units: TStrings);
|
procedure TDBHTMLWebWidgetRequirements.RequiredUnits(Units: TStrings);
|
||||||
@ -558,59 +295,6 @@ begin
|
|||||||
Units.Add('webwidget');
|
Units.Add('webwidget');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TTargetProperty }
|
|
||||||
|
|
||||||
function TTargetProperty.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:= [paValueList, paSortList, paMultiSelect];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TTargetProperty.GetValues(Proc: TGetStrProc);
|
|
||||||
|
|
||||||
Const
|
|
||||||
targets : array[0..3] of string = ('_self','_blank','_parent','_top');
|
|
||||||
|
|
||||||
Var S : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
for S in Targets do
|
|
||||||
Proc(S);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TBSColumnFieldProperty }
|
|
||||||
|
|
||||||
procedure TBSColumnFieldProperty.FillValues(const Values: TStringList);
|
|
||||||
|
|
||||||
Var
|
|
||||||
BS : TBSTableColumn;
|
|
||||||
BSTW : TDBBootstrapTableWidget;
|
|
||||||
|
|
||||||
begin
|
|
||||||
BS:=TBSTableColumn(GetComponent(0));
|
|
||||||
BSTW:=(BS.Collection as TBSTableColumns).Owner as TDBBootstrapTableWidget;
|
|
||||||
if Assigned(BSTW) and Assigned(BSTW.Datasource) then
|
|
||||||
ListDataSourceFields(BSTW.Datasource,Values)
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TWidthUnitsProperty }
|
|
||||||
|
|
||||||
function TWidthUnitsProperty.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:= [paValueList, paSortList, paMultiSelect];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TWidthUnitsProperty.GetValues(Proc: TGetStrProc);
|
|
||||||
|
|
||||||
Const
|
|
||||||
Units : array[0..7] of string = ('px','ch','em','ic','lg','rem','vw','%');
|
|
||||||
|
|
||||||
Var S : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
for S in Units do
|
|
||||||
Proc(S);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -622,13 +306,6 @@ begin
|
|||||||
Units.Add('bootstraptablewidget');
|
Units.Add('bootstraptablewidget');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TElementIDSelectorPropertyEditor }
|
|
||||||
|
|
||||||
function TElementIDSelectorPropertyEditor.ProcessID(S: String): String;
|
|
||||||
begin
|
|
||||||
Result:='#'+S;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TJSONDatasetRequirements }
|
{ TJSONDatasetRequirements }
|
||||||
|
|
||||||
procedure TJSONDatasetRequirements.RequiredUnits(Units: TStrings);
|
procedure TJSONDatasetRequirements.RequiredUnits(Units: TStrings);
|
||||||
@ -648,215 +325,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TBootstrapModalComponentEditor }
|
|
||||||
|
|
||||||
constructor TBootstrapModalComponentEditor.Create(AComponent: TComponent;
|
|
||||||
ADesigner: TComponentEditorDesigner);
|
|
||||||
begin
|
|
||||||
inherited Create(AComponent, ADesigner);
|
|
||||||
FModal:=aComponent as TBootstrapModal;
|
|
||||||
end;
|
|
||||||
|
|
||||||
destructor TBootstrapModalComponentEditor.Destroy;
|
|
||||||
begin
|
|
||||||
FModal:=Nil;
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBootstrapModalComponentEditor.Edit;
|
|
||||||
begin
|
|
||||||
EditTemplate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TBootstrapModalComponentEditor.EditTemplate;
|
|
||||||
|
|
||||||
Var
|
|
||||||
HTML : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
HTML:=Modal.Template;
|
|
||||||
if EditHTML(Modal.Name+'.Template',HTML) then
|
|
||||||
begin
|
|
||||||
Modal.Template:=HTML;
|
|
||||||
Designer.Modified;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TBootstrapModalComponentEditor.GetVerbCount: Integer;
|
|
||||||
begin
|
|
||||||
Result:=1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TBootstrapModalComponentEditor.GetVerb(Index: Integer): string;
|
|
||||||
begin
|
|
||||||
case Index of
|
|
||||||
0 : Result:=rsEditTemplate;
|
|
||||||
else
|
|
||||||
Result:=inherited GetVerb(Index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBootstrapModalComponentEditor.ExecuteVerb(Index: Integer);
|
|
||||||
begin
|
|
||||||
Case Index of
|
|
||||||
0 : EditTemplate;
|
|
||||||
else
|
|
||||||
inherited ExecuteVerb(Index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TBootStrapModalTemplateNamePropertyEditor }
|
|
||||||
|
|
||||||
function TBootStrapModalTemplateNamePropertyEditor.GetTemplateLoader: TCustomTemplateLoader;
|
|
||||||
begin
|
|
||||||
Result:=(GetComponent(0) as TBootstrapModal).TemplateLoader;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TTemplateNamePropertyEditor }
|
|
||||||
|
|
||||||
function TTemplateNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paValueList];
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function TTemplateNamePropertyEditor.GetTemplateLoader : TCustomTemplateLoader;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result:=Nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TTemplateNamePropertyEditor.GetValues(Proc: TGetStrProc);
|
|
||||||
|
|
||||||
Var
|
|
||||||
T : TCustomTemplateLoader;
|
|
||||||
I : Integer;
|
|
||||||
|
|
||||||
begin
|
|
||||||
T:=GetTemplateLoader;
|
|
||||||
if Not Assigned(T) then
|
|
||||||
exit;
|
|
||||||
For I:=0 to T.PreloadTemplates.Count-1 do
|
|
||||||
Proc(T.PreloadTemplates[I].Name);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TTemplateEditor }
|
|
||||||
|
|
||||||
function THTMLFragmentPropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paDialog];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure THTMLFragmentPropertyEditor.Edit;
|
|
||||||
|
|
||||||
Var
|
|
||||||
HTML : String;
|
|
||||||
aName : string;
|
|
||||||
|
|
||||||
begin
|
|
||||||
HTML:=GetStrValue;
|
|
||||||
aName:=GetPropertyPath(0);
|
|
||||||
If EditHTML(aName,HTML) then
|
|
||||||
SetStrValue(HTML);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSQLDBRestDatabaseConnectionPropertyEditor }
|
|
||||||
|
|
||||||
function TSQLDBRestDatabaseConnectionPropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paValueList];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSQLDBRestDatabaseConnectionPropertyEditor.GetValues(Proc: TGetStrProc
|
|
||||||
);
|
|
||||||
Var
|
|
||||||
aList : TStringList;
|
|
||||||
aDataset : TSQLDBRestDataset;
|
|
||||||
S : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
aDataset:=GetComponent(0) as TSQLDBRestDataset;
|
|
||||||
if not assigned(aDataset.Connection) then
|
|
||||||
exit;
|
|
||||||
aList:=TStringList.Create;
|
|
||||||
try
|
|
||||||
IDERestUtils.GetConnectionList(aDataset.Connection,aList);
|
|
||||||
aList.Sort;
|
|
||||||
For S in aList do
|
|
||||||
Proc(S);
|
|
||||||
finally
|
|
||||||
aList.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSQLDBRestResourceNamePropertyEditor }
|
|
||||||
|
|
||||||
function TSQLDBRestResourceNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paValueList];
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSQLDBRestResourceNamePropertyEditor.GetValues(Proc: TGetStrProc);
|
|
||||||
Var
|
|
||||||
aList : TStringList;
|
|
||||||
aDataset : TSQLDBRestDataset;
|
|
||||||
S : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
aDataset:=GetComponent(0) as TSQLDBRestDataset;
|
|
||||||
if not assigned(aDataset.Connection) then
|
|
||||||
exit;
|
|
||||||
aList:=TStringList.Create;
|
|
||||||
try
|
|
||||||
IDERestUtils.GetResourceList(aDataset.Connection,aList);
|
|
||||||
aList.Sort;
|
|
||||||
For S in aList do
|
|
||||||
Proc(S);
|
|
||||||
finally
|
|
||||||
aList.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TProjectElementIDPropertyEditor }
|
|
||||||
|
|
||||||
function TProjectElementIDPropertyEditor.GetHTMLFileName: String;
|
|
||||||
begin
|
|
||||||
Result:=HTMLTools.GetProjectHTMLFile;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ THTMLFileNamePropertyEditor }
|
|
||||||
|
|
||||||
procedure THTMLFileNamePropertyEditor.Edit;
|
|
||||||
|
|
||||||
var
|
|
||||||
Dlg : TOpenDialog;
|
|
||||||
FN : String;
|
|
||||||
|
|
||||||
|
|
||||||
begin
|
|
||||||
Dlg:=TOpenDialog.Create(Application);
|
|
||||||
With Dlg do
|
|
||||||
try
|
|
||||||
Filter:=rsHTMLFIleFilters;
|
|
||||||
FN:=GetStrValue;
|
|
||||||
if FN<>ExpandFileName(FN) then
|
|
||||||
FN:=TFileDescHTMLFragment.HTMLBaseDir+FN;
|
|
||||||
FileName:=FN;
|
|
||||||
if Execute then
|
|
||||||
begin
|
|
||||||
FN:=FileName;
|
|
||||||
FN:=ExtractRelativePath(TFileDescHTMLFragment.HTMLBaseDir,FN);
|
|
||||||
SetStrValue(FN);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function THTMLFileNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paDialog];
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TFileDescHTMLFragment }
|
{ TFileDescHTMLFragment }
|
||||||
|
|
||||||
@ -870,9 +338,7 @@ end;
|
|||||||
|
|
||||||
class function TFileDescHTMLFragment.HTMLBaseDir: String;
|
class function TFileDescHTMLFragment.HTMLBaseDir: String;
|
||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.ActiveProject.CustomData.Values[PJSProjectHTMLBaseDir];
|
Result:=TIDEHTMLTools.HTMLBaseDir;
|
||||||
if Result='' then
|
|
||||||
Result:=ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFileDescHTMLFragment.CheckHTMLFile(Sender: TObject;
|
procedure TFileDescHTMLFragment.CheckHTMLFile(Sender: TObject;
|
||||||
@ -917,117 +383,6 @@ begin
|
|||||||
Result:=inherited GetImplementationSource(Filename, SourceName, ResourceName);
|
Result:=inherited GetImplementationSource(Filename, SourceName, ResourceName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TElementIDPropertyEditor }
|
|
||||||
|
|
||||||
function TElementIDPropertyEditor.GetHTMLFileName: String;
|
|
||||||
|
|
||||||
var
|
|
||||||
aComponent : TPersistent;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result:='';
|
|
||||||
aComponent:=GetComponent(0);
|
|
||||||
if (aComponent is TComponent) then
|
|
||||||
Result:=HTMLTools.GetHTMLFileForComponent(TComponent(aComponent));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TElementIDPropertyEditor.GetAttributes: TPropertyAttributes;
|
|
||||||
begin
|
|
||||||
Result:=[paMultiSelect,paValueList];
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TElementIDPropertyEditor.ProcessID(S: String): String;
|
|
||||||
begin
|
|
||||||
Result:=S;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TElementIDPropertyEditor.GetValues(Proc: TGetStrProc);
|
|
||||||
|
|
||||||
Var
|
|
||||||
FN,aTag : String;
|
|
||||||
aTags : TStringDynArray;
|
|
||||||
|
|
||||||
begin
|
|
||||||
FN:=GetHTMLFileName;
|
|
||||||
if FN<>'' then
|
|
||||||
begin
|
|
||||||
aTags:=HTMLTools.GetTagIDs(FN);
|
|
||||||
For aTag in aTags do
|
|
||||||
Proc(ProcessID(aTag));
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ THTMLElementActionListComponentEditor }
|
|
||||||
|
|
||||||
constructor THTMLElementActionListComponentEditor.Create(AComponent: TComponent;
|
|
||||||
ADesigner: TComponentEditorDesigner);
|
|
||||||
begin
|
|
||||||
inherited Create(AComponent, ADesigner);
|
|
||||||
FCompDesigner := ADesigner;
|
|
||||||
end;
|
|
||||||
|
|
||||||
destructor THTMLElementActionListComponentEditor.Destroy;
|
|
||||||
begin
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure THTMLElementActionListComponentEditor.Edit;
|
|
||||||
var
|
|
||||||
AActionList: THTMLCustomElementActionList;
|
|
||||||
AEditor: THTMLActionListEditorForm;
|
|
||||||
begin
|
|
||||||
AActionList := GetComponent as THTMLCustomElementActionList;
|
|
||||||
if Not Assigned(AActionList) then
|
|
||||||
raise Exception.Create('THTMLElementActionListComponentEditor.Edit AActionList=nil');
|
|
||||||
AEditor := FindActionEditor(AActionList);
|
|
||||||
if not Assigned(AEditor) then begin
|
|
||||||
AEditor := THTMLActionListEditorForm.Create(Application);
|
|
||||||
AEditor.lstActionName.ItemIndex := -1;
|
|
||||||
AEditor.ComponentDesigner := Self.FCompDesigner;
|
|
||||||
AEditor.ComponentEditor := Self;
|
|
||||||
AEditor.HTMLActionList:=AActionList;
|
|
||||||
end;
|
|
||||||
SetPopupModeParentForPropertyEditor(AEditor);
|
|
||||||
AEditor.ShowOnTop;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure THTMLElementActionListComponentEditor.CreateMissing;
|
|
||||||
|
|
||||||
var
|
|
||||||
AActionList: THTMLCustomElementActionList;
|
|
||||||
aCount : Integer;
|
|
||||||
|
|
||||||
begin
|
|
||||||
AActionList := GetComponent as THTMLCustomElementActionList;
|
|
||||||
if Not Assigned(AActionList) then
|
|
||||||
raise Exception.Create('THTMLElementActionListComponentEditor.Edit AActionList=nil');
|
|
||||||
aCount:=CreateMissingActions(Self,aActionList);
|
|
||||||
if (aCount<>-1) then
|
|
||||||
ShowMessage(Format(rsHTMLActionsCreated,[aCount]));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function THTMLElementActionListComponentEditor.GetVerbCount: Integer;
|
|
||||||
begin
|
|
||||||
Result := 2;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function THTMLElementActionListComponentEditor.GetVerb(Index: Integer): string;
|
|
||||||
begin
|
|
||||||
case Index of
|
|
||||||
0 : Result := rsActionListComponentEditor;
|
|
||||||
1 : Result := rsActionListCreateMissing;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure THTMLElementActionListComponentEditor.ExecuteVerb(Index: Integer);
|
|
||||||
begin
|
|
||||||
case Index of
|
|
||||||
0 : Edit;
|
|
||||||
1 : CreateMissing;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TRTLTemplateLoaderRequirements }
|
{ TRTLTemplateLoaderRequirements }
|
||||||
|
@ -21,6 +21,9 @@ Resourcestring
|
|||||||
rsNoMetaDataResourceCannotCreateFieldDefs = 'No metadata resource present, cannot get fielddefs';
|
rsNoMetaDataResourceCannotCreateFieldDefs = 'No metadata resource present, cannot get fielddefs';
|
||||||
rsNoResourceCannotCreateFieldDefs = 'No resource present, cannot get fielddefs';
|
rsNoResourceCannotCreateFieldDefs = 'No resource present, cannot get fielddefs';
|
||||||
rsNoResourceCannotShowData = 'No resource present, cannot show data';
|
rsNoResourceCannotShowData = 'No resource present, cannot show data';
|
||||||
|
rsServerRequestFailedCannotCreateFieldDefs = 'Server request failed, cannot update fielddefs';
|
||||||
|
rsCreateFieldDefsCount = 'Added %d fielddefs';
|
||||||
|
rsCreateFieldDefsNoNew = 'Fielddefs are up-to-date, no new fielddefs were added';
|
||||||
|
|
||||||
rsEditingHTMLProp = 'Editing HTML property: %s';
|
rsEditingHTMLProp = 'Editing HTML property: %s';
|
||||||
rsEditTemplate = 'Edit Template';
|
rsEditTemplate = 'Edit Template';
|
||||||
|
Loading…
Reference in New Issue
Block a user