mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-18 02:02:37 +02:00
1102 lines
39 KiB
ObjectPascal
1102 lines
39 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
* Gtk3WSStdCtrls.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 license.
|
|
*****************************************************************************
|
|
}
|
|
unit Gtk3WSStdCtrls;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$I gtk3defines.inc}
|
|
|
|
interface
|
|
////////////////////////////////////////////////////
|
|
// I M P O R T A N T
|
|
////////////////////////////////////////////////////
|
|
// 1) Only class methods allowed
|
|
// 2) Class methods have to be published and virtual
|
|
// 3) To get as little as posible circles, the uses
|
|
// clause should contain only those LCL units
|
|
// needed for registration. WSxxx units are OK
|
|
// 4) To improve speed, register only classes in the
|
|
// initialization section which actually
|
|
// implement something
|
|
// 5) To enable your XXX widgetset units, look at
|
|
// the uses clause of the XXXintf.pp
|
|
////////////////////////////////////////////////////
|
|
uses
|
|
////////////////////////////////////////////////////
|
|
// To get as little as posible circles,
|
|
// uncomment only when needed for registration
|
|
////////////////////////////////////////////////////
|
|
Graphics, Controls, StdCtrls, LCLType, LCLProc,
|
|
////////////////////////////////////////////////////
|
|
WSLCLClasses, WSControls, WSStdCtrls, WSProc, Classes, WSFactory, Clipbrd,
|
|
gtk3widgets, gtk3procs, LazGdk3;
|
|
|
|
type
|
|
{ TGtk3WSScrollBar }
|
|
|
|
TGtk3WSScrollBar = class(TWSScrollBar)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure SetParams(const AScrollBar: TCustomScrollBar); override;
|
|
class procedure SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); override;
|
|
end;
|
|
TGtk3WSScrollBarClass = class of TGtk3WSScrollBar;
|
|
|
|
{ TGtk3WSCustomGroupBox }
|
|
|
|
TGtk3WSCustomGroupBox = class(TWSCustomGroupBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
end;
|
|
|
|
{ TGtk3WSGroupBox }
|
|
|
|
TGtk3WSGroupBox = class(TGtk3WSCustomGroupBox)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSCustomComboBox }
|
|
|
|
TGtk3WSCustomComboBox = class(TWSCustomComboBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
|
|
class function GetDroppedDown(const ACustomComboBox: TCustomComboBox): Boolean; override;
|
|
class function GetSelStart(const ACustomComboBox: TCustomComboBox): integer; override;
|
|
class function GetSelLength(const ACustomComboBox: TCustomComboBox): integer; override;
|
|
class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; override;
|
|
class function GetMaxLength(const ACustomComboBox: TCustomComboBox): integer; override;
|
|
|
|
class procedure SetArrowKeysTraverseList(const ACustomComboBox: TCustomComboBox;
|
|
NewTraverseList: boolean); override;
|
|
class procedure SetDropDownCount(const ACustomComboBox: TCustomComboBox; NewCount: Integer); override;
|
|
class procedure SetDroppedDown(const ACustomComboBox: TCustomComboBox; ADroppedDown: Boolean); override;
|
|
class procedure SetSelStart(const ACustomComboBox: TCustomComboBox; NewStart: integer); override;
|
|
class procedure SetSelLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
|
|
class procedure SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer); override;
|
|
class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override;
|
|
class procedure SetStyle(const ACustomComboBox: TCustomComboBox; NewStyle: TComboBoxStyle); override;
|
|
|
|
class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; override;
|
|
class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); override;
|
|
|
|
class function GetItemHeight(const ACustomComboBox: TCustomComboBox): Integer; override;
|
|
class procedure SetItemHeight(const ACustomComboBox: TCustomComboBox; const AItemHeight: Integer); override;
|
|
end;
|
|
TGtk3WSCustomComboBoxClass = class of TGtk3WSCustomComboBox;
|
|
|
|
{ TGtk3WSComboBox }
|
|
|
|
TGtk3WSComboBox = class(TGtk3WSCustomComboBox)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSCustomListBox }
|
|
|
|
TGtk3WSCustomListBox = class(TWSCustomListBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class function GetIndexAtXY(const ACustomListBox: TCustomListBox; X, Y: integer): integer; override;
|
|
class function GetItemIndex(const ACustomListBox: TCustomListBox): integer; override;
|
|
class function GetItemRect(const ACustomListBox: TCustomListBox; Index: integer; var ARect: TRect): boolean; override;
|
|
class function GetScrollWidth(const ACustomListBox: TCustomListBox): Integer; override;
|
|
class function GetSelCount(const ACustomListBox: TCustomListBox): integer; override;
|
|
class function GetSelected(const ACustomListBox: TCustomListBox; const AIndex: integer): boolean; override;
|
|
class function GetStrings(const ACustomListBox: TCustomListBox): TStrings; override;
|
|
class procedure FreeStrings(var AStrings: TStrings); override;
|
|
class function GetTopIndex(const ACustomListBox: TCustomListBox): integer; override;
|
|
|
|
class procedure SelectItem(const ACustomListBox: TCustomListBox; AIndex: integer; ASelected: boolean); override;
|
|
|
|
class procedure SetBorder(const ACustomListBox: TCustomListBox); override;
|
|
class procedure SetColumnCount(const ACustomListBox: TCustomListBox; ACount: Integer); override;
|
|
class procedure SetItemIndex(const ACustomListBox: TCustomListBox; const AIndex: integer); override;
|
|
class procedure SetScrollWidth(const ACustomListBox: TCustomListBox; const AScrollWidth: Integer); override;
|
|
class procedure SetSelectionMode(const ACustomListBox: TCustomListBox; const AExtendedSelect,
|
|
AMultiSelect: boolean); override;
|
|
class procedure SetStyle(const ACustomListBox: TCustomListBox); override;
|
|
class procedure SetSorted(const ACustomListBox: TCustomListBox; AList: TStrings; ASorted: boolean); override;
|
|
class procedure SetTopIndex(const ACustomListBox: TCustomListBox; const NewTopIndex: integer); override;
|
|
end;
|
|
TGtk3WSCustomListBoxClass = class of TGtk3WSCustomListBox;
|
|
|
|
{ TWSListBox }
|
|
|
|
TGtk3WSListBox = class(TGtk3WSCustomListBox)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSCustomEdit }
|
|
|
|
TGtk3WSCustomEdit = class(TWSCustomEdit)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
|
|
class function GetCanUndo(const ACustomEdit: TCustomEdit): Boolean; override;
|
|
class function GetCaretPos(const ACustomEdit: TCustomEdit): TPoint; override;
|
|
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
|
|
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
|
|
|
|
class procedure SetAlignment(const ACustomEdit: TCustomEdit; const AAlignment: TAlignment); override;
|
|
class procedure SetCaretPos(const ACustomEdit: TCustomEdit; const NewPos: TPoint); override;
|
|
class procedure SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase); override;
|
|
class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override;
|
|
class procedure SetHideSelection(const ACustomEdit: TCustomEdit; NewHideSelection: Boolean); override;
|
|
class procedure SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
|
|
class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override;
|
|
class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override;
|
|
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
|
|
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
|
|
|
|
class procedure Cut(const ACustomEdit: TCustomEdit); override;
|
|
class procedure Copy(const ACustomEdit: TCustomEdit); override;
|
|
class procedure Paste(const ACustomEdit: TCustomEdit); override;
|
|
class procedure Undo(const ACustomEdit: TCustomEdit); override;
|
|
end;
|
|
TGtk3WSCustomEditClass = class of TGtk3WSCustomEdit;
|
|
|
|
{ TGtk3WSCustomMemo }
|
|
|
|
TGtk3WSCustomMemo = class(TWSCustomMemo)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
|
|
class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override;
|
|
class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); override;
|
|
class procedure SetWantTabs(const ACustomMemo: TCustomMemo; const NewWantTabs: boolean); override;
|
|
class procedure SetWantReturns(const ACustomMemo: TCustomMemo; const NewWantReturns: boolean); override;
|
|
class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); override;
|
|
|
|
class function GetCanUndo(const ACustomEdit: TCustomEdit): Boolean; override;
|
|
class function GetCaretPos(const ACustomEdit: TCustomEdit): TPoint; override;
|
|
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
|
|
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
|
|
|
|
class procedure SetAlignment(const ACustomEdit: TCustomEdit; const AAlignment: TAlignment); override;
|
|
class procedure SetCaretPos(const ACustomEdit: TCustomEdit; const NewPos: TPoint); override;
|
|
class procedure SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase); override;
|
|
class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override;
|
|
class procedure SetHideSelection(const ACustomEdit: TCustomEdit; NewHideSelection: Boolean); override;
|
|
class procedure SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
|
|
class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override;
|
|
class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override;
|
|
class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override;
|
|
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
|
|
|
|
end;
|
|
TGtk3WSCustomMemoClass = class of TGtk3WSCustomMemo;
|
|
|
|
{ TGtk3WSEdit }
|
|
|
|
TGtk3WSEdit = class(TGtk3WSCustomEdit)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSMemo }
|
|
|
|
TGtk3WSMemo = class(TGtk3WSCustomMemo)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSCustomStaticText }
|
|
|
|
TGtk3WSCustomStaticText = class(TWSCustomStaticText)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
class procedure SetAlignment(const ACustomStaticText: TCustomStaticText; const NewAlignment: TAlignment); override;
|
|
class procedure SetStaticBorderStyle(const ACustomStaticText: TCustomStaticText; const NewBorderStyle: TStaticBorderStyle); override;
|
|
end;
|
|
TGtk3WSCustomStaticTextClass = class of TGtk3WSCustomStaticText;
|
|
|
|
{ TGtk3WSStaticText }
|
|
|
|
TGtk3WSStaticText = class(TGtk3WSCustomStaticText)
|
|
published
|
|
end;
|
|
|
|
{ TGtk3WSButtonControl }
|
|
|
|
TGtk3WSButtonControl = class(TWSButtonControl)
|
|
published
|
|
class function GetDefaultColor(const AControl: TControl; const ADefaultColorType: TDefaultColorType): TColor; override;
|
|
end;
|
|
|
|
{ TGtk3WSButton }
|
|
|
|
TGtk3WSButton = class(TWSButton)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
class procedure SetDefault(const AButton: TCustomButton; ADefault: Boolean); override;
|
|
class procedure SetShortCut(const AButton: TCustomButton; const ShortCutK1, ShortCutK2: TShortCut); override;
|
|
end;
|
|
TGtk3WSButtonClass = class of TGtk3WSButton;
|
|
|
|
{ TGtk3WSCustomCheckBox }
|
|
|
|
TGtk3WSCustomCheckBox = class(TWSCustomCheckBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean); override;
|
|
class function RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState; override;
|
|
class procedure SetShortCut(const ACustomCheckBox: TCustomCheckBox; const ShortCutK1, ShortCutK2: TShortCut); override;
|
|
class procedure SetState(const ACustomCheckBox: TCustomCheckBox; const NewState: TCheckBoxState); override;
|
|
end;
|
|
TGtk3WSCustomCheckBoxClass = class of TGtk3WSCustomCheckBox;
|
|
|
|
{ TGtk3WSCheckBox }
|
|
|
|
TGtk3WSCheckBox = class(TGtk3WSCustomCheckBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
{ TWSToggleBox }
|
|
|
|
{ TGtk3WSToggleBox }
|
|
|
|
TGtk3WSToggleBox = class(TGtk3WSCustomCheckBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
{ TGtk3WSRadioButton }
|
|
|
|
TGtk3WSRadioButton = class(TGtk3WSCustomCheckBox)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
LResources, gtk3private, LazGObject2;
|
|
|
|
{ TGtk3WSCustomGroupBox }
|
|
|
|
class function TGtk3WSCustomGroupBox.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AGroupBox: TGtk3GroupBox;
|
|
begin
|
|
AGroupBox := TGtk3GroupBox.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AGroupBox);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomGroupBox.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3GroupBox(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
{ TGtk3WSRadioButton }
|
|
|
|
class function TGtk3WSRadioButton.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
ARadioButton: TGtk3RadioButton;
|
|
begin
|
|
ARadioButton := TGtk3RadioButton.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(ARadioButton);
|
|
end;
|
|
|
|
{ TGtk3WSToggleBox }
|
|
|
|
class function TGtk3WSToggleBox.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AToggleBox: TGtk3ToggleButton;
|
|
begin
|
|
AToggleBox := TGtk3ToggleButton.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AToggleBox);
|
|
end;
|
|
|
|
{ TGtk3WSCheckBox }
|
|
|
|
class function TGtk3WSCheckBox.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
ACheckBox: TGtk3CheckBox;
|
|
begin
|
|
ACheckBox := TGtk3CheckBox.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(ACheckBox);
|
|
end;
|
|
|
|
{ TGtk3WSScrollBar }
|
|
|
|
class function TGtk3WSScrollBar.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AGtkScrollbar: TGtk3ScrollBar;
|
|
begin
|
|
AGtkScrollBar := TGtk3ScrollBar.Create(AWinControl, AParams);
|
|
Result:= TLCLIntfHandle(AGtkScrollBar);
|
|
end;
|
|
|
|
class procedure TGtk3WSScrollBar.SetParams(const AScrollBar: TCustomScrollBar);
|
|
begin
|
|
if not WSCheckHandleAllocated(AScrollBar, 'SetParams') then
|
|
Exit;
|
|
TGtk3ScrollBar(AScrollBar.Handle).BeginUpdate;
|
|
TGtk3ScrollBar(AScrollBar.Handle).SetParams;
|
|
TGtk3ScrollBar(AScrollBar.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSScrollBar.SetKind(const AScrollBar: TCustomScrollBar;
|
|
const AIsHorizontal: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AScrollBar, 'SetKind') then
|
|
Exit;
|
|
RecreateWnd(AScrollBar);
|
|
end;
|
|
|
|
{ TGtk3WSCustomListBox }
|
|
|
|
class function TGtk3WSCustomListBox.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AListBox: TGtk3ListBox;
|
|
begin
|
|
AListBox := TGtk3ListBox.Create(AWinControl, AParams);
|
|
AListBox.BorderStyle := TCustomListBox(AWinControl).BorderStyle;
|
|
Result := TLCLIntfHandle(AListBox);
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetIndexAtXY(
|
|
const ACustomListBox: TCustomListBox; X, Y: integer): integer;
|
|
begin
|
|
Result := -1;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetItemIndex(const ACustomListBox: TCustomListBox): integer;
|
|
begin
|
|
Result := 0;
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'GetItemIndex') then
|
|
Exit;
|
|
Result := TGtk3ListBox(ACustomListBox.Handle).ItemIndex;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetItemRect(
|
|
const ACustomListBox: TCustomListBox; Index: integer; var ARect: TRect
|
|
): boolean;
|
|
begin
|
|
FillChar(ARect,SizeOf(ARect),0);
|
|
Result:=false;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetScrollWidth(
|
|
const ACustomListBox: TCustomListBox): Integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetSelCount(const ACustomListBox: TCustomListBox): integer;
|
|
begin
|
|
Result := 0;
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'GetSelCount') then
|
|
Exit;
|
|
Result := TGtk3ListBox(ACustomListBox.Handle).GetSelCount;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetSelected(const ACustomListBox: TCustomListBox; const AIndex: integer): boolean;
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'GetSelected') then
|
|
Exit(False);
|
|
//DebugLn('WARNING: TGtk3WSCustomListBox.GetSelected is not implemented.');
|
|
Result := TGtk3ListBox(ACustomListBox.Handle).GetItemSelected(AIndex);
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetStrings(const ACustomListBox: TCustomListBox): TStrings;
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'GetStrings') then
|
|
Exit;
|
|
//DebugLn('TGtk3WSCustomListBox.GetStrings creating TGtkListStoreStringList ...');
|
|
Result := TGtkListStoreStringList(g_object_get_data(PGObject(TGtk3ListBox(ACustomListBox.Handle).GetContainerWidget),
|
|
GtkListItemLCLListTag));
|
|
TGtkListStoreStringList(Result).Sorted := ACustomListBox.Sorted;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.FreeStrings(var AStrings: TStrings);
|
|
begin
|
|
AStrings.Free;
|
|
AStrings := nil;
|
|
end;
|
|
|
|
class function TGtk3WSCustomListBox.GetTopIndex(const ACustomListBox: TCustomListBox): integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SelectItem(const ACustomListBox: TCustomListBox; AIndex: integer; ASelected: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'SelectItem') then
|
|
Exit;
|
|
TGtk3ListBox(ACustomListBox.Handle).BeginUpdate;
|
|
TGtk3ListBox(ACustomListBox.Handle).SelectItem(AIndex, ASelected);
|
|
TGtk3ListBox(ACustomListBox.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetBorder(const ACustomListBox: TCustomListBox);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetColumnCount(const ACustomListBox: TCustomListBox;
|
|
ACount: Integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetItemIndex(const ACustomListBox: TCustomListBox; const AIndex: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'SetItemIndex') then
|
|
Exit;
|
|
TGtk3ListBox(ACustomListBox.Handle).BeginUpdate;
|
|
TGtk3ListBox(ACustomListBox.Handle).ItemIndex := AIndex;
|
|
TGtk3ListBox(ACustomListBox.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetScrollWidth(
|
|
const ACustomListBox: TCustomListBox; const AScrollWidth: Integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetSelectionMode(const ACustomListBox: TCustomListBox;
|
|
const AExtendedSelect, AMultiSelect: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'SetSelectionMode') then
|
|
Exit;
|
|
TGtk3ListBox(ACustomListBox.Handle).MultiSelect := AMultiSelect;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetStyle(const ACustomListBox: TCustomListBox);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'SetStyle') then
|
|
Exit;
|
|
if TGtk3ListBox(ACustomListBox.Handle).ListBoxStyle <> ACustomListBox.Style then
|
|
RecreateWnd(ACustomListBox);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetSorted(const ACustomListBox: TCustomListBox;
|
|
AList: TStrings; ASorted: boolean);
|
|
begin
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomListBox.SetTopIndex(const ACustomListBox: TCustomListBox;
|
|
const NewTopIndex: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomListBox, 'SetTopIndex') then
|
|
Exit;
|
|
TGtk3ListBox(ACustomListBox.Handle).SetTopIndex(NewTopIndex);
|
|
end;
|
|
|
|
{ TGtk3WSCustomComboBox }
|
|
|
|
class function TGtk3WSCustomComboBox.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AGtkCombo: TGtk3ComboBox;
|
|
begin
|
|
{$IFDEF GTK3DEBUGCORE}
|
|
DebugLn('TGtk3WSCustomComboBox.CreateHandle');
|
|
{$ENDIF}
|
|
AGtkCombo := TGtk3ComboBox.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AGtkCombo);
|
|
{$IFDEF GTK3DEBUGCORE}
|
|
DebugLn('TGtk3WSCustomComboBox.CreateHandle Handle=',dbgs(Result));
|
|
{$ENDIF}
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3ComboBox(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetDroppedDown(
|
|
const ACustomComboBox: TCustomComboBox): Boolean;
|
|
begin
|
|
Result := False;
|
|
if not WSCheckHandleAllocated(ACustomComboBox, 'GetDroppedDown') then
|
|
Exit;
|
|
Result := TGtk3ComboBox(ACustomComboBox.Handle).DroppedDown;
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetSelStart(const ACustomComboBox: TCustomComboBox
|
|
): integer;
|
|
begin
|
|
Result := -1;
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetSelLength(const ACustomComboBox: TCustomComboBox
|
|
): integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetItemIndex(const ACustomComboBox: TCustomComboBox
|
|
): integer;
|
|
begin
|
|
Result := -1;
|
|
if not WSCheckHandleAllocated(ACustomComboBox, 'GetItemIndex') then
|
|
Exit;
|
|
Result := TGtk3ComboBox(ACustomComboBox.Handle).ItemIndex;
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetMaxLength(const ACustomComboBox: TCustomComboBox
|
|
): integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetArrowKeysTraverseList(
|
|
const ACustomComboBox: TCustomComboBox; NewTraverseList: boolean);
|
|
begin
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetDropDownCount(
|
|
const ACustomComboBox: TCustomComboBox; NewCount: Integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetDroppedDown(
|
|
const ACustomComboBox: TCustomComboBox; ADroppedDown: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomComboBox, 'SetDroppedDown') then
|
|
Exit;
|
|
TGtk3ComboBox(ACustomComboBox.Handle).DroppedDown := ADroppedDown;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetMaxLength(const ACustomComboBox: TCustomComboBox;
|
|
NewLength: integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetSelStart(const ACustomComboBox: TCustomComboBox;
|
|
NewStart: integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetSelLength(const ACustomComboBox: TCustomComboBox;
|
|
NewLength: integer);
|
|
begin
|
|
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetItemIndex(const ACustomComboBox: TCustomComboBox;
|
|
NewIndex: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomComboBox, 'SetItemIndex') then
|
|
Exit;
|
|
// DebugLn('TGtk3WSCustomComboBox.SetItemIndex ',dbgs(NewIndex));
|
|
TGtk3ComboBox(ACustomComboBox.Handle).BeginUpdate;
|
|
TGtk3ComboBox(ACustomComboBox.Handle).ItemIndex := NewIndex;
|
|
TGtk3ComboBox(ACustomComboBox.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetStyle(const ACustomComboBox: TCustomComboBox;
|
|
NewStyle: TComboBoxStyle);
|
|
begin
|
|
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetItems(const ACustomComboBox: TCustomComboBox
|
|
): TStrings;
|
|
begin
|
|
Result := nil;
|
|
|
|
if not WSCheckHandleAllocated(ACustomComboBox, 'GetItems') then
|
|
begin
|
|
Exit;
|
|
end;
|
|
// DebugLn('TGtk3WSCustomComboBox.GetItems creating TGtkListStoreStringList ...');
|
|
Result := TGtkListStoreStringList(g_object_get_data(PGObject(TGtk3ComboBox(ACustomComboBox.Handle).GetContainerWidget),
|
|
GtkListItemLCLListTag));
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.Sort(const ACustomComboBox: TCustomComboBox;
|
|
AList: TStrings; IsSorted: boolean);
|
|
begin
|
|
end;
|
|
|
|
class function TGtk3WSCustomComboBox.GetItemHeight(const ACustomComboBox: TCustomComboBox): Integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomComboBox.SetItemHeight(const ACustomComboBox: TCustomComboBox; const AItemHeight: Integer);
|
|
begin
|
|
end;
|
|
|
|
{ TGtk3WSCustomEdit }
|
|
|
|
class function TGtk3WSCustomEdit.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AGtkEntry: TGtk3Entry;
|
|
begin
|
|
AGtkEntry := TGtk3Entry.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AGtkEntry);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3Entry(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class function TGtk3WSCustomEdit.GetCanUndo(const ACustomEdit: TCustomEdit
|
|
): Boolean;
|
|
begin
|
|
Result := False;
|
|
end;
|
|
|
|
class function TGtk3WSCustomEdit.GetCaretPos(const ACustomEdit: TCustomEdit): TPoint;
|
|
begin
|
|
Result := Point(0, 0);
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'GetCaretPos') then
|
|
Exit;
|
|
Result := TGtk3Editable(ACustomEdit.Handle).CaretPos;
|
|
end;
|
|
|
|
class function TGtk3WSCustomEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer;
|
|
begin
|
|
result := -1;
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'GetSelStart') then
|
|
Exit;
|
|
Result := TGtk3Editable(ACustomEdit.Handle).getSelStart;
|
|
end;
|
|
|
|
class function TGtk3WSCustomEdit.GetSelLength(const ACustomEdit: TCustomEdit): integer;
|
|
begin
|
|
result := 0;
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'GetSelLength') then
|
|
Exit;
|
|
Result := TGtk3Editable(ACustomEdit.Handle).getSelLength;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetAlignment(const ACustomEdit: TCustomEdit;
|
|
const AAlignment: TAlignment);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetAlignment') then
|
|
Exit;
|
|
TGtk3Editable(ACustomEdit.Handle).BeginUpdate;
|
|
TGtk3Entry(ACustomEdit.Handle).Alignment := AAlignment;
|
|
TGtk3Editable(ACustomEdit.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetCaretPos(const ACustomEdit: TCustomEdit; const NewPos: TPoint);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'GetCaretPos') then
|
|
Exit;
|
|
TGtk3Editable(ACustomEdit.Handle).BeginUpdate;
|
|
TGtk3Editable(ACustomEdit.Handle).CaretPos := NewPos;
|
|
TGtk3Editable(ACustomEdit.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetCharCase') then
|
|
Exit;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetEchoMode') then
|
|
Exit;
|
|
if NewMode in [emNone,emPassword] then
|
|
begin
|
|
TGtk3Entry(ACustomEdit.Handle).SetEchoMode(False);
|
|
SetPasswordChar(ACustomEdit, ACustomEdit.PasswordChar);
|
|
end else
|
|
begin
|
|
TGtk3Entry(ACustomEdit.Handle).SetEchoMode(True);
|
|
end;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetHideSelection(const ACustomEdit: TCustomEdit;
|
|
NewHideSelection: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetHideSelection') then
|
|
Exit;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetMaxLength') then
|
|
Exit;
|
|
TGtk3Entry(ACustomEdit.Handle).SetMaxLength(NewLength);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetPasswordChar') then
|
|
Exit;
|
|
TGtk3Entry(ACustomEdit.Handle).SetPasswordChar(NewChar);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetReadOnly') then
|
|
Exit;
|
|
TGtk3Editable(ACustomEdit.Handle).ReadOnly := NewReadOnly;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetSelStart') then
|
|
Exit;
|
|
TGtk3Editable(ACustomEdit.Handle).BeginUpdate;
|
|
TGtk3Editable(ACustomEdit.Handle).SetSelStart(NewStart);
|
|
TGtk3Editable(ACustomEdit.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetSelLength') then
|
|
Exit;
|
|
TGtk3Editable(ACustomEdit.Handle).BeginUpdate;
|
|
TGtk3Editable(ACustomEdit.Handle).SetSelLength(NewLength);
|
|
TGtk3Editable(ACustomEdit.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.Cut(const ACustomEdit: TCustomEdit);
|
|
begin
|
|
ACustomEdit.CopyToClipboard;
|
|
ACustomEdit.ClearSelection;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.Copy(const ACustomEdit: TCustomEdit);
|
|
begin
|
|
if (ACustomEdit.EchoMode = emNormal) and (ACustomEdit.SelLength > 0) then
|
|
Clipboard.AsText := ACustomEdit.SelText;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.Paste(const ACustomEdit: TCustomEdit);
|
|
begin
|
|
if Clipboard.HasFormat(CF_TEXT) then
|
|
ACustomEdit.SelText := Clipboard.AsText;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomEdit.Undo(const ACustomEdit: TCustomEdit);
|
|
begin
|
|
// nothing
|
|
end;
|
|
|
|
{ TGtk3WSCustomMemo }
|
|
|
|
class function TGtk3WSCustomMemo.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AGtkMemo: TGtk3Memo;
|
|
begin
|
|
AGtkMemo := TGtk3Memo.Create(AWinControl, AParams);
|
|
AGtkMemo.BorderStyle := TCustomMemo(AWinControl).BorderStyle;
|
|
Result := TLCLIntfHandle(AGtkMemo);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3Memo(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class function TGtk3WSCustomMemo.GetStrings(const ACustomMemo: TCustomMemo
|
|
): TStrings;
|
|
begin
|
|
Result := TGtk3MemoStrings.Create(ACustomMemo);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle);
|
|
var
|
|
AScrollStyle: TPoint;
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomMemo, 'SetScrollBars') then
|
|
Exit;
|
|
AScrollStyle := Gtk3TranslateScrollStyle(ACustomMemo.ScrollBars);
|
|
TGtk3Memo(ACustomMemo.Handle).BeginUpdate;
|
|
TGtk3Memo(ACustomMemo.Handle).HScrollBarPolicy := AScrollStyle.X;
|
|
TGtk3Memo(ACustomMemo.Handle).VScrollBarPolicy := AScrollStyle.Y;
|
|
TGtk3Memo(ACustomMemo.Handle).EndUpdate;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetWantTabs(const ACustomMemo: TCustomMemo; const NewWantTabs: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomMemo, 'SetWantTabs') then
|
|
Exit;
|
|
TGtk3Memo(ACustomMemo.Handle).WantTabs := NewWantTabs;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetWantReturns(const ACustomMemo: TCustomMemo; const NewWantReturns: boolean);
|
|
begin
|
|
// no way
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomMemo, 'SetWordWrap') then
|
|
Exit;
|
|
TGtk3Memo(ACustomMemo.Handle).WordWrap := NewWordWrap;
|
|
end;
|
|
|
|
class function TGtk3WSCustomMemo.GetCanUndo(const ACustomEdit: TCustomEdit
|
|
): Boolean;
|
|
begin
|
|
Result := False;
|
|
end;
|
|
|
|
class function TGtk3WSCustomMemo.GetCaretPos(const ACustomEdit: TCustomEdit
|
|
): TPoint;
|
|
begin
|
|
Result := Point(0, 0);
|
|
end;
|
|
|
|
class function TGtk3WSCustomMemo.GetSelStart(const ACustomEdit: TCustomEdit
|
|
): integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class function TGtk3WSCustomMemo.GetSelLength(const ACustomEdit: TCustomEdit
|
|
): integer;
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetAlignment(const ACustomEdit: TCustomEdit;
|
|
const AAlignment: TAlignment);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetAlignment') then
|
|
Exit;
|
|
TGtk3Memo(ACustomEdit.Handle).Alignment := AAlignment;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetCaretPos(const ACustomEdit: TCustomEdit;
|
|
const NewPos: TPoint);
|
|
begin
|
|
// inherited SetCaretPos(ACustomEdit, NewPos);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetCharCase(const ACustomEdit: TCustomEdit;
|
|
NewCase: TEditCharCase);
|
|
begin
|
|
// inherited SetCharCase(ACustomEdit, NewCase);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetEchoMode(const ACustomEdit: TCustomEdit;
|
|
NewMode: TEchoMode);
|
|
begin
|
|
// inherited SetEchoMode(ACustomEdit, NewMode);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetHideSelection(
|
|
const ACustomEdit: TCustomEdit; NewHideSelection: Boolean);
|
|
begin
|
|
// inherited SetHideSelection(ACustomEdit, NewHideSelection);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetMaxLength(const ACustomEdit: TCustomEdit;
|
|
NewLength: integer);
|
|
begin
|
|
// inherited SetMaxLength(ACustomEdit, NewLength);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetPasswordChar(
|
|
const ACustomEdit: TCustomEdit; NewChar: char);
|
|
begin
|
|
// inherited SetPasswordChar(ACustomEdit, NewChar);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetReadOnly(const ACustomEdit: TCustomEdit;
|
|
NewReadOnly: boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomEdit, 'SetReadOnly') then
|
|
Exit;
|
|
TGtk3Memo(ACustomEdit.Handle).ReadOnly := NewReadOnly;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetSelStart(const ACustomEdit: TCustomEdit;
|
|
NewStart: integer);
|
|
begin
|
|
// inherited SetSelStart(ACustomEdit, NewStart);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomMemo.SetSelLength(const ACustomEdit: TCustomEdit;
|
|
NewLength: integer);
|
|
begin
|
|
// inherited SetSelLength(ACustomEdit, NewLength);
|
|
end;
|
|
|
|
{ TGtk3WSCustomStaticText }
|
|
|
|
class function TGtk3WSCustomStaticText.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AStaticText: TGtk3StaticText;
|
|
begin
|
|
AStaticText := TGtk3StaticText.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AStaticText);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomStaticText.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3StaticText(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomStaticText.SetAlignment(const ACustomStaticText: TCustomStaticText; const NewAlignment: TAlignment);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomStaticText, 'SetAlignment') then
|
|
Exit;
|
|
TGtk3StaticText(ACustomStaticText.Handle).Alignment := NewAlignment;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomStaticText.SetStaticBorderStyle(
|
|
const ACustomStaticText: TCustomStaticText;
|
|
const NewBorderStyle: TStaticBorderStyle);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomStaticText, 'SetStaticBorderStyle') then
|
|
Exit;
|
|
TGtk3StaticText(ACustomStaticText.Handle).StaticBorderStyle := NewBorderStyle;
|
|
end;
|
|
|
|
{ TGtk3WSButton }
|
|
|
|
class function TGtk3WSButton.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
AButton: TGtk3Button;
|
|
begin
|
|
{$IFDEF GTK3DEBUGCORE}
|
|
DebugLn('TGtk3WSButton.CreateHandle');
|
|
{$ENDIF}
|
|
AButton := TGtk3Button.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(AButton);
|
|
{$IFDEF GTK3DEBUGCORE}
|
|
DebugLn('TGtk3WSButton.CreateHandle Handle=',dbgs(Result));
|
|
{$ENDIF}
|
|
end;
|
|
|
|
class procedure TGtk3WSButton.GetPreferredSize(const AWinControl: TWinControl;
|
|
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3Button(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class procedure TGtk3WSButton.SetDefault(const AButton: TCustomButton; ADefault: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AButton, 'SetDefault') then
|
|
Exit;
|
|
TGtk3Button(AButton.Handle).SetDefault(ADefault);
|
|
end;
|
|
|
|
class procedure TGtk3WSButton.SetShortCut(const AButton: TCustomButton;
|
|
const ShortCutK1, ShortCutK2: TShortCut);
|
|
begin;
|
|
//TODO:
|
|
end;
|
|
|
|
{ TGtk3WSCustomCheckBox }
|
|
|
|
class function TGtk3WSCustomCheckBox.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
ACheckBox: TGtk3CheckBox;
|
|
begin
|
|
ACheckBox := TGtk3CheckBox.Create(AWinControl, AParams);
|
|
|
|
Result := TLCLIntfHandle(ACheckBox);
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomCheckBox.GetPreferredSize(
|
|
const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer;
|
|
WithThemeSpace: Boolean);
|
|
begin
|
|
if not WSCheckHandleAllocated(AWinControl, 'GetPreferredSize') then
|
|
Exit;
|
|
TGtk3CheckBox(AWinControl.Handle).preferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
|
|
end;
|
|
|
|
class function TGtk3WSCustomCheckBox.RetrieveState(const ACustomCheckBox: TCustomCheckBox): TCheckBoxState;
|
|
begin
|
|
Result := cbUnchecked;
|
|
if not WSCheckHandleAllocated(ACustomCheckBox, 'RetrieveState') then
|
|
Exit;
|
|
Result := TGtk3CheckBox(ACustomCheckBox.Handle).State;
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomCheckBox.SetShortCut(const ACustomCheckBox: TCustomCheckBox;
|
|
const ShortCutK1, ShortCutK2: TShortCut);
|
|
begin
|
|
//TODO:
|
|
end;
|
|
|
|
class procedure TGtk3WSCustomCheckBox.SetState(const ACustomCheckBox: TCustomCheckBox; const NewState: TCheckBoxState);
|
|
begin
|
|
if not WSCheckHandleAllocated(ACustomCheckBox, 'SetState') then
|
|
Exit;
|
|
TGtk3CheckBox(ACustomCheckBox.Handle).State := NewState;
|
|
end;
|
|
|
|
{ TGtk3WSButtonControl }
|
|
|
|
class function TGtk3WSButtonControl.GetDefaultColor(const AControl: TControl; const ADefaultColorType: TDefaultColorType): TColor;
|
|
begin
|
|
Result := DefBtnColors[ADefaultColorType];
|
|
end;
|
|
|
|
end.
|