summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/gtk2/src/glib/gsignal.inc
blob: 93b71c046a7b32978f1bccfd00f5af4bae31ac26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
// included by glib2.pas

{$IFDEF read_forward_definitions}
{$ENDIF read_forward_definitions}

//------------------------------------------------------------------------------

{$IFDEF read_interface_types}
   PGSignalInvocationHint = ^TGSignalInvocationHint;

   PGSignalCMarshaller = ^TGSignalCMarshaller;
   TGSignalCMarshaller = TGClosureMarshal;

   TGSignalEmissionHook = function (ihint:PGSignalInvocationHint; n_param_values:guint; param_values:PGValue; data:gpointer):gboolean; cdecl;

   TGSignalAccumulator = function (ihint:PGSignalInvocationHint; return_accu:PGValue; handler_return:PGValue; data:gpointer):gboolean; cdecl;

{ --- run, match and connect types ---  }
   PGSignalFlags = ^TGSignalFlags;
   TGSignalFlags = longint;

{ --- signal information ---  }
   TGSignalInvocationHint = record
        signal_id : guint;
        detail : TGQuark;
        run_type : TGSignalFlags;
     end;

{ mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag  }
{ mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag  }
   PGSignalQuery = ^TGSignalQuery;
   TGSignalQuery = record
        signal_id : guint;
        signal_name : Pgchar;
        itype : GType;
        signal_flags : TGSignalFlags;
        return_type : GType;
        n_params : guint;
        param_types : PGType;
     end;
{$ENDIF read_interface_types}

//------------------------------------------------------------------------------

{$IFDEF read_interface_rest}

const
   G_SIGNAL_RUN_FIRST = 1 shl 0;
   G_SIGNAL_RUN_LAST = 1 shl 1;
   G_SIGNAL_RUN_CLEANUP = 1 shl 2;
   G_SIGNAL_NO_RECURSE = 1 shl 3;
   G_SIGNAL_DETAILED = 1 shl 4;
   G_SIGNAL_ACTION = 1 shl 5;
   G_SIGNAL_NO_HOOKS = 1 shl 6;
   G_SIGNAL_FLAGS_MASK = $7f;

type
   PGConnectFlags = ^TGConnectFlags;
   TGConnectFlags = longint;

const
   G_CONNECT_AFTER = 1 shl 0;
   G_CONNECT_SWAPPED = 1 shl 1;

type
   PGSignalMatchType = ^TGSignalMatchType;
   TGSignalMatchType = longint;

const
   G_SIGNAL_MATCH_ID = 1 shl 0;
   G_SIGNAL_MATCH_DETAIL = 1 shl 1;
   G_SIGNAL_MATCH_CLOSURE = 1 shl 2;
   G_SIGNAL_MATCH_FUNC = 1 shl 3;
   G_SIGNAL_MATCH_DATA = 1 shl 4;
   G_SIGNAL_MATCH_UNBLOCKED = 1 shl 5;
   G_SIGNAL_MATCH_MASK = $3f;

   G_SIGNAL_TYPE_STATIC_SCOPE = G_TYPE_FLAG_RESERVED_ID_BIT;


{ --- signals ---  }

function g_signal_newv(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_closure:PGClosure; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint; param_types:PGType):guint; cdecl; external gobjectlib;
{$IFNDEF KYLIX}
function g_signal_new_valist(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_closure:PGClosure; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint; args: array of const):guint; cdecl; external gobjectlib;
function g_signal_new(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_offset:guint; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint; args:array of const):guint; cdecl; overload; external gobjectlib;
function g_signal_new(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_offset:guint; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint):guint; cdecl; overload; varargs; external gobjectlib;
{$ELSE}
function g_signal_new_valist(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_closure:PGClosure; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint):guint; varargs; cdecl; external gobjectlib;
function g_signal_new(signal_name:Pgchar; itype:GType; signal_flags:TGSignalFlags; class_offset:guint; accumulator:TGSignalAccumulator;
           accu_data:gpointer; c_marshaller:TGSignalCMarshaller; return_type:GType; n_params:guint):guint; varargs; cdecl; external gobjectlib;
{$ENDIF}
procedure g_signal_emitv(instance_and_params:PGValue; signal_id:guint; detail:TGQuark; return_value:PGValue); cdecl; external gobjectlib;
{$IFNDEF KYLIX}
procedure g_signal_emit_valist(instance:gpointer; signal_id:guint; detail:TGQuark; var_args: array of const); cdecl; external gobjectlib;
procedure g_signal_emit(instance:gpointer; signal_id:guint; detail:TGQuark; args:array of const); cdecl; overload; external gobjectlib;
procedure g_signal_emit(instance:gpointer; signal_id:guint; detail:TGQuark); cdecl; overload; varargs; external gobjectlib;
procedure g_signal_emit_by_name(instance:gpointer; detailed_signal:Pgchar; args:array of const); cdecl; overload; external gobjectlib;
procedure g_signal_emit_by_name(instance:gpointer; detailed_signal:Pgchar); cdecl; overload; varargs; external gobjectlib;
{$ELSE}
procedure g_signal_emit_valist(instance:gpointer; signal_id:guint; detail:TGQuark); varargs; cdecl; external gobjectlib;
procedure g_signal_emit(instance:gpointer; signal_id:guint; detail:TGQuark); varargs; cdecl; external gobjectlib;
procedure g_signal_emit_by_name(instance:gpointer; detailed_signal:Pgchar); varargs; cdecl; external gobjectlib;
{$ENDIF}
function g_signal_lookup(name:Pgchar; itype:GType):guint; cdecl; external gobjectlib;
function g_signal_name(signal_id:guint):Pgchar; cdecl; external gobjectlib;
procedure g_signal_query(signal_id:guint; query:PGSignalQuery); cdecl; external gobjectlib;
function g_signal_list_ids(itype:GType; n_ids:Pguint):Pguint; cdecl; external gobjectlib;
function g_signal_parse_name(detailed_signal:Pgchar; itype:GType; signal_id_p:Pguint; detail_p:PGQuark; force_detail_quark:gboolean):gboolean; cdecl; external gobjectlib;
function g_signal_get_invocation_hint(instance:gpointer):PGSignalInvocationHint; cdecl; external gobjectlib;
{ --- signal emissions ---  }
procedure g_signal_stop_emission(instance:gpointer; signal_id:guint; detail:TGQuark); cdecl; external gobjectlib;
procedure g_signal_stop_emission_by_name(instance:gpointer; detailed_signal:Pgchar); cdecl; external gobjectlib;
function g_signal_add_emission_hook(signal_id:guint; quark:TGQuark; hook_func:TGSignalEmissionHook; hook_data:gpointer; data_destroy:TGDestroyNotify):gulong; cdecl; external gobjectlib;
procedure g_signal_remove_emission_hook(signal_id:guint; hook_id:gulong); cdecl; external gobjectlib;
{ --- signal handlers ---  }
function g_signal_has_handler_pending(instance:gpointer; signal_id:guint; detail:TGQuark; may_be_blocked:gboolean):gboolean; cdecl; external gobjectlib;
function g_signal_connect_closure_by_id(instance:gpointer; signal_id:guint; detail:TGQuark; closure:PGClosure; after:gboolean):gulong; cdecl; external gobjectlib;
function g_signal_connect_closure(instance:gpointer; detailed_signal:Pgchar; closure:PGClosure; after:gboolean):gulong; cdecl; external gobjectlib;
function g_signal_connect_data(instance:gpointer; detailed_signal:Pgchar; c_handler:TGCallback; data:gpointer; destroy_data:TGClosureNotify;
           connect_flags:TGConnectFlags):gulong; cdecl; external gobjectlib;
procedure g_signal_handler_block(instance:gpointer; handler_id:gulong); cdecl; external gobjectlib;
procedure g_signal_handler_unblock(instance:gpointer; handler_id:gulong); cdecl; external gobjectlib;
procedure g_signal_handler_disconnect(instance:gpointer; handler_id:gulong); cdecl; external gobjectlib;
function g_signal_handler_is_connected(instance:gpointer; handler_id:gulong):gboolean; cdecl; external gobjectlib;
function g_signal_handler_find(instance: gpointer; mask: TGSignalMatchType;
           signal_id: guint; detail: TGQuark; closure: PGClosure;
           func:gpointer; data:gpointer):gulong; cdecl; external gobjectlib;
function g_signal_handlers_block_matched(instance:gpointer; mask:TGSignalMatchType; signal_id:guint; detail:TGQuark; closure:PGClosure;
           func:gpointer; data:gpointer):guint; cdecl; external gobjectlib;
function g_signal_handlers_unblock_matched(instance:gpointer; mask:TGSignalMatchType; signal_id:guint; detail:TGQuark; closure:PGClosure;
           func:gpointer; data:gpointer):guint; cdecl; external gobjectlib;
function g_signal_handlers_disconnect_matched(instance:gpointer; mask:TGSignalMatchType; signal_id:guint; detail:TGQuark; closure:PGClosure;
           func:gpointer; data:gpointer):guint; cdecl; external gobjectlib;
{ --- chaining for language bindings ---  }
procedure g_signal_override_class_closure(signal_id:guint; instance_type:GType; class_closure:PGClosure); cdecl; external gobjectlib;
procedure g_signal_chain_from_overridden(instance_and_params:PGValue; return_value:PGValue); cdecl; external gobjectlib;

{ --- convenience ---  }
function g_signal_connect(instance:gpointer; detailed_signal:Pgchar; c_handler:TGCallback; data:gpointer) : gulong;
function g_signal_connect_after(instance:gpointer; detailed_signal:Pgchar; c_handler:TGCallback; data:gpointer) : gulong;
function g_signal_connect_swapped(instance:gpointer; detailed_signal:Pgchar; c_handler:TGCallback; data:gpointer) : gulong;
function g_signal_handlers_disconnect_by_func(instance:gpointer; func, data: gpointer) : guint;

procedure g_signal_handlers_block_by_func(instance: gpointer; func, data: gpointer);
procedure g_signal_handlers_unblock_by_func(instance: gpointer; func, data: gpointer);

{< private > }
procedure g_signal_handlers_destroy(instance:gpointer); cdecl; external gobjectlib;
procedure _g_signals_destroy(itype:GType); cdecl; external gobjectlib;

{$ENDIF read_interface_rest}
// included by glib2.pas