mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-29 02:23:42 +02:00
181 lines
5.5 KiB
PHP
181 lines
5.5 KiB
PHP
{$MainUnit customdrawnwsforms.pp}
|
|
|
|
{ TCDWSCustomForm }
|
|
|
|
class function TCDWSCustomForm.DoCreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
win : TCocoaForm;
|
|
winhandle: TCocoaWindow;
|
|
cnt : TCocoaCustomControl;
|
|
ns : NSString;
|
|
lRect: NSRect;
|
|
begin
|
|
win := TCocoaForm(TCocoaForm.alloc);
|
|
|
|
if not Assigned(win) then
|
|
begin
|
|
Result:=0;
|
|
Exit;
|
|
end;
|
|
|
|
winhandle := TCocoaWindow.Create;
|
|
winhandle.LCLForm := TCustomForm(AWinControl);
|
|
|
|
if Application.ApplicationType = atMobileEmulator then lRect := GetNSRect(200, 200, 240, 320)
|
|
// else ToDo: for atPDA make it fullscreen
|
|
else lRect := CreateParamsToNSRect(AParams);
|
|
win:=TCocoaForm(win.initWithContentRect_styleMask_backing_defer(
|
|
lRect, CalcNSWindowStyle(AWinControl, AParams), NSBackingStoreBuffered, False));
|
|
win.WindowHandle := winhandle;
|
|
win.setDelegate(win);
|
|
ns:=NSStringUtf8(AWinControl.Caption);
|
|
win.setTitle(ns);
|
|
ns.release;
|
|
win.setAcceptsMouseMovedEvents(True);
|
|
|
|
cnt:=TCocoaCustomControl.alloc.init;
|
|
cnt.WindowHandle := winhandle;
|
|
win.setContentView(cnt);
|
|
|
|
winhandle.CocoaForm := win;
|
|
winhandle.ClientArea := cnt;
|
|
Result := TLCLIntfHandle(winhandle);
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.DoShowHide(const AWinControl: TWinControl);
|
|
var
|
|
win: TCocoaWindow;
|
|
begin
|
|
win := TCocoaWindow(AWinControl.Handle);
|
|
if not Assigned(win) then Exit;
|
|
|
|
if AWinControl.Visible then
|
|
win.CocoaForm.orderFrontRegardless
|
|
else
|
|
win.CocoaForm.orderOut(nil);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCDWSCustomForm.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the window in Cocoa interface
|
|
|
|
Creates new window in Cocoa interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCDWSCustomForm.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
if LCLIntf.IsMobilePlatform() then
|
|
begin
|
|
Result := TLCLIntfhandle(AddNewForm(TCustomForm(AWinControl)));
|
|
if AWinControl = Application.MainForm then
|
|
CDWidgetset.MobileMainForm := DoCreateHandle(AWinControl, AParams);
|
|
end
|
|
else
|
|
Result := DoCreateHandle(AWinControl, AParams);
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.DestroyHandle(const AWinControl: TWinControl);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetBounds(const AWinControl: TWinControl;
|
|
const ALeft, ATop, AWidth, AHeight: Integer);
|
|
begin
|
|
if AWinControl.Handle=0 then Exit;
|
|
{todo: setFrame_display(, true)? }
|
|
//sf:=NSScreen.mainScreen.frame;
|
|
TCocoaWindow(AWinControl.Handle).CocoaForm.lclSetClientFrame(Bounds(ALeft, ATop, AWidth, AHeight));
|
|
|
|
//LCLToCocoaRect( GetNSRect(ALeft,ATop,AWidth,AHeight), sf, wf);
|
|
//NSWindow(AWinControl.Handle).setFrame_display(wf, false);
|
|
//NSWindow(AWinControl.Handle).setFrame_display( GetNSRect(ALeft,ATop, AWidth, AHeight), false);
|
|
//NSWindow(AWinControl.Handle).setFrameTopLeftPoint( GetNSPoint(ALeft, ATop));
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetBorderIcons(const AForm: TCustomForm;
|
|
const ABorderIcons: TBorderIcons);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetFormBorderStyle(const AForm: TCustomForm;
|
|
const AFormBorderStyle: TFormBorderStyle);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetIcon(const AForm: TCustomForm; const Small, Big: HICON);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.ShowModal(const ACustomForm: TCustomForm);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.ShowHide(const AWinControl: TWinControl);
|
|
begin
|
|
DoShowHide(AWinControl);
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetText(const AWinControl: TWinControl; var AText: String): Boolean;
|
|
var
|
|
win : TCocoaWindow;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
Result:=Assigned(win);
|
|
if not Result then Exit;
|
|
AText:=NSStringToString(win.CocoaForm.title);
|
|
Result:=true;
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean;
|
|
var
|
|
win : TCocoaWindow;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
Result:=Assigned(win);
|
|
if not Result then Exit;
|
|
ALength:=win.CocoaForm.title.length;
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetText(const AWinControl: TWinControl; const AText: String);
|
|
var
|
|
win : TCocoaWindow;
|
|
ns : NSString;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
if not Assigned(win) then Exit;
|
|
ns:=NSStringUtf8(AText);
|
|
win.CocoaForm.setTitle(ns);
|
|
ns.release;
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetClientBounds(const AWinControl: TWinControl; var ARect: TRect): Boolean;
|
|
begin
|
|
Result:=AWinControl.Handle<>0;
|
|
if not Result then Exit;
|
|
ARect:= TCocoaWindow(AWinControl.Handle).CocoaForm.lclClientFrame;
|
|
//WriteLn(Format('[TCDWSCustomForm.GetClientBounds x=%d y=%d w=%d h=%d',
|
|
// [ARect.Left, ARect.Top, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top]));
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetClientRect(const AWinControl: TWinControl; var ARect: TRect): Boolean;
|
|
var
|
|
x,y : Integer;
|
|
begin
|
|
Result:=AWinControl.Handle<>0;
|
|
if not Result then Exit;
|
|
ARect:= TCocoaWindow(AWinControl.Handle).CocoaForm.lclClientFrame;
|
|
x:=0;y:=0;
|
|
TCocoaWindow(AWinControl.Handle).CocoaForm.lclLocalToScreen(x,y);
|
|
MoveRect(ARect, x,y);
|
|
//WriteLn(Format('[TCDWSCustomForm.GetClientRect x=%d y=%d w=%d h=%d',
|
|
// [ARect.Left, ARect.Top, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top]));
|
|
end;
|
|
|