mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 04:03:42 +02:00
277 lines
9.3 KiB
ObjectPascal
277 lines
9.3 KiB
ObjectPascal
unit fraopenapisettings;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, EditBtn, StdCtrls, ComCtrls, ValEdit, fpopenapi.codegen;
|
|
|
|
type
|
|
|
|
{ TGeneratorSettingsFrame }
|
|
|
|
TGeneratorSettingsFrame = class(TFrame)
|
|
btnLoadUUIDMap: TButton;
|
|
btnLoadUUIDMap1: TButton;
|
|
cbGenServer: TCheckBox;
|
|
CBGenClient: TCheckBox;
|
|
CBDelphiCode: TCheckBox;
|
|
cbOpenFiles: TCheckBox;
|
|
CBVerboseHeader: TCheckBox;
|
|
CBEnums: TCheckBox;
|
|
CBAsyncService: TCheckBox;
|
|
cbCancelRequest: TCheckBox;
|
|
CBSkipImplementation: TCheckBox;
|
|
CBAbstractCalls: TCheckBox;
|
|
cbAddToProject: TCheckBox;
|
|
edtClientServiceImplementationUnit: TEdit;
|
|
edtClientServiceInterfaceUnit: TEdit;
|
|
edtClientServiceParentClass: TEdit;
|
|
edtClientServiceParentUnit: TEdit;
|
|
edtServerHandlerUnitName: TEdit;
|
|
edtServerImplementationUnitName: TEdit;
|
|
edtServerServiceParentClass: TEdit;
|
|
edtServerServiceParentUnit: TEdit;
|
|
edtServiceNameSuffix: TEdit;
|
|
edtServiceNamePrefix: TEdit;
|
|
edtSerializeUnit: TEdit;
|
|
edtDtoUnit: TEdit;
|
|
edtUnitExtension: TEdit;
|
|
edtUnitSuffix: TEdit;
|
|
edtUUIDMap: TFileNameEdit;
|
|
edtServiceMapFile: TFileNameEdit;
|
|
GBAutoNaming: TGroupBox;
|
|
Label1: TLabel;
|
|
lblUUIDMap: TLabel;
|
|
lblServerServiceParentUnit: TLabel;
|
|
lblServerServiceParentClass: TLabel;
|
|
lblServerImplementationUnitName: TLabel;
|
|
lblServerHandlerUnitName: TLabel;
|
|
lblClientServiceInterfaceUnit: TLabel;
|
|
lblClientServiceImplementationUnit: TLabel;
|
|
lblClientServiceParentClass: TLabel;
|
|
lblClientServiceParentUnit: TLabel;
|
|
lblDtoUnitName: TLabel;
|
|
lblSerializeUnit: TLabel;
|
|
lblServiceNameSuffix: TLabel;
|
|
lblUnitNameExtension: TLabel;
|
|
lblOpenAPIFile : TLabel;
|
|
edtFile : TFileNameEdit;
|
|
lblUnitSuffix: TLabel;
|
|
lblUUIDMap1: TLabel;
|
|
PCSettings: TPageControl;
|
|
TSServiceMap: TTabSheet;
|
|
TSUUIDMap: TTabSheet;
|
|
TSData: TTabSheet;
|
|
TSGeneral: TTabSheet;
|
|
TSClient: TTabSheet;
|
|
TSServer: TTabSheet;
|
|
VLEUUIDMap: TValueListEditor;
|
|
VLEServiceMap: TValueListEditor;
|
|
procedure btnLoadUUIDMap1Click(Sender: TObject);
|
|
procedure btnLoadUUIDMapClick(Sender: TObject);
|
|
procedure HandleAbstract(Sender: TObject);
|
|
procedure HandleSyncCheck(Sender: TObject);
|
|
private
|
|
FGenerator: TOpenAPICodeGen;
|
|
procedure CheckAbstract;
|
|
procedure CheckAsync;
|
|
function GetAddToProject: Boolean;
|
|
function GetOpenAPIFileName: String;
|
|
function GetOpenGeneratedFiles: Boolean;
|
|
procedure LoadFileToEditor(aEditor: TValueListEditor; const aFilename, aDescription: String);
|
|
procedure SetAddToProject(AValue: Boolean);
|
|
procedure SetOpenAPIFileName(AValue: String);
|
|
procedure SetOpenGeneratedFiles(AValue: Boolean);
|
|
public
|
|
procedure InitFileNameEdits(Const aBaseDir : string);
|
|
Procedure SaveSettings;
|
|
procedure ShowSettings;
|
|
function Modified : Boolean;
|
|
Property OpenAPIFileName : String Read GetOpenAPIFileName Write SetOpenAPIFileName;
|
|
Property OpenGeneratedFiles : Boolean Read GetOpenGeneratedFiles Write SetOpenGeneratedFiles;
|
|
Property AddFilesToProject : Boolean Read GetAddToProject Write SetAddToProject;
|
|
Property Generator : TOpenAPICodeGen Read FGenerator Write FGenerator;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TGeneratorSettingsFrame }
|
|
|
|
|
|
procedure TGeneratorSettingsFrame.ShowSettings;
|
|
|
|
begin
|
|
With Generator do
|
|
begin
|
|
cbGenServer.Checked:=GenerateServer;
|
|
cbGenClient.Checked:=GenerateClient;
|
|
CBAbstractCalls.Checked:=AbstractServiceCalls;
|
|
CBSkipImplementation.Checked:=SkipServerServiceImplementationModule;
|
|
CBAsyncService.Checked:=AsyncService;
|
|
CheckAsync;
|
|
CBDelphiCode.checked:=DelphiCode;
|
|
CBVerboseHeader.Checked:=VerboseHeader;
|
|
cbCancelRequest.Checked:=not ParentHasCancelRequest;
|
|
CBEnums.Checked:=UseEnums;
|
|
edtClientServiceImplementationUnit.Text:=ClientServiceImplementationUnit;
|
|
edtClientServiceInterfaceUnit.Text:=ClientServiceInterfaceUnit;
|
|
edtClientServiceParentClass.Text:=ClientServiceParentClass;
|
|
edtClientServiceParentUnit.Text:=ClientServiceParentUnit;
|
|
edtServerHandlerUnitName.Text:=ServerServiceInterfaceUnit;
|
|
edtServerImplementationUnitName.Text:=ServerServiceImplementationUnit;
|
|
edtServerServiceParentClass.Text:=ServerServiceParentClass;
|
|
edtServerServiceParentUnit.Text:=ServerServiceParentUnit;
|
|
edtServiceNameSuffix.Text:=ServiceNameSuffix;
|
|
edtServiceNamePrefix.Text:=ServiceNamePrefix;
|
|
edtSerializeUnit.Text:=SerializeUnit;
|
|
edtDtoUnit.Text:=DtoUnit;
|
|
edtUnitExtension.Text:=UnitExtension;
|
|
edtUnitSuffix.Text:=UnitSuffix;
|
|
end;
|
|
end;
|
|
|
|
function TGeneratorSettingsFrame.Modified: Boolean;
|
|
|
|
begin
|
|
Result:=False;
|
|
With Generator do
|
|
begin
|
|
Result:=Result or (CBAbstractCalls.Checked<>AbstractServiceCalls);
|
|
Result:=Result or (CBSkipImplementation.Checked<>SkipServerServiceImplementationModule);
|
|
Result:=Result or (CBAsyncService.Checked<>AsyncService);
|
|
Result:=Result or (CBDelphiCode.checked<>DelphiCode);
|
|
Result:=Result or (CBVerboseHeader.Checked<>VerboseHeader);
|
|
Result:=Result or (cbCancelRequest.Checked<>not ParentHasCancelRequest);
|
|
Result:=Result or (CBEnums.Checked<>UseEnums);
|
|
Result:=Result or (edtClientServiceImplementationUnit.Text<>ClientServiceImplementationUnit);
|
|
Result:=Result or (edtClientServiceInterfaceUnit.Text<>ClientServiceInterfaceUnit);
|
|
Result:=Result or (edtClientServiceParentClass.Text<>ClientServiceParentClass);
|
|
Result:=Result or (edtClientServiceParentUnit.Text<>ClientServiceParentUnit);
|
|
Result:=Result or (edtServerHandlerUnitName.Text<>ServerServiceInterfaceUnit);
|
|
Result:=Result or (edtServerImplementationUnitName.Text<>ServerServiceImplementationUnit);
|
|
Result:=Result or (edtServerServiceParentClass.Text<>ServerServiceParentClass);
|
|
Result:=Result or (edtServerServiceParentUnit.Text<>ServerServiceParentUnit);
|
|
Result:=Result or (edtServiceNameSuffix.Text<>ServiceNameSuffix);
|
|
Result:=Result or (edtServiceNamePrefix.Text<>ServiceNamePrefix);
|
|
Result:=Result or (edtSerializeUnit.Text<>SerializeUnit);
|
|
Result:=Result or (edtDtoUnit.Text<>DtoUnit);
|
|
Result:=Result or (edtUnitExtension.Text<>UnitExtension);
|
|
Result:=Result or (edtUnitSuffix.Text<>UnitSuffix);
|
|
end;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.CheckAsync;
|
|
|
|
begin
|
|
cbCancelRequest.Enabled:=CBAsyncService.Checked;
|
|
end;
|
|
|
|
function TGeneratorSettingsFrame.GetAddToProject: Boolean;
|
|
begin
|
|
Result:=cbAddToProject.Checked;
|
|
end;
|
|
|
|
function TGeneratorSettingsFrame.GetOpenAPIFileName: String;
|
|
begin
|
|
Result:=edtFile.FileName;
|
|
end;
|
|
|
|
function TGeneratorSettingsFrame.GetOpenGeneratedFiles: Boolean;
|
|
begin
|
|
result:=cbOpenFiles.Checked;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.CheckAbstract;
|
|
|
|
begin
|
|
CBSkipImplementation.Enabled:=CBAbstractCalls.Checked;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.HandleSyncCheck(Sender: TObject);
|
|
begin
|
|
CheckAsync
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.HandleAbstract(Sender: TObject);
|
|
begin
|
|
CheckAbstract;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.LoadFileToEditor(aEditor : TValueListEditor; const aFilename,aDescription : String);
|
|
|
|
begin
|
|
if not FileExists(aFileName) then
|
|
Raise EInOutError.CreateFmt('Cannot load %s: file %s does not exist.',[aDescription,aFileName]);
|
|
aEditor.Strings.LoadFromFile(aFileName);
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.SetAddToProject(AValue: Boolean);
|
|
begin
|
|
cbAddToProject.Checked:=aValue;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.SetOpenAPIFileName(AValue: String);
|
|
begin
|
|
edtFile.FileName:=aValue;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.SetOpenGeneratedFiles(AValue: Boolean);
|
|
begin
|
|
cbOpenFiles.Checked:=aValue;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.InitFileNameEdits(const aBaseDir: string);
|
|
begin
|
|
edtFile.InitialDir:=aBaseDir;
|
|
edtUUIDMap.InitialDir:=aBaseDir;
|
|
edtServiceMapFile.InitialDir:=aBaseDir;
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.btnLoadUUIDMapClick(Sender: TObject);
|
|
begin
|
|
LoadFileToEditor(VLEUUIDMap,edtUUIDMap.FileName,'GUID map');
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.btnLoadUUIDMap1Click(Sender: TObject);
|
|
begin
|
|
LoadFileToEditor(VLEServiceMap,edtServiceMapFile.FileName,'service map');
|
|
end;
|
|
|
|
procedure TGeneratorSettingsFrame.SaveSettings;
|
|
begin
|
|
With Generator do
|
|
begin
|
|
GenerateServer:=cbGenServer.Checked;
|
|
GenerateClient:=cbGenClient.Checked;
|
|
AbstractServiceCalls:=CBAbstractCalls.Checked;
|
|
SkipServerServiceImplementationModule:=CBSkipImplementation.Checked;
|
|
AsyncService:=CBAsyncService.Checked;
|
|
DelphiCode:=CBDelphiCode.checked;
|
|
VerboseHeader:=CBVerboseHeader.Checked;
|
|
ParentHasCancelRequest:=not cbCancelRequest.Checked;
|
|
UseEnums:=CBEnums.Checked;
|
|
ClientServiceImplementationUnit:=edtClientServiceImplementationUnit.Text;
|
|
ClientServiceInterfaceUnit:=edtClientServiceInterfaceUnit.Text;
|
|
ClientServiceParentClass:=edtClientServiceParentClass.Text;
|
|
ClientServiceParentUnit:=edtClientServiceParentUnit.Text;
|
|
ServerServiceInterfaceUnit:=edtServerHandlerUnitName.Text;
|
|
ServerServiceImplementationUnit:=edtServerImplementationUnitName.Text;
|
|
ServerServiceParentClass:=edtServerServiceParentClass.Text;
|
|
ServerServiceParentUnit:=edtServerServiceParentUnit.Text;
|
|
ServiceNameSuffix:=edtServiceNameSuffix.Text;
|
|
ServiceNamePrefix:=edtServiceNamePrefix.Text;
|
|
SerializeUnit:=edtSerializeUnit.Text;
|
|
DtoUnit:=edtDtoUnit.Text;
|
|
UnitExtension:=edtUnitExtension.Text;
|
|
UnitSuffix:=edtUnitSuffix.Text;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|