aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/compat_macros.h
blob: 008d28f2fa1ecb7e8befac96c64ecfd2309143a7 (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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
/* compat_macros.h
 * GTK-related Global defines, etc.
 *
 * $Id$
 *
 * Ethereal - Network traffic analyzer
 * By Gerald Combs <gerald@ethereal.com>
 * Copyright 1998 Gerald Combs
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#ifndef __COMPAT_MACROS_H__
#define __COMPAT_MACROS_H__


/** @file
 *
 * Helper macros for gtk1.x / gtk2.x compatibility. Use these macros instead of the GTK deprecated functions, 
 * to keep compatibility between GTK 1.x and 2.x.
 * For example in gtk2.x, gtk_signal_xxx is deprecated in favor of g_signal_xxx,
 *          gtk_object_xxx is deprecated in favor of g_object_xxx,
 *          gtk_widget_set_usize is deprecated in favor of
 *              gtk_widget_set_size_request, ...
 */

#if GTK_MAJOR_VERSION < 2

/** Connect a signal handler to a particular object.
 *
 * @param widget the widget to connect to
 * @param name name of the signal
 * @param callback 	function pointer to attach to the signal
 * @param arg value to pass to your function
 * @return the connection id
 */
#define SIGNAL_CONNECT(widget, name, callback, arg) \
gtk_signal_connect(GTK_OBJECT(widget), name, GTK_SIGNAL_FUNC(callback), \
                   (gpointer)(arg))

/** This function is for registering a callback that will call another object's callback. 
 *  That is, instead of passing the object which is responsible for the event as the first 
 *  parameter of the callback, it is switched with the user data (so the object which emits 
 *  the signal will be the last parameter, which is where the user data usually is).
 *
 * @param widget the widget to connect to
 * @param name name of the signal
 * @param callback 	function pointer to attach to the signal
 * @param arg the object to pass as the first parameter to func
 * @return the connection id
 */
#define SIGNAL_CONNECT_OBJECT(widget, name, callback, arg) \
gtk_signal_connect_object(GTK_OBJECT(widget), name, GTK_SIGNAL_FUNC(callback), \
                          (gpointer)(arg))

/** Destroys all connections for a particular object, with the given 
 *  function-pointer and user-data.
 *
 * @param object the object which emits the signal
 * @param func the function pointer to search for
 * @param data 	the user data to search for
 */
#define SIGNAL_DISCONNECT_BY_FUNC(object, func, data) \
gtk_signal_disconnect_by_func(GTK_OBJECT(object), func, data)

/** Each object carries around a table of associations from strings to pointers,
 *  this function lets you set an association. If the object already had an 
 *  association with that name, the old association will be destroyed. 
 *
 * @param widget object containing the associations
 * @param key name of the key
 * @param data data to associate with that key
 */
#define OBJECT_SET_DATA(widget, key, data) \
gtk_object_set_data(GTK_OBJECT(widget), key, (data))

/** Get a named field from the object's table of associations (the object_data).
 *
 * @param widget object containing the associations
 * @param key name of the key
 * @return 	the data if found, or NULL if no such data exists
 */
#define OBJECT_GET_DATA(widget, key) \
gtk_object_get_data(GTK_OBJECT(widget), key)

/** Sets the size of a widget. This will be useful to set the size of 
 * e.g. a GtkEntry. Don't use WIDGET_SET_SIZE() to set the size of a dialog 
 * or window, use gtk_window_set_default_size() for that purpose!
 *
 * @param widget a GtkWidget
 * @param width  new width, or -1 to unset
 * @param height new height, or -1 to unset
 * @todo WIDGET_SET_SIZE would better be named WIDGET_SET_MIN_SIZE
 */
#define WIDGET_SET_SIZE(widget, width, height) \
gtk_widget_set_usize(GTK_WIDGET(widget), width, height)

/** Emits a signal. This causes the default handler and user-connected 
 *  handlers to be run.
 *
 * @param widget the object that emits the signal
 * @param name the name of the signal
 * @param arg value to pass to the handlers or NULL
 */
#define SIGNAL_EMIT_BY_NAME(widget, name, arg) \
gtk_signal_emit_by_name(GTK_OBJECT(widget), name, arg)

/** This function aborts a signal's current emission. It will prevent the 
 *  default method from running, if the signal was GTK_RUN_LAST and you 
 *  connected normally (i.e. without the "after" flag). It will print a 
 *  warning if used on a signal which isn't being emitted. It will lookup the 
 *  signal id for you.
 *
 * @param widget the object whose signal handlers you wish to stop
 * @param name the signal identifier, as returned by g_signal_lookup()
 */
#define SIGNAL_EMIT_STOP_BY_NAME(widget, name) \
gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), name)

/** An entry for a GtkItemFactoryEntry array.
 *
 * @param path the path to this entry (e.g. "/File/Open")
 * @param accelerator accelerator key (e.g. "<control>M") or NULL
 * @param callback function to be called, when item is activated or NULL
 * @param action the action number to use (usually 0)
 * @param type special item type (e.g. "<Branch>", "<CheckItem>", ...) or NULL
 * @param data data to pass to the callback function or NULL
 */
#define ITEM_FACTORY_ENTRY(path, accelerator, callback, action, type, data) \
{path, accelerator, GTK_MENU_FUNC(callback), action, type}

/** Like ITEM_FACTORY_ENTRY(), but using a stock icon (as data)
 * @param path the path to this entry (e.g. "/File/Open")
 * @param accelerator accelerator key (e.g. "<control>M") or NULL
 * @param callback function to be called, when item is activated or NULL
 * @param action the action number to use (usually 0)
 * @param data the stock item id (e.g. GTK_STOCK_OK, unused by GTK1)
 */
#define ITEM_FACTORY_STOCK_ENTRY(path, accelerator, callback, action, data) \
{path, accelerator, GTK_MENU_FUNC(callback), action, NULL}

#define GTK_STOCK_APPLY             "Apply"
#define GTK_STOCK_CANCEL            "Cancel"
#define GTK_STOCK_CLEAR             "Clear"
#define GTK_STOCK_CLOSE             "Close"
#define GTK_STOCK_COPY              "Copy"
#define GTK_STOCK_DELETE            "Delete"
#define GTK_STOCK_FIND              "Find"
#define GTK_STOCK_GO_BACK           "Back"
#define GTK_STOCK_GO_DOWN           "Down"
#define GTK_STOCK_GO_FORWARD        "Next"
#define GTK_STOCK_GO_UP             "Up"
#define GTK_STOCK_GOTO_BOTTOM       "Bottom"
#define GTK_STOCK_GOTO_TOP          "Top"
#define GTK_STOCK_HELP              "Help"
#define GTK_STOCK_HOME              "Home"
#define GTK_STOCK_JUMP_TO           "GoTo"
#define GTK_STOCK_NEW               "New"
#define GTK_STOCK_NO                "No"
#define GTK_STOCK_OK                "OK"
#define GTK_STOCK_OPEN              "Open"
#define GTK_STOCK_PRINT             "Print"
#define GTK_STOCK_PROPERTIES        "Properties"
#define GTK_STOCK_REFRESH           "Reload"
#define GTK_STOCK_REVERT_TO_SAVED   "Revert"
#define GTK_STOCK_SAVE              "Save"
#define GTK_STOCK_SAVE_AS           "Save As"
#define GTK_STOCK_SELECT_COLOR      "Color"
#define GTK_STOCK_SELECT_FONT       "Font"
#define GTK_STOCK_STOP              "Stop"
#define GTK_STOCK_YES               "Yes"
#define GTK_STOCK_ZOOM_IN           "Zoom In"
#define GTK_STOCK_ZOOM_OUT          "Zoom Out"
#define GTK_STOCK_ZOOM_100          "Zoom 100%"

#ifdef HAVE_LIBPCAP
#define ETHEREAL_STOCK_CAPTURE_INTERFACES       "Interfaces"
#define ETHEREAL_STOCK_CAPTURE_OPTIONS          "Options"
#define ETHEREAL_STOCK_CAPTURE_START            "Start"
#define ETHEREAL_STOCK_CAPTURE_STOP             "Stop"
#define ETHEREAL_STOCK_CAPTURE_RESTART          "Restart"
#define ETHEREAL_STOCK_CAPTURE_FILTER           "CFilter"
#define ETHEREAL_STOCK_CAPTURE_FILTER_ENTRY     "Capture Filter:"
#endif
#define ETHEREAL_STOCK_DISPLAY_FILTER           "Filter"
#define ETHEREAL_STOCK_DISPLAY_FILTER_ENTRY     "Filter:"
#define ETHEREAL_STOCK_PREFS                    "Prefs"
#define ETHEREAL_STOCK_BROWSE                   "Browse"
#define ETHEREAL_STOCK_CREATE_STAT              "Create Stat"
#define ETHEREAL_STOCK_EXPORT                   "Export..."
#define ETHEREAL_STOCK_IMPORT                   "Import..."
#define ETHEREAL_STOCK_EDIT                     "Edit..."
#define ETHEREAL_STOCK_ADD_EXPRESSION           "Add Expression..."
#define ETHEREAL_STOCK_DONT_SAVE                "Continue without Saving"
#define ETHEREAL_STOCK_ABOUT                    "About"
#define ETHEREAL_STOCK_COLORIZE                 "Colorize"
#define ETHEREAL_STOCK_AUTOSCROLL               "Auto Scroll"
#define ETHEREAL_STOCK_RESIZE_COLUMNS           "Resize Columns"
#define ETHEREAL_STOCK_TIME                     "Time"
#define ETHEREAL_STOCK_INTERNET                 "Internet"
#define ETHEREAL_STOCK_WEB_SUPPORT              "Web Support"
#define ETHEREAL_STOCK_WIKI                     "Wiki"
#define ETHEREAL_STOCK_CONVERSATIONS            "Conversations"
#define ETHEREAL_STOCK_ENDPOINTS                "Endpoints"
#define ETHEREAL_STOCK_GRAPHS                   "Graphs"
#define ETHEREAL_STOCK_TELEPHONY                "Telephony"
#define ETHEREAL_STOCK_DECODE_AS                "Decode As"
#define ETHEREAL_STOCK_CHECKBOX                 "Checkbox"
#define ETHEREAL_STOCK_FILE_SET_LIST            "List Files"
#define ETHEREAL_STOCK_FILE_SET_NEXT            "Next File"
#define ETHEREAL_STOCK_FILE_SET_PREVIOUS        "Previous File"

/** Create a stock button. Will create a "normal" button for GTK1.
 *
 * @param stock_id the stock id for this button (e.g. GTK_STOCK_OK)
 * @return the new button
 */
#define BUTTON_NEW_FROM_STOCK(stock_id) \
gtk_button_new_with_label(stock_id);

/** Create a check button.
 *
 * @param label_text the text to display
 * @param accel_group accelerator group (GTK1 only)
 * @return the new check button
 */
#define CHECK_BUTTON_NEW_WITH_MNEMONIC(label_text, accel_group) \
dlg_check_button_new_with_label_with_mnemonic(label_text, accel_group)

/** Create a radio button.
 *
 * @param radio_group group the radio buttons (another radio button or NULL for first one)
 * @param label_text the text to display
 * @param accel_group accelerator group (GTK1 only)
 * @return the new radio button
 */
#define RADIO_BUTTON_NEW_WITH_MNEMONIC(radio_group, label_text, accel_group) \
dlg_radio_button_new_with_label_with_mnemonic( \
    radio_group ? gtk_radio_button_group(GTK_RADIO_BUTTON(radio_group)) : NULL, \
    label_text, accel_group)

/** Create a radio button.
 *
 * @param radio_group group the radio buttons (another radio button or NULL for first one)
 * @param label_text the text to display
 * @return the new radio button
 */
#define RADIO_BUTTON_NEW_WITH_LABEL(radio_group, label_text) \
gtk_radio_button_new_with_label ( \
    radio_group ? gtk_radio_button_group(GTK_RADIO_BUTTON(radio_group)) : NULL, \
    label_text)

/** Create a toggle button.
 *
 * @param label_text the text to display
 * @param accel_group accelerator group (GTK1 only)
 * @return the new toggle button
 */
#define TOGGLE_BUTTON_NEW_WITH_MNEMONIC(label_text, accel_group) \
dlg_toggle_button_new_with_label_with_mnemonic(label_text, accel_group)

/** tag(s) start for first row of simple_dialog (and others). */
#define PRIMARY_TEXT_START ""
/** tag(s) end for first row of simple_dialog (and others). */
#define PRIMARY_TEXT_END ""

#define FONT_TYPE GdkFont

/*************************************************************************/

#else /* GTK_MAJOR_VERSION >= 2 */

#define SIGNAL_CONNECT(widget, name, callback, arg) \
g_signal_connect(G_OBJECT(widget), name, G_CALLBACK(callback), \
                 (gpointer)(arg))

#define SIGNAL_CONNECT_OBJECT(widget, name, callback, arg) \
g_signal_connect_swapped(G_OBJECT(widget), name, G_CALLBACK(callback), \
                         (gpointer)(arg))

#define SIGNAL_DISCONNECT_BY_FUNC(object, func, data) \
g_signal_handlers_disconnect_by_func(G_OBJECT(object), func, data)

#define OBJECT_SET_DATA(widget, key, data) \
g_object_set_data(G_OBJECT(widget), key, (data))

#define OBJECT_GET_DATA(widget, key) \
g_object_get_data(G_OBJECT(widget), key)

/* WIDGET_SET_SIZE would better be named WIDGET_SET_MIN_SIZE. */
/* don't use WIDGET_SET_SIZE() to set the size of a dialog, */
/* use gtk_window_set_default_size() for that purpose! */
#define WIDGET_SET_SIZE(widget, width, height) \
gtk_widget_set_size_request(GTK_WIDGET(widget), width, height)

#define SIGNAL_EMIT_BY_NAME(widget, name, arg) \
g_signal_emit_by_name(G_OBJECT(widget), name, arg)

#define SIGNAL_EMIT_STOP_BY_NAME(widget, name) \
g_signal_stop_emission_by_name(G_OBJECT(widget), name)

#define ITEM_FACTORY_ENTRY(path, accelerator, callback, action, type, data) \
{path, accelerator, GTK_MENU_FUNC(callback), action, type, data}

#define ITEM_FACTORY_STOCK_ENTRY(path, accelerator, callback, action, data) \
{path, accelerator, GTK_MENU_FUNC(callback), action, "<StockItem>", data}

#ifdef HAVE_LIBPCAP
#define ETHEREAL_STOCK_LABEL_CAPTURE_INTERFACES       "_Interfaces"
#define ETHEREAL_STOCK_LABEL_CAPTURE_OPTIONS          "_Options"
#define ETHEREAL_STOCK_LABEL_CAPTURE_START            "_Start"
#define ETHEREAL_STOCK_LABEL_CAPTURE_STOP             "S_top"
#define ETHEREAL_STOCK_LABEL_CAPTURE_RESTART          "_Restart"
#define ETHEREAL_STOCK_LABEL_CAPTURE_FILTER           "_CFilter"
#define ETHEREAL_STOCK_LABEL_CAPTURE_FILTER_ENTRY     "_Capture Filter:"
#endif
#define ETHEREAL_STOCK_LABEL_DISPLAY_FILTER           "_Filter"
#define ETHEREAL_STOCK_LABEL_DISPLAY_FILTER_ENTRY     "_Filter:"
#define ETHEREAL_STOCK_LABEL_PREFS                    "_Prefs"
#define ETHEREAL_STOCK_LABEL_BROWSE                   "_Browse..."
#define ETHEREAL_STOCK_LABEL_CREATE_STAT              "Create _Stat"
#define ETHEREAL_STOCK_LABEL_EXPORT                   "_Export..."
#define ETHEREAL_STOCK_LABEL_IMPORT                   "_Import..."
#define ETHEREAL_STOCK_LABEL_EDIT                     "_Edit..."
#define ETHEREAL_STOCK_LABEL_ADD_EXPRESSION           "_Expression..." /* plus sign coming from icon */
#define ETHEREAL_STOCK_LABEL_DONT_SAVE                "Continue _without Saving"
#define ETHEREAL_STOCK_LABEL_ABOUT                    "_About"
#define ETHEREAL_STOCK_LABEL_COLORIZE                 "_Colorize"
#define ETHEREAL_STOCK_LABEL_AUTOSCROLL               "_Auto Scroll in Live Capture"
#define ETHEREAL_STOCK_LABEL_RESIZE_COLUMNS           "Resize Columns"
#define ETHEREAL_STOCK_LABEL_TIME                     "Time"
#define ETHEREAL_STOCK_LABEL_INTERNET                 "Internet"
#define ETHEREAL_STOCK_LABEL_WEB_SUPPORT              "Web Support"
#define ETHEREAL_STOCK_LABEL_WIKI                     "Wiki"
#define ETHEREAL_STOCK_LABEL_CONVERSATIONS            "Conversations"
#define ETHEREAL_STOCK_LABEL_ENDPOINTS                "Endpoints"
#define ETHEREAL_STOCK_LABEL_GRAPHS                   "Graphs"
#define ETHEREAL_STOCK_LABEL_TELEPHONY                "Telephony"
#define ETHEREAL_STOCK_LABEL_DECODE_AS                "Decode As"
#define ETHEREAL_STOCK_LABEL_CHECKBOX                 "Checkbox"
#define ETHEREAL_STOCK_LABEL_FILE_SET_LIST            "List Files"
#define ETHEREAL_STOCK_LABEL_FILE_SET_NEXT            "Next File"
#define ETHEREAL_STOCK_LABEL_FILE_SET_PREVIOUS        "Previous File"

#ifdef HAVE_LIBPCAP
#define ETHEREAL_STOCK_CAPTURE_INTERFACES       "Ethereal_Stock_CaptureInterfaces"
#define ETHEREAL_STOCK_CAPTURE_OPTIONS          "Ethereal_Stock_CaptureOptionss"
#define ETHEREAL_STOCK_CAPTURE_START            "Ethereal_Stock_CaptureStart"
#define ETHEREAL_STOCK_CAPTURE_STOP             "Ethereal_Stock_CaptureStop"
#define ETHEREAL_STOCK_CAPTURE_RESTART          "Ethereal_Stock_CaptureRestart"
#define ETHEREAL_STOCK_CAPTURE_FILTER           "Ethereal_Stock_CaptureFilter"
#define ETHEREAL_STOCK_CAPTURE_FILTER_ENTRY     "Ethereal_Stock_CaptureFilter_Entry"
#endif
#define ETHEREAL_STOCK_DISPLAY_FILTER           "Ethereal_Stock_DisplayFilter"
#define ETHEREAL_STOCK_DISPLAY_FILTER_ENTRY     "Ethereal_Stock_DisplayFilter_Entry"
#define ETHEREAL_STOCK_PREFS                    "Ethereal_Stock_Prefs"
#define ETHEREAL_STOCK_BROWSE                   "Ethereal_Stock_Browse"
#define ETHEREAL_STOCK_CREATE_STAT              "Ethereal_Stock_CreateStat"
#define ETHEREAL_STOCK_EXPORT                   "Ethereal_Stock_Export"
#define ETHEREAL_STOCK_IMPORT                   "Ethereal_Stock_Import"
#define ETHEREAL_STOCK_EDIT                     "Ethereal_Stock_Edit"
#define ETHEREAL_STOCK_ADD_EXPRESSION           "Ethereal_Stock_Edit_Add_Expression"
#define ETHEREAL_STOCK_DONT_SAVE                "Ethereal_Stock_Continue_without_Saving"
#define ETHEREAL_STOCK_ABOUT                    "Ethereal_Stock_About"
#define ETHEREAL_STOCK_COLORIZE                 "Ethereal_Stock_Colorize"
#define ETHEREAL_STOCK_AUTOSCROLL               "Ethereal_Stock_Autoscroll"
#define ETHEREAL_STOCK_RESIZE_COLUMNS           "Ethereal_Stock_Resize_Columns"
#define ETHEREAL_STOCK_TIME                     "Ethereal_Stock_Time"
#define ETHEREAL_STOCK_INTERNET                 "Ethereal_Stock_Internet"
#define ETHEREAL_STOCK_WEB_SUPPORT              "Ethereal_Stock_Web_Support"
#define ETHEREAL_STOCK_WIKI                     "Ethereal_Stock_Wiki"
#define ETHEREAL_STOCK_CONVERSATIONS            "Ethereal_Stock_Conversations"
#define ETHEREAL_STOCK_ENDPOINTS                "Ethereal_Stock_Endpoints"
#define ETHEREAL_STOCK_GRAPHS                   "Ethereal_Stock_Graphs"
#define ETHEREAL_STOCK_TELEPHONY                "Ethereal_Stock_Telephony"
#define ETHEREAL_STOCK_DECODE_AS                "Ethereal_Stock_DecodeAs"
#define ETHEREAL_STOCK_CHECKBOX                 "Ethereal_Stock_Checkbox"
#define ETHEREAL_STOCK_FILE_SET_LIST            "Ethereal_Stock_File_Set_List"
#define ETHEREAL_STOCK_FILE_SET_NEXT            "Ethereal_Stock_File_Set_Next"
#define ETHEREAL_STOCK_FILE_SET_PREVIOUS        "Ethereal_Stock_File_Set_Previous"

#define BUTTON_NEW_FROM_STOCK(stock_id) \
gtk_button_new_from_stock(stock_id);

#define CHECK_BUTTON_NEW_WITH_MNEMONIC(label_text, accel_group) \
gtk_check_button_new_with_mnemonic(label_text)

#define RADIO_BUTTON_NEW_WITH_MNEMONIC(radio_group, label_text, accel_group) \
gtk_radio_button_new_with_mnemonic_from_widget( \
    radio_group ? GTK_RADIO_BUTTON(radio_group) : NULL, label_text)

#define RADIO_BUTTON_NEW_WITH_LABEL(radio_group, label_text) \
gtk_radio_button_new_with_label_from_widget( \
    radio_group ? GTK_RADIO_BUTTON(radio_group) : NULL, label_text)

#define TOGGLE_BUTTON_NEW_WITH_MNEMONIC(label_text, accel_group) \
gtk_toggle_button_new_with_mnemonic(label_text)

/* for details, see "Pango Text Attribute Markup" */
#define PRIMARY_TEXT_START "<span weight=\"bold\" size=\"larger\">"
#define PRIMARY_TEXT_END "</span>"

#define FONT_TYPE PangoFontDescription

#endif /* GTK_MAJOR_VERSION */

#endif /* __COMPAT_MACROS_H__ */