summaryrefslogtreecommitdiff
path: root/libgtk_kylix
diff options
context:
space:
mode:
Diffstat (limited to 'libgtk_kylix')
-rw-r--r--libgtk_kylix/GTKClasses.pas40
-rw-r--r--libgtk_kylix/GTKConsts.pas215
-rw-r--r--libgtk_kylix/GTKControls.pas388
-rw-r--r--libgtk_kylix/GTKDialogs.pas171
-rw-r--r--libgtk_kylix/GTKExtCtrls.pas238
-rw-r--r--libgtk_kylix/GTKForms.pas50
-rw-r--r--libgtk_kylix/GTKMenus.pas127
-rw-r--r--libgtk_kylix/GTKPixbuf.pas47
-rw-r--r--libgtk_kylix/GTKStdCtrls.pas262
-rw-r--r--libgtk_kylix/GTKText.pas5
-rw-r--r--libgtk_kylix/GTKUtils.pas41
-rw-r--r--libgtk_kylix/GTKView.pas53
12 files changed, 503 insertions, 1134 deletions
diff --git a/libgtk_kylix/GTKClasses.pas b/libgtk_kylix/GTKClasses.pas
index 6071d74..aab76a2 100644
--- a/libgtk_kylix/GTKClasses.pas
+++ b/libgtk_kylix/GTKClasses.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKClasses - Non-visual objects
- Version 0.6.4 (last updated 2003-04-03)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,13 +23,40 @@ unit GTKClasses;
interface
-uses gtk2, lazglib2, Classes, SysUtils;
-
+uses lazglib2, lazgobject2, lazgtk3, Classes, SysUtils;
+
+const
+{ Basic Type Macros }
+ G_TYPE_FUNDAMENTAL_SHIFT = 2;
+ G_TYPE_FUNDAMENTAL_MAX = 255 shl G_TYPE_FUNDAMENTAL_SHIFT;
+
+{ Constant fundamental types,
+ introduced by g_type_init(). }
+ G_TYPE_INVALID = TGType(0 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_NONE = TGType(1 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_INTERFACE = TGType(2 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_CHAR = TGType(3 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_UCHAR = TGType(4 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_BOOLEAN = TGType(5 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_INT = TGType(6 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_UINT = TGType(7 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_LONG = TGType(8 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_ULONG = TGType(9 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_INT64 = TGType(10 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_UINT64 = TGType(11 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_ENUM = TGType(12 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_FLAGS = TGType(13 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_FLOAT = TGType(14 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_DOUBLE = TGType(15 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_STRING = TGType(16 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_POINTER = TGType(17 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_BOXED = TGType(18 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_PARAM = TGType(19 shl G_TYPE_FUNDAMENTAL_SHIFT);
+ G_TYPE_OBJECT = TGType(20 shl G_TYPE_FUNDAMENTAL_SHIFT);
type
TGDKColor = record
- pixel: Cardinal;
- red, green, blue: Word;
+ red, green, blue, alpha: gdouble;
end;
(****************************************** TGLIST ******************************************************************************)
@@ -154,12 +180,12 @@ end;
procedure TGTKTimer.Start;
begin
if FHandlerID > 0 then Stop;
- if FEnabled then FHandlerID := gtk_timeout_add(FInterval, @TGTKTimer_Timeout, Self);
+ if FEnabled then FHandlerID := g_timeout_add(FInterval, @TGTKTimer_Timeout, Self);
end;
procedure TGTKTimer.Stop;
begin
- if FHandlerID > 0 then gtk_timeout_remove(FHandlerID);
+ if FHandlerID > 0 then g_source_remove(FHandlerID);
FHandlerID := 0;
end;
diff --git a/libgtk_kylix/GTKConsts.pas b/libgtk_kylix/GTKConsts.pas
index 0b18b1c..965548b 100644
--- a/libgtk_kylix/GTKConsts.pas
+++ b/libgtk_kylix/GTKConsts.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKConsts - Various constants, mainly key codes
- Version 0.5.20 (last updated 2003-01-25)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,219 +23,9 @@ unit GTKConsts;
interface
-uses lazglib2, gtk2;
-
-const // copied from gdkkeysyms
- GDK_BackSpace = $FF08;
- GDK_Tab = $FF09;
- GDK_Linefeed = $FF0A;
- GDK_Clear_Key = $FF0B;
- GDK_Return = $FF0D;
- GDK_Pause = $FF13;
- GDK_Scroll_Lock = $FF14;
- GDK_Sys_Req = $FF15;
- GDK_Escape = $FF1B;
- GDK_Delete_Key = $FFFF;
- GDK_Home = $FF50;
- GDK_Left = $FF51;
- GDK_Up = $FF52;
- GDK_Right = $FF53;
- GDK_Down = $FF54;
- GDK_Prior = $FF55;
- GDK_Page_Up = $FF55;
- GDK_Next = $FF56;
- GDK_Page_Down = $FF56;
- GDK_End = $FF57;
- GDK_Insert = $FF63;
- GDK_Num_Lock = $FF7F;
- GDK_KP_Space = $FF80;
- GDK_KP_Tab = $FF89;
- GDK_KP_Enter = $FF8D;
- GDK_KP_F1 = $FF91;
- GDK_KP_F2 = $FF92;
- GDK_KP_F3 = $FF93;
- GDK_KP_F4 = $FF94;
- GDK_KP_Home = $FF95;
- GDK_KP_Left = $FF96;
- GDK_KP_Up = $FF97;
- GDK_KP_Right = $FF98;
- GDK_KP_Down = $FF99;
- GDK_KP_Prior = $FF9A;
- GDK_KP_Page_Up = $FF9A;
- GDK_KP_Next = $FF9B;
- GDK_KP_Page_Down = $FF9B;
- GDK_KP_End = $FF9C;
- GDK_KP_PLUS = 65451;
- GDK_KP_MINUS = 65453;
- GDK_KP_ASTERISK = 65450;
- GDK_KP_SLASH = 65455;
- GDK_KP_0 = $FFB0;
- GDK_KP_1 = $FFB1;
- GDK_KP_2 = $FFB2;
- GDK_KP_3 = $FFB3;
- GDK_KP_4 = $FFB4;
- GDK_KP_5 = $FFB5;
- GDK_KP_6 = $FFB6;
- GDK_KP_7 = $FFB7;
- GDK_KP_8 = $FFB8;
- GDK_KP_9 = $FFB9;
- GDK_F1 = $FFBE;
- GDK_F2 = $FFBF;
- GDK_F3 = $FFC0;
- GDK_F4 = $FFC1;
- GDK_F5 = $FFC2;
- GDK_F6 = $FFC3;
- GDK_F7 = $FFC4;
- GDK_F8 = $FFC5;
- GDK_F9 = $FFC6;
- GDK_F10 = $FFC7;
- GDK_F11 = $FFC8;
- GDK_L1 = $FFC8;
- GDK_F12 = $FFC9;
- GDK_L2 = $FFC9;
- GDK_F13 = $FFCA;
- GDK_L3 = $FFCA;
- GDK_F14 = $FFCB;
- GDK_L4 = $FFCB;
- GDK_F15 = $FFCC;
- GDK_L5 = $FFCC;
- GDK_F16 = $FFCD;
- GDK_L6 = $FFCD;
- GDK_F17 = $FFCE;
- GDK_L7 = $FFCE;
- GDK_F18 = $FFCF;
- GDK_L8 = $FFCF;
- GDK_F19 = $FFD0;
- GDK_L9 = $FFD0;
- GDK_F20 = $FFD1;
- GDK_L10 = $FFD1;
- GDK_F21 = $FFD2;
- GDK_R1 = $FFD2;
- GDK_F22 = $FFD3;
- GDK_R2 = $FFD3;
- GDK_F23 = $FFD4;
- GDK_R3 = $FFD4;
- GDK_F24 = $FFD5;
- GDK_R4 = $FFD5;
- GDK_F25 = $FFD6;
- GDK_R5 = $FFD6;
- GDK_F26 = $FFD7;
- GDK_R6 = $FFD7;
- GDK_F27 = $FFD8;
- GDK_R7 = $FFD8;
- GDK_F28 = $FFD9;
- GDK_R8 = $FFD9;
- GDK_F29 = $FFDA;
- GDK_R9 = $FFDA;
- GDK_F30 = $FFDB;
- GDK_R10 = $FFDB;
- GDK_F31 = $FFDC;
- GDK_R11 = $FFDC;
- GDK_F32 = $FFDD;
- GDK_R12 = $FFDD;
- GDK_F33 = $FFDE;
- GDK_R13 = $FFDE;
- GDK_F34 = $FFDF;
- GDK_R14 = $FFDF;
- GDK_F35 = $FFE0;
- GDK_R15 = $FFE0;
- GDK_space = $020;
- GDK_exclam = $021;
- GDK_quotedbl = $022;
- GDK_numbersign = $023;
- GDK_dollar = $024;
- GDK_percent = $025;
- GDK_ampersand = $026;
- GDK_apostrophe = $027;
- GDK_quoteright = $027;
- GDK_parenleft = $028;
- GDK_parenright = $029;
- GDK_asterisk = $02a;
- GDK_plus_key = $02b;
- GDK_comma = $02c;
- GDK_minus = $02d;
- GDK_period = $02e;
- GDK_slash = $02f;
- GDK_0 = $030;
- GDK_1 = $031;
- GDK_2 = $032;
- GDK_3 = $033;
- GDK_4 = $034;
- GDK_5 = $035;
- GDK_6 = $036;
- GDK_7 = $037;
- GDK_8 = $038;
- GDK_9 = $039;
- GDK_colon = $03a;
- GDK_semicolon = $03b;
- GDK_less = $03c;
- GDK_equal = $03d;
- GDK_greater = $03e;
- GDK_question = $03f;
- GDK_at = $040;
- GDK_Capital_A = $041;
- GDK_Capital_B = $042;
- GDK_Capital_C = $043;
- GDK_Capital_D = $044;
- GDK_Capital_E = $045;
- GDK_Capital_F = $046;
- GDK_Capital_G = $047;
- GDK_Capital_H = $048;
- GDK_Capital_I = $049;
- GDK_Capital_J = $04a;
- GDK_Capital_K = $04b;
- GDK_Capital_L = $04c;
- GDK_Capital_M = $04d;
- GDK_Capital_N = $04e;
- GDK_Capital_O = $04f;
- GDK_Capital_P = $050;
- GDK_Capital_Q = $051;
- GDK_Capital_R = $052;
- GDK_Capital_S = $053;
- GDK_Capital_T = $054;
- GDK_Capital_U = $055;
- GDK_Capital_V = $056;
- GDK_Capital_W = $057;
- GDK_Capital_X = $058;
- GDK_Capital_Y = $059;
- GDK_Capital_Z = $05a;
- GDK_bracketleft = $05b;
- GDK_backslash = $05c;
- GDK_bracketright = $05d;
- GDK_quoteleft = $060;
- GDK_a = $061;
- GDK_b = $062;
- GDK_c = $063;
- GDK_d = $064;
- GDK_e = $065;
- GDK_f = $066;
- GDK_g = $067;
- GDK_h = $068;
- GDK_i = $069;
- GDK_j = $06a;
- GDK_k = $06b;
- GDK_l = $06c;
- GDK_m = $06d;
- GDK_n = $06e;
- GDK_o = $06f;
- GDK_p = $070;
- GDK_q = $071;
- GDK_r = $072;
- GDK_s = $073;
- GDK_t = $074;
- GDK_u = $075;
- GDK_v = $076;
- GDK_w = $077;
- GDK_x = $078;
- GDK_y = $079;
- GDK_z = $07a;
- GDK_aacute = $0e1;
- GDK_leftarrow = $8fb;
- GDK_uparrow = $8fc;
- GDK_rightarrow = $8fd;
- GDK_downarrow = $8fe;
- GDK_WIN_POPUP = $FF67;
+uses lazglib2, lazgtk3;
+const
NumMessageButtons = 12;
MessageButtonID : array[1..NumMessageButtons] of Pgchar =
(GTK_STOCK_YES, GTK_STOCK_NO, GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_APPLY, GTK_STOCK_CLOSE, GTK_STOCK_HELP,
diff --git a/libgtk_kylix/GTKControls.pas b/libgtk_kylix/GTKControls.pas
index 82de154..4729266 100644
--- a/libgtk_kylix/GTKControls.pas
+++ b/libgtk_kylix/GTKControls.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKControls - Basic objects
- Version 0.6.23 (last updated 2008-11-11)
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 GTKControls;
interface
-uses gtk2, gdk2, lazglib2, lazgobject2, Classes;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, Classes;
const
@@ -58,14 +57,15 @@ type
type
TGTKShadowType = (stNone, stShadowIn, stShadowOut, stEtchedIn, stEtchedOut);
TGTKPosition = (poLeft, poRight, poTop, poBottom);
-
+ TGTKAlignment = (taLeftJustify, taRightJustify, taCenter, taFill);
+
(****************************************** TGTKCONTROL *************************************************************************)
TGDKMouseButton = (mbLeft, mbMiddle, mbRight, mbNoButton);
TGDKKeyEvent = procedure (Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean) of object;
TGDKMouseEvent = procedure (Sender: TObject; Button: TGDKMouseButton; Shift: TShiftState; X, Y: Integer; var Accept: boolean) of object;
TGDKFocusEvent = procedure (Sender: TObject; var Accept: boolean) of object;
TGDKExposeEvent = procedure (Sender: TObject; const Rect: PGdkRectangle; var Accept: boolean) of object;
- TGTKControlState = (csNormal, csActive, csPrelight, csSelected, csInsensitive);
+ TGTKControlState = (csNormal, csActive, csPrelight, csSelected, csInsensitive, csInconsistent, csFocused, csBackdrop, csDirLTR, cdDirRTL, csLink, csVisited, csChecked, csDropActive);
TGTKControl = class(TComponent64)
private
FVisible: Boolean;
@@ -92,6 +92,12 @@ type
function GetFocused: boolean;
function GetDefault: boolean;
function GetControlState: TGTKControlState;
+ function GetHAlign: TGTKAlignment;
+ function GetVAlign: TGTKAlignment;
+ function GetMarginStart: Integer;
+ function GetMarginEnd: Integer;
+ function GetMarginTop: Integer;
+ function GetMarginBottom: Integer;
procedure SetHeight(const Value: Integer);
procedure SetVisible(const Value: Boolean);
procedure SetWidth(const Value: Integer);
@@ -111,6 +117,12 @@ type
procedure SetOnExpose(Value: TGDKExposeEvent);
procedure SetControlState(Value: TGTKControlState);
procedure SetOnMouseMove(Value: TGDKMouseEvent);
+ procedure SetHAlign(Value: TGTKAlignment);
+ procedure SetVAlign(Value: TGTKAlignment);
+ procedure SetMarginStart(Value: Integer);
+ procedure SetMarginEnd(Value: Integer);
+ procedure SetMarginTop(Value: Integer);
+ procedure SetMarginBottom(Value: Integer);
protected
procedure SetParent(const Value: TGTKControl); virtual;
public
@@ -118,7 +130,6 @@ type
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Hide;
- procedure HideAll;
procedure Show;
procedure ShowAll;
procedure SetSizeRequest(const Width, Height: Integer);
@@ -127,21 +138,7 @@ type
property Enabled: Boolean read GetEnabled write SetEnabled default True;
property PopupMenu: TGTKControl read FPopupMenu write SetPopupMenu;
procedure SetFocus;
- procedure SetForegroundColor(Red, Green, Blue: word); overload;
- procedure SetForegroundColor(State: integer; Red, Green, Blue: word); overload;
- procedure SetForegroundColor(State: integer; Color: PGdkColor); overload;
- procedure SetForegroundColor(Color: PGdkColor); overload;
- procedure SetBackgroundColor(Red, Green, Blue: word); overload;
- procedure SetBackgroundColor(State: integer; Red, Green, Blue: word); overload;
- procedure SetBackgroundColor(State: integer; Color: PGdkColor); overload;
- procedure SetBackgroundColor(Color: PGdkColor); overload;
- procedure SetTextColor(Red, Green, Blue: word); overload;
- procedure SetTextColor(State: integer; Red, Green, Blue: word); overload;
- procedure SetBaseColor(Red, Green, Blue: word); overload;
- procedure SetBaseColor(State: integer; Red, Green, Blue: word); overload;
procedure Invalidate;
- procedure SetAlignment(XAlign, YAlign: Double);
- procedure SetPadding(XPad, YPad: integer);
function GetData(Key: string): Pointer;
procedure SetData(Key: string; Value: Pointer);
published
@@ -164,6 +161,12 @@ type
property OnExpose: TGDKExposeEvent read FOnExpose write SetOnExpose;
property ComponentState;
property ControlState: TGTKControlState read GetControlState write SetControlState;
+ property HAlign: TGTKAlignment read GetHAlign write SetHAlign;
+ property VAlign: TGTKAlignment read GetVAlign write SetHAlign;
+ property MarginStart: Integer read GetMarginStart write SetMarginStart;
+ property MarginEnd: Integer read GetMarginEnd write SetMarginEnd;
+ property MarginTop: Integer read GetMarginTop write SetMarginTop;
+ property MarginBottom: Integer read GetMarginBottom write SetMarginBottom;
end;
(****************************************** TGTKCONTAINER ***********************************************************************)
@@ -234,46 +237,27 @@ type
destructor Destroy; override;
end;
-(****************************************** TGTKTOOLTIPS ************************************************************************)
- TGTKTooltips = class(TComponent)
- private
- function GetEnabled: boolean;
- procedure SetEnabled(Value: boolean);
- public
- FObject: PGtkTooltips;
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- published
- property Enabled: boolean read GetEnabled write SetEnabled;
- end;
-
-(****************************************** TGTKTABLE ***************************************************************************)
- TGTKTableAttachOptions = set of (taoExpand, taoShrink, taoFill);
- TGTKTable = class(TGTKContainer)
+(****************************************** TGTKGRID ****************************************************************************)
+ TGTKGridAttachOptions = set of (taoExpand, taoShrink, taoFill);
+ TGTKGrid = class(TGTKContainer)
private
- function GetRowCount: integer;
- procedure SetRowCount(Value: integer);
- function GetColCount: integer;
- procedure SetColCount(Value: integer);
function GetRowSpacing: integer;
procedure SetRowSpacing(Value: integer);
function GetColSpacing: integer;
procedure SetColSpacing(Value: integer);
- function GetHomogeneous: boolean;
- procedure SetHomogeneous(Value: boolean);
+ function GetRowHomogeneous: boolean;
+ function GetColHomogeneous: boolean;
+ procedure SetRowHomogeneous(Value: boolean);
+ procedure SetColHomogeneous(Value: boolean);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
- procedure SetRowColCount(Rows, Cols: integer);
- procedure AddControl(Column, Row, NumCols, NumRows: integer; Control: TGTKControl; XPadding, YPadding: integer);
- procedure AddControlEx(Column, Row, NumCols, NumRows: integer; Control: TGTKControl; XAttachOptions,
- YAttachOptions: TGTKTableAttachOptions; XPadding, YPadding: integer);
+ procedure AddControl(Column, Row, NumCols, NumRows: integer; Control: TGTKControl);
published
- property RowCount: integer read GetRowCount write SetRowCount;
- property ColCount: integer read GetColCount write SetColCount;
property RowSpacing: integer read GetRowSpacing write SetRowSpacing;
property ColSpacing: integer read GetColSpacing write SetColSpacing;
- property Homogeneous: boolean read GetHomogeneous write SetHomogeneous;
+ property RowHomogeneous: boolean read GetRowHomogeneous write SetRowHomogeneous;
+ property ColHomogeneous: boolean read GetColHomogeneous write SetColHomogeneous;
end;
@@ -289,7 +273,7 @@ uses GTKMenus, GTKForms, GTKUtils;
procedure Beep;
begin
- gdk_beep;
+ gdk_beep();
end;
@@ -334,13 +318,6 @@ begin
gtk_widget_hide(FWidget);
end;
-procedure TGTKControl.HideAll;
-begin
- if Parent <> nil then Parent.HideAll;
- FVisible := False;
- gtk_widget_hide_all(FWidget);
-end;
-
procedure TGTKControl.Show;
begin
FVisible := True;
@@ -362,7 +339,7 @@ begin
raise EInvalidOperation.Create('Invalid Operation');
FParent := Value;
try
- if Assigned(FWidget) and GTK_IS_WIDGET(FWidget) then
+ if Assigned(FWidget) then
if Assigned(Value)
then gtk_widget_set_parent(FWidget, Value.FWidget)
else gtk_widget_unparent(FWidget);
@@ -378,12 +355,12 @@ end;
function TGTKControl.GetWidth: Integer;
begin
- Result := FWidget^.allocation.width;
+ Result := gtk_widget_get_allocated_width(FWidget);
end;
function TGTKControl.GetHeight: Integer;
begin
- Result := FWidget^.allocation.height;
+ Result := gtk_widget_get_allocated_height(FWidget);
end;
procedure TGTKControl.SetWidth(const Value: Integer);
@@ -402,13 +379,17 @@ begin
end;
function TGTKControl.GetLeft: Integer;
+var A: TGtkAllocation;
begin
- Result := FWidget^.allocation.x;
+ gtk_widget_get_allocation(FWidget, @A);
+ Result := A.x;
end;
function TGTKControl.GetTop: Integer;
+var A: TGtkAllocation;
begin
- Result := FWidget^.allocation.y;
+ gtk_widget_get_allocation(FWidget, @A);
+ Result := A.y;
end;
function TGTKControl.GetEnabled: boolean;
@@ -429,13 +410,13 @@ var Shift: TShiftState;
Accept: boolean;
begin
Shift := [];
- if event^.state and GDK_SHIFT_MASK = GDK_SHIFT_MASK then Include(Shift, ssShift);
- if event^.state and GDK_CONTROL_MASK = GDK_CONTROL_MASK then Include(Shift, ssCtrl);
- if event^.state and GDK_MOD1_MASK = GDK_MOD1_MASK then Include(Shift, ssAlt);
+ if GDK_SHIFT_MASK in event^.state then Include(Shift, ssShift);
+ if GDK_CONTROL_MASK in event^.state then Include(Shift, ssCtrl);
+ if GDK_MOD1_MASK in event^.state then Include(Shift, ssAlt);
Accept := True;
- if Assigned(TGTKControl(user_data).FOnMouseDown) and (event^._type = GDK_BUTTON_PRESS)
+ if Assigned(TGTKControl(user_data).FOnMouseDown) and (event^.type_ = GDK_BUTTON_PRESS)
then TGTKControl(user_data).FOnMouseDown(TGTKControl(user_data), TGDKMouseButton(event^.button - 1), Shift, Trunc(event^.x), Trunc(event^.y), Accept);
- if Assigned(TGTKControl(user_data).FOnDblClick) and (event^._type = GDK_2BUTTON_PRESS)
+ if Assigned(TGTKControl(user_data).FOnDblClick) and (event^.type_ = GDK_2BUTTON_PRESS)
then TGTKControl(user_data).FOnDblClick(TGTKControl(user_data), TGDKMouseButton(event^.button - 1), Shift, Trunc(event^.x), Trunc(event^.y), Accept);
Result := not Accept;
if Accept then
@@ -463,17 +444,13 @@ begin
end;
function TGTKControl.GetTooltip: string;
-var text: PChar;
begin
- text := nil;
- Result := '';
- g_object_get(PGObject(FWidget), 'tooltip-text', [@text, nil]);
- if text <> nil then Result := string(text);
+ Result := gtk_widget_get_tooltip_text(FWidget);
end;
procedure TGTKControl.SetTooltip(Value: string);
begin
- g_object_set(PGObject(FWidget), 'tooltip-text', [PChar(Value), nil])
+ gtk_widget_set_tooltip_text(FWidget, PChar(Value));
end;
procedure TGTKControl.SetFocus;
@@ -520,9 +497,9 @@ var Shift: TShiftState;
begin
Accept := True;
Shift := [];
- if event^.state and GDK_SHIFT_MASK = GDK_SHIFT_MASK then Include(Shift, ssShift);
- if event^.state and GDK_CONTROL_MASK = GDK_CONTROL_MASK then Include(Shift, ssCtrl);
- if event^.state and GDK_MOD1_MASK = GDK_MOD1_MASK then Include(Shift, ssAlt);
+ if GDK_SHIFT_MASK in event^.state then Include(Shift, ssShift);
+ if GDK_CONTROL_MASK in event^.state then Include(Shift, ssCtrl);
+ if GDK_MOD1_MASK in event^.state then Include(Shift, ssAlt);
if KeyDown then begin
if Assigned(TGTKControl(user_data).FOnKeyDown) then TGTKControl(user_data).FOnKeyDown(TGTKControl(user_data), event^.keyval,
Shift, Accept);
@@ -597,66 +574,6 @@ begin
end;
end;
-procedure TGTKControl.SetForegroundColor(Red, Green, Blue: word);
-begin
- gtk_widget_modify_fg(FWidget, 0, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetForegroundColor(State: integer; Red, Green, Blue: word);
-begin
- gtk_widget_modify_fg(FWidget, State, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetForegroundColor(State: integer; Color: PGdkColor);
-begin
- gtk_widget_modify_fg(FWidget, State, Color);
-end;
-
-procedure TGTKControl.SetForegroundColor(Color: PGdkColor);
-begin
- gtk_widget_modify_fg(FWidget, 0, Color);
-end;
-
-procedure TGTKControl.SetBackgroundColor(Red, Green, Blue: word);
-begin
- gtk_widget_modify_bg(FWidget, 0, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetBackgroundColor(State: integer; Red, Green, Blue: word);
-begin
- gtk_widget_modify_bg(FWidget, State, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetBackgroundColor(State: integer; Color: PGdkColor);
-begin
- gtk_widget_modify_bg(FWidget, State, Color);
-end;
-
-procedure TGTKControl.SetBackgroundColor(Color: PGdkColor);
-begin
- gtk_widget_modify_bg(FWidget, 0, Color);
-end;
-
-procedure TGTKControl.SetTextColor(Red, Green, Blue: word);
-begin
- gtk_widget_modify_text(FWidget, 0, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetTextColor(State: integer; Red, Green, Blue: word);
-begin
- gtk_widget_modify_text(FWidget, State, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetBaseColor(Red, Green, Blue: word);
-begin
- gtk_widget_modify_base(FWidget, 0, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
-procedure TGTKControl.SetBaseColor(State: integer; Red, Green, Blue: word);
-begin
- gtk_widget_modify_base(FWidget, State, AllocateColor(FWidget, Red, Green, Blue));
-end;
-
procedure TGTKControl.SetOnMouseDown(Value: TGDKMouseEvent);
begin
if @FOnMouseDown <> @Value then begin
@@ -692,9 +609,9 @@ var Shift: TShiftState;
Accept: boolean;
begin
Shift := [];
- if event^.state and GDK_SHIFT_MASK = GDK_SHIFT_MASK then Include(Shift, ssShift);
- if event^.state and GDK_CONTROL_MASK = GDK_CONTROL_MASK then Include(Shift, ssCtrl);
- if event^.state and GDK_MOD1_MASK = GDK_MOD1_MASK then Include(Shift, ssAlt);
+ if GDK_SHIFT_MASK in event^.state then Include(Shift, ssShift);
+ if GDK_CONTROL_MASK in event^.state then Include(Shift, ssCtrl);
+ if GDK_MOD1_MASK in event^.state then Include(Shift, ssAlt);
Accept := True;
if Assigned(TGTKControl(user_data).FOnMouseUp)
then TGTKControl(user_data).FOnMouseUp(TGTKControl(user_data), TGDKMouseButton(event^.button - 1), Shift, Trunc(event^.x), Trunc(event^.y), Accept);
@@ -719,12 +636,12 @@ begin
Result := False;
if event^.is_hint <> 0 then Exit;
Shift := [];
- if event^.state and GDK_SHIFT_MASK = GDK_SHIFT_MASK then Include(Shift, ssShift);
- if event^.state and GDK_CONTROL_MASK = GDK_CONTROL_MASK then Include(Shift, ssCtrl);
- if event^.state and GDK_MOD1_MASK = GDK_MOD1_MASK then Include(Shift, ssAlt);
- if event^.state and GDK_BUTTON1_MASK = GDK_BUTTON1_MASK then Button := mbLeft else
- if event^.state and GDK_BUTTON2_MASK = GDK_BUTTON2_MASK then Button := mbMiddle else
- if event^.state and GDK_BUTTON3_MASK = GDK_BUTTON3_MASK then Button := mbRight else
+ if GDK_SHIFT_MASK in event^.state then Include(Shift, ssShift);
+ if GDK_CONTROL_MASK in event^.state then Include(Shift, ssCtrl);
+ if GDK_MOD1_MASK in event^.state then Include(Shift, ssAlt);
+ if GDK_BUTTON1_MASK in event^.state then Button := mbLeft else
+ if GDK_BUTTON2_MASK in event^.state then Button := mbMiddle else
+ if GDK_BUTTON3_MASK in event^.state then Button := mbRight else
Button := mbNoButton;
if Assigned(TGTKControl(user_data).FOnMouseMove)
then TGTKControl(user_data).FOnMouseMove(TGTKControl(user_data), Button, Shift, Trunc(event^.x), Trunc(event^.y), Accept);
@@ -760,16 +677,6 @@ begin
gtk_widget_queue_draw(FWidget);
end;
-procedure TGTKControl.SetAlignment(XAlign, YAlign: Double);
-begin
- gtk_misc_set_alignment(PGtkMisc(FWidget), XAlign, YAlign);
-end;
-
-procedure TGTKControl.SetPadding(XPad, YPad: integer);
-begin
- gtk_misc_set_padding(PGtkMisc(FWidget), XPad, YPad);
-end;
-
function TGTKControl_expose_event(widget: PGtkWidget; event: PGdkEventExpose; user_data: gpointer):gboolean; cdecl;
var Accept: boolean;
begin
@@ -791,12 +698,12 @@ end;
function TGTKControl.GetControlState: TGTKControlState;
begin
- Result := TGTKControlState(FWidget^.state);
+ Result := TGTKControlState(gtk_widget_get_state_flags(FWidget));
end;
procedure TGTKControl.SetControlState(Value: TGTKControlState);
begin
- gtk_widget_set_state(FWidget, integer(Value));
+ gtk_widget_set_state_flags(FWidget, TGtkStateFlags(Value), True);
end;
function TGTKControl.GetData(Key: string): Pointer;
@@ -809,6 +716,67 @@ begin
g_object_set_data(PGObject(FWidget), PChar(Key), Value);
end;
+function TGTKControl.GetHAlign: TGTKAlignment;
+begin
+ Result := TGTKAlignment(gtk_widget_get_halign(FWidget));
+end;
+
+function TGTKControl.GetVAlign: TGTKAlignment;
+begin
+ Result := TGTKAlignment(gtk_widget_get_valign(FWidget));
+end;
+
+procedure TGTKControl.SetHAlign(Value: TGTKAlignment);
+begin
+ gtk_widget_set_halign(FWidget, TGtkAlign(Value));
+end;
+
+procedure TGTKControl.SetVAlign(Value: TGTKAlignment);
+begin
+ gtk_widget_set_valign(FWidget, TGtkAlign(Value));
+end;
+
+function TGTKControl.GetMarginStart: Integer;
+begin
+ Result := gtk_widget_get_margin_start(FWidget);
+end;
+
+function TGTKControl.GetMarginEnd: Integer;
+begin
+ Result := gtk_widget_get_margin_end(FWidget);
+end;
+
+function TGTKControl.GetMarginTop: Integer;
+begin
+ Result := gtk_widget_get_margin_top(FWidget);
+end;
+
+function TGTKControl.GetMarginBottom: Integer;
+begin
+ Result := gtk_widget_get_margin_bottom(FWidget);
+end;
+
+procedure TGTKControl.SetMarginStart(Value: Integer);
+begin
+ gtk_widget_set_margin_start(FWidget, Value);
+end;
+
+procedure TGTKControl.SetMarginEnd(Value: Integer);
+begin
+ gtk_widget_set_margin_end(FWidget, Value);
+end;
+
+procedure TGTKControl.SetMarginTop(Value: Integer);
+begin
+ gtk_widget_set_margin_top(FWidget, Value);
+end;
+
+procedure TGTKControl.SetMarginBottom(Value: Integer);
+begin
+ gtk_widget_set_margin_bottom(FWidget, Value);
+end;
+
+
(********************************************************************************************************************************)
(********************************************************************************************************************************)
constructor TGTKContainer.Create(AOwner: TComponent);
@@ -889,12 +857,12 @@ end;
procedure TGTKBox.AddControl(Control: TGTKControl);
begin
- gtk_box_pack_start_defaults(PGtkBox(FWidget), Control.FWidget);
+ gtk_box_pack_start(PGtkBox(FWidget), Control.FWidget, True, True, 0);
end;
procedure TGTKBox.AddControlEnd(Control: TGTKControl);
begin
- gtk_box_pack_end_defaults(PGtkBox(FWidget), Control.FWidget);
+ gtk_box_pack_end(PGtkBox(FWidget), Control.FWidget, True, True, 0);
end;
procedure TGTKBox.AddControlEx(Control: TGTKControl; Expand, Fill: boolean; Padding: integer);
@@ -933,7 +901,7 @@ constructor TGTKHBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if ClassName = 'TGTKHBox' then begin
- FWidget := gtk_hbox_new(True, 0);
+ FWidget := gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
Show;
end;
end;
@@ -949,7 +917,7 @@ constructor TGTKVBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if ClassName = 'TGTKVBox' then begin
- FWidget := gtk_vbox_new(False, 0);
+ FWidget := gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
Show;
end;
end;
@@ -961,32 +929,6 @@ end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
-constructor TGTKTooltips.Create(AOwner: TComponent);
-begin
- inherited Create(AOwner);
- FObject := gtk_tooltips_new;
-end;
-
-destructor TGTKTooltips.Destroy;
-begin
- inherited Destroy;
-end;
-
-function TGTKTooltips.GetEnabled: boolean;
-begin
- // FIXME: This is horrible expression
- Result := Boolean(gtk2.enabled(FObject^));
-end;
-
-procedure TGTKTooltips.SetEnabled(Value: boolean);
-begin
- if Value then gtk_tooltips_enable(FObject)
- else gtk_tooltips_disable(FObject);
-end;
-
-
-(********************************************************************************************************************************)
-(********************************************************************************************************************************)
constructor TGTKEventBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
@@ -1001,95 +943,63 @@ end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
-constructor TGTKTable.Create(AOwner: TComponent);
+constructor TGTKGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
- FWidget := gtk_table_new(0, 0, False);
+ FWidget := gtk_grid_new();
Show;
end;
-destructor TGTKTable.Destroy;
+destructor TGTKGrid.Destroy;
begin
inherited Destroy;
end;
-function TGTKTable.GetRowCount: integer;
-var nrows: guint;
-begin
- nrows := 1;
- g_object_get(PGObject(FWidget), 'n-rows', [@nrows, nil]);
- Result := nrows;
-end;
-
-procedure TGTKTable.SetRowCount(Value: integer);
-begin
- SetRowColCount(Value, ColCount);
-end;
-
-function TGTKTable.GetColCount: integer;
-var ncols: guint;
+function TGTKGrid.GetRowSpacing: integer;
begin
- ncols := 1;
- g_object_get(PGObject(FWidget), 'n-columns', [@ncols, nil]);
- Result := ncols;
+ Result := gtk_grid_get_row_spacing(PGtkGrid(FWidget));
end;
-procedure TGTKTable.SetColCount(Value: integer);
+procedure TGTKGrid.SetRowSpacing(Value: integer);
begin
- SetRowColCount(RowCount, Value);
+ gtk_grid_set_row_spacing(PGtkGrid(FWidget), Value);
end;
-procedure TGTKTable.SetRowColCount(Rows, Cols: integer);
+function TGTKGrid.GetColSpacing: integer;
begin
- gtk_table_resize(PGtkTable(FWidget), Rows, Cols);
+ Result := gtk_grid_get_column_spacing(PGtkGrid(FWidget));
end;
-function TGTKTable.GetRowSpacing: integer;
+procedure TGTKGrid.SetColSpacing(Value: integer);
begin
- Result := gtk_table_get_default_row_spacing(PGtkTable(FWidget));
+ gtk_grid_set_column_spacing(PGtkGrid(FWidget), Value);
end;
-procedure TGTKTable.SetRowSpacing(Value: integer);
+function TGTKGrid.GetRowHomogeneous: boolean;
begin
- gtk_table_set_row_spacings(PGtkTable(FWidget), Value);
+ Result := gtk_grid_get_row_homogeneous(PGtkGrid(FWidget));
end;
-function TGTKTable.GetColSpacing: integer;
+function TGTKGrid.GetColHomogeneous: boolean;
begin
- Result := gtk_table_get_default_col_spacing(PGtkTable(FWidget));
+ Result := gtk_grid_get_column_homogeneous(PGtkGrid(FWidget));
end;
-procedure TGTKTable.SetColSpacing(Value: integer);
+procedure TGTKGrid.SetRowHomogeneous(Value: boolean);
begin
- gtk_table_set_col_spacings(PGtkTable(FWidget), Value);
+ gtk_grid_set_row_homogeneous(PGtkGrid(FWidget), Value);
end;
-function TGTKTable.GetHomogeneous: boolean;
+procedure TGTKGrid.SetColHomogeneous(Value: boolean);
begin
- Result := gtk_table_get_homogeneous(PGtkTable(FWidget));
+ gtk_grid_set_column_homogeneous(PGtkGrid(FWidget), Value);
end;
-procedure TGTKTable.SetHomogeneous(Value: boolean);
+procedure TGTKGrid.AddControl(Column, Row, NumCols, NumRows: integer; Control: TGTKControl);
begin
- gtk_table_set_homogeneous(PGtkTable(FWidget), Value);
+ gtk_grid_attach(PGtkGrid(FWidget), Control.FWidget, Column, Row, NumCols, NumRows);
end;
-procedure TGTKTable.AddControl(Column, Row, NumCols, NumRows: integer; Control: TGTKControl; XPadding, YPadding: integer);
-begin
- gtk_table_attach(PGtkTable(FWidget), Control.FWidget, Column, Column + NumCols, Row, Row + NumRows,
- GTK_EXPAND or GTK_SHRINK or GTK_FILL, GTK_EXPAND or GTK_SHRINK or GTK_FILL, XPadding, YPadding);
-end;
-
-procedure TGTKTable.AddControlEx(Column, Row, NumCols, NumRows: integer; Control: TGTKControl; XAttachOptions,
- YAttachOptions: TGTKTableAttachOptions; XPadding, YPadding: integer);
-begin
- gtk_table_attach(PGtkTable(FWidget), Control.FWidget, Column, Column + NumCols, Row, Row + NumRows,
- (GTK_EXPAND*Ord(taoExpand in XAttachOptions)) or (GTK_SHRINK*Ord(taoShrink in XAttachOptions)) or (GTK_FILL*Ord(taoFill in XAttachOptions)),
- (GTK_EXPAND*Ord(taoExpand in YAttachOptions)) or (GTK_SHRINK*Ord(taoShrink in YAttachOptions)) or (GTK_FILL*Ord(taoFill in YAttachOptions)),
- XPadding, YPadding);
-end;
-
-
(********************************************************************************************************************************)
(********************************************************************************************************************************)
diff --git a/libgtk_kylix/GTKDialogs.pas b/libgtk_kylix/GTKDialogs.pas
index 17b32d0..dfbe1b2 100644
--- a/libgtk_kylix/GTKDialogs.pas
+++ b/libgtk_kylix/GTKDialogs.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKDialogs - Special purpose dialogs
- Version 0.7.0 (last updated 2006-02-05)
Copyright (C) 2006 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,20 +23,15 @@ unit GTKDialogs;
interface
-uses gtk2, gdk2, lazglib2, lazgobject2, Classes, GTKControls, GTKUtils, GTKClasses, GTKForms;
-
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, Classes, GTKControls, GTKStdCtrls, GTKForms;
type
-(****************************************** TGTKFILESELECTIONDIALOG *************************************************************)
- TGTKFileSelectionDialog = class(TGTKDialog)
+(****************************************** TGTKFILECHOOSERDIALOG *************************************************************)
+ TGTKFileChooserDialog = class(TGTKDialog)
private
function GetFileName: string;
- function GetShowFileOpButtons: boolean;
- function GetMultiSelect: boolean;
procedure SetFileName(Value: string);
- procedure SetShowFileOpButtons(Value: boolean);
- procedure SetMultiSelect(Value: boolean);
protected
public
constructor Create(AOwner: TComponent); override;
@@ -45,45 +39,37 @@ type
destructor Destroy; override;
published
property FileName: string read GetFileName write SetFileName;
- property ShowFileOpButtons: boolean read GetShowFileOpButtons write SetShowFileOpButtons;
- property MultiSelect: boolean read GetMultiSelect write SetMultiSelect;
end;
-(****************************************** TGTKCOLORSELECTIONDIALOG ************************************************************)
- TGTKColorSelectionDialog = class(TGTKDialog)
+(****************************************** TGTKCOLORBUTTON *******************************************************************)
+ TGTKColorButton = class(TGTKButton)
private
- function GetShowOpacity: boolean;
- procedure SetShowOpacity(Value: boolean);
- function GetShowPalette: boolean;
- procedure SetShowPalette(Value: boolean);
- function GetColor: TGDKColor;
- procedure SetColor(Value: TGDKColor);
+ FColorChanged: TNotifyEvent;
+ function GetColor: string;
+ procedure SetColor(Value: string);
protected
public
constructor Create(AOwner: TComponent); override;
- constructor CreateWithTitle(AOwner: TComponent; const Title: string);
destructor Destroy; override;
- property Color: TGDKColor read GetColor write SetColor;
+ procedure SetDefaultColor;
published
- property ShowOpacity: boolean read GetShowOpacity write SetShowOpacity;
- property ShowPalette: boolean read GetShowPalette write SetShowPalette;
+ property Color: string read GetColor write SetColor;
+ property OnColorChanged: TNotifyEvent read FColorChanged write FColorChanged;
end;
-(****************************************** TGTKFONTSELECTIONDIALOG *************************************************************)
- TGTKFontSelectionDialog = class(TGTKDialog)
+(****************************************** TGTKFontButton *************************************************************)
+ TGTKFontButton = class(TGTKButton)
private
+ FFontNameChanged: TNotifyEvent;
function GetFontName: string;
procedure SetFontName(Value: string);
- function GetPreviewText: string;
- procedure SetPreviewText(Value: string);
protected
public
constructor Create(AOwner: TComponent); override;
- constructor CreateWithTitle(AOwner: TComponent; const Title: string);
destructor Destroy; override;
published
property FontName: string read GetFontName write SetFontName;
- property PreviewText: string read GetPreviewText write SetPreviewText;
+ property OnFontNameChanged: TNotifyEvent read FFontNameChanged write FFontNameChanged;
end;
(********************************************************************************************************************************)
@@ -95,154 +81,107 @@ uses SysUtils, DateUtils;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
-constructor TGTKFileSelectionDialog.Create(AOwner: TComponent);
+constructor TGTKFileChooserDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
- FWidget := gtk_file_selection_new(nil);
+ FWidget := gtk_file_chooser_dialog_new(nil, PGtkWindow((AOwner as TCustomGTKForm).FWidget), GTK_FILE_CHOOSER_ACTION_OPEN, nil, [nil]);
Show;
end;
-constructor TGTKFileSelectionDialog.CreateWithTitle(AOwner: TComponent; const Title: string);
+constructor TGTKFileChooserDialog.CreateWithTitle(AOwner: TComponent; const Title: string);
begin
inherited Create(AOwner);
- FWidget := gtk_file_selection_new(PChar(Title));
+ FWidget := gtk_file_chooser_dialog_new(PChar(Title), PGtkWindow((AOwner as TCustomGTKForm).FWidget), GTK_FILE_CHOOSER_ACTION_OPEN, nil, [nil]);
Show;
end;
-destructor TGTKFileSelectionDialog.Destroy;
+destructor TGTKFileChooserDialog.Destroy;
begin
inherited Destroy;
end;
-function TGTKFileSelectionDialog.GetFileName: string;
-begin
- Result := string(gtk_file_selection_get_filename(PGtkFileSelection(FWidget)));
-end;
-
-procedure TGTKFileSelectionDialog.SetFileName(Value: string);
-begin
- gtk_file_selection_set_filename(PGtkFileSelection(FWidget), PChar(Value));
-end;
-
-function TGTKFileSelectionDialog.GetShowFileOpButtons: boolean;
-var b: Boolean;
+function TGTKFileChooserDialog.GetFileName: string;
begin
- b := False;
- g_object_get(PGObject(FWidget), 'show-fileops', [@b, nil]);
- Result := b;
+ Result := String(gtk_file_chooser_get_filename(PGtkFileChooser(FWidget)));
end;
-procedure TGTKFileSelectionDialog.SetShowFileOpButtons(Value: boolean);
+procedure TGTKFileChooserDialog.SetFileName(Value: string);
begin
- if Value then gtk_file_selection_show_fileop_buttons(PGtkFileSelection(FWidget))
- else gtk_file_selection_hide_fileop_buttons(PGtkFileSelection(FWidget));
-end;
-
-function TGTKFileSelectionDialog.GetMultiSelect: boolean;
-begin
- Result := gtk_file_selection_get_select_multiple(PGtkFileSelection(FWidget));
-end;
-
-procedure TGTKFileSelectionDialog.SetMultiSelect(Value: boolean);
-begin
- gtk_file_selection_set_select_multiple(PGtkFileSelection(FWidget), Value);
+ gtk_file_chooser_set_filename(PGtkFileChooser(FWidget), PChar(Value));
end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
-constructor TGTKColorSelectionDialog.Create(AOwner: TComponent);
+procedure GtkColorButton_color_set(widget: PGtkColorButton; user_data: gpointer); cdecl;
begin
- inherited Create(AOwner);
- FWidget := gtk_color_selection_dialog_new(nil);
- Show;
+ if Assigned(user_data) and Assigned(TGTKColorButton(user_data).FColorChanged) then
+ TGTKColorButton(user_data).FColorChanged(TGTKColorButton(user_data));
end;
-constructor TGTKColorSelectionDialog.CreateWithTitle(AOwner: TComponent; const Title: string);
+constructor TGTKColorButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
- FWidget := gtk_color_selection_dialog_new(PChar(Title));
+ FWidget := gtk_color_button_new();
+ g_signal_connect_data(PGObject(FWidget), 'color-set', TGCallback(@GtkColorButton_color_set), Self, nil, G_CONNECT_DEFAULT);
Show;
+ FColorChanged := nil;
end;
-destructor TGTKColorSelectionDialog.Destroy;
+destructor TGTKColorButton.Destroy;
begin
inherited Destroy;
end;
-function TGTKColorSelectionDialog.GetShowOpacity: boolean;
+function TGTKColorButton.GetColor: string;
+var c: TGdkRGBA;
begin
- Result := gtk_color_selection_get_has_opacity_control(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel));
+ FillChar(c, sizeof(TGdkRGBA), 0);
+ gtk_color_chooser_get_rgba(PGtkColorChooser(FWidget), @c);
+ Result := string(gdk_rgba_to_string(@c));
end;
-procedure TGTKColorSelectionDialog.SetShowOpacity(Value: boolean);
+procedure TGTKColorButton.SetColor(Value: string);
+var c: TGdkRGBA;
begin
- gtk_color_selection_set_has_opacity_control(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel), Value);
+ if gdk_rgba_parse(@c, PChar(Value)) then
+ gtk_color_chooser_set_rgba(PGtkColorChooser(FWidget), @c);
end;
-function TGTKColorSelectionDialog.GetShowPalette: boolean;
+procedure TGTKColorButton.SetDefaultColor;
begin
- Result := gtk_color_selection_get_has_palette(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel));
-end;
-
-procedure TGTKColorSelectionDialog.SetShowPalette(Value: boolean);
-begin
- gtk_color_selection_set_has_palette(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel), Value);
-end;
-
-function TGTKColorSelectionDialog.GetColor: TGDKColor;
-var Col: gdk2.TGDkColor;
-begin
- FillChar(Col, sizeof(gdk2.TGDkColor), 0);
- gtk_color_selection_get_current_color(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel), @Col);
- Result := PGdkColorToGDKColor(@Col);
-end;
-
-procedure TGTKColorSelectionDialog.SetColor(Value: TGDKColor);
-var Col: PGDkColor;
-begin
- Col := GDKColorToPGdkColor(Value);
- gtk_color_selection_set_current_color(PGtkColorSelection(PGtkColorSelectionDialog(FWidget)^.colorsel), Col);
+ gtk_color_chooser_set_rgba(PGtkColorChooser(FWidget), nil);
end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
-constructor TGTKFontSelectionDialog.Create(AOwner: TComponent);
+procedure GtkFontButton_font_set(widget: PGtkFontButton; user_data: gpointer); cdecl;
begin
- inherited Create(AOwner);
- FWidget := gtk_font_selection_dialog_new(nil);
- Show;
+ if Assigned(user_data) and Assigned(TGTKFontButton(user_data).FFontNameChanged) then
+ TGTKFontButton(user_data).FFontNameChanged(TGTKFontButton(user_data));
end;
-constructor TGTKFontSelectionDialog.CreateWithTitle(AOwner: TComponent; const Title: string);
+constructor TGTKFontButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
- FWidget := gtk_font_selection_dialog_new(PChar(Title));
+ FWidget := gtk_font_button_new();
+ g_signal_connect_data(PGObject(FWidget), 'font-set', TGCallback(@GtkFontButton_font_set), Self, nil, G_CONNECT_DEFAULT);
Show;
+ FFontNameChanged := nil;
end;
-destructor TGTKFontSelectionDialog.Destroy;
+destructor TGTKFontButton.Destroy;
begin
inherited Destroy;
end;
-function TGTKFontSelectionDialog.GetFontName: string;
-begin
- Result := String(gtk_font_selection_dialog_get_font_name(PGtkFontSelectionDialog(FWidget)));
-end;
-
-procedure TGTKFontSelectionDialog.SetFontName(Value: string);
-begin
- gtk_font_selection_dialog_set_font_name(PGtkFontSelectionDialog(FWidget), PChar(Value));
-end;
-
-function TGTKFontSelectionDialog.GetPreviewText: string;
+function TGTKFontButton.GetFontName: string;
begin
- Result := String(gtk_font_selection_dialog_get_preview_text(PGtkFontSelectionDialog(FWidget)));
+ Result := String(gtk_font_chooser_get_font(PGtkFontChooser(FWidget)));
end;
-procedure TGTKFontSelectionDialog.SetPreviewText(Value: string);
+procedure TGTKFontButton.SetFontName(Value: string);
begin
- gtk_font_selection_dialog_set_preview_text(PGtkFontSelectionDialog(FWidget), PChar(Value));
+ gtk_font_chooser_set_font(PGtkFontChooser(FWidget), PChar(Value));
end;
(********************************************************************************************************************************)
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;
diff --git a/libgtk_kylix/GTKForms.pas b/libgtk_kylix/GTKForms.pas
index a3572b6..b1467db 100644
--- a/libgtk_kylix/GTKForms.pas
+++ b/libgtk_kylix/GTKForms.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKForms - Basic windows (TGTKForm, TGTKDialog), TGTKApplication, TGDKScreen
- Version 0.6.28 (last updated 2008-10-12)
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 GTKForms;
interface
-uses gtk2, gdk2, lazglib2, lazgobject2, Classes, SysUtils, GTKControls, GTKConsts;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, Classes, SysUtils, GTKControls, GTKConsts;
type // Some basic types
PCharArray = array[0..0] of PChar;
@@ -109,7 +108,6 @@ type // Some basic types
property Default: TGTKControl write SetDefault;
public
FAccelGroup: PGtkAccelGroup;
- Tooltips: TGTKTooltips;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Release;
@@ -144,9 +142,7 @@ type // Some basic types
private
FButtons: TMessageButtons;
FOnResponse: TGTKDialogResponseEvent;
- function GetShowSeparator: boolean;
procedure SetButtons(Value: TMessageButtons);
- procedure SetShowSeparator(Value: boolean);
procedure SetModalResult(Value: TMessageButton);
procedure SetDefaultButton(Value: TMessageButton);
procedure SetParentForm(Value: TCustomGTKForm);
@@ -159,7 +155,6 @@ type // Some basic types
procedure SetResponseSensitive(ButtonID: integer; Sensitive: boolean);
published
property Buttons: TMessageButtons read FButtons write SetButtons default [];
- property ShowSeparator: boolean read GetShowSeparator write SetShowSeparator;
property ModalResult: TMessageButton write SetModalResult;
property DefaultButton: TMessageButton write SetDefaultButton;
property Caption;
@@ -275,7 +270,7 @@ begin
Result := not TCustomGTKForm(user_data).Close;
end;
-procedure TCustomGTKForm_show(anobject : PGtkObject; user_data: pgpointer); cdecl;
+procedure TCustomGTKForm_show(widget: PGtkWidget; user_data: gpointer); cdecl;
begin
if Assigned(TCustomGTKForm(user_data).FOnShow) then TCustomGTKForm(user_data).FOnShow(TCustomGTKForm(user_data));
end;
@@ -288,7 +283,6 @@ end;
constructor TCustomGTKForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
- Tooltips := TGTKTooltips.Create(Self);
FOnClose := nil;
FOnCloseQuery := nil;
FOnDestroy := nil;
@@ -304,7 +298,6 @@ begin
if Assigned(FOnDestroy) then FOnDestroy(Self);
except
end;
- Tooltips.Free;
if not Application.Terminated then gtk_widget_destroy(FWidget);
inherited Destroy;
end;
@@ -409,7 +402,7 @@ end;
procedure TCustomGTKForm.SetWindowTypeHint(Value: TGDKWindowTypeHint);
begin
- gtk_window_set_type_hint(PGtkWindow(FWidget), gdk2.TGdkWindowTypeHint(Value));
+ gtk_window_set_type_hint(PGtkWindow(FWidget), lazgdk3.TGdkWindowTypeHint(Value));
end;
function TCustomGTKForm.GetWindowState: TGDKWindowState;
@@ -689,9 +682,8 @@ end;
function TGTKApplication_MessageBox_key_press_event(widget: PGtkWidget; event: PGdkEventKey; user_data : gpointer): gboolean; cdecl;
begin
Result := False;
- if event^.keyval = GDK_ESCAPE then begin
- gtk_dialog_response(PGtkDialog(widget), integer(user_data));
-// Beep;
+ if event^.keyval = GDK_KEY_Escape then begin
+ gtk_dialog_response(PGtkDialog(widget), TGtkResponseType(guint(user_data)));
Result := True;
end;
end;
@@ -717,14 +709,14 @@ begin
Result := Escape;
Exit;
end;
- Dialog := gtk_message_dialog_new(ParentWindow, GTK_DIALOG_MODAL or GTK_DIALOG_DESTROY_WITH_PARENT, TMessageStyleID[Integer(Style)],
- GTK_BUTTONS_NONE, '%s', PChar(Text));
+ Dialog := gtk_message_dialog_new(ParentWindow, [GTK_DIALOG_MODAL, GTK_DIALOG_DESTROY_WITH_PARENT], TMessageStyleID[Integer(Style)],
+ GTK_BUTTONS_NONE, '%s', [PChar(Text)]);
for i := 1 to NumMessageButtons do
if TMessageButton(i - 1) in Buttons
- then gtk_dialog_add_button(PGtkDialog(Dialog), MessageButtonID[i], i);
+ then gtk_dialog_add_button(PGtkDialog(Dialog), MessageButtonID[i], TGtkResponseType(i));
if Escape <> mbNone then g_signal_connect_data(PGObject(Dialog), 'key-press-event', TGCallback(@TGTKApplication_MessageBox_key_press_event),
Pointer(Ord(Escape) + 1{MessageButtonID[Ord(Escape)]}), nil, G_CONNECT_DEFAULT);
- if Default <> mbNone then gtk_dialog_set_default_response(PGtkDialog(Dialog), Ord(Default));
+ if Default <> mbNone then gtk_dialog_set_default_response(PGtkDialog(Dialog), TGtkResponseType(Ord(Default)));
Result := TMessageButton(gtk_dialog_run(PGtkDialog(Dialog)) - 1);
gtk_widget_destroy(Dialog);
end;
@@ -795,8 +787,8 @@ begin
g_signal_connect_data(PGObject(FWidget), 'delete-event', TGCallback(@TCustomGTKForm_delete_event), Self, nil, G_CONNECT_DEFAULT);
g_signal_connect_data(PGObject(FWidget), 'show', TGCallback(@TCustomGTKForm_show), Self, nil, G_CONNECT_DEFAULT);
g_signal_connect_data(PGObject(FWidget), 'response', TGCallback(@TGTKDialog_response_event), Self, nil, G_CONNECT_DEFAULT);
- ClientArea := TGTKVBox.CreateLinked(Self, PGtkDialog(FWidget)^.vbox);
- ActionArea := TGTKHBox.CreateLinked(Self, PGtkDialog(FWidget)^.action_area);
+ ClientArea := TGTKVBox.CreateLinked(Self, gtk_dialog_get_content_area(PGtkDialog(FWidget)));
+ ActionArea := TGTKHBox.CreateLinked(Self, gtk_dialog_get_action_area(PGtkDialog(FWidget)));
FButtons := [];
Visible := False;
SetResizeable(True);
@@ -815,37 +807,27 @@ var i: integer;
begin
for i := 1 to NumMessageButtons do
if TMessageButton(i - 1) in Value
- then gtk_dialog_add_button(PGtkDialog(FWidget), MessageButtonID[i], i - 1);
-end;
-
-function TGTKDialog.GetShowSeparator: boolean;
-begin
- Result := gtk_dialog_get_has_separator(PGtkDialog(FWidget));
-end;
-
-procedure TGTKDialog.SetShowSeparator(Value: boolean);
-begin
- gtk_dialog_set_has_separator(PGtkDialog(FWidget), Value);
+ then gtk_dialog_add_button(PGtkDialog(FWidget), MessageButtonID[i], TGtkResponseType(i - 1));
end;
procedure TGTKDialog.SetModalResult(Value: TMessageButton);
begin
- gtk_dialog_response(PGtkDialog(FWidget), Integer(Value));
+ gtk_dialog_response(PGtkDialog(FWidget), TGtkResponseType(Integer(Value)));
end;
procedure TGTKDialog.SetDefaultButton(Value: TMessageButton);
begin
- gtk_dialog_set_default_response(PGtkDialog(FWidget), Integer(Value));
+ gtk_dialog_set_default_response(PGtkDialog(FWidget), TGtkResponseType(Integer(Value)));
end;
procedure TGTKDialog.AddButton(ButtonCaption: string; ButtonID: integer);
begin
- gtk_dialog_add_button(PGtkDialog(FWidget), PChar(ButtonCaption), ButtonID);
+ gtk_dialog_add_button(PGtkDialog(FWidget), PChar(ButtonCaption), TGtkResponseType(ButtonID));
end;
procedure TGTKDialog.SetResponseSensitive(ButtonID: integer; Sensitive: boolean);
begin
- gtk_dialog_set_response_sensitive(PGtkDialog(FWidget), ButtonID, Sensitive);
+ gtk_dialog_set_response_sensitive(PGtkDialog(FWidget), TGtkResponseType(ButtonID), Sensitive);
end;
procedure TGTKDialog.SetParentForm(Value: TCustomGTKForm);
diff --git a/libgtk_kylix/GTKMenus.pas b/libgtk_kylix/GTKMenus.pas
index ed2bfba..5819d5c 100644
--- a/libgtk_kylix/GTKMenus.pas
+++ b/libgtk_kylix/GTKMenus.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKMenus - Menu handling and related routines
- Version 0.6.13 (last updated 2003-07-10)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,7 +23,7 @@ unit GTKMenus;
interface
-uses gtk2, gdk2, glib2, lazglib2, lazgobject2, Classes, GTKControls, GTKConsts, GTKPixbuf;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, Classes, GTKControls, GTKConsts, GTKPixbuf;
type
(****************************************** TGDKSHORTCUTS ***********************************************************************)
@@ -55,12 +54,11 @@ type
end;
(****************************************** TGTKMENUITEM ************************************************************************)
- TGTKMenuItemType = (itLabel, itSeparator, itTearOff, itCheck, itImageText, itRadio);
+ TGTKMenuItemType = (itLabel, itSeparator, itCheck, itImageText, itRadio);
TGTKMenuItemGroup = PGSList;
TGTKMenuItem = class(TGTKBin)
private
FItems: TList;
- FTearOffTitle: string;
FOnClick: TNotifyEvent;
FUKey: guint;
FItemType: TGTKMenuItemType;
@@ -71,17 +69,12 @@ type
function GetCount: Integer;
function GetItem(Index: Integer): TGTKMenuItem;
function GetCaption: string;
- function GetRightJustified: boolean;
- function GetTornOff: boolean;
function GetChecked: boolean;
function GetGroup: TGTKMenuItemGroup;
procedure SetCaption(Value: string);
- procedure SetTearOffTitle(Value: string);
- procedure SetRightJustified(Value: boolean);
procedure SetItemType(Value: TGTKMenuItemType);
- procedure SetTornOff(Value: boolean);
procedure SetChecked(Value: boolean);
- procedure SetStockIcon(Value: string);
+ procedure SetIconName(Value: string);
procedure SetIcon(Value: TGDKPixbuf);
procedure SetGroup(Value: TGTKMenuItemGroup);
protected
@@ -97,22 +90,17 @@ type
procedure Clear;
procedure Delete(Index: Integer);
procedure Insert(Index: Integer; Item: TGTKMenuItem);
- procedure TearOff;
- procedure UnTearOff;
procedure PopUp;
procedure PopDown;
procedure SetCaptionPlain(Value: string);
property Count: Integer read GetCount;
property Items[Index: Integer]: TGTKMenuItem read GetItem; default;
property Caption: string read GetCaption write SetCaption;
- property TearOffTitle: string read FTearOffTitle write SetTearOffTitle;
- property RightJustified: boolean read GetRightJustified write SetRightJustified default False;
property OnClick: TNotifyEvent read FOnClick write FOnClick;
property ItemType: TGTKMenuItemType read FItemType write SetItemType default itLabel;
- property TornOff: boolean read GetTornOff write SetTornOff;
property Checked: boolean read GetChecked write SetChecked;
property Notify: TNotifyEvent read FNotify write FNotify;
- property StockIcon: string write SetStockIcon;
+ property IconName: string write SetIconName;
property Icon: TGDKPixbuf write SetIcon;
property Data: Pointer read FData write FData;
property OnPopup: TNotifyEvent read FOnPopup write FOnPopup;
@@ -131,7 +119,7 @@ type
property Items: TGTKMenuItem read FItems;
end;
-
+
function MakeGDKShortCut(Key: word; Locked, ModAlt, ModShift, ModCtrl : boolean): TGDKShortCut;
(********************************************************************************************************************************)
@@ -142,6 +130,9 @@ implementation
uses GTKForms;
+function gtk_image_menu_item_new_with_mnemonic(const L: Pgchar): PGtkImageMenuItem; cdecl; external LazGtk3_library;
+
+
(********************************************************************************************************************************)
(********************************************************************************************************************************)
constructor TGTKMenuBar.Create(AOwner: TComponent);
@@ -180,7 +171,6 @@ begin
FData := nil;
FOnPopup := nil;
ShortCuts := TGDKShortCuts.Create(Self);
- FTearOffTitle := '';
FUKey := 0;
Recreate;
end;
@@ -198,7 +188,6 @@ begin
FNotify := nil;
FData := nil;
ShortCuts := TGDKShortCuts.Create(Self);
- FTearOffTitle := '';
FUKey := 0;
Recreate(AGroup);
end;
@@ -225,8 +214,7 @@ begin
end;
case FItemType of
itLabel: FWidget := gtk_menu_item_new_with_mnemonic(Pgchar(SCDefaultMenuItemCaption));
- itSeparator: FWidget := gtk_menu_item_new;
- itTearOff: FWidget := gtk_tearoff_menu_item_new;
+ itSeparator: FWidget := gtk_separator_menu_item_new();
itCheck: FWidget := gtk_check_menu_item_new_with_mnemonic(Pgchar(SCDefaultMenuItemCaption));
itImageText: begin
FWidget := gtk_image_menu_item_new_with_mnemonic(Pgchar(SCDefaultMenuItemCaption));
@@ -234,7 +222,7 @@ begin
gtk_widget_show(FImageWidget);
gtk_image_menu_item_set_image(PGtkImageMenuItem(FWidget), FImageWidget);
end;
- itRadio: FWidget := gtk_radio_menu_item_new_with_mnemonic(GLIB2.PGSList(AGroup), Pgchar(SCDefaultMenuItemCaption));
+ itRadio: FWidget := gtk_radio_menu_item_new_with_mnemonic(PGSList(AGroup), Pgchar(SCDefaultMenuItemCaption));
end;
g_signal_connect_data(PGObject(FWidget), 'activate', TGCallback(@TGTKMenuItem_activate), Self, nil, G_CONNECT_DEFAULT);
Show;
@@ -277,7 +265,7 @@ begin
if (FParentMenu is TGTKMenuItem) or (FParentMenu is TGTKMenuBar)
then begin
if (FParentMenu is TGTKMenuItem) or (FParentMenu is TGTKMenuBar)
- then gtk_menu_item_remove_submenu(PGtkMenuItem(FWidget));
+ then gtk_menu_item_set_submenu(PGtkMenuItem(FWidget), nil);
gtk_widget_destroy(FMenu);
FMenu := nil;
end;
@@ -289,13 +277,12 @@ end;
procedure TGTKMenuItem.Insert(Index: Integer; Item: TGTKMenuItem);
begin
- if (Item = Self) or (FItemType in [itSeparator, itTearOff]) then Exit;
+ if (Item = Self) or (FItemType in [itSeparator]) then Exit;
if FItems = nil then begin
FItems := TList.Create;
if FMenu = nil then FMenu := gtk_menu_new;
if (FParentMenu is TGTKMenuItem) or (FParentMenu is TGTKMenuBar)
- then gtk_menu_item_set_submenu(PGtkMenuItem(FWidget), FMenu);
- SetTearOffTitle(FTearOffTitle);
+ then gtk_menu_item_set_submenu(PGtkMenuItem(FWidget), PGtkMenu(FMenu));
end;
Item.FParentMenu := Self;
FItems.Insert(Index, Item);
@@ -308,44 +295,20 @@ end;
function TGTKMenuItem.GetCaption: string;
begin
Result := '';
- if FItemType in [itSeparator, itTearOff] then Exit;
+ if FItemType in [itSeparator] then Exit;
if Assigned(ChildControl) then Result := String(gtk_label_get_text(PGtkLabel(ChildControl)));
end;
procedure TGTKMenuItem.SetCaption(Value: string);
begin
- if FItemType in [itSeparator, itTearOff] then Exit;
+ if FItemType in [itSeparator] then Exit;
gtk_label_set_markup_with_mnemonic(PGtkLabel(ChildControl), PChar(Value));
- if FTearOffTitle = '' then SetTearOffTitle(Value);
end;
procedure TGTKMenuItem.SetCaptionPlain(Value: string);
begin
- if FItemType in [itSeparator, itTearOff] then Exit;
+ if FItemType in [itSeparator] then Exit;
gtk_label_set_markup(PGtkLabel(ChildControl), PChar(Value));
- if FTearOffTitle = '' then SetTearOffTitle(Value);
-end;
-
-procedure TGTKMenuItem.SetTearOffTitle(Value: string);
-begin
- FTearOffTitle := Value;
- if FItemType = itTearOff then begin
- if Assigned(FParentMenu) and (FParentMenu is TGTKMenuItem) and Assigned((FParentMenu as TGTKMenuItem).FMenu)
- then gtk_menu_set_title(PGtkMenu((FParentMenu as TGTKMenuItem).FMenu), PChar(FTearOffTitle))
- end else if Assigned(FMenu) then gtk_menu_set_title(PGtkMenu(FMenu), PChar(FTearOffTitle));
-end;
-
-function TGTKMenuItem.GetRightJustified: boolean;
-begin
- Result := False;
- if FItemType in [itSeparator, itTearOff] then Exit;
- Result := gtk_menu_item_get_right_justified(PGtkMenuItem(FWidget));
-end;
-
-procedure TGTKMenuItem.SetRightJustified(Value: boolean);
-begin
- if FItemType in [itSeparator, itTearOff] then Exit;
- gtk_menu_item_set_right_justified(PGtkMenuItem(FWidget), Value);
end;
procedure TGTKMenuItem.SetItemType(Value: TGTKMenuItemType);
@@ -356,33 +319,6 @@ begin
end;
end;
-function TGTKMenuItem.GetTornOff: boolean;
-var b: gboolean;
-begin
- b := False;
- if FItemType = itTearOff then g_object_get(PGObject(FWidget), 'tearoff-state', [@b, nil]) else
- if Assigned(FMenu) and (Count > 0) then g_object_get(PGObject(FMenu), 'tearoff-state', [@b, nil]);
- Result := b;
-end;
-
-procedure TGTKMenuItem.SetTornOff(Value: boolean);
-begin
- if FItemType = itTearOff then begin
- if Assigned(FParentMenu) and (FParentMenu is TGTKMenuItem) and Assigned((FParentMenu as TGTKMenuItem).FMenu)
- then gtk_menu_set_tearoff_state(PGtkMenu((FParentMenu as TGTKMenuItem).FMenu), Value);
- end else if Assigned(FMenu) then gtk_menu_set_tearoff_state(PGtkMenu(FMenu), Value);
-end;
-
-procedure TGTKMenuItem.TearOff;
-begin
- SetTornOff(True);
-end;
-
-procedure TGTKMenuItem.UnTearOff;
-begin
- SetTornOff(False);
-end;
-
function TGTKMenuItem.GetChecked: boolean;
begin
Result := False;
@@ -407,9 +343,9 @@ begin
if (FItems <> nil) and (FItems.Count > 0) then gtk_menu_popdown(PGtkMenu(FMenu));
end;
-procedure TGTKMenuItem.SetStockIcon(Value: string);
+procedure TGTKMenuItem.SetIconName(Value: string);
begin
- gtk_image_set_from_stock(PGtkImage(FImageWidget), PChar(Value), GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_icon_name(PGtkImage(FImageWidget), PChar(Value), GTK_ICON_SIZE_MENU);
end;
procedure TGTKMenuItem.SetIcon(Value: TGDKPixbuf);
@@ -419,12 +355,12 @@ end;
function TGTKMenuItem.GetGroup: TGTKMenuItemGroup;
begin
- Result := LAZGLIB2.PGSList(gtk_radio_menu_item_get_group(PGtkRadioMenuItem(FWidget)));
+ Result := PGSList(gtk_radio_menu_item_get_group(PGtkRadioMenuItem(FWidget)));
end;
procedure TGTKMenuItem.SetGroup(Value: TGTKMenuItemGroup);
begin
- gtk_radio_menu_item_set_group(PGtkRadioMenuItem(FWidget), GLIB2.PGSList(Value) );
+ gtk_radio_menu_item_set_group(PGtkRadioMenuItem(FWidget), PGSList(Value));
end;
(********************************************************************************************************************************)
@@ -453,10 +389,13 @@ begin
end;
procedure TGDKShortCuts.AddName(Item: string);
-var Key, Modifiers: guint;
+var accelerator_key: guint;
+ accelerator_mods: TGdkModifierType;
begin
- gtk_accelerator_parse(PChar(Item), @Key, @Modifiers);
- if Key <> 0 then Add(MakeGDKShortCut(Key, False, Modifiers and GDK_MOD1_MASK = GDK_MOD1_MASK, Modifiers and GDK_SHIFT_MASK = GDK_SHIFT_MASK, Modifiers and GDK_CONTROL_MASK = GDK_CONTROL_MASK));
+ accelerator_key := 0;
+ accelerator_mods := [];
+ gtk_accelerator_parse(PChar(Item), @accelerator_key, @accelerator_mods);
+ if accelerator_key <> 0 then Add(MakeGDKShortCut(accelerator_key, False, GDK_MOD1_MASK in accelerator_mods, GDK_SHIFT_MASK in accelerator_mods, GDK_CONTROL_MASK in accelerator_mods));
end;
procedure TGDKShortCuts.Clear;
@@ -465,18 +404,18 @@ begin
for i := Count - 1 downto 0 do Delete(i);
end;
-function GetAccelMods(SC: TGDKShortCut): guint;
+function GetAccelMods(SC: TGDKShortCut): TGdkModifierType;
begin
- Result := 0;
- if SC.ModShift then Inc(Result, GDK_SHIFT_MASK);
- if SC.ModCtrl then Inc(Result, GDK_CONTROL_MASK);
- if SC.ModAlt then Inc(Result, GDK_MOD1_MASK);
+ Result := [];
+ if SC.ModShift then Result += [GDK_SHIFT_MASK];
+ if SC.ModCtrl then Result += [GDK_CONTROL_MASK];
+ if SC.ModAlt then Result += [GDK_MOD1_MASK];
end;
function GetAccelFlags(SC: TGDKShortCut): TGtkAccelFlags;
begin
- Result := GTK_ACCEL_VISIBLE;
- if SC.Locked then Result := GTK_ACCEL_LOCKED;
+ Result := [GTK_ACCEL_VISIBLE];
+ if SC.Locked then Result := [GTK_ACCEL_LOCKED];
end;
procedure TGDKShortCuts.Delete(Index: Integer);
diff --git a/libgtk_kylix/GTKPixbuf.pas b/libgtk_kylix/GTKPixbuf.pas
index c296add..c199ac4 100644
--- a/libgtk_kylix/GTKPixbuf.pas
+++ b/libgtk_kylix/GTKPixbuf.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKPixbuf - Image handling routines
- Version 0.6.2 (last updated 2003-03-30)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,7 +23,7 @@ unit GTKPixbuf;
interface
-uses lazglib2, gdk2pixbuf, gtk2, Classes, GTKControls, GTKStdCtrls;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, lazgdkpixbuf2, Classes, GTKControls;
type
TGTKIconSize = (isInvalid, isMenu, isSmallToolbar, isLargeToolbar, isButton, isDND, isDialog);
@@ -39,16 +38,14 @@ type
public
FPixbuf: PGdkPixbuf;
constructor Create(AOwner: TComponent); override;
- constructor CreateNew(AOwner: TComponent; const Width, Height, BPP: integer; const HasAlpha: boolean);
destructor Destroy; override;
function LoadFromFile(const FileName: string): boolean;
- function LoadFromXPM(const Data: PPChar): boolean;
- function LoadFromInline(Data: Pointer): boolean;
+ function LoadFromResource(ResourcePath: string): boolean;
+ function LoadFromIconTheme(IconName: string; IconSize: Integer): boolean;
procedure Fill(const Pixel: Cardinal);
procedure ScaleSimple(const DestWidth, DestHeight: integer);
function Copy: PGdkPixbuf;
procedure CopyArea(Source: TGDKPixbuf; SourceX, SourceY, SourceWidth, SourceHeight, DestX, DestY: integer);
- procedure SetFromStock(Stock_ID: string; IconSize: TGTKIconSize);
published
property Width: integer read GetWidth;
property Height: integer read GetHeight;
@@ -56,7 +53,7 @@ type
end;
(****************************************** TGTKIMAGE ***************************************************************************)
- TGTKImage = class(TGTKMisc)
+ TGTKImage = class(TGTKControl)
private
protected
public
@@ -66,7 +63,7 @@ type
procedure SetFromPixbuf(Pixbuf: TGDKPixbuf);
function GetPixbuf: PGdkPixbuf;
procedure CopyFromPixbuf(Pixbuf: TGDKPixbuf);
- procedure SetFromStock(Stock_ID: string; IconSize: TGTKIconSize);
+ procedure SetFromIconName(IconName: string; IconSize: TGTKIconSize);
end;
(********************************************************************************************************************************)
@@ -84,15 +81,9 @@ begin
FPixbuf := nil;
end;
-constructor TGDKPixbuf.CreateNew(AOwner: TComponent; const Width, Height, BPP: integer; const HasAlpha: boolean);
-begin
- inherited Create(AOwner);
- FPixbuf := gdk_pixbuf_new(GDK_COLORSPACE_RGB, HasAlpha, BPP, Width, Height);
-end;
-
destructor TGDKPixbuf.Destroy;
begin
- if FPixbuf <> nil then gdk_pixbuf_unref(FPixbuf);
+ if FPixbuf <> nil then g_object_unref(FPixbuf);
inherited Destroy;
end;
@@ -121,23 +112,29 @@ begin
if P <> nil then FPixbuf := P;
end;
-function TGDKPixbuf.LoadFromXPM(const Data: PPChar): boolean;
+function TGDKPixbuf.LoadFromResource(ResourcePath: string): boolean;
var P: Pointer;
+ Error: PGError;
begin
- P := gdk_pixbuf_new_from_xpm_data(Data);
+ Error := nil;
+ P := gdk_pixbuf_new_from_resource(PChar(ResourcePath), @Error);
Result := P <> nil;
+ if Error <> nil then begin
+ WriteLn('TGDKPixbuf.LoadFromResource error: ', Error^.message);
+ g_error_free(Error);
+ end;
if P <> nil then FPixbuf := P;
end;
-function TGDKPixbuf.LoadFromInline(Data: Pointer): boolean;
+function TGDKPixbuf.LoadFromIconTheme(IconName: string; IconSize: Integer): boolean;
var P: Pointer;
Error: PGError;
begin
Error := nil;
- P := gdk_pixbuf_new_from_inline(-1, Pguint8(Data)^, True, @Error);
+ P := gtk_icon_theme_load_icon(gtk_icon_theme_get_default(), PChar(IconName), IconSize, [], @Error);
Result := P <> nil;
if Error <> nil then begin
- WriteLn('TGDKPixbuf.LoadFromInline error: ', Error^.message);
+ WriteLn('TGDKPixbuf.LoadFromIconTheme error: ', Error^.message);
g_error_free(Error);
end;
if P <> nil then FPixbuf := P;
@@ -163,12 +160,6 @@ begin
gdk_pixbuf_copy_area(Source.FPixbuf, SourceX, SourceY, SourceWidth, SourceHeight, FPixbuf, DestX, DestY);
end;
-procedure TGDKPixbuf.SetFromStock(Stock_ID: string; IconSize: TGTKIconSize);
-begin
- FPixbuf := gtk_widget_render_icon(gtk_label_new(nil), PChar(Stock_ID), Ord(IconSize), nil);
-end;
-
-
(********************************************************************************************************************************)
(********************************************************************************************************************************)
constructor TGTKImage.Create(AOwner: TComponent);
@@ -203,9 +194,9 @@ begin
gtk_image_set_from_pixbuf(PGtkImage(FWidget), Pixbuf.Copy);
end;
-procedure TGTKImage.SetFromStock(Stock_ID: string; IconSize: TGTKIconSize);
+procedure TGTKImage.SetFromIconName(IconName: string; IconSize: TGTKIconSize);
begin
- gtk_image_set_from_stock(PGtkImage(FWidget), PChar(Stock_ID), Ord(IconSize));
+ gtk_image_set_from_icon_name(PGtkImage(FWidget), PChar(IconName), lazgtk3.TGtkIconSize(IconSize));
end;
(********************************************************************************************************************************)
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);
diff --git a/libgtk_kylix/GTKText.pas b/libgtk_kylix/GTKText.pas
index d3152b1..31423d7 100644
--- a/libgtk_kylix/GTKText.pas
+++ b/libgtk_kylix/GTKText.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKText - Multiline Text Editor (GtkTextView)
- Version 0.5.16 (last updated 2003-01-21)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,7 +23,7 @@ unit GTKText;
interface
-uses gtk2, lazgobject2, Classes, GTKControls, GTKForms;
+uses lazgobject2, lazgtk3, Classes, GTKControls, GTKForms;
type
@@ -103,7 +102,7 @@ end;
procedure TGTKTextView.SetWrapMode(Value: TGTKTextViewWrapMode);
begin
- gtk_text_view_set_wrap_mode(PGtkTextView(FWidget), integer(Value));
+ gtk_text_view_set_wrap_mode(PGtkTextView(FWidget), TGtkWrapMode(Value));
end;
function TGTKTextView.GetReadOnly: boolean;
diff --git a/libgtk_kylix/GTKUtils.pas b/libgtk_kylix/GTKUtils.pas
index f893858..c1b662e 100644
--- a/libgtk_kylix/GTKUtils.pas
+++ b/libgtk_kylix/GTKUtils.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKUtils - Various utilities
- Version 0.6.17 (last updated 2003-10-07)
Copyright (C) 2003 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,13 +23,16 @@ unit GTKUtils;
interface
-uses gtk2, gdk2, lazglib2, SysUtils, GTKControls, GTKClasses;
+uses lazglib2, lazgdk3, lazgtk3, SysUtils, GTKControls, GTKClasses;
(********************************************************************************************************************************)
+(*
function AllocateColor(Widget: PGtkWidget; R, G, B: Word): PGdkColor; overload;
function AllocateColor(R, G, B: Word): TGDKColor; overload;
+*)
function KeyValToUnicode(const Key: word): guint32;
function UnicodeToKeyVal(const UnicodeVal: guint32): word;
+(*
function GetDefaultForegroundColor(State: integer): PGdkColor; overload;
function GetDefaultForegroundColor(Widget: TGTKControl; State: integer): PGdkColor; overload;
function GetDefaultBackgroundColor(State: integer): PGdkColor; overload;
@@ -39,15 +41,20 @@ function GetDefaultBaseColor(State: integer): PGdkColor; overload;
function GetDefaultBaseColor(Widget: TGTKControl; State: integer): PGdkColor; overload;
function GetDefaultTextColor(State: integer): PGdkColor; overload;
function GetDefaultTextColor(Widget: TGTKControl; State: integer): PGdkColor; overload;
-function GDKColorToPGdkColor(Color: TGDKColor): PGdkColor;
-function PGdkColorToGDKColor(Color: PGdkColor): TGDKColor;
+
+function GDKColorToPGdkRGBA(Color: TGDKColor): PGdkRGBA;
+function PGdkRGBAToGDKColor(Color: PGdkRGBA): TGDKColor;
function GDKColorToString(Color: TGDKColor): string;
function StringToGDKColor(Str: string; var Color: TGDKColor): boolean;
+*)
+function ValidateColorString(const Color: string): boolean;
+
(********************************************************************************************************************************)
implementation
(********************************************************************************************************************************)
+(*
function AllocateColor(Widget: PGtkWidget; R, G, B: Word): PGdkColor;
begin
New(Result);
@@ -66,6 +73,7 @@ begin
Result.green := G;
Result.blue := B;
end;
+*)
(********************************************************************************************************************************)
function KeyValToUnicode(const Key: word): guint32;
@@ -80,6 +88,7 @@ begin
end;
(********************************************************************************************************************************)
+(*
function GetDefaultForegroundColor(State: integer): PGdkColor;
var Widget: PGtkWidget;
Style: PGtkStyle;
@@ -96,8 +105,10 @@ begin
Style := gtk_rc_get_style(Widget.FWidget);
Result := @(Style^.fg[State]);
end;
+*)
(********************************************************************************************************************************)
+(*
function GetDefaultBackgroundColor(State: integer): PGdkColor;
var Widget: PGtkWidget;
Style: PGtkStyle;
@@ -114,8 +125,10 @@ begin
Style := gtk_rc_get_style(Widget.FWidget);
Result := @(Style^.bg[State]);
end;
+*)
(********************************************************************************************************************************)
+(*
function GetDefaultBaseColor(State: integer): PGdkColor;
var Widget: PGtkWidget;
Style: PGtkStyle;
@@ -132,8 +145,10 @@ begin
Style := gtk_rc_get_style(Widget.FWidget);
Result := @(Style^.base[State]);
end;
+*)
(********************************************************************************************************************************)
+(*
function GetDefaultTextColor(State: integer): PGdkColor;
var Widget: PGtkWidget;
Style: PGtkStyle;
@@ -150,9 +165,11 @@ begin
Style := gtk_rc_get_style(Widget.FWidget);
Result := @(Style^.text[State]);
end;
+*)
(********************************************************************************************************************************)
-function GDKColorToPGdkColor(Color: TGDKColor): PGdkColor;
+(*
+function GDKColorToPGdkRGBA(Color: TGDKColor): PGdkRGBA;
begin
New(Result);
Result^.pixel := Color.pixel;
@@ -160,8 +177,11 @@ begin
Result^.green := Color.green;
Result^.blue := Color.blue;
end;
+*)
(********************************************************************************************************************************)
+(*
+function PGdkRGBAToGDKColor(Color: PGdkRGBA): TGDKColor;
function PGdkColorToGDKColor(Color: PGdkColor): TGDKColor;
begin
Result.pixel := Color^.pixel;
@@ -169,14 +189,18 @@ begin
Result.green := Color^.green;
Result.blue := Color^.blue;
end;
+*)
(********************************************************************************************************************************)
+(*
function GDKColorToString(Color: TGDKColor): string;
begin
Result := Format('#%.2x%.2x%.2xFF', [Color.red div 256, Color.green div 256, Color.blue div 256]);
end;
+*)
(********************************************************************************************************************************)
+(*
function StringToGDKColor(Str: string; var Color: TGDKColor): boolean;
var AColor: PGdkColor;
begin
@@ -191,7 +215,14 @@ begin
Dispose(AColor);
except end;
end;
+*)
(********************************************************************************************************************************)
+function ValidateColorString(const Color: string): boolean;
+var rgba: TGdkRGBA;
+begin
+ Result := gdk_rgba_parse(@rgba, PChar(Color));
+end;
+
end.
diff --git a/libgtk_kylix/GTKView.pas b/libgtk_kylix/GTKView.pas
index 3cd00dc..b971e7d 100644
--- a/libgtk_kylix/GTKView.pas
+++ b/libgtk_kylix/GTKView.pas
@@ -1,6 +1,5 @@
(*
GTK-Kylix Library: GTKView - GtkTreeView and its modifications
- Version 0.6.21 (last updated 2006-05-06)
Copyright (C) 2006 Tomas Bzatek <tbzatek@users.sourceforge.net>
This library is free software; you can redistribute it and/or
@@ -24,7 +23,7 @@ unit GTKView;
interface
-uses gtk2, gdk2, gdk2pixbuf, glib2, lazglib2, lazgobject2, Classes, GTKControls, GTKForms;
+uses lazglib2, lazgobject2, lazgdk3, lazgtk3, lazgdkpixbuf2, Classes, GTKClasses, GTKControls, GTKForms;
type
TGTKListItem = class;
@@ -307,7 +306,7 @@ end;
procedure TGTKView.SetSelectionMode(Value: TGTKSelectionMode);
begin
- gtk_tree_selection_set_mode(FSelection, Integer(Value));
+ gtk_tree_selection_set_mode(FSelection, lazgtk3.TGtkSelectionMode(Value));
end;
procedure TGTKView.SelectAll;
@@ -331,13 +330,16 @@ begin
end;
function TGTKView.GetRulesHint: boolean;
+var b: boolean;
begin
- Result := gtk_tree_view_get_rules_hint(PGtkTreeView(FWidget));
+ b := False;
+ g_object_get(PGObject(FWidget), 'rules-hint', [@b, nil]);
+ Result := b;
end;
procedure TGTKView.SetRulesHint(Value: boolean);
begin
- gtk_tree_view_set_rules_hint(PGtkTreeView(FWidget), Value);
+ g_object_set(PGObject(FWidget), 'rules-hint', [gboolean(Value), nil]);
end;
function TGTKView.GetReorderable: boolean;
@@ -417,7 +419,7 @@ var sort_column_id: gint;
order: TGtkSortType;
begin
Result := soNone;
- order := 0;
+ order := GTK_SORT_ASCENDING;
if (FTreeModelSort <> nil) and gtk_tree_sortable_get_sort_column_id(PGtkTreeSortable(FTreeModelSort), @sort_column_id, @order)
then Result := TGTKTreeViewSortOrder(order);
end;
@@ -511,8 +513,8 @@ begin
FTreeModelSort := nil;
if not FSortable then FWidget := gtk_tree_view_new_with_model(PGtkTreeModel(FListItems.FStore))
else begin
- FTreeModelSort := gtk_tree_model_sort_new_with_model(FListItems.FStore);
- FWidget := gtk_tree_view_new_with_model(FTreeModelSort);
+ FTreeModelSort := gtk_tree_model_sort_new_with_model(PGtkTreeModel(FListItems.FStore));
+ FWidget := gtk_tree_view_new_with_model(PGtkTreeModel(FTreeModelSort));
end;
FSelection := gtk_tree_view_get_selection(PGtkTreeView(FWidget));
g_signal_connect_data(PGObject(FSelection), 'changed', TGCallback(@TGTKListView_changed), Self, nil, G_CONNECT_DEFAULT);
@@ -592,7 +594,7 @@ begin
Result := nil;
Path := nil;
Column := nil;
- if gtk_tree_view_get_path_at_pos(PGtkTreeView(FWidget), X, Y, Path, Column, nil, nil) then begin
+ if gtk_tree_view_get_path_at_pos(PGtkTreeView(FWidget), X, Y, @Path, @Column, nil, nil) then begin
if not Assigned(Path) then Exit;
ConvertPathToChild(Path);
AIndex := gtk_tree_path_get_indices(Path)^;
@@ -606,11 +608,10 @@ end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
constructor TGTKListItems.Create(AOwner: TComponent);
-const Types : GType = G_TYPE_STRING;
begin
inherited Create(AOwner);
FOwner := AOwner;
- FStore := gtk_list_store_newv(1, @Types);
+ FStore := gtk_list_store_new(1, [G_TYPE_STRING]);
FList := TList.Create;
end;
@@ -619,14 +620,14 @@ begin
if not (csDestroying in ComponentState) then begin
Clear;
FList.Free;
- gtk_object_destroy(PGtkObject(FStore));
+ g_object_unref(PGObject(FStore));
end;
inherited Destroy;
end;
constructor TGTKListItems.CreateTyped(AOwner: TComponent; ColumnTypes: array of TGTKListColumnType);
var i: integer;
- Cols : array[0..255] of GType;
+ Cols: array[0..255] of TGType;
begin
inherited Create(AOwner);
FOwner := AOwner;
@@ -636,7 +637,7 @@ begin
lcText : Cols[i] := G_TYPE_STRING;
lcNumber : Cols[i] := G_TYPE_LONG;
lcPointer : Cols[i] := G_TYPE_POINTER;
- lcPixbuf : Cols[i] := GDK_TYPE_PIXBUF;
+ lcPixbuf : Cols[i] := gdk_pixbuf_get_type();
lcBoolean : Cols[i] := G_TYPE_BOOLEAN;
end;
FStore := gtk_list_store_newv(Length(ColumnTypes), @Cols);
@@ -644,14 +645,14 @@ end;
procedure TGTKListItems.SetColumnTypes(Types: array of TGTKListColumnType);
var i: integer;
- Cols : array[0..255] of GType;
+ Cols : array[0..255] of TGType;
begin
for i := Low(Types) to High(Types) do
case Types[i] of
lcText : Cols[i] := G_TYPE_STRING;
lcNumber : Cols[i] := G_TYPE_LONG;
lcPointer : Cols[i] := G_TYPE_POINTER;
- lcPixbuf : Cols[i] := GDK_TYPE_PIXBUF;
+ lcPixbuf : Cols[i] := gdk_pixbuf_get_type();
lcBoolean : Cols[i] := G_TYPE_BOOLEAN;
end;
g_object_unref(PGObject(FStore));
@@ -827,8 +828,8 @@ end;
destructor TGTKTreeViewColumn.Destroy;
begin
if not (csDestroying in ComponentState) then begin
- gtk_object_destroy(PGtkObject(FRenderer));
- if GTK_IS_OBJECT(FColumn) then gtk_object_destroy(PGtkObject(FColumn));
+ if Assigned(FRenderer) then g_object_unref(PGObject(FRenderer));
+ if Assigned(FColumn) then g_object_unref(PGObject(FColumn));
end;
inherited Destroy;
end;
@@ -1011,7 +1012,7 @@ begin
FColumnType := Value;
if Assigned(FRenderer) then begin
gtk_tree_view_column_clear(FColumn);
- gtk_object_destroy(PGtkObject(FRenderer));
+ g_object_unref(PGObject(FRenderer));
end;
case Value of
ctText : FRenderer := gtk_cell_renderer_text_new;
@@ -1177,28 +1178,28 @@ procedure TGTKListItem.SetValue(Index: longint; Value: string);
var Iter: TGtkTreeIter;
begin
if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
- then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, PChar(Value), -1);
+ then gtk_list_store_set((FOwner as TGTKListItems).FStore, @Iter, [Index, PChar(Value), -1]);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: integer);
var Iter: TGtkTreeIter;
begin
if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
- then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
+ then gtk_list_store_set((FOwner as TGTKListItems).FStore, @Iter, [Index, Value, -1]);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: pointer);
var Iter: TGtkTreeIter;
begin
if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
- then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
+ then gtk_list_store_set((FOwner as TGTKListItems).FStore, @Iter, [Index, Value, -1]);
end;
procedure TGTKListItem.SetValue(Index: longint; Value: boolean);
var Iter: TGtkTreeIter;
begin
if gtk_tree_model_get_iter_from_string(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, PChar(IntToStr(FIndex)))
- then gtk_list_store_set(PGtkTreeModel((FOwner as TGTKListItems).FStore), @Iter, Index, Value, -1);
+ then gtk_list_store_set((FOwner as TGTKListItems).FStore, @Iter, [Index, Value, -1]);
end;
function TGTKListItem.GetSelected: boolean;
@@ -1266,8 +1267,8 @@ begin
gtk_tree_view_column_focus_cell(Column, ((FOwner as TGTKListItems).FOwner as TGTKView).Columns[ColumnNo].FRenderer);
CellEditable := gtk_cell_renderer_start_editing(((FOwner as TGTKListItems).FOwner as TGTKView).Columns[ColumnNo].FRenderer,
nil, ((FOwner as TGTKListItems).FOwner as TGTKView).FWidget, PChar(PChar(IntToStr(FIndex))),
- @BackgroundRect, @CellRect, {GTK_CELL_RENDERER_SELECTED or GTK_CELL_RENDERER_SORTED} 0);
- gtk_widget_show(CellEditable);
+ @BackgroundRect, @CellRect, []);
+ gtk_widget_show(PGtkWidget(CellEditable));
// gtk_cell_editable_start_editing(CellEditable, nil);
@@ -1287,7 +1288,7 @@ begin
gtk_tree_view_get_background_area(PGtkTreeView(((FOwner as TGTKListItems).FOwner as TGTKView).FWidget), Path, Column, @BackgroundRect);
Rect.x := 0;
- Rect.width := ((FOwner as TGTKListItems).FOwner as TGTKView).FWidget^.allocation.width;
+ Rect.width := gtk_widget_get_allocated_width(((FOwner as TGTKListItems).FOwner as TGTKView).FWidget);
Rect.y := BackgroundRect.y;
Rect.height := BackgroundRect.height;
gdk_window_invalidate_rect(gtk_tree_view_get_bin_window(PGtkTreeView(((FOwner as TGTKListItems).FOwner as TGTKView).FWidget)), @Rect, True);