mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-03 00:58:17 +02:00
387 lines
12 KiB
ObjectPascal
387 lines
12 KiB
ObjectPascal
{ $Id$}
|
|
{
|
|
*****************************************************************************
|
|
* CarbonWSExtCtrls.pp *
|
|
* ------------------- *
|
|
* *
|
|
* *
|
|
*****************************************************************************
|
|
|
|
*****************************************************************************
|
|
* *
|
|
* This file is part of the Lazarus Component Library (LCL) *
|
|
* *
|
|
* See the file COPYING.modifiedLGPL, 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 CarbonWSExtCtrls;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
// debugging defines
|
|
{$I carbondebug.inc}
|
|
|
|
uses
|
|
// libs
|
|
FPCMacOSAll,
|
|
// LCL
|
|
Classes, Controls, ExtCtrls, LCLType, LCLProc, Graphics, Math,
|
|
// widgetset
|
|
WSExtCtrls, WSLCLClasses, WSControls, WSProc,
|
|
// LCL Carbon
|
|
CarbonWSControls;
|
|
|
|
type
|
|
|
|
{ TCarbonWSCustomPage }
|
|
|
|
TCarbonWSCustomPage = class(TWSCustomPage)
|
|
private
|
|
protected
|
|
public
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure UpdateProperties(const ACustomPage: TCustomPage); override;
|
|
end;
|
|
|
|
{ TCarbonWSCustomNotebook }
|
|
|
|
TCarbonWSCustomNotebook = class(TWSCustomNotebook)
|
|
private
|
|
protected
|
|
public
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
|
|
class procedure AddPage(const ANotebook: TCustomNotebook; const AChild: TCustomPage; const AIndex: integer); override;
|
|
class procedure MovePage(const ANotebook: TCustomNotebook; const AChild: TCustomPage; const NewIndex: integer); override;
|
|
class procedure RemovePage(const ANotebook: TCustomNotebook; const AIndex: integer); override;
|
|
|
|
//class function GetNotebookMinTabHeight(const AWinControl: TWinControl): integer; override;
|
|
//class function GetNotebookMinTabWidth(const AWinControl: TWinControl): integer; override;
|
|
//class function GetPageRealIndex(const ANotebook: TCustomNotebook; AIndex: Integer): Integer; override;
|
|
//class function GetTabIndexAtPos(const ANotebook: TCustomNotebook; const AClientPos: TPoint): integer; override;
|
|
class procedure SetPageIndex(const ANotebook: TCustomNotebook; const AIndex: integer); override;
|
|
class procedure SetTabPosition(const ANotebook: TCustomNotebook; const ATabPosition: TTabPosition); override;
|
|
class procedure ShowTabs(const ANotebook: TCustomNotebook; AShowTabs: boolean); override;
|
|
end;
|
|
|
|
{ TCarbonWSPage }
|
|
|
|
TCarbonWSPage = class(TWSPage)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSNotebook }
|
|
|
|
TCarbonWSNotebook = class(TWSNotebook)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSShape }
|
|
|
|
TCarbonWSShape = class(TWSShape)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomSplitter }
|
|
|
|
TCarbonWSCustomSplitter = class(TWSCustomSplitter)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSSplitter }
|
|
|
|
TCarbonWSSplitter = class(TWSSplitter)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSPaintBox }
|
|
|
|
TCarbonWSPaintBox = class(TWSPaintBox)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomImage }
|
|
|
|
TCarbonWSCustomImage = class(TWSCustomImage)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSImage }
|
|
|
|
TCarbonWSImage = class(TWSImage)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSBevel }
|
|
|
|
TCarbonWSBevel = class(TWSBevel)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomRadioGroup }
|
|
|
|
TCarbonWSCustomRadioGroup = class(TWSCustomRadioGroup)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSRadioGroup }
|
|
|
|
TCarbonWSRadioGroup = class(TWSRadioGroup)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomCheckGroup }
|
|
|
|
TCarbonWSCustomCheckGroup = class(TWSCustomCheckGroup)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCheckGroup }
|
|
|
|
TCarbonWSCheckGroup = class(TWSCheckGroup)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomLabeledEdit }
|
|
|
|
TCarbonWSCustomLabeledEdit = class(TWSCustomLabeledEdit)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSLabeledEdit }
|
|
|
|
TCarbonWSLabeledEdit = class(TWSLabeledEdit)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSCustomPanel }
|
|
|
|
TCarbonWSCustomPanel = class(TWSCustomPanel)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
{ TCarbonWSPanel }
|
|
|
|
TCarbonWSPanel = class(TWSPanel)
|
|
private
|
|
protected
|
|
public
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
CarbonProc, CarbonDef, CarbonTabs, CarbonCanvas;
|
|
|
|
{ TCarbonWSCustomPage }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomPage.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new custom page in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSCustomPage.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonTab.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomPage.UpdateProperties
|
|
Params: ACustomPage - LCL custom page
|
|
|
|
Update properties of the specified custom page in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomPage.UpdateProperties(const ACustomPage: TCustomPage);
|
|
begin
|
|
if not CheckHandle(ACustomPage, Self, 'UpdateProperties') then Exit;
|
|
|
|
TCarbonTab(ACustomPage.Handle).UpdateTab;
|
|
end;
|
|
|
|
{ TCarbonWSCustomNotebook }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new custom notebook in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSCustomNotebook.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonTabsControl.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.AddPage
|
|
Params: ANotebook - LCL custom notebook
|
|
AChild - New tab
|
|
AIndex - New tab index
|
|
|
|
Adds tab with the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.AddPage(const ANotebook: TCustomNotebook;
|
|
const AChild: TCustomPage; const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'AddPage') then Exit;
|
|
if not CheckHandle(AChild, Self, 'AddPage AChild') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).Add(TCarbonTab(AChild.Handle), AIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.MovePage
|
|
Params: ANotebook - LCL custom notebook
|
|
AChild - Moved tab
|
|
AIndex - New tab index
|
|
|
|
Moves tab to the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.MovePage(const ANotebook: TCustomNotebook;
|
|
const AChild: TCustomPage; const NewIndex: integer);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'MovePage') then Exit;
|
|
if not CheckHandle(AChild, Self, 'MovePage AChild') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).Remove(AChild.PageIndex);
|
|
TCarbonTabsControl(ANotebook.Handle).Add(TCarbonTab(AChild.Handle), NewIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.RemovePage
|
|
Params: ANotebook - LCL custom notebook
|
|
AIndex - Removed tab index
|
|
|
|
Removes tab with the specified index from notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.RemovePage(const ANotebook: TCustomNotebook;
|
|
const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'RemovePage') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).Remove(AIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.SetPageIndex
|
|
Params: ANotebook - LCL custom notebook
|
|
AIndex - New tab index
|
|
|
|
Selects tab with the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.SetPageIndex(const ANotebook: TCustomNotebook;
|
|
const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'SetPageIndex') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).SetPageIndex(AIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.SetTabPosition
|
|
Params: ANotebook - LCL custom notebook
|
|
ATabPosition - New position of tabs
|
|
|
|
Changes position of the tabs of notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.SetTabPosition(const ANotebook: TCustomNotebook;
|
|
const ATabPosition: TTabPosition);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'SetTabPosition') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).SetTabPosition(ATabPosition);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.ShowTabs
|
|
Params: ANotebook - LCL custom notebook
|
|
AShowTabs - Tabs visibility
|
|
|
|
Changes visibility of all tabs of notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.ShowTabs(const ANotebook: TCustomNotebook;
|
|
AShowTabs: boolean);
|
|
begin
|
|
if not CheckHandle(ANotebook, Self, 'ShowTabs') then Exit;
|
|
|
|
TCarbonTabsControl(ANotebook.Handle).ShowTabs(AShowTabs);
|
|
end;
|
|
|
|
initialization
|
|
|
|
////////////////////////////////////////////////////
|
|
// I M P O R T A N T
|
|
////////////////////////////////////////////////////
|
|
// To improve speed, register only classes
|
|
// which actually implement something
|
|
////////////////////////////////////////////////////
|
|
RegisterWSComponent(TCustomPage, TCarbonWSCustomPage);
|
|
RegisterWSComponent(TCustomNotebook, TCarbonWSCustomNotebook);
|
|
// RegisterWSComponent(TPage, TCarbonWSPage);
|
|
// RegisterWSComponent(TNotebook, TCarbonWSNotebook);
|
|
// RegisterWSComponent(TShape, TCarbonWSShape);
|
|
// RegisterWSComponent(TCustomSplitter, TCarbonWSCustomSplitter);
|
|
// RegisterWSComponent(TSplitter, TCarbonWSSplitter);
|
|
// RegisterWSComponent(TPaintBox, TCarbonWSPaintBox);
|
|
// RegisterWSComponent(TCustomImage, TCarbonWSCustomImage);
|
|
// RegisterWSComponent(TImage, TCarbonWSImage);
|
|
// RegisterWSComponent(TBevel, TCarbonWSBevel);
|
|
// RegisterWSComponent(TCustomRadioGroup, TCarbonWSCustomRadioGroup);
|
|
// RegisterWSComponent(TRadioGroup, TCarbonWSRadioGroup);
|
|
// RegisterWSComponent(TCustomCheckGroup, TCarbonWSCustomCheckGroup);
|
|
// RegisterWSComponent(TCheckGroup, TCarbonWSCheckGroup);
|
|
// RegisterWSComponent(TBoundLabel, TCarbonWSBoundLabel);
|
|
// RegisterWSComponent(TCustomLabeledEdit, TCarbonWSCustomLabeledEdit);
|
|
// RegisterWSComponent(TLabeledEdit, TCarbonWSLabeledEdit);
|
|
// RegisterWSComponent(TCustomPanel, TCarbonWSCustomPanel);
|
|
// RegisterWSComponent(TPanel, TCarbonWSPanel);
|
|
////////////////////////////////////////////////////
|
|
end.
|