Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions Source/fmx/WrapFmxComCtrls.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
unit WrapFmxComCtrls;

interface

uses
FMX.Controls.Presentation, FMX.MultiView, FMX.TabControl, WrapFmxControls;

type
TPyDelphiTabControl = class(TPyDelphiStyledControl)
private
function GetDelphiObject: TTabControl;
procedure SetDelphiObject(const Value: TTabControl);
public
class function DelphiObjectClass: TClass; override;
// Properties
property DelphiObject: TTabControl read GetDelphiObject write SetDelphiObject;
end;

TPyDelphiCustomMultiView = class(TPyDelphiPresentedControl)
private
function GetDelphiObject: TCustomMultiView;
procedure SetDelphiObject(const Value: TCustomMultiView);
public
class function DelphiObjectClass: TClass; override;
// Properties
property DelphiObject: TCustomMultiView read GetDelphiObject write SetDelphiObject;
end;

TPyDelphiMultiView = class(TPyDelphiCustomMultiView)
private
function GetDelphiObject: TMultiView;
procedure SetDelphiObject(const Value: TMultiView);
public
class function DelphiObjectClass: TClass; override;
// Properties
property DelphiObject: TMultiView read GetDelphiObject write SetDelphiObject;
end;

implementation

uses
WrapDelphi;

{ Register the wrappers, the globals and the constants }
type
TComCtrlsRegistration = class(TRegisteredUnit)
public
function Name: string; override;
procedure RegisterWrappers(APyDelphiWrapper: TPyDelphiWrapper); override;
procedure DefineVars(APyDelphiWrapper: TPyDelphiWrapper); override;
end;

{ TComCtrlsRegistration }

procedure TComCtrlsRegistration.DefineVars(APyDelphiWrapper: TPyDelphiWrapper);
begin
inherited;
end;

function TComCtrlsRegistration.Name: string;
begin
Result := 'ComCtrls';
end;

procedure TComCtrlsRegistration.RegisterWrappers(
APyDelphiWrapper: TPyDelphiWrapper);
begin
inherited;
APyDelphiWrapper.RegisterDelphiWrapper(TPyDelphiTabControl);
APyDelphiWrapper.RegisterDelphiWrapper(TPyDelphiCustomMultiView);
APyDelphiWrapper.RegisterDelphiWrapper(TPyDelphiMultiView);
end;

{ TPyDelphiTabControl }

class function TPyDelphiTabControl.DelphiObjectClass: TClass;
begin
Result := TTabControl;
end;

function TPyDelphiTabControl.GetDelphiObject: TTabControl;
begin
Result := TTabControl(inherited DelphiObject);
end;

procedure TPyDelphiTabControl.SetDelphiObject(const Value: TTabControl);
begin
inherited DelphiObject := Value;
end;

{ TPyDelphiCustomMultiView }

class function TPyDelphiCustomMultiView.DelphiObjectClass: TClass;
begin
Result := TCustomMultiView;
end;

function TPyDelphiCustomMultiView.GetDelphiObject: TCustomMultiView;
begin
Result := TCustomMultiView(inherited DelphiObject);
end;

procedure TPyDelphiCustomMultiView.SetDelphiObject(
const Value: TCustomMultiView);
begin
inherited DelphiObject := Value;
end;

{ TPyDelphiMultiView }

class function TPyDelphiMultiView.DelphiObjectClass: TClass;
begin
Result := TMultiView;
end;

function TPyDelphiMultiView.GetDelphiObject: TMultiView;
begin
Result := TMultiView(inherited DelphiObject);
end;

procedure TPyDelphiMultiView.SetDelphiObject(const Value: TMultiView);
begin
inherited DelphiObject := Value;
end;

initialization
RegisteredUnits.Add( TComCtrlsRegistration.Create );

end.
114 changes: 114 additions & 0 deletions Source/fmx/WrapFmxDialogs.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
unit WrapFmxDialogs;

interface

uses
FMX.Dialogs, WrapFmxTypes, PythonEngine;


type
TPyDelphiOpenDialog = class(TPyDelphiFmxObject)
private
function GetDelphiObject: TOpenDialog;
procedure SetDelphiObject(const Value: TOpenDialog);
protected
// Exposed Methods
function Execute_Wrapper(args: PPyObject): PPyObject; cdecl;
// Property Getters
function Get_filename(AContext: Pointer): PPyObject; cdecl;
public
class function DelphiObjectClass: TClass; override;
class procedure RegisterGetSets(PythonType: TPythonType); override;
class procedure RegisterMethods( PythonType : TPythonType ); override;
// Properties
property DelphiObject: TOpenDialog read GetDelphiObject
write SetDelphiObject;
end;

implementation

uses
WrapDelphi;

{ Register the wrappers, the globals and the constants }
type
TDialogRegistration = class(TRegisteredUnit)
public
function Name: string; override;
procedure RegisterWrappers(APyDelphiWrapper: TPyDelphiWrapper); override;
procedure DefineVars(APyDelphiWrapper: TPyDelphiWrapper); override;
end;

{ TDialogRegistration }

procedure TDialogRegistration.DefineVars(APyDelphiWrapper: TPyDelphiWrapper);
begin
inherited;
end;

function TDialogRegistration.Name: string;
begin
Result := 'Dialog';
end;

procedure TDialogRegistration.RegisterWrappers(
APyDelphiWrapper: TPyDelphiWrapper);
begin
inherited;
APyDelphiWrapper.RegisterDelphiWrapper(TPyDelphiOpenDialog);
end;

{ TPyDelphiOpenDialog }

class function TPyDelphiOpenDialog.DelphiObjectClass: TClass;
begin
Result := TOpenDialog;
end;

function TPyDelphiOpenDialog.Execute_Wrapper(args: PPyObject): PPyObject;
begin
// We adjust the transmitted self argument
Adjust(@Self);
with GetPythonEngine do begin
if PyArg_ParseTuple( args, ':Execute') <> 0 then
Result := VariantAsPyObject(DelphiObject.Execute())
else
Result := nil;
end;
end;

function TPyDelphiOpenDialog.GetDelphiObject: TOpenDialog;
begin
Result := TOpenDialog(inherited DelphiObject);
end;

function TPyDelphiOpenDialog.Get_filename(AContext: Pointer): PPyObject;
begin
Adjust(@self);
Result := GetPythonEngine.VariantAsPyObject(DelphiObject.FileName);
end;

class procedure TPyDelphiOpenDialog.RegisterGetSets(PythonType: TPythonType);
begin
inherited;
PythonType.AddGetSet('FileName', @TPyDelphiOpenDialog.Get_filename,
nil, '', nil);
end;

class procedure TPyDelphiOpenDialog.RegisterMethods(PythonType: TPythonType);
begin
inherited;
PythonType.AddMethod('Execute', @TPyDelphiOpenDialog.Execute_Wrapper,
'TOpenDialog.Execute()'#10 +
'Displays the dialog');
end;

procedure TPyDelphiOpenDialog.SetDelphiObject(const Value: TOpenDialog);
begin
inherited DelphiObject := Value;
end;

initialization
RegisteredUnits.Add(TDialogRegistration.Create);

end.
Loading