lazarus/lcl/interfaces/cocoa/cocoawsforms.pp
2008-07-22 09:48:15 +00:00

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.