Widget callbacks » History » Version 26
iri, 03/31/2011 08:36 PM
1 | 1 | iri | h1. Widget callbacks |
---|---|---|---|
2 | |||
3 | A signal will be emitted when an event occurs on a widget. |
||
4 | To run any actions when a signal is emitted, you should define a _callback_, a function will run these actions. |
||
5 | |||
6 | Here, you can define all callbacks with an one function : *_gtkWidgetCB* |
||
7 | |||
8 | Its prototype is : *fun [ObjGtkWidget u1 u0 I I] ObjGtkWidget* |
||
9 | |||
10 | # *ObjGtkWidget* : Scol object : the widget |
||
11 | # *u1* : the prototype of the callback (see below) |
||
12 | # *u0* : the user parameter, at your convenience |
||
13 | # *I* : the flag of the callback = which signal is affected ? (see below) |
||
14 | # *I* : the mask : propagate or not the signal to the container ? Two values are availables |
||
15 | * SCOL_GTK_SIGNAL_MASK_PROPAGATE |
||
16 | * SCOL_GTK_SIGNAL_MASK_STOP |
||
17 | |||
18 | 20 | iri | +Warning+ : the prototype of the callback (u1) is different for each flag ! |
19 | 1 | iri | |
20 | 21 | iri | Flags currently availables : |
21 | 1 | iri | |
22 | 11 | iri | {{toc}} |
23 | 5 | iri | |
24 | 7 | iri | h1. Any widgets |
25 | |||
26 | 1 | iri | h2. SCOL_GTK_WIDGET_BUTTONPRESSED |
27 | |||
28 | a mouse button has been pressed on a widget. |
||
29 | Prototype : *fun [ObjGtkWidget u0 I I I [I I]] u2* |
||
30 | |||
31 | |||
32 | 3 | iri | table |
33 | |1. *widget*|ObjGtkWidget|a widget| | |
||
34 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
35 | |3. *signal*|I|the type of the signal|SCOL_GTK_EVENT_BUTTON_PRESSED (one click),| |
||
36 | | | | |SCOL_GTK_EVENT_BUTTON_PRESSED2 (double click),| |
||
37 | | | | |SCOL_GTK_EVENT_BUTTON_PRESSED3 (triple click),| |
||
38 | | | | |SCOL_GTK_EVENT_BUTTON_RELEASE (button released).| |
||
39 | | | | |So you can make one function to several definitions| |
||
40 | |4. *button*|I|the mouse button|SCOL_GTK_EVENT_BUTTON_1,| |
||
41 | | | | |SCOL_GTK_EVENT_BUTTON_2,| |
||
42 | | | | |SCOL_GTK_EVENT_BUTTON_3,| |
||
43 | | | | |SCOL_GTK_EVENT_BUTTON_4,| |
||
44 | | | | |SCOL_GTK_EVENT_BUTTON_5,| |
||
45 | |5. *mask*|I|the mask of the modifier keys|SCOL_GTK_EVENT_KEY_SHIFT| |
||
46 | | | | |SCOL_GTK_EVENT_KEY_CONTROL,| |
||
47 | | | | |SCOL_GTK_EVENT_KEY_ALT,| |
||
48 | 4 | iri | | | | |SCOL_GTK_EVENT_KEY_CAPS (can not work : system, window manager, ...)| |
49 | | | | |SCOL_GTK_EVENT_KEY_HYPER (can not work : system, window manager, ...)| |
||
50 | | | | |SCOL_GTK_EVENT_KEY_SUPER (can not work : system, window manager, ...)| |
||
51 | 3 | iri | | | | |SCOL_GTK_EVENT_KEY_OTHER (or nothing)| |
52 | 25 | iri | |6. *position*|[I I]|the position of the click [x y], relative to the widget| | |
53 | 1 | iri | |
54 | 14 | iri | Note : sometimes, it is better to use the flag "SCOL_GTK_BUTTON_CLICKED":http://trac.scolring.org/projects/lib2dgtk/wiki/Widget_callbacks#SCOL_GTK_BUTTON_CLICKED. For example, to grab the signal of a mnemonic button, SCOL_GTK_BUTTON_CLICKED should be used (but the callback give less informations). |
55 | 1 | iri | |
56 | 13 | iri | |
57 | 3 | iri | h2. SCOL_GTK_WIDGET_BUTTONRELEASED |
58 | 1 | iri | |
59 | 3 | iri | a mouse button has been released on a widget. |
60 | Prototype : *fun [ObjGtkWidget u0 I I I [I I]] u2* |
||
61 | 1 | iri | |
62 | 14 | iri | Note : sometimes, it is better to use the flag "SCOL_GTK_BUTTON_CLICKED":http://trac.scolring.org/projects/lib2dgtk/wiki/Widget_callbacks#SCOL_GTK_BUTTON_CLICKED. For example, to grab the signal of a mnemonic button, SCOL_GTK_BUTTON_CLICKED should be used (but the callback give less informations). |
63 | 13 | iri | |
64 | 3 | iri | See 'SCOL_GTK_WIDGET_BUTTONPRESSED' above. |
65 | 5 | iri | |
66 | h2. SCOL_GTK_WIDGET_MOVERESIZE |
||
67 | |||
68 | a window has moved and/or resized. |
||
69 | Prototype : *fun [ObjGtkWidget u0 [I I] [I I]] u2* |
||
70 | |||
71 | The supplementals parameters are two tuples : |
||
72 | # is the new position (x and y, relative at its parents or at the screen) |
||
73 | # is the new size (width and height) |
||
74 | 1 | iri | |
75 | 6 | iri | h2. SCOL_GTK_WIDGET_DESTROY |
76 | |||
77 | when a widget (typically a window or all top level container) is destroyed (all reference are destroyed). |
||
78 | Prototype : *fun [ObjGtkWidget u0] u2* |
||
79 | |||
80 | 8 | iri | h2. SCOL_GTK_WIDGET_ENTERLEAVE |
81 | |||
82 | when the pointer (typically a mouse) enter or leave a window (maybe an other object) |
||
83 | Prototype : *fun [ObjGtkWidget u0 I I I [I I]] u2* |
||
84 | |||
85 | The supplementals arguments are : |
||
86 | table |
||
87 | |1. *widget*|ObjGtkWidget|a widget (typically a window)| | |
||
88 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
89 | |3 *type*|I|the pointer enters or leaves|0 if enters, 1 if leaves| |
||
90 | |4 *mask*|I|the mask of the modifier keys|SCOL_GTK_EVENT_KEY_SHIFT| |
||
91 | | | | |SCOL_GTK_EVENT_KEY_CONTROL,| |
||
92 | | | | |SCOL_GTK_EVENT_KEY_ALT,| |
||
93 | | | | |SCOL_GTK_EVENT_KEY_CAPS (can not work : system, window manager, ...)| |
||
94 | | | | |SCOL_GTK_EVENT_KEY_HYPER (can not work : system, window manager, ...)| |
||
95 | | | | |SCOL_GTK_EVENT_KEY_SUPER (can not work : system, window manager, ...)| |
||
96 | | | | |SCOL_GTK_EVENT_KEY_OTHER (or nothing)| |
||
97 | |5 *focus*|I|the widget has (or not) the focus|1 if is the focus window or an inferior| |
||
98 | |6 *coord*|[I I]|the coordinate of the pointer (x, y)| |
||
99 | |||
100 | 9 | iri | h2. SCOL_GTK_WIDGET_KEYB_FOCUS |
101 | |||
102 | when the keyboard focus enters or leaves a widget. |
||
103 | Prototype : *fun [ObjGtkWidget u0 I] u2* |
||
104 | |||
105 | The supplemental parameter is : |
||
106 | *in* : I : 1 if enter, 0 if lost |
||
107 | |||
108 | 10 | iri | h2. SCOL_GTK_WIDGET_SHOW |
109 | |||
110 | when a widget is shown |
||
111 | Prototype : *fun [ObjGtkWidget u0] u2* |
||
112 | |||
113 | h2. SCOL_GTK_WIDGET_HIDE |
||
114 | |||
115 | when a widget is hidden |
||
116 | Prototype : *fun [ObjGtkWidget u0] u2* |
||
117 | 9 | iri | |
118 | 12 | iri | h2. SCOL_GTK_WIDGET_KEY |
119 | |||
120 | when a key is pressed or released |
||
121 | Prototype : *fun [ObjGtkWidget u0 I I I S] u2* |
||
122 | |||
123 | table |
||
124 | |1. *widget*|ObjGtkWidget|a widget| | |
||
125 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
126 | 15 | iri | |3. *type*|I|the keyis pressed or released|0 if pressed, 1 if released, nil if not known, error, etc| |
127 | |4. *mask*|I|the mask of the modifier keys|SCOL_GTK_EVENT_KEY_SHIFT| |
||
128 | 12 | iri | | | | |SCOL_GTK_EVENT_KEY_CONTROL,| |
129 | | | | |SCOL_GTK_EVENT_KEY_ALT,| |
||
130 | | | | |SCOL_GTK_EVENT_KEY_CAPS (can not work : system, window manager, ...)| |
||
131 | | | | |SCOL_GTK_EVENT_KEY_HYPER (can not work : system, window manager, ...)| |
||
132 | | | | |SCOL_GTK_EVENT_KEY_SUPER (can not work : system, window manager, ...)| |
||
133 | | | | |SCOL_GTK_EVENT_KEY_OTHER (or nothing)| |
||
134 | 1 | iri | |5 *keyval*|I|the value of the key|| |
135 | |6 *keystring*|S|the string (e.g. if keyval = 65, keystring = "A").|But, be careful, if the key is the left shift, keystring should be "SHIFT_L", or, in french, with the key รจ, keystring = "egrave", ... This last argument is a facility only.| |
||
136 | 15 | iri | |
137 | h2. SCOL_GTK_WIDGET_MOTION |
||
138 | |||
139 | when the pointer moves over a widget |
||
140 | Prototype : *fun [ObjGtkWidget u0 I [I I] [I I] [S I]] u2* |
||
141 | |||
142 | table |
||
143 | |1. *widget*|ObjGtkWidget|a widget| | |
||
144 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
145 | |3. *mask*|I|the mask of the modifier keys|SCOL_GTK_EVENT_KEY_SHIFT| |
||
146 | | | | |SCOL_GTK_EVENT_KEY_CONTROL,| |
||
147 | | | | |SCOL_GTK_EVENT_KEY_ALT,| |
||
148 | | | | |SCOL_GTK_EVENT_KEY_CAPS (can not work : system, window manager, ...)| |
||
149 | | | | |SCOL_GTK_EVENT_KEY_HYPER (can not work : system, window manager, ...)| |
||
150 | | | | |SCOL_GTK_EVENT_KEY_SUPER (can not work : system, window manager, ...)| |
||
151 | | | | |SCOL_GTK_EVENT_KEY_OTHER (or nothing)| |
||
152 | |4. *coord*|[I I]|x and y coordinates| | |
||
153 | |5. *coorddevice*|[I I]|x, y translated to the axes of device, or nil if device is the mouse| | |
||
154 | 16 | iri | |6. *device*|[S I]|the name of the device and the type of the device|In *Gtk+ 2.x*, the string is always "unknown" and the integer is always SCOL_DEVICE_UNKNOWN| |
155 | | | | |SCOL_DEVICE_MOUSE,| |
||
156 | | | | |SCOL_DEVICE_PEN,| |
||
157 | | | | |SCOL_DEVICE_ERASER,| |
||
158 | | | | |SCOL_DEVICE_CURSOR,| |
||
159 | | | | |SCOL_DEVICE_KEYBOARD,| |
||
160 | | | | |SCOL_DEVICE_UNKNOWN| |
||
161 | 13 | iri | |
162 | 17 | iri | h2. SCOL_GTK_WIDGET_SCROLL |
163 | |||
164 | when the whell mouse turns and or is pressed |
||
165 | |||
166 | Prototype : *fun [ObjGtkWidget u0 I I [I I] [S I]] u2* |
||
167 | table |
||
168 | |1. *widget*|ObjGtkWidget|a widget| | |
||
169 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
170 | |3. *direction*|I|the direction|SCOL_GTK_EVENT_SCROLL_UP| |
||
171 | | | | |SCOL_GTK_EVENT_SCROLL_DOWN| |
||
172 | | | | |SCOL_GTK_EVENT_SCROLL_LEFT| |
||
173 | | | | |SCOL_GTK_EVENT_SCROLL_RIGHT| |
||
174 | | | | |SCOL_GTK_EVENT_SCROLL_UNKNOWN| |
||
175 | |4. *mask*|I|the mask of the modifier keys|SCOL_GTK_EVENT_KEY_SHIFT| |
||
176 | | | | |SCOL_GTK_EVENT_KEY_CONTROL,| |
||
177 | | | | |SCOL_GTK_EVENT_KEY_ALT,| |
||
178 | | | | |SCOL_GTK_EVENT_KEY_CAPS (can not work : system, window manager, ...)| |
||
179 | | | | |SCOL_GTK_EVENT_KEY_HYPER (can not work : system, window manager, ...)| |
||
180 | | | | |SCOL_GTK_EVENT_KEY_SUPER (can not work : system, window manager, ...)| |
||
181 | | | | |SCOL_GTK_EVENT_KEY_OTHER (or nothing)| |
||
182 | |5. *coord*|[I I]|x and y coordinates| | |
||
183 | |6. *device*|[S I]|the name of the device and the type of the device|In *Gtk+ 2.x*, the string is always "unknown" and the integer is always SCOL_DEVICE_UNKNOWN| |
||
184 | | | | |SCOL_DEVICE_MOUSE,| |
||
185 | | | | |SCOL_DEVICE_PEN,| |
||
186 | | | | |SCOL_DEVICE_ERASER,| |
||
187 | | | | |SCOL_DEVICE_CURSOR,| |
||
188 | | | | |SCOL_DEVICE_KEYBOARD,| |
||
189 | | | | |SCOL_DEVICE_UNKNOWN| |
||
190 | |||
191 | 26 | iri | h2. SCOL_GTK_WIDGET_VALUE_CHANGED |
192 | |||
193 | When the value of several widgets changes. These widgets are the [[Range]] widget, Spin widgets, ... |
||
194 | |||
195 | Prototype : *fun [ObjGtkWidget u0 F] u2* |
||
196 | |||
197 | The supplemental argument is the new value displayed by the widget. |
||
198 | |||
199 | 17 | iri | |
200 | 13 | iri | |
201 | 19 | iri | h1. Window only |
202 | 18 | iri | |
203 | h2. SCOL_GTK_WINDOW_STATE |
||
204 | |||
205 | when the state of a window changes. |
||
206 | |||
207 | Prototype : *fun [ObjGtkWidget u0 I] u2* |
||
208 | |||
209 | table |
||
210 | |1. *widget*|ObjGtkWidget|a widget|Warning : widget *must* be a window (GtkWindow, see "_gtkWidgetTypeName":http://trac.scolring.org/projects/lib2dgtk/wiki/Widgets)| |
||
211 | |2. *userparam*|u0|a user parameter, at your convenience| | |
||
212 | |3. *state*|I|what flags have changed ?|SCOL_WINDOW_NOTSHOWN the window is not shown| |
||
213 | | | | |SCOL_WINDOW_ICONIFIED the window is minimized| |
||
214 | | | | |SCOL_WINDOW_MAXIMIZED the window is maximized| |
||
215 | | | | |SCOL_WINDOW_STICKY the window is sticky| |
||
216 | | | | |SCOL_WINDOW_FULLSCREEN the window is maximized without decorations| |
||
217 | | | | |SCOL_WINDOW_ABOVE the window is kept above other windows| |
||
218 | | | | |SCOL_WINDOW_BELOW the window is kept below other windows| |
||
219 | | | | |SCOL_WINDOW_STATE_UNKNOWN the state is unknown| |
||
220 | |||
221 | |||
222 | |||
223 | |||
224 | 19 | iri | h1. Button only |
225 | 14 | iri | |
226 | 13 | iri | h2. SCOL_GTK_BUTTON_CLICKED |
227 | |||
228 | A button has been clicked |
||
229 | 1 | iri | Prototype : *fun [ObjGtkWidget u0] u2* |
230 | 18 | iri | Warning : widget *must* be a button (GtkButton, see "_gtkWidgetTypeName":http://trac.scolring.org/projects/lib2dgtk/wiki/Widgets) |
231 | 13 | iri | |
232 | 12 | iri | |
233 | 22 | iri | h1. Notebook only |
234 | |||
235 | h2. SCOL_GTK_NOTEBOOK_CHANGE |
||
236 | |||
237 | when the user or a function changes the current tab/page. |
||
238 | Prototype : *fun [ObjGtkWidget u0 I] u2* |
||
239 | The supplemental argument is the index of the new current tab |
||
240 | 6 | iri | |
241 | 23 | iri | h1. TextBuffer only |
242 | |||
243 | 24 | iri | h2. SCOL_GTK_TEXTBUFFER_CHANGED |
244 | 23 | iri | |
245 | 1 | iri | when the content of a text buffer object change. |
246 | 24 | iri | Prototype : *fun [ObjGtkWidget u0] u2* |
247 | |||
248 | h2. SCOL_GTK_TEXTBUFFER_MODIFIED |
||
249 | |||
250 | when the text buffer has been modified by the user or by the program. To set/get this state, see _gtkTextBufferIsModified |
||
251 | 23 | iri | Prototype : *fun [ObjGtkWidget u0] u2* |
252 | |||
253 | 1 | iri | Return [[Widgets]] |