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/GTKExtCtrls.pas | |
| parent | b9703b29819b619037cc282d719c187e51bacd30 (diff) | |
| download | tuxcmd-1b2b4bb4f3ecc034a6e9364d8768e50b167a9680.tar.xz | |
Rough GTK3 port
Diffstat (limited to 'libgtk_kylix/GTKExtCtrls.pas')
| -rw-r--r-- | libgtk_kylix/GTKExtCtrls.pas | 238 |
1 files changed, 95 insertions, 143 deletions
diff --git a/libgtk_kylix/GTKExtCtrls.pas b/libgtk_kylix/GTKExtCtrls.pas index 777f8ed..4cb925e 100644 --- a/libgtk_kylix/GTKExtCtrls.pas +++ b/libgtk_kylix/GTKExtCtrls.pas @@ -1,6 +1,5 @@ (* GTK-Kylix Library: GTKExtCtrls - Extended visual controls - Version 0.6.23 (last updated 2008-08-23) Copyright (C) 2004 Tomas Bzatek <tbzatek@users.sourceforge.net> This library is free software; you can redistribute it and/or @@ -24,7 +23,7 @@ unit GTKExtCtrls; interface -uses gtk2, lazglib2, lazgobject2, Classes, GTKControls, GTKStdCtrls, GTKMenus; +uses lazglib2, lazgobject2, lazgtk3, Classes, GTKControls, GTKStdCtrls, GTKMenus; type @@ -47,24 +46,6 @@ type constructor Create(AOwner: TComponent); override; end; -(****************************************** TGTKHANDLEBOX ***********************************************************************) - TGTKHandleBox = class(TGTKBin) - private - function GetShadowType: TGTKShadowType; - function GetHandlePosition: TGTKPosition; - function GetSnapEdge: TGTKPosition; - procedure SetShadowType(Value: TGTKShadowType); - procedure SetHandlePosition(Value: TGTKPosition); - procedure SetSnapEdge(Value: TGTKPosition); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - published - property ShadowType: TGTKShadowType read GetShadowType write SetShadowType; - property HandlePosition: TGTKPosition read GetHandlePosition write SetHandlePosition; - property SnapEdge: TGTKPosition read GetSnapEdge write SetSnapEdge; - end; - (****************************************** TGTKPROGRESSBAR *********************************************************************) TGTKProgressBarOrientation = (poLeftToRight, poRightToLeft, poBottomToTop, poTopToBottom); TGTKProgressBar = class(TGTKControl) @@ -73,12 +54,10 @@ type function GetText: string; function GetFraction: Double; function GetPulseStep: Double; - function GetOrientation: TGTKProgressBarOrientation; function GetValue: Int64; procedure SetText(Value: string); procedure SetFraction(Value: Double); procedure SetPulseStep(Value: Double); - procedure SetOrientation(Value: TGTKProgressBarOrientation); procedure SetValue(Value: Int64); public constructor Create(AOwner: TComponent); override; @@ -88,7 +67,6 @@ type property Text: string read GetText write SetText; property Fraction: Double read GetFraction write SetFraction; property PulseStep: Double read GetPulseStep write SetPulseStep; - property Orientation: TGTKProgressBarOrientation read GetOrientation write SetOrientation; property Max: Int64 read FMax write FMax; property Value: Int64 read GetValue write SetValue; end; @@ -147,10 +125,6 @@ type procedure SetCaption(PageNo: integer; Caption: string); procedure NextPage; procedure PrevPage; - function GetExpandTab(PageNo: integer): boolean; - procedure SetExpandTab(PageNo: integer; Value: boolean); - function GetFillTab(PageNo: integer): boolean; - procedure SetFillTab(PageNo: integer; Value: boolean); function GetTabLabel(PageNo: integer): TGTKLabel; published property PageIndex: integer read GetPageIndex write SetPageIndex; @@ -161,23 +135,45 @@ type property OnSwitchPage: TNotifyEvent read FOnSwitchPage write FOnSwitchPage; end; -(****************************************** TGTKOPTIONMENU **********************************************************************) - TGTKOptionMenu = class(TGTKButton) +(****************************************** TGTKCOMBOBOX ***********************************************************************) + TGTKComboBox = class(TGTKBin) private - FItems: TGTKMenuItem; FOnChanged: TNotifyEvent; - procedure ItemsChanged(Sender: TObject); function GetItemIndex: integer; + function GetItemID: string; procedure SetItemIndex(Value: integer); + procedure SetItemID(Value: string); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + procedure AppendItem(const Text: string); + procedure AppendItemID(const ID: string; const Text: string); + procedure ClearItems(); published - property Items: TGTKMenuItem read FItems; property ItemIndex: integer read GetItemIndex write SetItemIndex; + property ItemID: string read GetItemID write SetItemID; property OnChanged: TNotifyEvent read FOnChanged write FOnChanged; end; +(****************************************** TGTKCOMBOBOXTEXT *******************************************************************) + TGTKComboBoxText = class(TGTKComboBox) + private + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + end; + +(****************************************** TGTKCOMBOBOXENTRY *******************************************************************) + TGTKComboBoxEntry = class(TGTKComboBox) + private + public + Entry: TGTKEntry; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + end; + (****************************************** TGTKSCROLLEDWINDOW ******************************************************************) TGTKScrollBarPolicy = (sbAlways, sbAutomatic, sbNever); TGTKScrolledWindow = class(TGTKBin) @@ -199,7 +195,7 @@ type end; (****************************************** TGTKBUTTONBOX ***********************************************************************) - TGTKButtonBoxLayout = (blDefault, blSpread, blEdge, blStart, blEnd); + TGTKButtonBoxLayout = (blDefault, blSpread, blEdge, blStart, blEnd, blCenter, blExpand); TGTKButtonBox = class(TGTKBox) private function GetLayout: TGTKButtonBoxLayout; @@ -245,7 +241,7 @@ end; constructor TGTKHSeparator.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_hseparator_new; + FWidget := gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); Show; end; @@ -254,56 +250,12 @@ end; constructor TGTKVSeparator.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_vseparator_new; + FWidget := gtk_separator_new(GTK_ORIENTATION_VERTICAL); Show; end; (********************************************************************************************************************************) (********************************************************************************************************************************) -constructor TGTKHandleBox.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FWidget := gtk_handle_box_new; - Show; -end; - -destructor TGTKHandleBox.Destroy; -begin - inherited Destroy; -end; - -function TGTKHandleBox.GetShadowType: TGTKShadowType; -begin - Result := TGTKShadowType(gtk_handle_box_get_shadow_type(PGtkHandleBox(FWidget))); -end; - -procedure TGTKHandleBox.SetShadowType(Value: TGTKShadowType); -begin - gtk_handle_box_set_shadow_type(PGtkHandleBox(FWidget), gtk2.TGtkShadowType(Value)); -end; - -function TGTKHandleBox.GetHandlePosition: TGTKPosition; -begin - Result := TGTKPosition(gtk_handle_box_get_handle_position(PGtkHandleBox(FWidget))); -end; - -procedure TGTKHandleBox.SetHandlePosition(Value: TGTKPosition); -begin - gtk_handle_box_set_handle_position(PGtkHandleBox(FWidget), Integer(Value)); -end; - -function TGTKHandleBox.GetSnapEdge: TGTKPosition; -begin - Result := TGTKPosition(gtk_handle_box_get_snap_edge(PGtkHandleBox(FWidget))); -end; - -procedure TGTKHandleBox.SetSnapEdge(Value: TGTKPosition); -begin - gtk_handle_box_set_snap_edge(PGtkHandleBox(FWidget), Integer(Value)); -end; - -(********************************************************************************************************************************) -(********************************************************************************************************************************) constructor TGTKProgressBar.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -352,16 +304,6 @@ begin gtk_progress_bar_set_pulse_step(PGtkProgressbar(FWidget), Value); end; -function TGTKProgressBar.GetOrientation: TGTKProgressBarOrientation; -begin - Result := TGTKProgressBarOrientation(gtk_progress_bar_get_orientation(PGtkProgressBar(FWidget))); -end; - -procedure TGTKProgressBar.SetOrientation(Value: TGTKProgressBarOrientation); -begin - gtk_progress_bar_set_orientation(PGtkProgressbar(FWidget), gtk2.TGtkProgressBarOrientation(Value)); -end; - function TGTKProgressBar.GetValue: Int64; begin Result := Round(Fraction * Max); @@ -419,7 +361,7 @@ end; constructor TGTKHPaned.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_hpaned_new; + FWidget := gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); Show; end; @@ -428,14 +370,14 @@ end; constructor TGTKVPaned.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_vpaned_new; + FWidget := gtk_paned_new(GTK_ORIENTATION_VERTICAL); Show; end; (********************************************************************************************************************************) (********************************************************************************************************************************) -procedure TGTKNotebook_switch_page(notebook: PGtkNotebook; page: PGtkNotebookPage; page_num: guint; user_data: gpointer); cdecl; +procedure TGTKNotebook_switch_page(notebook: PGtkNotebook; page: PGtkWidget; page_num: guint; user_data: gpointer); cdecl; begin if Assigned(user_data) and Assigned(TGTKNotebook(user_data).FOnSwitchPage) then TGTKNotebook(user_data).FOnSwitchPage(TObject(user_data)); end; @@ -454,11 +396,9 @@ begin inherited Destroy; end; -function _gtk_notebook_append_page(notebook:PGtkNotebook; child:PGtkWidget; tab_label:PGtkWidget): gint; cdecl; external gtklib name 'gtk_notebook_append_page'; - function TGTKNotebook.AppendPage(Child: TGTKControl; Caption: string): integer; begin - Result := _gtk_notebook_append_page(PGtkNotebook(FWidget), Child.FWidget, nil); + Result := gtk_notebook_append_page(PGtkNotebook(FWidget), Child.FWidget, nil); gtk_notebook_set_tab_label_text(PGtkNotebook(FWidget), Child.FWidget, PChar(Caption)); end; @@ -484,7 +424,7 @@ end; procedure TGTKNotebook.SetPageIndex(Value: integer); begin - gtk_notebook_set_page(PGtkNotebook(FWidget), Value); + gtk_notebook_set_current_page(PGtkNotebook(FWidget), Value); end; procedure TGTKNotebook.NextPage; @@ -504,7 +444,7 @@ end; procedure TGTKNotebook.SetTabPosition(Value: TGTKPosition); begin - gtk_notebook_set_tab_pos(PGtkNotebook(FWidget), Integer(Value)); + gtk_notebook_set_tab_pos(PGtkNotebook(FWidget), TGtkPositionType(Value)); end; function TGTKNotebook.GetShowTabs: boolean; @@ -537,79 +477,91 @@ begin gtk_notebook_set_scrollable(PGtkNotebook(FWidget), Value); end; -procedure _gtk_notebook_query_tab_label_packing(notebook:PGtkNotebook;child:PGtkWidget;expand:Pgboolean;fill:Pgboolean;pack_type:PGtkPackType); cdecl; external gtklib name 'gtk_notebook_query_tab_label_packing'; +function TGTKNotebook.GetTabLabel(PageNo: integer): TGTKLabel; +begin + Result := TGTKLabel.CreateFromWidget(Self, gtk_notebook_get_tab_label(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo))); +end; -function TGTKNotebook.GetExpandTab(PageNo: integer): boolean; -var expand: gboolean; +(********************************************************************************************************************************) +(********************************************************************************************************************************) +procedure TGTKComboBox_changed(widget: PGtkComboBox; user_data: pgpointer); cdecl; begin - expand := False; - _gtk_notebook_query_tab_label_packing(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo), @expand, nil, nil); - Result := expand; + if Assigned(TGTKComboBox(user_data).FOnChanged) then TGTKComboBox(user_data).FOnChanged(TGTKComboBox(user_data)); end; -procedure TGTKNotebook.SetExpandTab(PageNo: integer; Value: boolean); +constructor TGTKComboBox.Create(AOwner: TComponent); begin - gtk_notebook_set_tab_label_packing(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo), Value, GetFillTab(PageNo), GTK_PACK_START); + inherited Create(AOwner); + FOnChanged := nil; end; -function TGTKNotebook.GetFillTab(PageNo: integer): boolean; -var fill: gboolean; +destructor TGTKComboBox.Destroy; begin - fill := False; - _gtk_notebook_query_tab_label_packing(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo), nil, @fill, nil); - Result := fill; + inherited Destroy; end; -procedure TGTKNotebook.SetFillTab(PageNo: integer; Value: boolean); +function TGTKComboBox.GetItemIndex: integer; begin - gtk_notebook_set_tab_label_packing(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo), GetExpandTab(PageNo), Value, GTK_PACK_START); + Result := gtk_combo_box_get_active(PGtkComboBox(FWidget)); end; -function TGTKNotebook.GetTabLabel(PageNo: integer): TGTKLabel; +function TGTKComboBox.GetItemID: string; begin - Result := TGTKLabel.CreateFromWidget(Self, gtk_notebook_get_tab_label(PGtkNotebook(FWidget), gtk_notebook_get_nth_page(PGtkNotebook(FWidget), PageNo))); + Result := string(gtk_combo_box_get_active_id(PGtkComboBox(FWidget))); end; -(********************************************************************************************************************************) -(********************************************************************************************************************************) -procedure TGTKOptionMenu_changed(optionmenu: PGtkOptionMenu; user_data: pgpointer); cdecl; +procedure TGTKComboBox.SetItemIndex(Value: integer); begin - if Assigned(TGTKOptionMenu(user_data).FOnChanged) then TGTKOptionMenu(user_data).FOnChanged(TGTKOptionMenu(user_data)); + gtk_combo_box_set_active(PGtkComboBox(FWidget), Value); end; -constructor TGTKOptionMenu.Create(AOwner: TComponent); +procedure TGTKComboBox.SetItemID(Value: string); begin - inherited Create(AOwner); - FOnChanged := nil; - FWidget := gtk_option_menu_new; - g_signal_connect_data(PGObject(FWidget), 'changed', TGCallback(@TGTKOptionMenu_changed), Self, nil, G_CONNECT_DEFAULT); - Show; - FItems := TGTKMenuItem.Create(Self); - FItems.FParentMenu := Self; - FItems.Notify := @ItemsChanged; + gtk_combo_box_set_active_id(PGtkComboBox(FWidget), PChar(Value)); end; -destructor TGTKOptionMenu.Destroy; +procedure TGTKComboBox.AppendItem(const Text: string); begin - FItems.Notify := nil; - FItems.Free; - inherited Destroy; + gtk_combo_box_text_append_text(PGtkComboBoxText(FWidget), PChar(Text)); end; -procedure TGTKOptionMenu.ItemsChanged(Sender: TObject); +procedure TGTKComboBox.AppendItemID(const ID: string; const Text: string); begin - if Assigned(FItems.FMenu) and (gtk_option_menu_get_menu(PGtkOptionMenu(FWidget)) <> FItems.FMenu) - then gtk_option_menu_set_menu(PGtkOptionMenu(FWidget), FItems.FMenu); + gtk_combo_box_text_append(PGtkComboBoxText(FWidget), PChar(ID), PChar(Text)); end; -function TGTKOptionMenu.GetItemIndex: integer; +procedure TGTKComboBox.ClearItems(); begin - Result := gtk_option_menu_get_history(PGtkOptionMenu(FWidget)); + gtk_combo_box_text_remove_all(PGtkComboBoxText(FWidget)); end; -procedure TGTKOptionMenu.SetItemIndex(Value: integer); +(********************************************************************************************************************************) +(********************************************************************************************************************************) +constructor TGTKComboBoxText.Create(AOwner: TComponent); begin - gtk_option_menu_set_history(PGtkOptionMenu(FWidget), Value); + inherited Create(AOwner); + FWidget := gtk_combo_box_text_new(); + g_signal_connect_data(PGObject(FWidget), 'changed', TGCallback(@TGTKComboBox_changed), Self, nil, G_CONNECT_DEFAULT); + Show; +end; + +destructor TGTKComboBoxText.Destroy; +begin + inherited Destroy; +end; + +constructor TGTKComboBoxEntry.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FWidget := gtk_combo_box_text_new_with_entry(); + Entry := TGTKEntry.CreateFromWidget(Self, gtk_bin_get_child(PGtkBin(FWidget))); + g_signal_connect_data(PGObject(FWidget), 'changed', TGCallback(@TGTKComboBox_changed), Self, nil, G_CONNECT_DEFAULT); + Show; +end; + +destructor TGTKComboBoxEntry.Destroy; +begin + inherited Destroy; end; (********************************************************************************************************************************) @@ -657,12 +609,12 @@ end; procedure TGTKScrolledWindow.SetShadowType(Value: TGTKShadowType); begin - gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(FWidget), gtk2.TGtkShadowType(Value)); + gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(FWidget), lazgtk3.TGtkShadowType(Value)); end; procedure TGTKScrolledWindow.AddWithViewPort(Control: TGTKControl); begin - gtk_scrolled_window_add_with_viewport(PGtkScrolledWindow(FWidget), Control.FWidget); + gtk_container_add(PGtkContainer(FWidget), Control.FWidget); end; (********************************************************************************************************************************) @@ -679,7 +631,7 @@ end; procedure TGTKButtonBox.SetLayout(Value: TGTKButtonBoxLayout); begin - gtk_button_box_set_layout(PGtkButtonBox(FWidget), Integer(Value)); + gtk_button_box_set_layout(PGtkButtonBox(FWidget), TGtkButtonBoxStyle(Value)); end; (********************************************************************************************************************************) @@ -687,7 +639,7 @@ end; constructor TGTKHButtonBox.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_hbutton_box_new; + FWidget := gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); Show; end; @@ -696,7 +648,7 @@ end; constructor TGTKVButtonBox.Create(AOwner: TComponent); begin inherited Create(AOwner); - FWidget := gtk_vbutton_box_new; + FWidget := gtk_button_box_new(GTK_ORIENTATION_VERTICAL); Show; end; |
