Difference between revisions of "Carbon interface internals"

From Free Pascal wiki
Jump to navigationJump to search
Line 21: Line 21:
 
For example TButton.
 
For example TButton.
  
TButton is defined in lcl/buttons.pp
+
TButton is defined in lcl/buttons.pp. This is the platform independent part of the LCL, that is shown to the user.
  
And its widgetset class in lcl/widgetset/wsbuttons.pp
+
And its widgetset class in lcl/widgetset/wsbuttons.pp. This is the platform independent base for all widgetsets (carbon, gtk, win32, ...).
  
Its carbon interface class in lcl/interfaces/carbon/carbonwsbuttons.pp
+
Its carbon interface class in lcl/interfaces/carbon/carbonwsbuttons.pp:
 +
 
 +
  TCarbonWSButton = class(TWSButton)
 +
  private
 +
  protected
 +
  public
 +
    class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
 +
  end;
  
 
== Keys ==
 
== Keys ==

Revision as of 20:41, 14 January 2006

This page gives an overview of the LCL carbon interface for MacOSX and will help new developers.

For installation and creating a first carbon application read first Carbon Interface.

What is already working ?

  • Creating a TForm
  • Creating and clicking on a TButton
  • Creating TOpenGLControl with AGL context (see components/opengl/)
  • Mouse events

What needs to be done next

  • Create more controls (TLabel, TEdit, TCheckBox, TGroupBox)
  • Keyboard events (KeyDown, KeyUp, Char)
  • Resize events (when form has been resized by user)
  • ShowModal (for dialogs)

How to add a new control

For example TButton.

TButton is defined in lcl/buttons.pp. This is the platform independent part of the LCL, that is shown to the user.

And its widgetset class in lcl/widgetset/wsbuttons.pp. This is the platform independent base for all widgetsets (carbon, gtk, win32, ...).

Its carbon interface class in lcl/interfaces/carbon/carbonwsbuttons.pp:

 TCarbonWSButton = class(TWSButton)
 private
 protected
 public
   class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
 end;

Keys

  • Apple Command key is mapped to ssCtrl due to Apple Guidelines
  • Apple control key is mapped to ssMeta
  • Apple option key is mapped to its inscription, i.e. ssAlt