mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-07 23:57:33 +01:00
185 lines
5.6 KiB
ObjectPascal
185 lines
5.6 KiB
ObjectPascal
{ $Id: cocoawsforms.pp 12783 2007-11-08 11:45:39Z tombo $}
|
|
{
|
|
*****************************************************************************
|
|
* CocoaWSForms.pp *
|
|
* ------------ *
|
|
* *
|
|
* *
|
|
*****************************************************************************
|
|
|
|
*****************************************************************************
|
|
* *
|
|
* This file is part of the Lazarus Component Library (LCL) *
|
|
* *
|
|
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
|
|
* for details about the copyright. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
* *
|
|
*****************************************************************************
|
|
}
|
|
unit CocoaWSForms;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
// Libs
|
|
{$ifdef ver2_2_0}
|
|
FPCMacOSAll,
|
|
{$else}
|
|
MacOSAll,
|
|
{$endif}
|
|
foundation, appkit,
|
|
// LCL
|
|
Controls, Forms, Graphics, LCLType, LMessages, LCLProc, Classes,
|
|
// Widgetset
|
|
WSForms, WSLCLClasses, WSProc,
|
|
// LCL Cocoa
|
|
CocoaPrivate;
|
|
|
|
type
|
|
|
|
{ TCocoaWSScrollingWinControl }
|
|
|
|
TCocoaWSScrollingWinControl = class(TWSScrollingWinControl)
|
|
private
|
|
protected
|
|
public
|
|
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
// class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override;
|
|
end;
|
|
|
|
{ TCocoaWSScrollBox }
|
|
|
|
TCocoaWSScrollBox = class(TWSScrollBox)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCocoaWSCustomFrame }
|
|
|
|
TCocoaWSCustomFrame = class(TWSCustomFrame)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCocoaWSFrame }
|
|
|
|
TCocoaWSFrame = class(TWSFrame)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCocoaWSCustomForm }
|
|
TCocoaWSCustomFormClass = class of TCocoaWSCustomForm;
|
|
TCocoaWSCustomForm = class(TWSCustomForm)
|
|
private
|
|
protected
|
|
public
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
|
|
class procedure ShowHide(const AWinControl: TWinControl); override; //TODO: rename to SetVisible(control, visible)
|
|
|
|
// class procedure CloseModal(const ACustomForm: TCustomForm); override;
|
|
// class procedure ShowModal(const ACustomForm: TCustomForm); override;
|
|
|
|
// class procedure SetBorderIcons(const AForm: TCustomForm; const ABorderIcons: TBorderIcons); override;
|
|
// class procedure SetFormBorderStyle(const AForm: TCustomForm; const AFormBorderStyle: TFormBorderStyle); override;
|
|
end;
|
|
|
|
{ TCocoaWSForm }
|
|
|
|
TCocoaWSForm = class(TWSForm)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCocoaWSHintWindow }
|
|
|
|
TCocoaWSHintWindow = class(TWSHintWindow)
|
|
private
|
|
protected
|
|
public
|
|
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
{ TCocoaWSScreen }
|
|
|
|
TCocoaWSScreen = class(TWSScreen)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCocoaWSApplicationProperties }
|
|
|
|
TCocoaWSApplicationProperties = class(TWSApplicationProperties)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{ TCocoaWSCustomForm }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCocoaWSCustomForm.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 TCocoaWSCustomForm.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
CocoaForm: TCocoaForm;
|
|
begin
|
|
CocoaForm := TCocoaForm.Create(AWinControl, AParams);
|
|
|
|
Result := TLCLIntfHandle(CocoaForm);
|
|
end;
|
|
|
|
class procedure TCocoaWSCustomForm.ShowHide(const AWinControl: TWinControl);
|
|
var
|
|
ACustomForm: TCustomForm absolute AWinControl;
|
|
CocoaForm: TCocoaForm;
|
|
begin
|
|
CocoaForm := TCocoaForm(ACustomForm.Handle);
|
|
|
|
if AWinControl.Visible then
|
|
CocoaForm.MainWindow.orderFrontRegardless()
|
|
else CocoaForm.MainWindow.orderOut(nil);
|
|
end;
|
|
|
|
initialization
|
|
|
|
////////////////////////////////////////////////////
|
|
// I M P O R T A N T
|
|
////////////////////////////////////////////////////
|
|
// To improve speed, register only classes
|
|
// which actually implement something
|
|
////////////////////////////////////////////////////
|
|
// RegisterWSComponent(TScrollingWinControl, TCocoaWSScrollingWinControl);
|
|
// RegisterWSComponent(TScrollBox, TCocoaWSScrollBox);
|
|
// RegisterWSComponent(TCustomFrame, TCocoaWSCustomFrame);
|
|
// RegisterWSComponent(TFrame, TCocoaWSFrame);
|
|
RegisterWSComponent(TCustomForm, TCocoaWSCustomForm);
|
|
// RegisterWSComponent(TForm, TCocoaWSForm);
|
|
// RegisterWSComponent(THintWindow, TCocoaWSHintWindow);
|
|
// RegisterWSComponent(TScreen, TCocoaWSScreen);
|
|
// RegisterWSComponent(TApplicationProperties, TCocoaWSApplicationProperties);
|
|
////////////////////////////////////////////////////
|
|
|
|
end.
|