diff options
| author | Tomas Bzatek <tbzatek@redhat.com> | 2024-12-24 12:41:48 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@redhat.com> | 2025-11-27 19:39:51 +0100 |
| commit | 1b2b4bb4f3ecc034a6e9364d8768e50b167a9680 (patch) | |
| tree | 065ddde53b64f7957a30b7dc9d83a748f309868c /libgtk_kylix/GTKStdCtrls.pas | |
| parent | b9703b29819b619037cc282d719c187e51bacd30 (diff) | |
| download | tuxcmd-1b2b4bb4f3ecc034a6e9364d8768e50b167a9680.tar.xz | |
Rough GTK3 port
Diffstat (limited to 'libgtk_kylix/GTKStdCtrls.pas')
| -rw-r--r-- | libgtk_kylix/GTKStdCtrls.pas | 262 |
1 files changed, 36 insertions, 226 deletions
diff --git a/libgtk_kylix/GTKStdCtrls.pas b/libgtk_kylix/GTKStdCtrls.pas index 33ca7a6..2bca3bb 100644 --- a/libgtk_kylix/GTKStdCtrls.pas +++ b/libgtk_kylix/GTKStdCtrls.pas @@ -1,6 +1,5 @@ (* GTK-Kylix Library: GTKStdCtrls - Standard visual controls (such as buttons, labels, entry) - Version 0.6.24 (last updated 2008-11-17) Copyright (C) 2007 Tomas Bzatek <tbzatek@users.sourceforge.net> This library is free software; you can redistribute it and/or @@ -24,7 +23,7 @@ unit GTKStdCtrls; interface -uses gtk2, glib2, lazglib2, lazgobject2, Classes, GTKControls, GTKConsts, GTKClasses; +uses lazglib2, lazgobject2, lazgtk3, Classes, GTKControls, GTKConsts; type @@ -34,51 +33,24 @@ type private FOnClick: TNotifyEvent; function GetCaption: string; - function GetUseStock: boolean; function GetUseUnderline: boolean; function GetBorderStyle: TGTKBorderStyle; procedure SetCaption(Value: string); - procedure SetUseStock(Value: boolean); procedure SetUseUnderline(Value: boolean); procedure SetBorderStyle(Value: TGTKBorderStyle); public constructor Create(AOwner: TComponent); override; - constructor CreateFromStock(AOwner: TComponent; const StockID: PChar); + constructor CreateFromIconName(AOwner: TComponent; const IconName: string); destructor Destroy; override; published property Caption: string read GetCaption write SetCaption; property OnClick: TNotifyEvent read FOnClick write FOnClick; - property UseStock: boolean read GetUseStock write SetUseStock; property UseUnderline: boolean read GetUseUnderline write SetUseUnderline; property BorderStyle: TGTKBorderStyle read GetBorderStyle write SetBorderStyle; end; -(****************************************** TGTKMISC ****************************************************************************) - TGTKMisc = class(TGTKControl) - private - function GetXAlign: Single; - function GetYAlign: Single; - function GetXPadding: integer; - function GetYPadding: integer; - procedure SetXAlign(Value: Single); - procedure SetYAlign(Value: Single); - procedure SetXPadding(Value: integer); - procedure SetYPadding(Value: integer); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure SetAlignment(XAlign, YAlign : Single); - procedure SetPadding(XPadding, YPadding : integer); - published - property XAlign: Single read GetXAlign write SetXAlign; - property YAlign: Single read GetYAlign write SetYAlign; - property XPadding: integer read GetXPadding write SetXPadding; - property YPadding: integer read GetYPadding write SetYPadding; - end; - (****************************************** TGTKLABEL **************************************************************************) - TGTKAlignment = (taLeftJustify, taRightJustify, taCenter, taFill); - TGTKLabel = class(TGTKMisc) + TGTKLabel = class(TGTKControl) private FLinked: boolean; function GetCaption: string; @@ -87,6 +59,8 @@ type function GetLineWrap: boolean; function GetUseUnderline: boolean; function GetSelectable: boolean; + function GetXAlign: Single; + function GetYAlign: Single; procedure SetCaption(Value: string); procedure SetAlignment(Value: TGTKAlignment); procedure SetUseMarkup(Value: boolean); @@ -94,6 +68,8 @@ type procedure SetUseUnderline(Value: boolean); procedure SetFocusControl(Value: TGTKControl); procedure SetSelectable(Value: boolean); + procedure SetXAlign(Value: Single); + procedure SetYAlign(Value: Single); public constructor Create(AOwner: TComponent); override; constructor CreateFromWidget(AOwner: TComponent; Widget: PGtkWidget); @@ -107,6 +83,8 @@ type property UseUnderline: boolean read GetUseUnderline write SetUseUnderline; property FocusControl: TGTKControl write SetFocusControl; property Selectable: boolean read GetSelectable write SetSelectable; + property XAlign: Single read GetXAlign write SetXAlign; + property YAlign: Single read GetYAlign write SetYAlign; end; (****************************************** TGTKTOGGLEBUTTON ********************************************************************) @@ -223,30 +201,6 @@ type property Visibility: boolean read GetVisibility write SetVisibility; end; -(****************************************** TGTKCOMBO **************************************************************************) - TGTKCombo = class(TGTKHBox) - private - procedure ItemsChanged(Sender: TObject); - function GetAllowEmpty: boolean; - function GetMatchValue: boolean; - function GetCaseSensitive: boolean; - procedure SetAllowEmpty(Value: boolean); - procedure SetMatchValue(Value: boolean); - procedure SetCaseSensitive(Value: boolean); - public - Items: TGList; - Entry: TGTKEntry; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure UpdateItems; - procedure SetPolicy(MatchValue, AllowEmpty: boolean); - procedure DisableActivate; - published - property AllowEmpty: boolean read GetAllowEmpty write SetAllowEmpty; - property MatchValue: boolean read GetMatchValue write SetMatchValue; - property CaseSensitive: boolean read GetCaseSensitive write SetCaseSensitive; - end; - (****************************************** TGTKSPINEDIT ************************************************************************) TGTKSpinEdit = class(TGTKEntry) private @@ -302,12 +256,12 @@ begin end; end; -constructor TGTKButton.CreateFromStock(AOwner: TComponent; const StockID: PChar); +constructor TGTKButton.CreateFromIconName(AOwner: TComponent; const IconName: string); begin inherited Create(AOwner); FOnClick := nil; if ClassName = 'TGTKButton' then begin - FWidget := gtk_button_new_from_stock(StockID); + FWidget := gtk_button_new_from_icon_name(PChar(IconName), GTK_ICON_SIZE_BUTTON); g_signal_connect_data(PGObject(FWidget), 'clicked', TGCallback(@TGTKButton_OnClick), Self, nil, G_CONNECT_DEFAULT); Show; end; @@ -320,22 +274,12 @@ end; function TGTKButton.GetCaption: string; begin - Result := String(gtk_label_get_text(PGtkLabel(ChildControl))); + Result := String(gtk_button_get_label(PGtkButton(FWidget))); end; procedure TGTKButton.SetCaption(Value: string); begin - gtk_label_set_text_with_mnemonic(PGtkLabel(ChildControl), PChar(Value)); -end; - -function TGTKButton.GetUseStock: boolean; -begin - Result := gtk_button_get_use_stock(PGtkButton(FWidget)); -end; - -procedure TGTKButton.SetUseStock(Value: boolean); -begin - gtk_button_set_use_stock(PGtkButton(FWidget), Value); + gtk_button_set_label(PGtkButton(FWidget), PChar(Value)); end; function TGTKButton.GetUseUnderline: boolean; @@ -355,84 +299,7 @@ end; procedure TGTKButton.SetBorderStyle(Value: TGTKBorderStyle); begin - gtk_button_set_relief(PGtkButton(FWidget), integer(Value)); -end; - -(********************************************************************************************************************************) -(********************************************************************************************************************************) -constructor TGTKMisc.Create(AOwner: TComponent); -begin - inherited Create(AOwner); -end; - -destructor TGTKMisc.Destroy; -begin - inherited Destroy; -end; - -procedure TGTKMisc.SetAlignment(XAlign, YAlign : Single); -begin - gtk_misc_set_alignment(PGtkMisc(FWidget), XAlign, YAlign); -end; - -procedure _gtk_misc_get_alignment(misc:PGtkMisc; xalign:Pgfloat; yalign:Pgfloat); cdecl; external gtklib name 'gtk_misc_get_alignment'; -procedure _gtk_misc_get_padding(misc:PGtkMisc; xpad:Pgint; ypad:Pgint); cdecl; external gtklib name 'gtk_misc_get_padding'; - -function TGTKMisc.GetXAlign: Single; -var axalign: gfloat; -begin - axalign := 0.0; - _gtk_misc_get_alignment(PGtkMisc(FWidget), @axalign, nil); - Result := axalign; -end; - -procedure TGTKMisc.SetXAlign(Value: Single); -begin - SetAlignment(Value, YAlign); -end; - -function TGTKMisc.GetYAlign: Single; -var ayalign: gfloat; -begin - ayalign := 0.0; - _gtk_misc_get_alignment(PGtkMisc(FWidget), nil, @ayalign); - Result := ayalign; -end; - -procedure TGTKMisc.SetYAlign(Value: Single); -begin - SetAlignment(XAlign, Value); -end; - -procedure TGTKMisc.SetPadding(XPadding, YPadding : integer); -begin - gtk_misc_set_padding(PGtkMisc(FWidget), XPadding, YPadding); -end; - -function TGTKMisc.GetXPadding: integer; -var xpad: gint; -begin - xpad := 0; - _gtk_misc_get_padding(PGtkMisc(FWidget), @xpad, nil); - Result := xpad; -end; - -procedure TGTKMisc.SetXPadding(Value: integer); -begin - SetPadding(Value, YPadding); -end; - -function TGTKMisc.GetYPadding: integer; -var ypad: gint; -begin - ypad := 0; - _gtk_misc_get_padding(PGtkMisc(FWidget), nil, @ypad); - Result := ypad; -end; - -procedure TGTKMisc.SetYPadding(Value: integer); -begin - SetPadding(XPadding, Value); + gtk_button_set_relief(PGtkButton(FWidget), TGtkReliefStyle(Value)); end; (********************************************************************************************************************************) @@ -528,6 +395,26 @@ begin gtk_label_set_selectable(PGtkLabel(FWidget), Value); end; +function TGTKLabel.GetXAlign: Single; +begin + Result := gtk_label_get_xalign(PGtkLabel(FWidget)); +end; + +procedure TGTKLabel.SetXAlign(Value: Single); +begin + gtk_label_set_xalign(PGtkLabel(FWidget), Value); +end; + +function TGTKLabel.GetYAlign: Single; +begin + Result := gtk_label_get_yalign(PGtkLabel(FWidget)); +end; + +procedure TGTKLabel.SetYAlign(Value: Single); +begin + gtk_label_set_yalign(PGtkLabel(FWidget), Value); +end; + (********************************************************************************************************************************) (********************************************************************************************************************************) procedure TGTKToggleButton_OnToggled(ToggleButton: PGtkToggleButton; user_data: Pgpointer); cdecl; @@ -689,7 +576,7 @@ end; procedure TGTKFrame.SetShadowType(Value: TGTKShadowType); begin - gtk_frame_set_shadow_type(PGtkFrame(FWidget), gtk2.TGtkShadowType(Value)); + gtk_frame_set_shadow_type(PGtkFrame(FWidget), lazgtk3.TGtkShadowType(Value)); end; (********************************************************************************************************************************) @@ -717,7 +604,7 @@ end; procedure TGTKEditable.SetEditable(Value: boolean); begin - gtk_entry_set_editable(PGtkEntry(FWidget), Value); + gtk_editable_set_editable(PGtkEditable(FWidget), Value); end; procedure TGTKEditable.CutClipboard; @@ -833,83 +720,6 @@ end; (********************************************************************************************************************************) (********************************************************************************************************************************) -constructor TGTKCombo.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FWidget := gtk_combo_new; - Items := TGList.Create(Self); - Items.Notify := @ItemsChanged; - Entry := TGTKEntry.CreateFromWidget(Self, PGtkCombo(FWidget)^.entry); - Show; -end; - -destructor TGTKCombo.Destroy; -begin - Items.Free; - inherited Destroy; -end; - -procedure TGTKCombo.UpdateItems; -begin - gtk_combo_set_popdown_strings(PGtkCombo(FWidget), GLIB2.PGList(Items.FList)); -end; - -function TGTKCombo.GetAllowEmpty: boolean; -var b: gboolean; -begin - b := False; - g_object_get(PGObject(FWidget), 'allow-empty', [@b, nil]); - Result := b; -end; - -procedure TGTKCombo.SetAllowEmpty(Value: boolean); -begin - g_object_set(PGObject(FWidget), 'allow-empty', [Ord(Value), nil]); -end; - -function TGTKCombo.GetMatchValue: boolean; -var b: gboolean; -begin - b := False; - g_object_get(PGObject(FWidget), 'value-in-list', [@b, nil]); - Result := b; -end; - -procedure TGTKCombo.SetMatchValue(Value: boolean); -begin - g_object_set(PGObject(FWidget), 'value-in-list', [Ord(Value), nil]); -end; - -procedure TGTKCombo.SetPolicy(MatchValue, AllowEmpty: boolean); -begin - gtk_combo_set_value_in_list(PGtkCombo(FWidget), MatchValue, AllowEmpty); -end; - -function TGTKCombo.GetCaseSensitive: boolean; -var b: gboolean; -begin - b := False; - g_object_get(PGObject(FWidget), 'case-sensitive', [@b, nil]); - Result := b; -end; - -procedure TGTKCombo.SetCaseSensitive(Value: boolean); -begin - gtk_combo_set_case_sensitive(PGtkCombo(FWidget), Value); -end; - -procedure TGTKCombo.DisableActivate; -begin - gtk_combo_disable_activate(PGtkCombo(FWidget)); -end; - -procedure TGTKCombo.ItemsChanged(Sender: TObject); -begin - UpdateItems; -end; - -(********************************************************************************************************************************) -(********************************************************************************************************************************) constructor TGTKSpinEdit.Create(AOwner: TComponent); begin inherited Create(AOwner); |
