LiVES  3.0.2
widget-helper-gtk.h
Go to the documentation of this file.
1 // widget-helper-gtk.h
2 // LiVES
3 // (c) G. Finch 2012 - 2019 <salsaman+lives@gmail.com>
4 // released under the GNU GPL 3 or later
5 // see file ../COPYING or www.gnu.org for licensing details
6 
7 // widget implementation for GTK+
8 
9 #ifndef HAS_LIVES_WIDGET_HELPER_GTK_H
10 #define HAS_LIVES_WIDGET_HELPER_GTK_H
11 
12 #ifdef GUI_GTK
13 
14 #ifdef ENABLE_GIW_3
15 #include "giw/giwtimeline.h"
16 #endif
17 
18 #ifdef ENABLE_GIW
19 #include "giw/giwvslider.h"
20 #include "giw/giwled.h"
21 #endif
22 
23 // a bug where gtk_radio_menu_item_set_active() does not update visually
24 // workaround: use check menuitems and update manually
25 #define GTK_RADIO_MENU_BUG
26 
27 // a bug where setting a menuitem insensitive fails if it has a submenu
28 // workaround: (?) unparent submenu, change its state, reparent it
29 #define GTK_SUBMENU_SENS_BUG
30 
31 // a bug where textview crashes if too much text in it (maybe not a bug, was missing expose function ?)
32 #define GTK_TEXT_VIEW_DRAW_BUG
33 
34 #if !GTK_CHECK_VERSION(3, 18, 9) // fixed version
35 // a bug where named textviews cannot be set by CSS
36 #define GTK_TEXT_VIEW_CSS_BUG
37 #endif
38 
39 #if GTK_CHECK_VERSION(3, 0, 0)
40 // a bug where CSS selectors (e.g. "entry" or ":insensitive") do nothing
41 #define GTK_CSS_SELECTORS_BUG
42 #endif
43 
44 #ifndef IS_MINGW
45 typedef gboolean boolean;
46 #else
47 
48 #ifdef GDK_WINDOWING_WIN32
49 #include <gdk/gdkwin32.h>
50 
51 #ifndef GDK_IS_WIN32_DISPLAY
52 #define GDK_IS_WIN32_DISPLAY(display) (TRUE)
53 #endif
54 
55 typedef uint8_t boolean;
56 
57 #endif //GDK_WINDOWING_WIN32
58 
59 #endif // IS_MINGW
60 
61 #ifdef GDK_WINDOWING_X11
62 
63 // needed for GDK_WINDOW_XID - for fileselector preview
64 // needed for gdk_x11_screen_get_window_manager_name()
65 
66 #include <gdk/gdkx.h>
67 
68 #ifndef GDK_IS_X11_DISPLAY
69 #define GDK_IS_X11_DISPLAY(display) (TRUE)
70 #endif
71 
72 #ifndef GDK_IS_WIN32_DISPLAY
73 #define GDK_IS_WIN32_DISPLAY(display) (FALSE)
74 #endif
75 
76 #else
77 
78 #ifndef GDK_IS_X11_DISPLAY
79 #define GDK_IS_X11_DISPLAY(display) (FALSE)
80 #endif
81 
82 #endif // GDK_WINDOWING_X11
83 
84 #endif // GUI_GTK
85 
86 
87 #ifdef GUI_GTK
88 
89 #include "support.h"
90 
91 #if GTK_CHECK_VERSION(2, 28, 0)
92 #define USE_MONOTONIC_TIME
93 #define lives_get_monotonic_time() g_get_monotonic_time()
94 #endif
95 
96 //#if GTK_CHECK_VERSION(3, 8, 0)
97 //#define USE_GDK_FRAME_CLOCK
98 //#endif
99 
101 #ifndef G_ENCODE_VERSION
102 #define G_ENCODE_VERSION(major, minor) ((major) << 16 | (minor) << 8)
103 #endif
104 
105 #define lives_free(a) g_free(a)
106 #define lives_malloc(a) g_malloc(a)
107 #define lives_malloc0(a) g_malloc0(a)
108 #define lives_realloc(a, b) g_realloc(a, b)
109 #define lives_try_malloc0_n(a, b) g_try_malloc0_n(a, b)
110 #define lives_try_malloc(a) g_try_malloc(a)
111 #define lives_try_malloc0(a) g_try_malloc0(a)
112 #define lives_try_realloc(a, b) g_try_realloc(a, b)
113 
114 typedef GError LiVESError;
115 
116 typedef GList LiVESList;
117 typedef GSList LiVESSList;
118 
119 typedef gpointer livespointer;
120 typedef gconstpointer livesconstpointer;
121 
122 typedef GClosure LiVESWidgetClosure;
123 
124 typedef GObject LiVESObject;
125 
126 typedef GLogLevelFlags LiVESLogLevelFlags;
127 
128 #define LIVES_LOG_LEVEL_WARNING G_LOG_LEVEL_WARNING
129 #define LIVES_LOG_LEVEL_MASK G_LOG_LEVEL_MASK
130 #define LIVES_LOG_LEVEL_CRITICAL G_LOG_LEVEL_CRITICAL
131 #define LIVES_LOG_FATAL_MASK G_LOG_FATAL_MASK
132 
134 
135 #if GTK_CHECK_VERSION(3, 10, 0)
136 #define LIVES_TABLE_IS_GRID 1
137 #endif
138 
139 #define LIVES_ACCEL_PATH_QUIT "<LiVES>/quit"
140 #define LIVES_ACCEL_PATH_SAVE "<LiVES>/save"
141 
142 #define return_true gtk_true
143 
144 typedef void (*LiVESGuiCallback)(void);
145 typedef void (*LiVESWidgetCallback)(GtkWidget *widget, gpointer data);
146 typedef gboolean(*LiVESWidgetSourceFunc)(gpointer data);
147 typedef gint(*LiVESCompareFunc)(gconstpointer a, gconstpointer b);
148 
149 #define LIVES_LITTLE_ENDIAN G_LITTLE_ENDIAN
150 #define LIVES_BIG_ENDIAN G_BIG_ENDIAN
151 
152 #define LIVES_MAXINT G_MAXINT
153 #define LIVES_MAXUINT32 G_MAXUINT32
154 #define LIVES_MAXSIZE G_MAXSIZE
155 #define LIVES_MAXFLOAT G_MAXFLOAT
156 #define LIVES_MAXDOUBLE G_MAXDOUBLE
157 
158 #define LIVES_IS_RTL (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL)
159 
160 #define LIVES_GUI_CALLBACK(f) ((LiVESGuiCallback) (f))
161 
162 #define lives_printerr(...) g_printerr(__VA_ARGS__)
163 #define lives_strdup_printf(...) g_strdup_printf(__VA_ARGS__)
164 #define lives_strdup_vprintf(...) g_strdup_vprintf(__VA_ARGS__)
165 #define lives_strndup_printf(...) g_strndup_printf(__VA_ARGS__)
166 #define lives_strndup(a, b) g_strndup(a, b)
167 #define lives_snprintf(a, b, ...) g_snprintf(a, b, __VA_ARGS__)
168 #define lives_strsplit(a, b, c) g_strsplit(a, b, c)
169 #define lives_strfreev(a) g_strfreev(a)
170 #define lives_strdup(a) g_strdup(a)
171 #define lives_ascii_strcasecmp(a, b) g_ascii_strcasecmp(a, b)
172 #define lives_ascii_strncasecmp(a, b, c) g_ascii_strncasecmp(a, b, c)
173 #define lives_strconcat(a, ...) g_strconcat(a, __VA_ARGS__)
174 #define lives_strstrip(a) g_strstrip(a)
175 #define lives_strrstr(a, b) g_strrstr(a, b)
176 #define lives_strstr_len(a, b, c) g_strstr_len(a, b, c)
177 #define lives_strdelimit(a, b, c) g_strdelimit(a, b, c)
178 
179 #define LIVES_NORMALIZE_DEFAULT G_NORMALIZE_DEFAULT
180 
181 #define lives_utf8_normalize(a, b, c) g_utf8_normalize(a, b, c)
182 #define lives_utf8_collate(a, b) g_utf8_collate(a, b)
183 #define lives_utf8_casefold(a, b) g_utf8_casefold(a, b)
184 
185 #define lives_list_nth_data(list, i) g_list_nth_data(list, i)
186 #define lives_list_nth(list, i) g_list_nth(list, i)
187 #define lives_list_length(list) g_list_length(list)
188 #define lives_list_free(list) g_list_free(list)
189 #define lives_list_append(list, data) g_list_append(list, data)
190 #define lives_list_prepend(list, data) g_list_prepend(list, data)
191 #define lives_list_find(list, data) g_list_find(list, data)
192 #define lives_list_previous(list) g_list_previous(list)
193 #define lives_list_last(list) g_list_last(list)
194 #define lives_list_delete_link(list, link) g_list_delete_link(list, link)
195 #define lives_list_copy(list) g_list_copy(list)
196 #define lives_list_next(list) g_list_next(list)
197 #define lives_list_first(list) g_list_first(list)
198 #define lives_list_remove(list, data) g_list_remove(list, data)
199 #define lives_list_remove_link(list, data) g_list_remove_link(list, data)
200 #define lives_list_concat(list, data) g_list_concat(list, data)
201 #define lives_list_insert(list, data, pos) g_list_insert(list, data, pos)
202 #define lives_list_index(list, data) g_list_index(list, data)
203 #define lives_list_find_custom(list, data, func) g_list_find_custom(list, data, func)
204 
205 #define lives_slist_free(list) g_slist_free(list)
206 #define lives_slist_length(list) g_slist_length(list)
207 #define lives_slist_nth_data(list, i) g_slist_nth_data(list, i)
208 #define lives_slist_append(list, data) g_slist_append(list, data)
209 #define lives_slist_prepend(list, data) g_slist_prepend(list, data)
210 
211 #define lives_build_filename(...) g_build_filename(__VA_ARGS__)
212 #define lives_build_path(...) g_build_path(LIVES_DIR_SEP, __VA_ARGS__)
213 #define lives_filename_to_utf8(a, b, c, d, e) g_filename_to_utf8(a, b, c, d, e)
214 #define lives_filename_from_utf8(a, b, c, d, e) g_filename_from_utf8(a, b, c, d, e)
215 
216 #define lives_utf8_strdown(a, b) g_utf8_strdown(a, b)
217 
218 #define lives_find_program_in_path(a) g_find_program_in_path(a)
219 
220 #define lives_idle_add(a, b) g_idle_add(a, b)
221 #define lives_idle_add_full(a, b, c, d) g_idle_add_full(a, b, c, d)
222 
223 #define lives_set_application_name(a) g_set_application_name(a)
224 #define lives_get_application_name() g_get_application_name()
225 
226 #define lives_usleep(a) g_usleep(a)
227 
228 #define lives_mkdir_with_parents(a, b) g_mkdir_with_parents(a, b)
229 
230 #define lives_strtod(a, b) g_strtod(a, b)
231 
232 #define lives_path_get_basename(a) g_path_get_basename(a)
233 
234 #define LIVES_UNLIKELY(a) G_UNLIKELY(a)
235 #define LIVES_LIKELY(a) G_LIKELY(a)
236 
237 #define lives_file_test(a, b) g_file_test(a, b)
238 
239 #define lives_get_current_dir() g_get_current_dir()
240 
241 #define lives_error_free(a) g_error_free(a)
242 
243 #define lives_strerror(a) g_strerror(a)
244 
245 #define lives_cclosure_new(a, b, c) g_cclosure_new(a, b, c)
246 
247 #define lives_path_get_dirname(a) g_path_get_dirname(a)
248 
249 #ifndef lives_locale_to_utf8
250 #define lives_locale_to_utf8(a, b, c, d, e) g_locale_to_utf8(a, b, c, d, e)
251 #endif
252 
253 #define U82L(String) (g_locale_from_utf8(String, -1, NULL, NULL, NULL))
254 #define L2U8(String) (g_locale_to_utf8(String, -1, NULL, NULL, NULL))
255 
256 #define U82F(String) (g_filename_from_utf8(String, -1, NULL, NULL, NULL))
257 #define F2U8(String) (g_filename_to_utf8(String, -1, NULL, NULL, NULL))
258 
259 #define LIVES_FILE_TEST_EXISTS G_FILE_TEST_EXISTS
260 #define LIVES_FILE_TEST_IS_DIR G_FILE_TEST_IS_DIR
261 #define LIVES_FILE_TEST_IS_REGULAR G_FILE_TEST_IS_REGULAR
262 
263 typedef GtkJustification LiVESJustification;
264 
265 #define LIVES_JUSTIFY_LEFT GTK_JUSTIFY_LEFT
266 #define LIVES_JUSTIFY_RIGHT GTK_JUSTIFY_RIGHT
267 #define LIVES_JUSTIFY_CENTER GTK_JUSTIFY_CENTER
268 #define LIVES_JUSTIFY_FILL GTK_JUSTIFY_RIGHT
269 
270 typedef GtkOrientation LiVESOrientation;
271 #define LIVES_ORIENTATION_HORIZONTAL GTK_ORIENTATION_HORIZONTAL
272 #define LIVES_ORIENTATION_VERTICAL GTK_ORIENTATION_VERTICAL
273 
274 typedef GdkEvent LiVESXEvent;
275 typedef GdkXEvent LiVESXXEvent;
276 typedef GdkEventButton LiVESXEventButton;
277 typedef GdkEventMotion LiVESXEventMotion;
278 typedef GdkEventScroll LiVESXEventScroll;
279 typedef GdkEventExpose LiVESXEventExpose;
280 typedef GdkEventCrossing LiVESXEventCrossing;
281 typedef GdkEventConfigure LiVESXEventConfigure;
282 typedef GdkEventFocus LiVESXEventFocus;
283 typedef GdkEventKey LiVESXEventKey;
284 typedef GdkEvent LiVESXEventDelete;
285 typedef GdkDisplay LiVESXDisplay;
286 typedef GdkScreen LiVESXScreen;
287 typedef GdkDevice LiVESXDevice;
288 
289 #define LIVES_KEY_RELEASE GDK_KEY_RELEASE
290 #define LIVES_KEY_PRESS GDK_KEY_PRESS
291 
292 #define LIVES_SCROLL_UP GDK_SCROLL_UP
293 #define LIVES_SCROLL_DOWN GDK_SCROLL_DOWN
294 
295 #if GTK_CHECK_VERSION(3, 0, 0)
296 #undef LIVES_HAS_DEVICE_MANAGER
297 #define LIVES_HAS_DEVICE_MANAGER 1
298 typedef GdkDeviceManager LiVESXDeviceManager;
299 #endif
300 
301 #if GTK_CHECK_VERSION(3, 0, 0)
302 #if GTK_CHECK_VERSION(4, 0, 0)
303 // gtk+ 4
304 #define EXPOSE_FN_DECL(fn, widget) boolean fn(LiVESWidget *widget, lives_painter_t *cairo, int width, int height, livespointer user_data) { \
305  LiVESXEventExpose *event = NULL; \
306  (void)event; // avoid compiler warnings
307 #define EXPOSE_FN_EVENT
308 #define EXPOSE_FN_PROTOTYPE(fn) boolean fn(LiVESWidget *, lives_painter_t *, int, int, livespointer);
309 #else
310 // gtk+ 3
311 #define EXPOSE_FN_DECL(fn, widget) boolean fn(LiVESWidget *widget, lives_painter_t *cairo, livespointer user_data) { \
312  LiVESXEventExpose *event = NULL; \
313  (void)event;
314 #define EXPOSE_FN_EVENT
315 #define EXPOSE_FN_PROTOTYPE(fn) boolean fn(LiVESWidget *, lives_painter_t *, livespointer);
316 #endif
317 #else
318 // gtk+ 2
319 #define EXPOSE_FN_DECL(fn, widget) boolean fn(LiVESWidget *widget, LiVESXEventExpose *event, livespointer user_data) { \
320  lives_painter_t *cairo = NULL;
321 #define EXPOSE_FN_PAINTER
322 #define EXPOSE_FN_PROTOTYPE(fn) boolean fn(LiVESWidget *, LiVESXEventExpose *, livespointer);
323 #endif
324 
325 #define EXPOSE_FN_END }
326 
327 #if GTK_CHECK_VERSION(3, 0, 0)
328 #define NO_ALT_VALUES
329 #if GTK_CHECK_VERSION(4, 0, 0)
330 #define LIVES_WIDGET_EXPOSE_EVENT "snapshot"
331 #else
332 #define LIVES_WIDGET_EXPOSE_EVENT "draw"
333 #endif
334 #define LIVES_GUI_OBJECT(a) a
335 #else
336 #define LIVES_GUI_OBJECT(a) GTK_OBJECT(a)
337 #define LIVES_WIDGET_EXPOSE_EVENT "expose_event"
338 #define LIVES_GUI_OBJECT_CLASS(a) GTK_OBJECT_CLASS(a)
339 #endif
340 
341 #define lives_widget_object_set_data(a, b, c) g_object_set_data(a, b, c)
342 #define lives_widget_object_get_data(a, b) g_object_get_data(a, b)
343 
344 #define lives_widget_object_set(a, b, c) g_object_set(a, b, c, NULL)
345 #define lives_widget_object_get(a, b, c) g_object_get(a, b, c, NULL)
346 
347 #define LIVES_WIDGET_OBJECT(a) G_OBJECT(a)
348 
349 #define lives_widget_object_freeze_notify(a) g_object_freeze_notify(a)
350 #define lives_widget_object_thaw_notify(a) g_object_thaw_notify(a)
351 
352 #if GTK_CHECK_VERSION(3, 0, 0)
353 #define NO_MEM_OVERRIDE TRUE
354 #else
355 #define NO_MEM_OVERRIDE g_mem_is_system_malloc()
356 #endif
357 
358 typedef GMemVTable LiVESMemVTable;
359 typedef GIOChannel LiVESIOChannel;
360 
361 typedef GtkTargetEntry LiVESTargetEntry;
362 
363 typedef GdkFilterReturn LiVESFilterReturn;
364 
365 #define LIVES_FILTER_REMOVE GDK_FILTER_REMOVE
366 #define LIVES_FILTER_CONTINUE GDK_FILTER_CONTINUE
367 
368 // font sizes
369 #define LIVES_FONT_SIZE_XX_SMALL "xx-small" // 0
370 #define LIVES_FONT_SIZE_X_SMALL "x-small" // 1
371 #define LIVES_FONT_SIZE_SMALL "small" // 2
372 #define LIVES_FONT_SIZE_MEDIUM "medium" // 3
373 #define LIVES_FONT_SIZE_LARGE "large" // 4
374 #define LIVES_FONT_SIZE_X_LARGE "x-large" // 5
375 #define LIVES_FONT_SIZE_XX_LARGE "xx-large" // 6
376 #define LIVES_FONT_SIZE_NORMAL LIVES_FONT_SIZE_MEDIUM
377 
378 // events
379 #define LIVES_WIDGET_EVENT "event"
380 #define LIVES_WIDGET_SCROLL_EVENT "scroll-event"
381 #define LIVES_WIDGET_CONFIGURE_EVENT "configure-event"
382 #define LIVES_WIDGET_ENTER_EVENT "enter-notify-event"
383 #define LIVES_WIDGET_BUTTON_PRESS_EVENT "button-press-event"
384 #define LIVES_WIDGET_BUTTON_RELEASE_EVENT "button-release-event"
385 #define LIVES_WIDGET_MOTION_NOTIFY_EVENT "motion-notify-event"
386 #define LIVES_WIDGET_LEAVE_NOTIFY_EVENT "leave-notify-event"
387 #define LIVES_WIDGET_FOCUS_OUT_EVENT "focus-out-event"
388 #define LIVES_WIDGET_DELETE_EVENT "delete-event"
389 #define LIVES_WIDGET_DESTROY_EVENT "destroy"
390 #define LIVES_WIDGET_KEY_PRESS_EVENT "key-press-event"
391 #define LIVES_WIDGET_KEY_RELEASE_EVENT "key-release-event"
392 
393 // signals
394 #define LIVES_WIDGET_CLICKED_SIGNAL "clicked"
395 #define LIVES_WIDGET_TOGGLED_SIGNAL "toggled"
396 #define LIVES_WIDGET_CHANGED_SIGNAL "changed"
397 #define LIVES_WIDGET_ACTIVATE_SIGNAL "activate"
398 #define LIVES_WIDGET_VALUE_CHANGED_SIGNAL "value-changed"
399 #define LIVES_WIDGET_SELECTION_CHANGED_SIGNAL "selection-changed"
400 #define LIVES_WIDGET_CURRENT_FOLDER_CHANGED_SIGNAL "current-folder-changed"
401 #define LIVES_WIDGET_RESPONSE_SIGNAL "response"
402 #define LIVES_WIDGET_DRAG_DATA_RECEIVED_SIGNAL "drag-data-received"
403 #define LIVES_WIDGET_SIZE_PREPARED_SIGNAL "size-prepared"
404 #define LIVES_WIDGET_MODE_CHANGED_SIGNAL "mode-changed"
405 #define LIVES_WIDGET_SWITCH_PAGE_SIGNAL "switch-page"
406 #define LIVES_WIDGET_UNMAP_SIGNAL "unmap"
407 #define LIVES_WIDGET_EDITED_SIGNAL "edited"
408 #define LIVES_WIDGET_ROW_EXPANDED_SIGNAL "row-expanded"
409 #define LIVES_WIDGET_COLOR_SET_SIGNAL "color-set"
410 #define LIVES_WIDGET_SET_FOCUS_CHILD_SIGNAL "set-focus-child"
411 #define LIVES_WIDGET_SHOW_SIGNAL "show"
412 #define LIVES_WIDGET_HIDE_SIGNAL "hide"
413 
414 #if GTK_CHECK_VERSION(3, 0, 0)
415 #define LIVES_WIDGET_STATE_CHANGED_SIGNAL "state-flags-changed"
416 #else
417 #define LIVES_WIDGET_STATE_CHANGED_SIGNAL "state-changed"
418 #endif
419 
420 #define LIVES_WIDGET_NOTIFY_SIGNAL "notify::"
421 
422 typedef GtkWidget LiVESWidget;
423 typedef GtkWindow LiVESWindow;
424 typedef GtkContainer LiVESContainer;
425 typedef GtkBin LiVESBin;
426 typedef GtkDialog LiVESDialog;
427 typedef GtkBox LiVESBox;
428 typedef GtkFrame LiVESFrame;
429 typedef GtkComboBox LiVESCombo;
430 typedef GtkComboBox LiVESComboBox;
431 typedef GtkButton LiVESButton;
432 typedef GtkButtonBox LiVESButtonBox;
433 typedef GtkToggleButton LiVESToggleButton;
434 
435 typedef GtkTextView LiVESTextView;
436 typedef GtkTextBuffer LiVESTextBuffer;
437 typedef GtkTextMark LiVESTextMark;
438 typedef GtkTextIter LiVESTextIter;
439 
440 typedef GtkEntry LiVESEntry;
441 typedef GtkEntryCompletion LiVESEntryCompletion;
442 typedef GtkRadioButton LiVESRadioButton;
443 typedef GtkSpinButton LiVESSpinButton;
444 typedef GtkColorButton LiVESColorButton;
445 typedef GtkToolButton LiVESToolButton;
446 typedef GtkLabel LiVESLabel;
447 typedef GtkImage LiVESImage;
448 typedef GtkFileChooser LiVESFileChooser;
449 typedef GtkAlignment LiVESAlignment;
450 typedef GtkMenu LiVESMenu;
451 typedef GtkMenuShell LiVESMenuShell;
452 typedef GtkMenuItem LiVESMenuItem;
453 typedef GtkMenuToolButton LiVESMenuToolButton;
454 typedef GtkToggleToolButton LiVESToggleToolButton;
455 typedef GtkCheckMenuItem LiVESCheckMenuItem;
456 typedef GtkImageMenuItem LiVESImageMenuItem;
457 typedef GtkRadioMenuItem LiVESRadioMenuItem;
458 
459 typedef GtkNotebook LiVESNotebook;
460 
461 typedef GtkExpander LiVESExpander;
462 
463 typedef GtkProgressBar LiVESProgressBar;
464 
465 typedef GtkAboutDialog LiVESAboutDialog;
466 
467 // values here are long unsigned int
468 #define LIVES_COL_TYPE_OBJECT G_TYPE_OBJECT
469 #define LIVES_COL_TYPE_STRING G_TYPE_STRING
470 #define LIVES_COL_TYPE_INT G_TYPE_INT
471 #define LIVES_COL_TYPE_UINT G_TYPE_UINT
472 #define LIVES_COL_TYPE_BOOLEAN G_TYPE_BOOLEAN
473 #define LIVES_COL_TYPE_PIXBUF GDK_TYPE_PIXBUF
474 
475 typedef GtkTreeView LiVESTreeView;
476 typedef GtkTreeViewColumn LiVESTreeViewColumn;
477 
478 typedef GtkTreeViewColumnSizing LiVESTreeViewColumnSizing;
479 #define LIVES_TREE_VIEW_COLUMN_GROW_ONLY GTK_TREE_VIEW_COLUMN_GROW_ONLY
480 #define LIVES_TREE_VIEW_COLUMN_AUTOSIZE GTK_TREE_VIEW_COLUMN_AUTOSIZE
481 #define LIVES_TREE_VIEW_COLUMN_FIXED GTK_TREE_VIEW_COLUMN_FIXED
482 
483 #define LIVES_TREE_VIEW_COLUMN_TEXT "text"
484 #define LIVES_TREE_VIEW_COLUMN_PIXBUF "pixbuf"
485 
486 typedef GtkCellRenderer LiVESCellRenderer;
487 typedef GtkTreeModel LiVESTreeModel;
488 typedef GtkTreeIter LiVESTreeIter;
489 typedef GtkTreePath LiVESTreePath;
490 typedef GtkTreeStore LiVESTreeStore;
491 typedef GtkTreeSelection LiVESTreeSelection;
492 typedef GtkListStore LiVESListStore;
493 
494 typedef GtkScrolledWindow LiVESScrolledWindow;
495 typedef GtkScrollbar LiVESScrollbar;
496 typedef GtkHScrollbar LiVESHScrollbar;
497 typedef GtkToolbar LiVESToolbar;
498 typedef GtkToolItem LiVESToolItem;
499 
500 #if GTK_CHECK_VERSION(2, 14, 0)
501 typedef GtkScaleButton LiVESScaleButton;
502 #else
503 typedef GtkRange LiVESScaleButton;
504 #endif
505 
506 #if GTK_CHECK_VERSION(3, 2, 0)
507 typedef GtkGrid LiVESGrid;
508 #undef LIVES_HAS_GRID_WIDGET
509 #define LIVES_HAS_GRID_WIDGET 1
510 #else
511 typedef LiVESWidget LiVESGrid;
512 #endif
513 
514 #if LIVES_TABLE_IS_GRID
515 typedef GtkGrid LiVESTable;
516 #else
517 typedef GtkTable LiVESTable;
518 #endif
519 
520 typedef GtkEditable LiVESEditable;
521 
522 #if GTK_CHECK_VERSION(3, 0, 0)
523 #define LIVES_WIDGET_COLOR_HAS_ALPHA (1)
524 #define LIVES_WIDGET_COLOR_SCALE(x) (x)
525 #define LIVES_WIDGET_COLOR_STRETCH(x) (x*65535.)
526 #define LIVES_WIDGET_COLOR_SCALE_65535(x) ((double)x/65535.)
527 #define LIVES_WIDGET_COLOR_SCALE_255(x) ((double)x/255.)
528 typedef GdkRGBA LiVESWidgetColor;
529 
530 typedef GtkStateFlags LiVESWidgetState;
531 
532 #define LIVES_WIDGET_STATE_NORMAL GTK_STATE_FLAG_NORMAL // 0
533 #define LIVES_WIDGET_STATE_ACTIVE GTK_STATE_FLAG_ACTIVE // 1
534 #define LIVES_WIDGET_STATE_PRELIGHT GTK_STATE_FLAG_PRELIGHT // 2
535 #define LIVES_WIDGET_STATE_SELECTED GTK_STATE_FLAG_SELECTED // 4
536 #define LIVES_WIDGET_STATE_INSENSITIVE GTK_STATE_FLAG_INSENSITIVE // 8
537 #define LIVES_WIDGET_STATE_INCONSISTENT GTK_STATE_FLAG_INCONSISTENT // 16
538 #define LIVES_WIDGET_STATE_FOCUSED GTK_STATE_FLAG_FOCUSED // 32
539 #define LIVES_WIDGET_STATE_BACKDROP GTK_STATE_FLAG_BACKDROP // 64
540 #if GTK_CHECK_VERSION(3, 14, 0)
541 #define LIVES_WIDGET_STATE_CHECKED GTK_STATE_FLAG_CHECKED
542 #endif
543 #else
544 
545 #define LIVES_WIDGET_COLOR_HAS_ALPHA (0)
546 #define LIVES_WIDGET_COLOR_SCALE(x) ((double)x/65535.)
547 #define LIVES_WIDGET_COLOR_STRETCH(x) (x)
548 #define LIVES_WIDGET_COLOR_SCALE_65535(x) (x)
549 #define LIVES_WIDGET_COLOR_SCALE_255(x) ((int)((double)x*256.+.5))
550 typedef GdkColor LiVESWidgetColor;
551 typedef GtkStateType LiVESWidgetState;
552 
553 #define LIVES_WIDGET_STATE_NORMAL GTK_STATE_NORMAL
554 #define LIVES_WIDGET_STATE_ACTIVE GTK_STATE_ACTIVE
555 #define LIVES_WIDGET_STATE_PRELIGHT GTK_STATE_PRELIGHT
556 #define LIVES_WIDGET_STATE_SELECTED GTK_STATE_SELECTED
557 #define LIVES_WIDGET_STATE_INSENSITIVE GTK_STATE_INSENSITIVE
558 
559 #define LIVES_WIDGET_STATE_INCONSISTENT (GTK_STATE_INSENSITIVE+1)
560 #define LIVES_WIDGET_STATE_FOCUSED (GTK_STATE_INSENSITIVE+2)
561 #define LIVES_WIDGET_STATE_BACKDROP (GTK_STATE_INSENSITIVE+3)
562 #endif
563 
564 typedef int LiVESResponseType;
565 #define LIVES_RESPONSE_NONE GTK_RESPONSE_NONE
566 #define LIVES_RESPONSE_OK GTK_RESPONSE_OK // -6
567 #define LIVES_RESPONSE_CANCEL GTK_RESPONSE_CANCEL // -5
568 #define LIVES_RESPONSE_ACCEPT GTK_RESPONSE_ACCEPT //
569 #define LIVES_RESPONSE_YES GTK_RESPONSE_YES // -8
570 #define LIVES_RESPONSE_NO GTK_RESPONSE_NO // -9
571 
572 // positive values for custom responses
573 #define LIVES_RESPONSE_INVALID 0
574 #define LIVES_RESPONSE_RETRY 1
575 #define LIVES_RESPONSE_ABORT 2
576 #define LIVES_RESPONSE_RESET 3 // be careful NOT to confuse this with RETRY !!
577 #define LIVES_RESPONSE_SHOW_DETAILS 4
578 #define LIVES_RESPONSE_BROWSE 5
579 
580 typedef GtkAttachOptions LiVESAttachOptions;
581 #define LIVES_EXPAND GTK_EXPAND
582 #define LIVES_SHRINK GTK_SHRINK
583 #define LIVES_FILL GTK_FILL
584 
585 typedef GtkWindowType LiVESWindowType;
586 #define LIVES_WINDOW_TOPLEVEL GTK_WINDOW_TOPLEVEL
587 #define LIVES_WINDOW_POPUP GTK_WINDOW_POPUP
588 
589 typedef GtkDialogFlags LiVESDialogFlags;
590 
591 typedef GtkMessageType LiVESMessageType;
592 #define LIVES_MESSAGE_INFO GTK_MESSAGE_INFO
593 #define LIVES_MESSAGE_WARNING GTK_MESSAGE_WARNING
594 #define LIVES_MESSAGE_QUESTION GTK_MESSAGE_QUESTION
595 #define LIVES_MESSAGE_ERROR GTK_MESSAGE_ERROR
596 #define LIVES_MESSAGE_OTHER GTK_MESSAGE_OTHER
597 
598 typedef GtkButtonsType LiVESButtonsType;
599 #define LIVES_BUTTONS_NONE GTK_BUTTONS_NONE
600 
601 typedef GtkFileChooserAction LiVESFileChooserAction;
602 #define LIVES_FILE_CHOOSER_ACTION_OPEN GTK_FILE_CHOOSER_ACTION_OPEN
603 #define LIVES_FILE_CHOOSER_ACTION_SAVE GTK_FILE_CHOOSER_ACTION_SAVE
604 #define LIVES_FILE_CHOOSER_ACTION_SELECT_FOLDER GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
605 #define LIVES_FILE_CHOOSER_ACTION_CREATE_FOLDER GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
606 #define LIVES_FILE_CHOOSER_ACTION_SELECT_DEVICE ((GtkFileChooserAction)(GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER+1))
607 
608 typedef GtkIconSize LiVESIconSize;
609 #define LIVES_ICON_SIZE_INVALID GTK_ICON_SIZE_INVALID
610 #define LIVES_ICON_SIZE_MENU GTK_ICON_SIZE_MENU // 16px
611 #define LIVES_ICON_SIZE_SMALL_TOOLBAR GTK_ICON_SIZE_SMALL_TOOLBAR // 16px
612 #define LIVES_ICON_SIZE_LARGE_TOOLBAR GTK_ICON_SIZE_LARGE_TOOLBAR // 24px
613 #define LIVES_ICON_SIZE_BUTTON GTK_ICON_SIZE_BUTTON // 16px
614 #define LIVES_ICON_SIZE_DND GTK_ICON_SIZE_DND // 32px
615 #define LIVES_ICON_SIZE_DIALOG GTK_ICON_SIZE_DIALOG // 48px
616 #define LIVES_ICON_SIZE_CUSTOM 1024
617 
618 // scrolledwindow policies
619 typedef GtkPolicyType LiVESPolicyType;
620 #define LIVES_POLICY_ALWAYS GTK_POLICY_ALWAYS
621 #define LIVES_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC
622 #define LIVES_POLICY_NEVER GTK_POLICY_NEVER
623 
624 typedef GtkPositionType LiVESPositionType;
625 #define LIVES_POS_LEFT GTK_POS_LEFT
626 #define LIVES_POS_RIGHT GTK_POS_RIGHT
627 #define LIVES_POS_TOP GTK_POS_TOP
628 #define LIVES_POS_BOTTOM GTK_POS_BOTTOM
629 
630 typedef GtkArrowType LiVESArrowType;
631 #define LIVES_ARROW_UP GTK_ARROW_UP
632 #define LIVES_ARROW_DOWN GTK_ARROW_DOWN
633 #define LIVES_ARROW_LEFT GTK_ARROW_LEFT
634 #define LIVES_ARROW_RIGHT GTK_ARROW_RIGHT
635 #define LIVES_ARROW_NONE GTK_ARROW_NONE
636 
637 #if GTK_CHECK_VERSION(3, 0, 0)
638 typedef GtkAlign LiVESAlign;
639 #define LIVES_ALIGN_FILL GTK_ALIGN_FILL
640 #define LIVES_ALIGN_START GTK_ALIGN_START
641 #define LIVES_ALIGN_END GTK_ALIGN_END
642 #define LIVES_ALIGN_CENTER GTK_ALIGN_CENTER
643 #else
644 typedef int LiVESAlign;
645 #define LIVES_ALIGN_FILL 0
646 #define LIVES_ALIGN_START 1
647 #define LIVES_ALIGN_END 2
648 #define LIVES_ALIGN_CENTER 3
649 #endif
650 
651 
652 #if GTK_CHECK_VERSION(3, 10, 0)
653 #define LIVES_ALIGN_BASELINE GTK_ALIGN_BASELINE
654 #endif
655 
656 typedef GtkWrapMode LiVESWrapMode;
657 #define LIVES_WRAP_NONE GTK_WRAP_NONE
658 //#define LIVES_WRAP_CHAR GTK_WRAP_CHAR
659 #define LIVES_WRAP_WORD GTK_WRAP_WORD
660 //#define LIVES_WRAP_WORD_CHAR GTK_WRAP_WORD_CHAR
661 
662 typedef GtkReliefStyle LiVESReliefStyle;
663 #define LIVES_RELIEF_NORMAL GTK_RELIEF_NORMAL
664 #define LIVES_RELIEF_HALF GTK_RELIEF_HALF
665 #define LIVES_RELIEF_NONE GTK_RELIEF_NONE
666 
667 #define LIVES_ACCEL_VISIBLE GTK_ACCEL_VISIBLE
668 
669 typedef GtkToolbarStyle LiVESToolbarStyle;
670 #define LIVES_TOOLBAR_ICONS GTK_TOOLBAR_ICONS
671 #define LIVES_TOOLBAR_TEXT GTK_TOOLBAR_TEXT
672 
673 typedef GtkSelectionMode LiVESSelectionMode;
674 #define LIVES_SELECTION_NONE GTK_SELECTION_NONE
675 #define LIVES_SELECTION_SINGLE GTK_SELECTION_SINGLE
676 //#define LIVES_SELECTION_BROWSE GTK_SELECTION_BROWSE
677 #define LIVES_SELECTION_MULTIPLE GTK_SELECTION_MULTIPLE
678 
679 typedef GtkButtonBoxStyle LiVESButtonBoxStyle;
680 #define LIVES_BUTTONBOX_DEFAULT_STYLE GTK_BUTTONBOX_DEFAULT_STYLE
681 #define LIVES_BUTTONBOX_SPREAD GTK_BUTTONBOX_SPREAD
682 #define LIVES_BUTTONBOX_EDGE GTK_BUTTONBOX_EDGE
683 #define LIVES_BUTTONBOX_START GTK_BUTTONBOX_START
684 #define LIVES_BUTTONBOX_END GTK_BUTTONBOX_END
685 #define LIVES_BUTTONBOX_CENTER GTK_BUTTONBOX_CENTER
686 
687 typedef GdkEventMask LiVESEventMask;
688 #define LIVES_EXPOSURE_MASK GDK_EXPOSURE_MASK
689 #define LIVES_POINTER_MOTION_MASK GDK_POINTER_MOTION_MASK
690 #define LIVES_POINTER_MOTION_HINT_MASK GDK_POINTER_MOTION_HINT_MASK
691 #define LIVES_BUTTON_MOTION_MASK GDK_BUTTON_MOTION_MASK
692 #define LIVES_BUTTON1_MOTION_MASK GDK_BUTTON1_MOTION_MASK
693 #define LIVES_BUTTON2_MOTION_MASK GDK_BUTTON2_MOTION_MASK
694 #define LIVES_BUTTON3_MOTION_MASK GDK_BUTTON3_MOTION_MASK
695 #define LIVES_BUTTON_PRESS_MASK GDK_BUTTON_PRESS_MASK
696 #define LIVES_BUTTON_RELEASE_MASK GDK_BUTTON_RELEASE_MASK
697 #define LIVES_KEY_PRESS_MASK GDK_KEY_PRESS_MASK
698 #define LIVES_KEY_RELEASE_MASK GDK_KEY_RELEASE_MASK
699 #define LIVES_ENTER_NOTIFY_MASK GDK_ENTER_NOTIFY_MASK
700 #define LIVES_LEAVE_NOTIFY_MASK GDK_LEAVE_NOTIFY_MASK
701 #define LIVES_FOCUS_CHANGE_MASK GDK_FOCUS_CHANGE_MASK
702 #define LIVES_STRUCTURE_MASK GDK_STRUCTURE_MASK
703 #define LIVES_PROPERTY_CHANGE_MASK GDK_PROPERTY_CHANGE_MASK
704 #define LIVES_VISIBILITY_NOTIFY_MASK GDK_VISIBILITY_NOTIFY_MASK
705 #define LIVES_PROXIMITY_IN_MASK GDK_PROXIMITY_IN_MASK
706 #define LIVES_PROXIMITY_OUT_MASK GDK_PROXIMITY_OUT_MASK
707 #define LIVES_SUBSTRUCTURE_MASK GDK_SUBSTRUCTURE_MASK
708 #define LIVES_SCROLL_MASK GDK_SCROLL_MASK
709 
710 #define LIVES_BUTTON_PRESS GDK_BUTTON_PRESS
711 #define LIVES_BUTTON_RELEASE GDK_BUTTON_RELEASE
712 #define LIVES_BUTTON2_PRESS GDK_2BUTTON_PRESS
713 
714 #if GTK_CHECK_VERSION(3, 4, 0)
715 #define LIVES_TOUCH_MASK GDK_TOUCH_MASK
716 #define LIVES_SMOOTH_SCROLL_MASK GDK_SMOOTH_SCROLL_MASK
717 #endif
718 
719 #define LIVES_ALL_EVENTS_MASK GDK_ALL_EVENTS_MASK
720 
721 typedef GtkShadowType LiVESShadowType;
722 #define LIVES_SHADOW_NONE GTK_SHADOW_NONE
723 #define LIVES_SHADOW_IN GTK_SHADOW_IN
724 #define LIVES_SHADOW_OUT GTK_SHADOW_OUT
725 #define LIVES_SHADOW_ETCHED_IN GTK_SHADOW_ETCHED_IN
726 #define LIVES_SHADOW_ETCHED_OUT GTK_SHADOW_ETCHED_OUT
727 
728 typedef GtkWindowPosition LiVESWindowPosition;
729 #define LIVES_WIN_POS_CENTER_ALWAYS GTK_WIN_POS_CENTER_ALWAYS
730 
731 #if GTK_CHECK_VERSION(3, 0, 0)
732 typedef GtkScale LiVESRuler;
733 typedef GtkBox LiVESVBox;
734 typedef GtkBox LiVESHBox;
735 #else
736 typedef GtkRuler LiVESRuler;
737 typedef GtkVBox LiVESVBox;
738 typedef GtkHBox LiVESHBox;
739 #endif
740 
741 typedef GtkEventBox LiVESEventBox;
742 
743 typedef GtkRange LiVESRange;
744 
745 typedef GtkAdjustment LiVESAdjustment;
746 
747 typedef GdkPixbuf LiVESPixbuf;
748 
749 typedef GdkWindow LiVESXWindow;
750 
751 typedef GdkCursor LiVESXCursor;
752 
753 typedef GdkModifierType LiVESXModifierType;
754 
755 typedef GtkAccelGroup LiVESAccelGroup;
756 typedef GtkAccelFlags LiVESAccelFlags;
757 
758 typedef GtkRequisition LiVESRequisition;
759 
760 typedef GtkPaned LiVESPaned;
761 
762 typedef GtkScale LiVESScale;
763 
764 typedef GdkPixbufDestroyNotify LiVESPixbufDestroyNotify;
765 
766 typedef GdkInterpType LiVESInterpType;
767 
768 #define LIVES_WIDGET(widget) GTK_WIDGET(widget)
769 #define LIVES_PIXBUF(widget) GDK_PIXBUF(widget)
770 #define LIVES_WINDOW(widget) GTK_WINDOW(widget)
771 #define LIVES_XWINDOW(widget) GDK_WINDOW(widget)
772 #define LIVES_BOX(widget) GTK_BOX(widget)
773 #define LIVES_EVENT_BOX(widget) GTK_EVENT_BOX(widget)
774 #define LIVES_ENTRY(widget) GTK_ENTRY(widget)
775 #define LIVES_FRAME(widget) GTK_FRAME(widget)
776 #define LIVES_CONTAINER(widget) GTK_CONTAINER(widget)
777 #define LIVES_BIN(widget) GTK_BIN(widget)
778 #define LIVES_ADJUSTMENT(widget) GTK_ADJUSTMENT(widget)
779 #define LIVES_DIALOG(widget) GTK_DIALOG(widget)
780 #define LIVES_SCALE(widget) GTK_SCALE(widget)
781 #define LIVES_PANED(widget) GTK_PANED(widget)
782 #define LIVES_COMBO(widget) GTK_COMBO_BOX(widget)
783 #define LIVES_COMBO_BOX(widget) GTK_COMBO_BOX(widget)
784 #define LIVES_BUTTON(widget) GTK_BUTTON(widget)
785 #define LIVES_BUTTON_BOX(widget) GTK_BUTTON_BOX(widget)
786 #define LIVES_LABEL(widget) GTK_LABEL(widget)
787 #define LIVES_ALIGNMENT(widget) GTK_ALIGNMENT(widget)
788 #define LIVES_FILES_CHOOSER(widget) GTK_FILE_CHOOSER(widget)
789 #define LIVES_RADIO_BUTTON(widget) GTK_RADIO_BUTTON(widget)
790 #define LIVES_SPIN_BUTTON(widget) GTK_SPIN_BUTTON(widget)
791 #define LIVES_COLOR_BUTTON(widget) GTK_COLOR_BUTTON(widget)
792 #define LIVES_TOOL_BUTTON(widget) GTK_TOOL_BUTTON(widget)
793 
794 #define LIVES_MENU(widget) GTK_MENU(widget)
795 #define LIVES_MENU_SHELL(widget) GTK_MENU_SHELL(widget)
796 #define LIVES_MENU_TOOL_BUTTON(widget) GTK_MENU_TOOL_BUTTON(widget)
797 #define LIVES_MENU_ITEM(widget) GTK_MENU_ITEM(widget)
798 #define LIVES_IMAGE(widget) GTK_IMAGE(widget)
799 #define LIVES_CHECK_MENU_ITEM(widget) GTK_CHECK_MENU_ITEM(widget)
800 #define LIVES_RADIO_MENU_ITEM(widget) GTK_RADIO_MENU_ITEM(widget)
801 #define LIVES_FILE_CHOOSER(widget) GTK_FILE_CHOOSER(widget)
802 #define LIVES_SCROLLED_WINDOW(widget) GTK_SCROLLED_WINDOW(widget)
803 #define LIVES_TOOLBAR(widget) GTK_TOOLBAR(widget)
804 #define LIVES_TOOL_ITEM(widget) GTK_TOOL_ITEM(widget)
805 
806 #define LIVES_NOTEBOOK(widget) GTK_NOTEBOOK(widget)
807 
808 #define LIVES_PROGRESS_BAR(widget) GTK_PROGRESS_BAR(widget)
809 
810 #define LIVES_EXPANDER(widget) GTK_EXPANDER(widget)
811 
812 #define LIVES_MISC(widget) GTK_MISC(widget)
813 
814 #if GTK_CHECK_VERSION(2, 14, 0)
815 #define LIVES_SCALE_BUTTON(widget) GTK_SCALE_BUTTON(widget)
816 #else
817 #define LIVES_SCALE_BUTTON(widget) GTK_RANGE(widget)
818 #endif
819 
820 #define LIVES_TOGGLE_BUTTON(widget) GTK_TOGGLE_BUTTON(widget)
821 #define LIVES_TOGGLE_TOOL_BUTTON(widget) GTK_TOGGLE_TOOL_BUTTON(widget)
822 #define LIVES_TEXT_VIEW(widget) GTK_TEXT_VIEW(widget)
823 #define LIVES_TEXT_BUFFER(widget) GTK_TEXT_BUFFER(widget)
824 
825 #define LIVES_TREE_VIEW(widget) GTK_TREE_VIEW(widget)
826 #define LIVES_TREE_MODEL(object) GTK_TREE_MODEL(object)
827 
828 #define LIVES_LIST_STORE(object) GTK_LIST_STORE(object)
829 
830 #define LIVES_ACCEL_GROUP(object) GTK_ACCEL_GROUP(object)
831 
832 #if GTK_CHECK_VERSION(3, 0, 0)
833 #define LIVES_RULER(widget) GTK_SCALE(widget)
834 #define LIVES_ORIENTABLE(widget) GTK_ORIENTABLE(widget)
835 #define LIVES_VBOX(widget) GTK_BOX(widget)
836 #define LIVES_HBOX(widget) GTK_BOX(widget)
837 #else
838 #define LIVES_RULER(widget) GTK_RULER(widget)
839 #define LIVES_VBOX(widget) GTK_VBOX(widget)
840 #define LIVES_HBOX(widget) GTK_HBOX(widget)
841 #endif
842 
843 #if GTK_CHECK_VERSION(3, 2, 0)
844 #define LIVES_GRID(widget) GTK_GRID(widget)
845 #else
846 #define LIVES_GRID(widget) GTK_WIDGET(widget)
847 #endif
848 
849 #if GTK_CHECK_VERSION(3, 10, 0)
850 #define LIVES_IMAGE_MENU_ITEM(widget) GTK_MENU_ITEM(widget)
851 #else
852 #define LIVES_IMAGE_MENU_ITEM(widget) GTK_IMAGE_MENU_ITEM(widget)
853 #undef LIVES_HAS_IMAGE_MENU_ITEM
854 #define LIVES_HAS_IMAGE_MENU_ITEM 1
855 #endif
856 
857 #if LIVES_TABLE_IS_GRID
858 #define LIVES_TABLE(widget) GTK_GRID(widget)
859 #define LIVES_IS_TABLE(widget) GTK_IS_GRID(widget)
860 #else
861 #define LIVES_TABLE(widget) GTK_TABLE(widget)
862 #define LIVES_IS_TABLE(widget) GTK_IS_TABLE(widget)
863 #endif
864 
865 #define LIVES_RANGE(widget) GTK_RANGE(widget)
866 
867 #define LIVES_EDITABLE(widget) GTK_EDITABLE(widget)
868 
869 #define LIVES_XEVENT(event) GDK_EVENT(event)
870 
871 #define LIVES_IS_WIDGET_OBJECT(object) G_IS_OBJECT(object)
872 #define LIVES_IS_OBJECT(object) G_IS_OBJECT(object)
873 #define LIVES_IS_WIDGET(widget) GTK_IS_WIDGET(widget)
874 #define LIVES_IS_WINDOW(widget) GTK_IS_WINDOW(widget)
875 #define LIVES_IS_XWINDOW(widget) GDK_IS_WINDOW(widget)
876 #define LIVES_IS_PIXBUF(widget) GDK_IS_PIXBUF(widget)
877 #define LIVES_IS_CONTAINER(widget) GTK_IS_CONTAINER(widget)
878 #define LIVES_IS_BIN(widget) GTK_IS_BIN(widget)
879 #define LIVES_IS_SCROLLBAR(widget) GTK_IS_SCROLLBAR(widget)
880 #define LIVES_IS_TOOL_BUTTON(widget) GTK_IS_TOOL_BUTTON(widget)
881 
882 #if GTK_CHECK_VERSION(3, 0, 0)
883 #define LIVES_IS_HBOX(widget) (GTK_IS_BOX(widget) && gtk_orientable_get_orientation(GTK_ORIENTABLE(widget)) == GTK_ORIENTATION_HORIZONTAL)
884 #define LIVES_IS_VBOX(widget) (GTK_IS_BOX(widget) && gtk_orientable_get_orientation(GTK_ORIENTABLE(widget)) == GTK_ORIENTATION_VERTICAL)
885 #define LIVES_IS_SCROLLABLE(widget) GTK_IS_SCROLLABLE(widget)
886 #else
887 #define LIVES_IS_HBOX(widget) GTK_IS_HBOX(widget)
888 #define LIVES_IS_VBOX(widget) GTK_IS_VBOX(widget)
889 #endif
890 
891 #define LIVES_IS_BOX(widget) (LIVES_IS_HBOX(widget) || LIVES_IS_VBOX(widget))
892 
893 #define LIVES_IS_TOOLBAR(widget) GTK_IS_TOOLBAR(widget)
894 #define LIVES_IS_EVENT_BOX(widget) GTK_IS_EVENT_BOX(widget)
895 
896 #define LIVES_IS_COMBO(widget) GTK_IS_COMBO_BOX(widget)
897 #define LIVES_IS_DIALOG(widget) GTK_IS_DIALOG(widget)
898 #define LIVES_IS_LABEL(widget) GTK_IS_LABEL(widget)
899 #define LIVES_IS_BUTTON(widget) GTK_IS_BUTTON(widget)
900 #define LIVES_IS_SPIN_BUTTON(widget) GTK_IS_SPIN_BUTTON(widget)
901 #define LIVES_IS_TOGGLE_BUTTON(widget) GTK_IS_TOGGLE_BUTTON(widget)
902 #define LIVES_IS_TOGGLE_TOOL_BUTTON(widget) GTK_IS_TOGGLE_TOOL_BUTTON(widget)
903 #define LIVES_IS_IMAGE(widget) GTK_IS_IMAGE(widget)
904 #define LIVES_IS_ENTRY(widget) GTK_IS_ENTRY(widget)
905 #define LIVES_IS_RANGE(widget) GTK_IS_RANGE(widget)
906 #define LIVES_IS_PROGRESS_BAR(widget) GTK_IS_PROGRESS_BAR(widget)
907 #define LIVES_IS_TEXT_VIEW(widget) GTK_IS_TEXT_VIEW(widget)
908 #define LIVES_IS_MENU_ITEM(widget) GTK_IS_MENU_ITEM(widget)
909 #define LIVES_IS_FILE_CHOOSER(widget) GTK_IS_FILE_CHOOSER(widget)
910 #define LIVES_IS_BUTTON_BOX(widget) GTK_IS_BUTTON_BOX(widget)
911 
912 // (image resize) interpolation types
913 #define LIVES_INTERP_BEST GDK_INTERP_HYPER
914 #define LIVES_INTERP_NORMAL GDK_INTERP_BILINEAR
915 #define LIVES_INTERP_FAST GDK_INTERP_NEAREST
916 
917 #if GTK_CHECK_VERSION(3, 10, 0)
918 #define LIVES_STOCK_YES "gtk-yes" // non-standard image ?
919 #define LIVES_STOCK_APPLY "gtk-apply" // non-standard image ?
920 #define LIVES_STOCK_CANCEL "gtk-cancel" // non-standard image ?
921 #define LIVES_STOCK_OK "gtk-ok" // non-standard image ?
922 
923 #define LIVES_STOCK_UNDO "edit-undo"
924 #define LIVES_STOCK_REDO "edit-redo"
925 #define LIVES_STOCK_ADD "list-add"
926 #define LIVES_STOCK_REMOVE "list-remove"
927 #define LIVES_STOCK_NO "media-record"
928 #define LIVES_STOCK_QUIT "application-exit"
929 #define LIVES_STOCK_OPEN "document-open"
930 #define LIVES_STOCK_CLOSE "window-close"
931 #define LIVES_STOCK_CLEAR "edit-clear"
932 #define LIVES_STOCK_DELETE "edit-delete"
933 #define LIVES_STOCK_SAVE_AS "document-save-as"
934 #define LIVES_STOCK_SAVE "document-save"
935 #define LIVES_STOCK_REFRESH "view-refresh"
936 #define LIVES_STOCK_REVERT_TO_SAVED "document-revert"
937 #define LIVES_STOCK_GO_BACK "go-previous"
938 #define LIVES_STOCK_GO_FORWARD "go-next"
939 #define LIVES_STOCK_GO_UP "go-up"
940 #define LIVES_STOCK_GO_DOWN "go-down"
941 #define LIVES_STOCK_SELECT_ALL "edit-select-all"
942 #define LIVES_STOCK_REFRESH "view-refresh"
943 #define LIVES_STOCK_MEDIA_PLAY "media-playback-start"
944 #define LIVES_STOCK_MEDIA_STOP "media-playback-stop"
945 #define LIVES_STOCK_MEDIA_REWIND "media-seek-backward"
946 #define LIVES_STOCK_MEDIA_FORWARD "media-seek-forward"
947 #define LIVES_STOCK_MEDIA_RECORD "media-record"
948 #define LIVES_STOCK_MEDIA_PAUSE "media-pause"
949 #define LIVES_STOCK_PREFERENCES "preferences-system"
950 #define LIVES_STOCK_DIALOG_INFO "dialog-information"
951 #define LIVES_STOCK_MISSING_IMAGE "image-missing"
952 
953 // these are set up in widget_helper_init()
954 char LIVES_STOCK_LABEL_CANCEL[32];
955 char LIVES_STOCK_LABEL_OK[32];
956 char LIVES_STOCK_LABEL_YES[32];
957 char LIVES_STOCK_LABEL_NO[32];
958 char LIVES_STOCK_LABEL_SAVE[32];
959 char LIVES_STOCK_LABEL_SAVE_AS[32];
960 char LIVES_STOCK_LABEL_OPEN[32];
961 char LIVES_STOCK_LABEL_QUIT[32];
962 char LIVES_STOCK_LABEL_APPLY[32];
963 char LIVES_STOCK_LABEL_CLOSE[32];
964 char LIVES_STOCK_LABEL_REVERT[32];
965 char LIVES_STOCK_LABEL_REFRESH[32];
966 char LIVES_STOCK_LABEL_DELETE[32];
967 char LIVES_STOCK_LABEL_SELECT_ALL[32];
968 char LIVES_STOCK_LABEL_GO_FORWARD[32];
969 
970 char LIVES_STOCK_LABEL_MEDIA_FORWARD[32];
971 char LIVES_STOCK_LABEL_MEDIA_REWIND[32];
972 char LIVES_STOCK_LABEL_MEDIA_STOP[32];
973 char LIVES_STOCK_LABEL_MEDIA_PLAY[32];
974 char LIVES_STOCK_LABEL_MEDIA_PAUSE[32];
975 char LIVES_STOCK_LABEL_MEDIA_RECORD[32];
976 
977 #else
978 #define LIVES_STOCK_UNDO GTK_STOCK_UNDO
979 #define LIVES_STOCK_REDO GTK_STOCK_REDO
980 #define LIVES_STOCK_ADD GTK_STOCK_ADD
981 #define LIVES_STOCK_APPLY GTK_STOCK_APPLY
982 #define LIVES_STOCK_REMOVE GTK_STOCK_REMOVE
983 #define LIVES_STOCK_NO GTK_STOCK_NO
984 #define LIVES_STOCK_YES GTK_STOCK_YES
985 #define LIVES_STOCK_QUIT GTK_STOCK_QUIT
986 #define LIVES_STOCK_OPEN GTK_STOCK_OPEN
987 #define LIVES_STOCK_CLOSE GTK_STOCK_CLOSE
988 #define LIVES_STOCK_CANCEL GTK_STOCK_CANCEL
989 #define LIVES_STOCK_OK GTK_STOCK_OK
990 #define LIVES_STOCK_CLEAR GTK_STOCK_CLEAR
991 #define LIVES_STOCK_DELETE GTK_STOCK_DELETE
992 #define LIVES_STOCK_SAVE_AS GTK_STOCK_SAVE_AS
993 #define LIVES_STOCK_SAVE GTK_STOCK_SAVE
994 #define LIVES_STOCK_REFRESH GTK_STOCK_REFRESH
995 #define LIVES_STOCK_REVERT_TO_SAVED GTK_STOCK_REVERT_TO_SAVED
996 #define LIVES_STOCK_GO_BACK GTK_STOCK_GO_BACK
997 #define LIVES_STOCK_GO_FORWARD GTK_STOCK_GO_FORWARD
998 #define LIVES_STOCK_REFRESH GTK_STOCK_REFRESH
999 #define LIVES_STOCK_SELECT_ALL GTK_STOCK_SELECT_ALL
1000 #define LIVES_STOCK_PREFERENCES GTK_STOCK_PREFERENCES
1001 #define LIVES_STOCK_DIALOG_INFO GTK_STOCK_DIALOG_INFO
1002 #define LIVES_STOCK_MISSING_IMAGE GTK_STOCK_MISSING_IMAGE
1003 
1004 #define LIVES_STOCK_LABEL_CANCEL GTK_STOCK_CANCEL
1005 #define LIVES_STOCK_LABEL_OK GTK_STOCK_OK
1006 #define LIVES_STOCK_LABEL_OPEN GTK_STOCK_OPEN
1007 #define LIVES_STOCK_LABEL_SAVE GTK_STOCK_SAVE
1008 #define LIVES_STOCK_LABEL_QUIT GTK_STOCK_QUIT
1009 
1010 #if GTK_CHECK_VERSION(2, 6, 0)
1011 #define LIVES_STOCK_LABEL_MEDIA_FORWARD GTK_STOCK_MEDIA_FORWARD
1012 #define LIVES_STOCK_LABEL_MEDIA_REWIND GTK_STOCK_MEDIA_REWIND
1013 #define LIVES_STOCK_LABEL_MEDIA_STOP GTK_STOCK_MEDIA_STOP
1014 #define LIVES_STOCK_LABEL_MEDIA_PLAY GTK_STOCK_MEDIA_PLAY
1015 #define LIVES_STOCK_LABEL_MEDIA_PAUSE GTK_STOCK_MEDIA_PAUSE
1016 #define LIVES_STOCK_LABEL_MEDIA_RECORD GTK_STOCK_MEDIA_RECORD
1017 #else
1018 #define LIVES_STOCK_LABEL_MEDIA_FORWARD GTK_STOCK_GOTO_LAST
1019 #define LIVES_STOCK_LABEL_MEDIA_REWIND GTK_STOCK_GOTO_FIRST
1020 #define LIVES_STOCK_LABEL_MEDIA_STOP GTK_STOCK_NO
1021 #define LIVES_STOCK_LABEL_MEDIA_PLAY GTK_STOCK_GO_FORWARD
1022 #define LIVES_STOCK_LABEL_MEDIA_PAUSE GTK_STOCK_REFRESH
1023 #define LIVES_STOCK_LABEL_MEDIA_RECORD GTK_STOCK_NO
1024 #endif
1025 
1026 #if GTK_CHECK_VERSION(2, 6, 0)
1027 #define LIVES_STOCK_MEDIA_PAUSE GTK_STOCK_MEDIA_PAUSE
1028 #else
1029 #define LIVES_STOCK_MEDIA_PAUSE GTK_STOCK_REFRESH
1030 #endif
1031 
1032 #if GTK_CHECK_VERSION(2, 6, 0)
1033 #define LIVES_STOCK_MEDIA_PLAY GTK_STOCK_MEDIA_PLAY
1034 #else
1035 #define LIVES_STOCK_MEDIA_PLAY GTK_STOCK_GO_FORWARD
1036 #endif
1037 #if GTK_CHECK_VERSION(2, 6, 0)
1038 #define LIVES_STOCK_MEDIA_STOP GTK_STOCK_MEDIA_STOP
1039 #else
1040 #define LIVES_STOCK_MEDIA_STOP GTK_STOCK_STOP
1041 #endif
1042 #if GTK_CHECK_VERSION(2, 6, 0)
1043 #define LIVES_STOCK_MEDIA_REWIND GTK_STOCK_MEDIA_REWIND
1044 #else
1045 #define LIVES_STOCK_MEDIA_REWIND GTK_STOCK_GOTO_FIRST
1046 #endif
1047 #if GTK_CHECK_VERSION(2, 6, 0)
1048 #define LIVES_STOCK_MEDIA_FORWARD GTK_STOCK_MEDIA_FORWARD
1049 #else
1050 #define LIVES_STOCK_MEDIA_FORWARD GTK_STOCK_GOTO_LAST
1051 #endif
1052 #if GTK_CHECK_VERSION(2, 6, 0)
1053 #define LIVES_STOCK_MEDIA_RECORD GTK_STOCK_MEDIA_RECORD
1054 #else
1055 #define LIVES_STOCK_MEDIA_RECORD GTK_STOCK_NO
1056 #endif
1057 
1058 #endif
1059 
1060 //#define LIVES_LIVES_STOCK_LOCKED "lives-locked"
1061 //#define LIVES_LIVES_STOCK_UNLOCKED "lives-unlocked"
1062 
1063 #if GTK_CHECK_VERSION(3, 2, 0)
1064 #define LIVES_LIVES_STOCK_LOCKED "changes-prevent"
1065 #define LIVES_LIVES_STOCK_UNLOCKED "changes-allow"
1066 #else
1067 #define LIVES_LIVES_STOCK_LOCKED "locked"
1068 #define LIVES_LIVES_STOCK_UNLOCKED "unlocked"
1069 #endif
1070 
1071 #define LIVES_LIVES_STOCK_LOOP "lives-loop"
1072 
1073 #define LIVES_DEFAULT_MOD_MASK (gtk_accelerator_get_default_mod_mask ())
1074 
1075 #define LIVES_CONTROL_MASK GDK_CONTROL_MASK
1076 #define LIVES_ALT_MASK GDK_MOD1_MASK
1077 #define LIVES_SHIFT_MASK GDK_SHIFT_MASK
1078 #define LIVES_LOCK_MASK GDK_LOCK_MASK
1079 
1080 #define LIVES_BUTTON1_MASK GDK_BUTTON1_MASK
1081 #define LIVES_BUTTON2_MASK GDK_BUTTON2_MASK
1082 #define LIVES_BUTTON3_MASK GDK_BUTTON3_MASK
1083 #define LIVES_BUTTON4_MASK GDK_BUTTON4_MASK
1084 #define LIVES_BUTTON5_MASK GDK_BUTTON5_MASK
1085 
1086 #ifdef GDK_KEY_a
1087 #define LIVES_KEY_Left GDK_KEY_Left
1088 #define LIVES_KEY_Right GDK_KEY_Right
1089 #define LIVES_KEY_Up GDK_KEY_Up
1090 #define LIVES_KEY_Down GDK_KEY_Down
1091 
1092 #define LIVES_KEY_BackSpace GDK_KEY_BackSpace
1093 #define LIVES_KEY_Return GDK_KEY_Return
1094 #define LIVES_KEY_Tab GDK_KEY_Tab
1095 #define LIVES_KEY_Home GDK_KEY_Home
1096 #define LIVES_KEY_End GDK_KEY_End
1097 #define LIVES_KEY_Slash GDK_KEY_slash
1098 #define LIVES_KEY_Space GDK_KEY_space
1099 #define LIVES_KEY_Plus GDK_KEY_plus
1100 #define LIVES_KEY_Minus GDK_KEY_minus
1101 #define LIVES_KEY_Equal GDK_KEY_equal
1102 
1103 #define LIVES_KEY_1 GDK_KEY_1
1104 #define LIVES_KEY_2 GDK_KEY_2
1105 #define LIVES_KEY_3 GDK_KEY_3
1106 #define LIVES_KEY_4 GDK_KEY_4
1107 #define LIVES_KEY_5 GDK_KEY_5
1108 #define LIVES_KEY_6 GDK_KEY_6
1109 #define LIVES_KEY_7 GDK_KEY_7
1110 #define LIVES_KEY_8 GDK_KEY_8
1111 #define LIVES_KEY_9 GDK_KEY_9
1112 #define LIVES_KEY_0 GDK_KEY_0
1113 
1114 #define LIVES_KEY_a GDK_KEY_a
1115 #define LIVES_KEY_b GDK_KEY_b
1116 #define LIVES_KEY_c GDK_KEY_c
1117 #define LIVES_KEY_d GDK_KEY_d
1118 #define LIVES_KEY_e GDK_KEY_e
1119 #define LIVES_KEY_f GDK_KEY_f
1120 #define LIVES_KEY_g GDK_KEY_g
1121 #define LIVES_KEY_h GDK_KEY_h
1122 #define LIVES_KEY_i GDK_KEY_i
1123 #define LIVES_KEY_j GDK_KEY_j
1124 #define LIVES_KEY_k GDK_KEY_k
1125 #define LIVES_KEY_l GDK_KEY_l
1126 #define LIVES_KEY_m GDK_KEY_m
1127 #define LIVES_KEY_n GDK_KEY_n
1128 #define LIVES_KEY_o GDK_KEY_o
1129 #define LIVES_KEY_p GDK_KEY_p
1130 #define LIVES_KEY_q GDK_KEY_q
1131 #define LIVES_KEY_r GDK_KEY_r
1132 #define LIVES_KEY_s GDK_KEY_s
1133 #define LIVES_KEY_t GDK_KEY_t
1134 #define LIVES_KEY_u GDK_KEY_u
1135 #define LIVES_KEY_v GDK_KEY_v
1136 #define LIVES_KEY_w GDK_KEY_w
1137 #define LIVES_KEY_x GDK_KEY_x
1138 #define LIVES_KEY_y GDK_KEY_y
1139 #define LIVES_KEY_z GDK_KEY_z
1140 
1141 #define LIVES_KEY_F1 GDK_KEY_F1
1142 #define LIVES_KEY_F2 GDK_KEY_F2
1143 #define LIVES_KEY_F3 GDK_KEY_F3
1144 #define LIVES_KEY_F4 GDK_KEY_F4
1145 #define LIVES_KEY_F5 GDK_KEY_F5
1146 #define LIVES_KEY_F6 GDK_KEY_F6
1147 #define LIVES_KEY_F7 GDK_KEY_F7
1148 #define LIVES_KEY_F8 GDK_KEY_F8
1149 #define LIVES_KEY_F9 GDK_KEY_F9
1150 #define LIVES_KEY_F10 GDK_KEY_F10
1151 #define LIVES_KEY_F11 GDK_KEY_F11
1152 #define LIVES_KEY_F12 GDK_KEY_F12
1153 
1154 #define LIVES_KEY_Page_Up GDK_KEY_Page_Up
1155 #define LIVES_KEY_Page_Down GDK_KEY_Page_Down
1156 
1157 #define LIVES_KEY_Escape GDK_KEY_Escape
1158 
1159 #else
1160 #define LIVES_KEY_Left GDK_Left
1161 #define LIVES_KEY_Right GDK_Right
1162 #define LIVES_KEY_Up GDK_Up
1163 #define LIVES_KEY_Down GDK_Down
1164 
1165 #define LIVES_KEY_BackSpace GDK_BackSpace
1166 #define LIVES_KEY_Return GDK_Return
1167 #define LIVES_KEY_Tab GDK_Tab
1168 #define LIVES_KEY_Home GDK_Home
1169 #define LIVES_KEY_End GDK_End
1170 #define LIVES_KEY_Slash GDK_slash
1171 #define LIVES_KEY_Space GDK_space
1172 #define LIVES_KEY_Plus GDK_plus
1173 #define LIVES_KEY_Minus GDK_minus
1174 #define LIVES_KEY_Equal GDK_equal
1175 
1176 #define LIVES_KEY_1 GDK_1
1177 #define LIVES_KEY_2 GDK_2
1178 #define LIVES_KEY_3 GDK_3
1179 #define LIVES_KEY_4 GDK_4
1180 #define LIVES_KEY_5 GDK_5
1181 #define LIVES_KEY_6 GDK_6
1182 #define LIVES_KEY_7 GDK_7
1183 #define LIVES_KEY_8 GDK_8
1184 #define LIVES_KEY_9 GDK_9
1185 #define LIVES_KEY_0 GDK_0
1186 
1187 #define LIVES_KEY_a GDK_a
1188 #define LIVES_KEY_b GDK_b
1189 #define LIVES_KEY_c GDK_c
1190 #define LIVES_KEY_d GDK_d
1191 #define LIVES_KEY_e GDK_e
1192 #define LIVES_KEY_f GDK_f
1193 #define LIVES_KEY_g GDK_g
1194 #define LIVES_KEY_h GDK_h
1195 #define LIVES_KEY_i GDK_i
1196 #define LIVES_KEY_j GDK_j
1197 #define LIVES_KEY_k GDK_k
1198 #define LIVES_KEY_l GDK_l
1199 #define LIVES_KEY_m GDK_m
1200 #define LIVES_KEY_n GDK_n
1201 #define LIVES_KEY_o GDK_o
1202 #define LIVES_KEY_p GDK_p
1203 #define LIVES_KEY_q GDK_q
1204 #define LIVES_KEY_r GDK_r
1205 #define LIVES_KEY_s GDK_s
1206 #define LIVES_KEY_t GDK_t
1207 #define LIVES_KEY_u GDK_u
1208 #define LIVES_KEY_v GDK_v
1209 #define LIVES_KEY_w GDK_w
1210 #define LIVES_KEY_x GDK_x
1211 #define LIVES_KEY_y GDK_y
1212 #define LIVES_KEY_z GDK_z
1213 
1214 #define LIVES_KEY_F1 GDK_F1
1215 #define LIVES_KEY_F2 GDK_F2
1216 #define LIVES_KEY_F3 GDK_F3
1217 #define LIVES_KEY_F4 GDK_F4
1218 #define LIVES_KEY_F5 GDK_F5
1219 #define LIVES_KEY_F6 GDK_F6
1220 #define LIVES_KEY_F7 GDK_F7
1221 #define LIVES_KEY_F8 GDK_F8
1222 #define LIVES_KEY_F9 GDK_F9
1223 #define LIVES_KEY_F10 GDK_F10
1224 #define LIVES_KEY_F11 GDK_F11
1225 #define LIVES_KEY_F12 GDK_F12
1226 
1227 #define LIVES_KEY_Page_Up GDK_Page_Up
1228 #define LIVES_KEY_Page_Down GDK_Page_Down
1229 
1230 #define LIVES_KEY_Escape GDK_Escape
1231 
1232 #endif
1233 
1234 #define LIVES_INT_TO_POINTER GINT_TO_POINTER
1235 #define LIVES_UINT_TO_POINTER GUINT_TO_POINTER
1236 #define LIVES_POINTER_TO_INT GPOINTER_TO_INT
1237 
1238 #endif
1239 
1240 #endif
int boolean
Definition: videoplugin.h:50