1
// included by gtk2.pas
3
{$IFDEF read_forward_definitions}
4
PGtkObject = ^TGtkObject;
5
PPGtkObject = ^PGtkObject;
6
{$ENDIF read_forward_definitions}
8
//------------------------------------------------------------------------------
10
{$IFDEF read_interface_types}
11
{ GtkObject only uses the first 4 bits of the flags field.
12
Derived objects may use the remaining bits. Though this
13
is a kinda nasty break up, it does make the size of
14
derived objects smaller.
16
{ Used internally during dispose }
18
PGtkObjectFlags = ^TGtkObjectFlags;
19
TGtkObjectFlags = longint;
22
{ The GtkObject structure is the base of the Gtk+ objects hierarchy,
23
it ``inherits'' from the GtkTypeObject by mirroring its fields,
24
which must always be kept in sync completely. The GtkObject defines
25
the few basic items that all derived classes contain.
27
{ 32 bits of flags. GtkObject only uses 4 of these bits and
28
GtkWidget uses the rest. This is done because structs are
29
aligned on 4 or 8 byte boundaries. If a new bitfield were
30
used in GtkWidget much space would be wasted.
33
parent_instance : TGObject;
37
{ The GtkObjectClass is the base of the Gtk+ objects classes hierarchy,
38
it ``inherits'' from the GtkTypeClass by mirroring its fields, which
39
must always be kept in sync completely. The GtkObjectClass defines
40
the basic necessities for the anObject inheritance mechanism to work.
42
{ Non overridable class methods to set and get per class arguments }
43
{ The function that will theEnd an objects life time. In one way ore
44
another all three of them are defined for all objects. If an
45
anObject class overrides one of the methods in order to perform class
46
specific destruction then it must still invoke its superclass'
47
implementation of the method after it is finished with its
48
own cleanup. (See the destroy function for GtkWidget for
49
an example of how to do this).
51
PGtkObjectClass = ^TGtkObjectClass;
52
TGtkObjectClass = record
53
parent_class : TGObjectClass;
54
set_arg : procedure (anObject:PGtkObject; arg:PGtkArg; arg_id:guint); cdecl;
55
get_arg : procedure (anObject:PGtkObject; arg:PGtkArg; arg_id:guint); cdecl;
56
destroy : procedure (anObject:PGtkObject); cdecl;
59
{$ifndef GTK_DISABLE_DEPRECATED }
60
{ GtkArg flag bits for gtk_object_add_arg_type
62
PGtkArgFlags = ^TGtkArgFlags;
63
TGtkArgFlags = longint;
65
{ GTK_DISABLE_DEPRECATED }
67
{$ENDIF read_interface_types}
69
//------------------------------------------------------------------------------
71
{$IFDEF read_interface_rest}
73
GTK_IN_DESTRUCTION = 1 shl 0;
74
GTK_FLOATING = 1 shl 1;
75
GTK_RESERVED_1 = 1 shl 2;
76
GTK_RESERVED_2 = 1 shl 3;
78
GTK_ARG_READABLE = G_PARAM_READABLE;
79
GTK_ARG_WRITABLE = G_PARAM_WRITABLE;
80
GTK_ARG_CONSTRUCT = G_PARAM_CONSTRUCT;
81
GTK_ARG_CONSTRUCT_ONLY = G_PARAM_CONSTRUCT_ONLY;
82
GTK_ARG_CHILD_ARG = 1 shl 4;
84
{ macros for casting a pointer to a GtkObject or GtkObjectClass pointer,
85
and to test whether `anObject' and `klass' are of type GTK_TYPE_OBJECT.
86
these are the standard macros for all GtkObject-derived classes.
88
function GTK_TYPE_OBJECT : GType;
89
function GTK_OBJECT(anObject: pointer) : PGtkObject;
90
function GTK_OBJECT_CLASS(klass: pointer) : PGtkObjectClass;
91
function GTK_IS_OBJECT(anObject: pointer) : boolean;
92
function GTK_IS_OBJECT_CLASS(klass: pointer) : boolean;
93
function GTK_OBJECT_GET_CLASS(anObject: pointer) : PGtkObjectClass;
95
{ Macros for extracting various fields from GtkObject and GtkObjectClass.
97
function GTK_OBJECT_TYPE(anObject: pointer) : GType;
98
function GTK_OBJECT_TYPE_NAME(anObject: pointer) : PGChar;
100
{ Macros for extracting the object_flags from GtkObject.
102
function GTK_OBJECT_FLAGS(obj: pointer) : guint32;
103
function GTK_OBJECT_FLOATING(obj: pointer) : gboolean;
105
{ Macros for setting and clearing bits in the object_flags field of GtkObject.
107
procedure GTK_OBJECT_SET_FLAGS(obj: pointer; flag: guint32);
108
procedure GTK_OBJECT_UNSET_FLAGS(obj: pointer; flag: guint32);
110
{ Application-level methods }
112
function gtk_object_get_type:TGtkType; cdecl; external gtklib;
113
function gtk_object_new(_type:TGtkType; first_property_name:Pgchar; args:array of const):PGtkObject; cdecl; overload; external gtklib;
114
function gtk_object_new(_type:TGtkType; first_property_name:Pgchar):PGtkObject; cdecl; overload; external gtklib;
115
procedure gtk_object_sink(anObject:PGtkObject); cdecl; external gtklib;
116
procedure gtk_object_destroy(anObject:PGtkObject); cdecl; external gtklib;
119
{$ifndef GTK_DISABLE_DEPRECATED }
120
function gtk_object_ref(anObject:PGtkObject):PGtkObject; cdecl; external gtklib;
121
procedure gtk_object_unref(anObject:PGtkObject); cdecl; external gtklib;
122
procedure gtk_object_weakref(anObject:PGtkObject; notify:TGtkDestroyNotify; data:gpointer); cdecl; external gtklib;
123
procedure gtk_object_weakunref(anObject:PGtkObject; notify:TGtkDestroyNotify; data:gpointer); cdecl; external gtklib;
124
{ Set 'data' to the "object_data" field of the anObject. The
125
data is indexed by the "key". If there is already data
126
associated with "key" then the new data will replace it.
127
If 'data' is NULL then this call is equivalent to
128
'gtk_object_remove_data'.
129
The gtk_object_set_data_full variant acts just the same,
130
but takes an additional argument which is a function to
131
be called when the data is removed.
132
`gtk_object_remove_data' is equivalent to the above,
134
`gtk_object_get_data' gets the data associated with "key".
136
procedure gtk_object_set_data(anObject:PGtkObject; key:Pgchar; data:gpointer); cdecl; external gtklib;
137
procedure gtk_object_set_data_full(anObject:PGtkObject; key:Pgchar; data:gpointer; destroy:TGtkDestroyNotify); cdecl; external gtklib;
138
procedure gtk_object_remove_data(anObject:PGtkObject; key:Pgchar); cdecl; external gtklib;
139
function gtk_object_get_data(anObject:PGtkObject; key:Pgchar):gpointer; cdecl; external gtklib;
140
procedure gtk_object_remove_no_notify(anObject:PGtkObject; key:Pgchar); cdecl; external gtklib;
141
{ Set/get the "user_data" anObject data field of "anObject". It should
142
be noted that these functions are no different than calling
143
`gtk_object_set_data'/`gtk_object_get_data' with a key of "user_data".
144
They are merely provided as a convenience.
146
procedure gtk_object_set_user_data(anObject:PGtkObject; data:gpointer); cdecl; external gtklib;
147
function gtk_object_get_user_data(anObject:PGtkObject):gpointer; cdecl; external gtklib;
148
{ Object-level methods }
149
{ Object data method variants that operate on key ids. }
150
procedure gtk_object_set_data_by_id(anObject:PGtkObject; data_id:TGQuark; data:gpointer); cdecl; external gtklib;
151
procedure gtk_object_set_data_by_id_full(anObject:PGtkObject; data_id:TGQuark; data:gpointer; destroy:TGtkDestroyNotify); cdecl; external gtklib;
152
function gtk_object_get_data_by_id(anObject:PGtkObject; data_id:TGQuark):gpointer; cdecl; external gtklib;
153
procedure gtk_object_remove_data_by_id(anObject:PGtkObject; data_id:TGQuark); cdecl; external gtklib;
154
procedure gtk_object_remove_no_notify_by_id(anObject:PGtkObject; key_id:TGQuark); cdecl; external gtklib;
156
function gtk_object_data_try_key(_string:Pgchar):TGQuark;
157
function gtk_object_data_force_id(_string:Pgchar):TGQuark;
160
GTK_ARG_READWRITE = GTK_ARG_READABLE or GTK_ARG_WRITABLE;
162
procedure gtk_object_get(anObject:PGtkObject; first_property_name:Pgchar; args:array of const); cdecl; overload; external gtklib;
163
procedure gtk_object_get(anObject:PGtkObject; first_property_name:Pgchar); cdecl; overload; external gtklib;
164
procedure gtk_object_set(anObject:PGtkObject; first_property_name:Pgchar; args:array of const); cdecl; overload; external gtklib;
165
procedure gtk_object_set(anObject:PGtkObject; first_property_name:Pgchar); cdecl; overload; external gtklib;
166
procedure gtk_object_add_arg_type(arg_name:Pgchar; arg_type:TGtkType; arg_flags:guint; arg_id:guint); cdecl; external gtklib;
168
{ GTK_DISABLE_DEPRECATED }
171
{$ENDIF read_interface_rest}
173
//------------------------------------------------------------------------------
175
{$IFDEF read_implementation}
176
function GTK_TYPE_OBJECT : GType;
178
GTK_TYPE_OBJECT:=gtk_object_get_type;
181
function GTK_OBJECT(anObject: pointer) : PGtkObject;
183
GTK_OBJECT:=PGtkObject(GTK_CHECK_CAST(anObject,GTK_TYPE_OBJECT));
186
function GTK_OBJECT_CLASS(klass: pointer) : PGtkObjectClass;
188
GTK_OBJECT_CLASS:=PGtkObjectClass(GTK_CHECK_CLASS_CAST(klass,GTK_TYPE_OBJECT));
191
function GTK_IS_OBJECT(anObject: pointer) : boolean;
193
GTK_IS_OBJECT:=GTK_CHECK_TYPE(anObject,GTK_TYPE_OBJECT);
196
function GTK_IS_OBJECT_CLASS(klass: pointer) : boolean;
198
GTK_IS_OBJECT_CLASS:=GTK_CHECK_CLASS_TYPE(klass,GTK_TYPE_OBJECT);
201
function GTK_OBJECT_GET_CLASS(anObject: pointer) : PGtkObjectClass;
203
GTK_OBJECT_GET_CLASS:=PGtkObjectClass(GTK_CHECK_GET_CLASS(anObject,GTK_TYPE_OBJECT));
206
function GTK_OBJECT_TYPE(anObject: pointer) : GType;
208
GTK_OBJECT_TYPE:=G_TYPE_FROM_INSTANCE(anObject);
211
function GTK_OBJECT_TYPE_NAME(anObject: pointer) : PGChar;
213
GTK_OBJECT_TYPE_NAME:=g_type_name(GTK_OBJECT_TYPE(anObject));
216
function GTK_OBJECT_FLAGS(obj: pointer) : guint32;
218
GTK_OBJECT_FLAGS:=(GTK_OBJECT(obj))^.flags;
221
function GTK_OBJECT_FLOATING(obj: pointer) : gboolean;
223
GTK_OBJECT_FLOATING:=((GTK_OBJECT_FLAGS(obj)) and GTK_FLOATING) <> 0;
226
procedure GTK_OBJECT_SET_FLAGS(obj: pointer; flag: guint32);
228
GTK_OBJECT(obj)^.flags:=GTK_OBJECT(obj)^.flags or flag;
231
procedure GTK_OBJECT_UNSET_FLAGS(obj: pointer; flag: guint32);
233
GTK_OBJECT(obj)^.flags:=GTK_OBJECT(obj)^.flags and not flag;
236
function gtk_object_data_try_key(_string:Pgchar):TGQuark;
238
gtk_object_data_try_key:=g_quark_try_string(_string);
241
function gtk_object_data_force_id(_string:Pgchar):TGQuark;
243
gtk_object_data_force_id:=g_quark_from_string(_string);
245
{$ENDIF read_implementation}
246
// included by gtk2.pas