38static LiVESWidgetClosure *stop_closure;
39static LiVESWidgetClosure *fullscreen_closure;
40static LiVESWidgetClosure *dblsize_closure;
41static LiVESWidgetClosure *sepwin_closure;
42static LiVESWidgetClosure *loop_closure;
43static LiVESWidgetClosure *loop_cont_closure;
44static LiVESWidgetClosure *fade_closure;
45static LiVESWidgetClosure *showfct_closure;
46static LiVESWidgetClosure *showsubs_closure;
47static LiVESWidgetClosure *rec_closure;
48static LiVESWidgetClosure *mute_audio_closure;
49static LiVESWidgetClosure *ping_pong_closure;
51static void _resize_play_window(
void);
53static boolean pb_added =
FALSE;
56 static int vspace = -1;
68 LiVESError *
error = NULL;
84 lives_error_free(
error);
107 lives_error_free(
error);
136#if GTK_CHECK_VERSION(3, 0, 0)
137boolean expose_sim(LiVESWidget * widget, lives_painter_t *cr, livespointer user_data) {
147boolean expose_eim(LiVESWidget * widget, lives_painter_t *cr, livespointer user_data) {
157boolean expose_pim(LiVESWidget * widget, lives_painter_t *cr, livespointer user_data) {
168void set_colours(LiVESWidgetColor * colf, LiVESWidgetColor * colb, LiVESWidgetColor * colf2,
169 LiVESWidgetColor * colb2, LiVESWidgetColor * colt, LiVESWidgetColor * coli) {
222#if GTK_CHECK_VERSION(3, 16, 0)
252 LIVES_WIDGET_STATE_INSENSITIVE,
"",
"opacity",
"1.0");
255 LIVES_WIDGET_STATE_NORMAL,
"",
"opacity",
"1.0");
258 LIVES_WIDGET_STATE_INSENSITIVE,
"",
"opacity",
"1.0");
261 LIVES_WIDGET_STATE_NORMAL,
"",
"opacity",
"1.0");
283 LIVES_WIDGET_STATE_NORMAL, colb);
285 LIVES_WIDGET_STATE_NORMAL, colf);
297 LIVES_WIDGET_STATE_NORMAL, colb);
368#if !GTK_CHECK_VERSION(3, 0, 0)
369 LiVESWidget *alignment;
375 LiVESWidget *menuitem;
376 LiVESWidget *select_submenu_menu;
377 LiVESWidget *submenu_menu;
378 LiVESWidget *export_submenu_menu;
379 LiVESWidget *trimaudio_submenu_menu;
380 LiVESWidget *delaudio_submenu_menu;
381 LiVESWidget *menuitemsep;
382#if LIVES_HAS_IMAGE_MENU_ITEM
385 LiVESWidget *rfx_menu;
386 LiVESWidget *rfx_submenu;
387 LiVESWidget *midi_menu;
388 LiVESWidget *midi_submenu;
389 LiVESWidget *midi_load;
392 LiVESWidget *show_manual;
393 LiVESWidget *email_author;
395 LiVESWidget *report_bug;
396 LiVESWidget *suggest_feature;
397 LiVESWidget *help_translate;
401 LiVESWidget *hseparator;
402 LiVESWidget *t_label;
404#if defined HAVE_YUV4MPEG || defined HAVE_UNICAP
405 LiVESWidget *submenu;
408 LiVESWidget *new_test_rfx;
409 LiVESWidget *copy_rfx;
410 LiVESWidget *import_custom_rfx;
411 LiVESWidget *rebuild_rfx;
412 LiVESWidget *assign_rte_keys;
414 LiVESWidget *tmp_toolbar_icon;
416 LiVESAdjustment *adj;
425 boolean new_lives =
FALSE;
430 stop_closure = fullscreen_closure = dblsize_closure = sepwin_closure = loop_closure = NULL;
431 loop_cont_closure = fade_closure = showfct_closure = showsubs_closure = NULL;
432 rec_closure = mute_audio_closure = ping_pong_closure = NULL;
441 LIVES_WIDGET_CONFIGURE_EVENT, LIVES_GUI_CALLBACK(
config_event), NULL);
463 LiVESWidgetColor normal;
464#if !GTK_CHECK_VERSION(3, 0, 0)
493 (GdkDragAction)(GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK));
584 LIVES_KEY_o, LIVES_CONTROL_MASK,
585 LIVES_ACCEL_VISIBLE);
608#ifdef ENABLE_DVD_GRAB
639#if defined(HAVE_UNICAP) || defined(HAVE_YUV4MPEG)
648 LIVES_GUI_CALLBACK(on_open_vdev_activate), NULL);
681 for (
register int j = 0; buff[j]; j++) {
682 if (buff[j] ==
'\n') {
706#ifdef LIBAV_TRANSCODE
725 LIVES_KEY_w, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
739 LIVES_KEY_b, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
747 LIVES_KEY_r, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
782 LIVES_KEY_u, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
784#if LIVES_HAS_IMAGE_MENU_ITEM
795 LIVES_KEY_z, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
797#if LIVES_HAS_IMAGE_MENU_ITEM
811 LIVES_KEY_m, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
818 LIVES_KEY_c, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
825 LIVES_KEY_t, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
832 LIVES_KEY_i, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
834#if LIVES_HAS_IMAGE_MENU_ITEM
845 LIVES_KEY_n, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
856#if LIVES_HAS_IMAGE_MENU_ITEM
862 LIVES_KEY_d, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
888 LIVES_KEY_a, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
894 LIVES_KEY_Home, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
899 LIVES_KEY_End, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
922 LIVES_KEY_Slash, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
936 LIVES_KEY_p, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
941#if LIVES_HAS_IMAGE_MENU_ITEM
949 LIVES_KEY_y, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
959 LIVES_KEY_c, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
961#if LIVES_HAS_IMAGE_MENU_ITEM
967#if LIVES_HAS_IMAGE_MENU_ITEM
977 LIVES_KEY_q, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
979#if LIVES_HAS_IMAGE_MENU_ITEM
988#if LIVES_HAS_IMAGE_MENU_ITEM
995 LIVES_KEY_w, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1002 LIVES_KEY_r, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1012 LIVES_KEY_f, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1018 LIVES_KEY_d, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1024 LIVES_KEY_s, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1029 LIVES_KEY_b, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1037 LIVES_KEY_l, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1044 LIVES_KEY_o, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1050 LIVES_KEY_g, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1057 LIVES_KEY_z, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1070 LIVES_KEY_h, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1076 LIVES_KEY_v, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1123 LIVES_KEY_x, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
1177 LIVES_KEY_p, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
1179#if LIVES_HAS_IMAGE_MENU_ITEM
1311 LIVES_KEY_i, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
1324#if LIVES_HAS_IMAGE_MENU_ITEM
1468 LIVES_KEY_v, LIVES_CONTROL_MASK, LIVES_ACCEL_VISIBLE);
1482 (
_(
"Save real time effect defaults so they will be restored each time you use LiVES.")));
1489 (
_(
"Decode all frames to images. This will unlock reverse playback and can "
1490 "improve random seek times,\n"
1491 "but may require additional diskspace.")));
1497 (
_(
"Reset all playback positions to frame 1, and reset all playback frame rates.")));
1596 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
show_devopts), LIVES_WIDGET_ACTIVATE_SIGNAL,
1631 _(
"Show the play window (s)"));
1639 _(
"Rewind to start (w)"));
1655 _(
"Stop playback (q)"));
1662 _(
"Play selection (y)"));
1671 _(
"Switch continuous looping on (o)"));
1679 _(
"Mute the audio (z)"));
1683 for (i = 0; i < 3; i++) {
1695#if GTK_CHECK_VERSION(3, 0, 0)
1739#if GTK_CHECK_VERSION(3, 0, 0)
1781#if GTK_CHECK_VERSION(3, 0, 0)
1789 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
ext_audio_mon), LIVES_WIDGET_EXPOSE_EVENT,
1798#ifdef TEST_VOL_LIGHTS
1799#if GTK_CHECK_VERSION(3, 0, 0)
1809 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
vol_checkbuttons[i][0]), LIVES_WIDGET_EXPOSE_EVENT,
1815 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
vol_checkbuttons[i][0]), LIVES_WIDGET_TOGGLED_SIGNAL,
1854 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
volume_scale), LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
1932 t_label =
lives_label_new(
_(
"Press \"s\" to toggle separate play window for improved performance, \"q\" to stop."));
1954 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox), LIVES_WIDGET_SCROLL_EVENT,
1981#if GTK_CHECK_VERSION(3, 16, 0)
2002#if GTK_CHECK_VERSION(3, 0, 0)
2019 (LiVESAttachOptions)(0), (LiVESAttachOptions)(0), 0, 0);
2058 (LiVESAttachOptions)(0), (LiVESAttachOptions)(0), 0, 0);
2067 (LiVESAttachOptions)(0), (LiVESAttachOptions)(0), 0, 0);
2098 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
play_image), LIVES_WIDGET_EXPOSE_EVENT,
2112#if GTK_CHECK_VERSION(3, 0, 0)
2121 LIVES_BOX(
mainw->
hbox3),
_(
"The first selected frame in this clip"));
2166 (tmp = (
_(
"Select all frames in this clip"))));
2175#if GTK_CHECK_VERSION(3, 0, 0)
2183 LIVES_BOX(
mainw->
hbox3),
_(
"The last selected frame in this clip"));
2208 mainw->
hruler = giw_timeline_new_with_adjustment(LIVES_ORIENTATION_HORIZONTAL, 0., 0., 1000000., 1000000.);
2218 | LIVES_BUTTON_RELEASE_MASK | LIVES_BUTTON_PRESS_MASK | LIVES_ENTER_NOTIFY_MASK);
2229 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
eventbox2), LIVES_WIDGET_EXPOSE_EVENT,
2244 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
video_draw), LIVES_WIDGET_EXPOSE_EVENT,
2247 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
video_draw), LIVES_WIDGET_CONFIGURE_EVENT,
2268 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
laudio_draw), LIVES_WIDGET_EXPOSE_EVENT,
2271 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
laudio_draw), LIVES_WIDGET_CONFIGURE_EVENT,
2291 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
raudio_draw), LIVES_WIDGET_EXPOSE_EVENT,
2294 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
raudio_draw), LIVES_WIDGET_CONFIGURE_EVENT,
2321 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
msg_adj), LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
2324 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
msg_area), LIVES_WIDGET_SCROLL_EVENT,
2345 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2350 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_SHIFT_MASK),
2351 (LiVESAccelFlags)0, lives_cclosure_new(LIVES_GUI_CALLBACK(
slower_callback),
2355 (LIVES_CONTROL_MASK | LIVES_ALT_MASK), (LiVESAccelFlags)0,
2356 lives_cclosure_new(LIVES_GUI_CALLBACK(
less_callback), NULL, NULL));
2361 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2366 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_SHIFT_MASK),
2372 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_ALT_MASK),
2374 lives_cclosure_new(LIVES_GUI_CALLBACK(
more_callback), NULL, NULL));
2377 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2381 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2385 (LiVESXModifierType)(LIVES_CONTROL_MASK),
2390 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_ALT_MASK),
2395 (LiVESXModifierType)(LIVES_CONTROL_MASK),
2400 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_SHIFT_MASK),
2405 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2410 (LiVESXModifierType)(LIVES_CONTROL_MASK | LIVES_SHIFT_MASK), (LiVESAccelFlags)0,
2415 (LiVESAccelFlags)0, lives_cclosure_new(LIVES_GUI_CALLBACK(
voldown_callback), NULL, NULL));
2418 (LiVESAccelFlags)0, lives_cclosure_new(LIVES_GUI_CALLBACK(
volup_callback), NULL, NULL));
2421 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(-1), NULL));
2431 (LiVESAccelFlags)0, lives_cclosure_new(LIVES_GUI_CALLBACK(
rtemode_callback),
2452 lives_cclosure_new(LIVES_GUI_CALLBACK(
storeclip_callback), LIVES_INT_TO_POINTER(1), NULL));
2455 lives_cclosure_new(LIVES_GUI_CALLBACK(
storeclip_callback), LIVES_INT_TO_POINTER(2), NULL));
2458 lives_cclosure_new(LIVES_GUI_CALLBACK(
storeclip_callback), LIVES_INT_TO_POINTER(3), NULL));
2461 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2462 lives_cclosure_new(LIVES_GUI_CALLBACK(
storeclip_callback), LIVES_INT_TO_POINTER(4), NULL));
2465 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2466 lives_cclosure_new(LIVES_GUI_CALLBACK(
storeclip_callback), LIVES_INT_TO_POINTER(5), NULL));
2469 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2471 LIVES_INT_TO_POINTER(6), NULL));
2474 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2476 LIVES_INT_TO_POINTER(7), NULL));
2479 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2481 LIVES_INT_TO_POINTER(8), NULL));
2484 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2486 LIVES_INT_TO_POINTER(9), NULL));
2489 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2491 LIVES_INT_TO_POINTER(10), NULL));
2494 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2496 LIVES_INT_TO_POINTER(11), NULL));
2499 (LiVESXModifierType)0, (LiVESAccelFlags)0,
2501 LIVES_INT_TO_POINTER(12), NULL));
2508 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(0), NULL));
2511 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(1), NULL));
2514 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(0), NULL));
2517 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(2), NULL));
2520 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(1), NULL));
2523 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(3), NULL));
2526 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(2), NULL));
2529 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(4), NULL));
2532 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(3), NULL));
2535 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(5), NULL));
2538 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(4), NULL));
2541 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2543 LIVES_INT_TO_POINTER(6), NULL));
2546 lives_cclosure_new(LIVES_GUI_CALLBACK(
grabkeys_callback), LIVES_INT_TO_POINTER(5), NULL));
2549 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2551 LIVES_INT_TO_POINTER(7), NULL));
2555 LIVES_INT_TO_POINTER(6), NULL));
2558 LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2560 LIVES_INT_TO_POINTER(8), NULL));
2562 LIVES_CONTROL_MASK | LIVES_ALT_MASK,
2565 LIVES_INT_TO_POINTER(7), NULL));
2568 LIVES_KEY_9, LIVES_CONTROL_MASK, (LiVESAccelFlags)0,
2570 LIVES_INT_TO_POINTER(9), NULL));
2572 LIVES_CONTROL_MASK | LIVES_ALT_MASK,
2575 LIVES_INT_TO_POINTER(8), NULL));
2582 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(10), NULL));
2586 lives_cclosure_new(LIVES_GUI_CALLBACK(
rte_on_off_callback), LIVES_INT_TO_POINTER(11), NULL));
2598 LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
2600 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
open), LIVES_WIDGET_ACTIVATE_SIGNAL,
2613 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
open_utube), LIVES_WIDGET_ACTIVATE_SIGNAL,
2639#ifdef LIBAV_TRANSCODE
2640 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->transcode), LIVES_WIDGET_ACTIVATE_SIGNAL,
2641 LIVES_GUI_CALLBACK(on_transcode_activate), NULL);
2647 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
import_proj), LIVES_WIDGET_ACTIVATE_SIGNAL,
2649 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
export_proj), LIVES_WIDGET_ACTIVATE_SIGNAL,
2651 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
export_theme), LIVES_WIDGET_ACTIVATE_SIGNAL,
2653 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
import_theme), LIVES_WIDGET_ACTIVATE_SIGNAL,
2657 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
quit), LIVES_WIDGET_ACTIVATE_SIGNAL,
2659 LIVES_INT_TO_POINTER(0));
2662 LIVES_INT_TO_POINTER(1));
2669 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
mt_menu), LIVES_WIDGET_ACTIVATE_SIGNAL,
2711 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
stop), LIVES_WIDGET_ACTIVATE_SIGNAL,
2716 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
sw_sound), LIVES_WIDGET_ACTIVATE_SIGNAL,
2719 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
showsubs), LIVES_WIDGET_ACTIVATE_SIGNAL,
2723 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
aload_subs), LIVES_WIDGET_ACTIVATE_SIGNAL,
2725 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
ccpd_sound), LIVES_WIDGET_ACTIVATE_SIGNAL,
2728 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
dsize), LIVES_WIDGET_ACTIVATE_SIGNAL,
2732 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
fade), LIVES_WIDGET_ACTIVATE_SIGNAL,
2734 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
loop_video), LIVES_WIDGET_ACTIVATE_SIGNAL,
2738 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
loop_ping_pong), LIVES_WIDGET_ACTIVATE_SIGNAL,
2742 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
sticky), LIVES_WIDGET_ACTIVATE_SIGNAL,
2744 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
showfct), LIVES_WIDGET_ACTIVATE_SIGNAL,
2748 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
change_speed), LIVES_WIDGET_ACTIVATE_SIGNAL,
2752 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
load_subs), LIVES_WIDGET_ACTIVATE_SIGNAL,
2760 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
export_selaudio), LIVES_WIDGET_ACTIVATE_SIGNAL,
2762 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
export_allaudio), LIVES_WIDGET_ACTIVATE_SIGNAL,
2764 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
append_audio), LIVES_WIDGET_ACTIVATE_SIGNAL,
2792 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
load_audio), LIVES_WIDGET_ACTIVATE_SIGNAL,
2803 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
show_file_info), LIVES_WIDGET_ACTIVATE_SIGNAL,
2809 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
show_messages), LIVES_WIDGET_ACTIVATE_SIGNAL,
2813 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
show_quota), LIVES_WIDGET_ACTIVATE_SIGNAL,
2815 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
rename), LIVES_WIDGET_ACTIVATE_SIGNAL,
2830 lives_signal_sync_connect(LIVES_GUI_OBJECT(rebuild_rfx), LIVES_WIDGET_ACTIVATE_SIGNAL,
2851 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
vj_show_keys), LIVES_WIDGET_ACTIVATE_SIGNAL,
2853 lives_signal_sync_connect(LIVES_GUI_OBJECT(assign_rte_keys), LIVES_WIDGET_ACTIVATE_SIGNAL,
2855 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
save_rte_defs), LIVES_WIDGET_ACTIVATE_SIGNAL,
2857 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
vj_reset), LIVES_WIDGET_ACTIVATE_SIGNAL,
2864 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
midi_save), LIVES_WIDGET_ACTIVATE_SIGNAL,
2866 lives_signal_sync_connect(LIVES_GUI_OBJECT(midi_load), LIVES_WIDGET_ACTIVATE_SIGNAL,
2873 lives_signal_sync_connect_after(LIVES_GUI_OBJECT(
mainw->
autolives), LIVES_WIDGET_ACTIVATE_SIGNAL,
2877 LIVES_WIDGET_ACTIVATE_SIGNAL,
2884 lives_signal_sync_connect(LIVES_GUI_OBJECT(about), LIVES_WIDGET_ACTIVATE_SIGNAL,
2890 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
expl_missing), LIVES_WIDGET_ACTIVATE_SIGNAL,
2912 LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
2916 LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
2920 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
m_sepwinbutton), LIVES_WIDGET_CLICKED_SIGNAL,
2924 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
m_stopbutton), LIVES_WIDGET_CLICKED_SIGNAL,
2930 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
m_mutebutton), LIVES_WIDGET_CLICKED_SIGNAL,
2932 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
m_loopbutton), LIVES_WIDGET_CLICKED_SIGNAL,
2936 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_stopbutton), LIVES_WIDGET_CLICKED_SIGNAL,
2938 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_sepwin), LIVES_WIDGET_CLICKED_SIGNAL,
2940 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_fullscreen), LIVES_WIDGET_CLICKED_SIGNAL,
2942 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_infobutton), LIVES_WIDGET_CLICKED_SIGNAL,
2944 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_hide), LIVES_WIDGET_CLICKED_SIGNAL,
2946 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_slower), LIVES_WIDGET_CLICKED_SIGNAL,
2949 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_faster), LIVES_WIDGET_CLICKED_SIGNAL,
2952 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_back), LIVES_WIDGET_CLICKED_SIGNAL,
2954 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
t_forward), LIVES_WIDGET_CLICKED_SIGNAL,
2962 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox2), LIVES_WIDGET_BUTTON_RELEASE_EVENT,
2965 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox2), LIVES_WIDGET_BUTTON_PRESS_EVENT,
2969 adj = giw_timeline_get_adjustment(GIW_TIMELINE(
mainw->
hruler));
2970 lives_signal_sync_connect_swapped(LIVES_GUI_OBJECT(adj), LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
2971 LIVES_GUI_CALLBACK(on_hrule_value_changed),
mainw->
hruler);
2973 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox5), LIVES_WIDGET_MOTION_NOTIFY_EVENT,
2975 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox5), LIVES_WIDGET_BUTTON_RELEASE_EVENT,
2977 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox5), LIVES_WIDGET_BUTTON_PRESS_EVENT,
2981 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
sa_button), LIVES_WIDGET_CLICKED_SIGNAL,
2983 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox3), LIVES_WIDGET_BUTTON_PRESS_EVENT,
2984 LIVES_GUI_CALLBACK(
frame_context), LIVES_INT_TO_POINTER(1));
2985 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
eventbox4), LIVES_WIDGET_BUTTON_PRESS_EVENT,
2986 LIVES_GUI_CALLBACK(
frame_context), LIVES_INT_TO_POINTER(2));
3026#ifdef LIVES_TV_CHANNEL1
3074 LiVESWidget *parent;
3080 if (parent && LIVES_IS_CONTAINER(parent)) {
3090 if (parent && LIVES_IS_CONTAINER(parent)) {
3271 if (!stop_closure) {
3274 (stop_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
stop_callback), NULL, NULL)));
3280 (rec_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
rec_callback), NULL, NULL)));
3284 (fullscreen_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
fullscreen_callback), NULL, NULL)));
3288 (showfct_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
showfct_callback), NULL, NULL)));
3292 (sepwin_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
sepwin_callback), NULL, NULL)));
3297 (loop_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
loop_callback), NULL, NULL)));
3301 (loop_cont_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
loop_cont_callback), NULL, NULL)));
3306 (ping_pong_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
ping_pong_callback), NULL, NULL)));
3309 (mute_audio_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
mute_audio_callback), NULL, NULL)));
3312 (dblsize_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
dblsize_callback), NULL, NULL)));
3315 (fade_closure = lives_cclosure_new(LIVES_GUI_CALLBACK(
fade_callback), NULL, NULL)));
3375 LIVES_KEY_q, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3379 LIVES_KEY_r, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3383 LIVES_KEY_f, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3387 LIVES_KEY_s, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3391 LIVES_KEY_z, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3395 LIVES_KEY_g, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3400 LIVES_KEY_l, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3404 LIVES_KEY_o, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3408 LIVES_KEY_h, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3412 LIVES_KEY_v, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3416 LIVES_KEY_s, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3420 LIVES_KEY_d, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3424 LIVES_KEY_b, (LiVESXModifierType)0, LIVES_ACCEL_VISIBLE);
3425 stop_closure = NULL;
3517 LiVESWidget *eventbox;
3518 LiVESWidget *hbox_buttons;
3519 LiVESWidget *radiobutton_free;
3520 LiVESWidget *radiobutton_start;
3521 LiVESWidget *radiobutton_end;
3522 LiVESWidget *radiobutton_ptr;
3523 LiVESWidget *rewind_img;
3524 LiVESWidget *playsel_img;
3525 LiVESWidget *play_img;
3526 LiVESWidget *loop_img;
3528 LiVESSList *radiobutton_group = NULL;
3537 lives_signal_sync_connect(LIVES_GUI_OBJECT(eventbox), LIVES_WIDGET_SCROLL_EVENT,
3542 lives_signal_sync_connect(LIVES_GUI_OBJECT(eventbox), LIVES_WIDGET_BUTTON_PRESS_EVENT,
3543 LIVES_GUI_CALLBACK(
frame_context), LIVES_INT_TO_POINTER(3));
3594 (tmp2 = (
_(
"Frame number is linked to start frame"))));
3601 (tmp2 = (
_(
"Frame number is linked to end frame"))));
3608 (tmp2 = (
_(
"Frame number is linked to playback pointer"))));
3644 LIVES_ICON_SIZE_LARGE_TOOLBAR);
3655 LIVES_ICON_SIZE_LARGE_TOOLBAR);
3670 lives_signal_sync_connect(LIVES_GUI_OBJECT(radiobutton_free), LIVES_WIDGET_TOGGLED_SIGNAL,
3673 lives_signal_sync_connect(LIVES_GUI_OBJECT(radiobutton_start), LIVES_WIDGET_TOGGLED_SIGNAL,
3676 lives_signal_sync_connect(LIVES_GUI_OBJECT(radiobutton_end), LIVES_WIDGET_TOGGLED_SIGNAL,
3678 LIVES_INT_TO_POINTER(
PRV_END));
3679 lives_signal_sync_connect(LIVES_GUI_OBJECT(radiobutton_ptr), LIVES_WIDGET_TOGGLED_SIGNAL,
3681 LIVES_INT_TO_POINTER(
PRV_PTR));
3687 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
p_rewindbutton), LIVES_WIDGET_CLICKED_SIGNAL,
3689 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
p_mutebutton), LIVES_WIDGET_CLICKED_SIGNAL,
3691 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
p_loopbutton), LIVES_WIDGET_CLICKED_SIGNAL,
3695 LIVES_WIDGET_VALUE_CHANGED_SIGNAL,
3733 xtrabit = lives_strdup(
"");
3757 boolean need_mt =
FALSE, fake_evlist;
3770 weed_plant_t *event_list = weed_plant_new(WEED_PLANT_EVENT_LIST);
3847static void _make_play_window(
void) {
3869 LIVES_KEY_PRESS_MASK | LIVES_KEY_RELEASE_MASK);
3886 _resize_play_window();
3922 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
play_window), LIVES_WIDGET_DELETE_EVENT,
3924 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
play_window), LIVES_WIDGET_KEY_PRESS_EVENT,
3926 lives_signal_sync_connect(LIVES_GUI_OBJECT(
mainw->
play_window), LIVES_WIDGET_KEY_RELEASE_EVENT,
3944#if !GTK_CHECK_VERSION(3, 22, 0)
3969#define TEST_CE_THUMBS 0
3971static void _resize_play_window(
void) {
3974 boolean fullscreen =
TRUE;
3975 boolean ext_audio =
FALSE;
3977 int width = -1, height = -1, nwidth, nheight = 0;
3984 uint64_t xwinid = 0;
4000 scr_width_safety += 2 * bx;
4001 scr_height_safety += 2 * by;
4038 scr_width_safety >>= 1;
4039 scr_height_safety >>= 1;
4044 if (pmonitor == 0) {
4071 if (pmonitor == 0) {
4085 if (opwx * opwy > 0) {
4091 if (pmonitor == 0) {
4114#if GTK_CHECK_VERSION(3, 20, 0)
4117 gdk_window_set_fullscreen_mode(xwin, GDK_FULLSCREEN_ON_ALL_MONITORS);
4119 gdk_window_set_fullscreen_mode(xwin, GDK_FULLSCREEN_ON_CURRENT_MONITOR);
4141 if (pmonitor == 0) {
4146#if GTK_CHECK_VERSION(3, 0, 0)
4149 LiVESXScreen *screen;
4152#if GTK_CHECK_VERSION(3, 0, 0)
4173 if (pmonitor != 0) {
4178 if (xwinid == -1)
return;
4210#ifdef HAVE_PULSE_AUDIO
4296 int xnwidth, xnheight;
4304 nheight = (nheight >> 2) << 1;
4305 nwidth = (nwidth >> 2) << 1;
4308 while (nwidth >
mainw->
mgeom[pmonitor - 1].
width - scr_width_safety ||
4310 nheight = (nheight >> 2) << 1;
4311 nwidth = (nwidth >> 2) << 1;
4324 if (xnwidth <= mainw->mgeom[pmonitor - 1].width - scr_width_safety &&
4325 nheight <= mainw->mgeom[pmonitor - 1].height - scr_height_safety) {
4354static void _kill_play_window(
void) {
4391#define ASPECT_DIFF_LMT 0.01625f
4406void get_letterbox_sizes(
int *pwidth,
int *pheight,
int *lb_width,
int *lb_height,
boolean player_can_upscale) {
4407 float frame_aspect, player_aspect;
4408 if (!player_can_upscale) {
4412 frame_aspect = (float) * lb_width / (
float) * lb_height;
4413 player_aspect = (float) * pwidth / (
float) * pheight;
4415 if (*lb_width > *pwidth) *lb_width = *pwidth;
4416 if (*lb_height > *pheight) *lb_height = *pheight;
4417 if (*pwidth > *lb_width) *pwidth = *lb_width;
4418 if (*pheight > *lb_height) *pheight = *lb_height;
4423 if (frame_aspect > player_aspect) {
4425 if (*lb_width > *pwidth) {
4427 *lb_width = *pwidth;
4428 *lb_height = (float) * lb_width / frame_aspect + .5;
4429 *lb_height = (*lb_height >> 1) << 1;
4433 *pwidth = *lb_width;
4434 *pheight = (float) * pwidth / player_aspect + .5;
4435 *pheight = (*pheight >> 1) << 1;
4439 if (*lb_height > *pheight) {
4440 *lb_height = *pheight;
4441 *lb_width = (float) * lb_height * frame_aspect + .5;;
4442 *lb_width = (*lb_width >> 2) << 2;
4444 *pheight = *lb_height;
4445 *pwidth = (float) * pheight * player_aspect + .5;
4446 *pwidth = (*pwidth >> 2) << 2;
4485#define MAX_DISP_SETNAME_LEN 10
4489 char *extra, *menuname;
4491 if (!sfile)
return NULL;
4493 char *shortened_set_name;
4501 }
else extra = lives_strdup(
"");
4503 clipname = lives_path_get_basename(sfile->
name);
4504 else clipname = lives_strdup(sfile->
name);
4520#ifndef GTK_RADIO_MENU_BUG
4538 cfile->menuentry_func = lives_signal_sync_connect(LIVES_GUI_OBJECT(
cfile->menuentry), LIVES_WIDGET_TOGGLED_SIGNAL,
4561#ifndef GTK_RADIO_MENU_BUG
4587#ifndef GTK_RADIO_MENU_BUG
4592 fileno = LIVES_POINTER_TO_INT(list->data);
4606 LiVESWidget *vbox, *hbox;
4607 LiVESWidget *splash_img;
4608 LiVESPixbuf *splash_pix;
4610 LiVESError *
error = NULL;
4619 gtk_window_set_type_hint(LIVES_WINDOW(
mainw->
splash_window), GDK_WINDOW_TYPE_HINT_SPLASHSCREEN);
4642#ifdef PROGBAR_IS_ENTRY
4690#ifdef PROGBAR_IS_ENTRY
4692 char *tmp = lives_strdup(msg);
LIVES_GLOBAL_INLINE char * get_achannel_name(int totchans, int idx)
boolean start_audio_stream(void)
void stop_audio_stream(void)
#define is_realtime_aplayer(ptype)
void on_boolean_toggled(LiVESWidgetObject *obj, livespointer user_data)
void on_select_new_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_prv_link_toggled(LiVESToggleButton *togglebutton, livespointer user_data)
void on_eject_cd_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean storeclip_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer clip_number)
jump to a stored clip / frame position during free playback clip number and frame position can be sto...
void email_author_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_recaudsel_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_from_start_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_showsubs_toggled(LiVESWidgetObject *obj, livespointer user_data)
boolean config_laud_draw(LiVESWidget *widget, LiVESXEventConfigure *event, livespointer user_data)
void on_cut_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_export_theme_activate(LiVESMenuItem *menuitem, livespointer user_data)
void changed_fps_during_pb(LiVESSpinButton *spinbutton, livespointer user_data)
This is a super important function : almost everything related to velocity direction changes during p...
boolean show_sync_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer keybd)
boolean on_trim_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean all_expose_overlay(LiVESWidget *widget, lives_painter_t *creb, livespointer psurf)
void on_select_invert_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_rewind_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean prevclip_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
void on_erase_subs_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_rename_activate(LiVESMenuItem *menuitem, livespointer user_data)
void drag_from_outside(LiVESWidget *widget, GdkDragContext *dcon, int x, int y, GtkSelectionData *data, uint32_t info, uint32_t time, livespointer user_data)
void on_vj_realize_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean dirchange_lock_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer area_enum)
set in / out points for video looping during free playback, it is possible to set in / out points for...
boolean config_vid_draw(LiVESWidget *widget, LiVESXEventConfigure *event, livespointer user_data)
void on_back_pressed(LiVESButton *button, livespointer user_data)
void suggest_feature_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_save_selection_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_to_aend_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_slower_pressed(LiVESButton *button, livespointer user_data)
void on_sepwin_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_import_theme_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_mute_button_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_delete_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_hrule_update(LiVESWidget *widget, LiVESXEventMotion *event, livespointer user_data)
void on_show_keys_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_preview_spinbutton_changed(LiVESSpinButton *spinbutton, livespointer user_data)
void on_sticky_activate(LiVESMenuItem *menuitem, livespointer user_data)
void switch_clip_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean config_event(LiVESWidget *widget, LiVESXEventConfigure *event, livespointer user_data)
void on_open_activate(LiVESMenuItem *menuitem, livespointer user_data)
void show_manual_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_show_file_info_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_loop_video_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean nervous_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer clip_number)
void on_volume_slider_value_changed(LiVESScaleButton *sbutton, livespointer user_data)
void on_loop_button_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_vcd_activate(LiVESMenuItem *menuitem, livespointer device_type)
void on_lock_selwidth_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_mouse_sel_reset(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
void on_showfct_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_redo_activate(LiVESWidget *menuitem, livespointer user_data)
void help_translate_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_full_screen_pressed(LiVESButton *button, livespointer user_data)
void on_show_messages_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_ping_pong_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_restore_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_export_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_mute_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_double_size_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_fade_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean dirchange_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer area_enum)
void on_playclip_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_forward_pressed(LiVESButton *button, livespointer user_data)
void on_faster_pressed(LiVESButton *button, livespointer user_data)
void on_show_file_comments_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean expose_raud_draw(LiVESWidget *widget, lives_painter_t *cr, livespointer psurf)
void on_sepwin_pressed(LiVESButton *button, livespointer user_data)
void donate_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_load_cdtrack_activate(LiVESMenuItem *menuitem, livespointer user_data)
void popup_lmap_errors(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_stop_activate_by_del(LiVESWidget *widget, LiVESXEventDelete *event, livespointer user_data)
boolean nextclip_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
void on_recaudclip_activate(LiVESMenuItem *menuitem, livespointer user_data)
void switch_clip(int type, int newclip, boolean force)
boolean all_expose(LiVESWidget *widget, lives_painter_t *cr, livespointer psurf)
void on_select_all_activate(LiVESWidget *widget, livespointer user_data)
void on_load_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_record_perf_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_loc_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_utube_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_load_subs_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean fps_reset_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer area_enum)
boolean on_mouse_scroll(LiVESWidget *widget, LiVESXEventScroll *event, livespointer user_data)
void on_full_screen_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_loop_cont_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_spinbutton_end_value_changed(LiVESSpinButton *spinbutton, livespointer user_data)
void vj_mode_toggled(LiVESCheckMenuItem *menuitem, livespointer user_data)
void on_copy_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_toy_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean expose_vid_draw(LiVESWidget *widget, lives_painter_t *cr, livespointer psurf)
boolean frame_context(LiVESWidget *widget, LiVESXEventButton *event, livespointer which)
void on_save_as_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_quit_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_about_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_cleardisk_activate(LiVESWidget *widget, livespointer user_data)
void on_close_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_playall_activate(LiVESMenuItem *menuitem, livespointer user_data)
void autolives_toggle(LiVESMenuItem *menuitem, livespointer user_data)
void on_rev_clipboard_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_show_clipboard_info_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_mouse_sel_start(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
void on_fade_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_ins_silence_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_insert_pre_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_append_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_vj_reset_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_undo_activate(LiVESWidget *menuitem, livespointer user_data)
boolean mute_audio_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
void on_recent_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_LiVES_delete_event(LiVESWidget *widget, LiVESXEventDelete *event, livespointer user_data)
void on_voladj_activate(LiVESMenuItem *menuitem, livespointer user_data)
void report_bug_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_capture_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_audio_toggled(LiVESWidget *tbutton, LiVESWidget *label)
char * on_load_set_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_mouse_sel_update(LiVESWidget *widget, LiVESXEventMotion *event, livespointer user_data)
boolean config_raud_draw(LiVESWidget *widget, LiVESXEventConfigure *event, livespointer user_data)
void on_export_proj_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_to_end_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_end_only_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_last_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_spinbutton_start_value_changed(LiVESSpinButton *spinbutton, livespointer user_data)
void on_playsel_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_sel_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_hrule_reset(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
void on_import_proj_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean expose_laud_draw(LiVESWidget *widget, lives_painter_t *cr, livespointer psurf)
boolean on_hrule_set(LiVESWidget *widget, LiVESXEventButton *event, livespointer user_data)
void on_backup_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_select_start_only_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_paste_as_new_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_toolbar_hide(LiVESButton *button, livespointer user_data)
void on_stop_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean on_del_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_normalise_audio_activate(LiVESMenuItem *menuitem, livespointer user_data)
boolean aud_lock_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer statep)
lock or unlock audio track changes in free playback if lock is switched on then the prefs to follow v...
void on_merge_activate(LiVESMenuItem *, livespointer)
void on_resample_video_activate(LiVESMenuItem *, livespointer)
void on_resample_audio_activate(LiVESMenuItem *, livespointer)
void ce_thumbs_set_interactive(boolean interactive)
void start_ce_thumb_mode(void)
void end_ce_thumb_mode(void)
LIVES_GLOBAL_INLINE LiVESWindow * get_transient_full(void)
boolean grabkeys_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
for accel groups
boolean rte_on_off_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
for accel groups
boolean textparm_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean rtemode_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
for accel groups
boolean swap_fg_bg_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
#define WEED_LEAF_WEED_EVENT_API_VERSION
parts of this may eventually become libweed-events
void fade_background(void)
LIVES_GLOBAL_INLINE void frame_size_update(void)
void resize_widgets_for_monitor(boolean do_get_play_times)
void reset_message_area(void)
void set_colours(LiVESWidgetColor *colf, LiVESWidgetColor *colb, LiVESWidgetColor *colf2, LiVESWidgetColor *colb2, LiVESWidgetColor *colt, LiVESWidgetColor *coli)
void splash_msg(const char *msg, double pct)
#define MAX_DISP_SETNAME_LEN
LIVES_GLOBAL_INLINE boolean get_play_screen_size(int *opwidth, int *opheight)
void set_interactive(boolean interactive)
void add_to_playframe(void)
void make_preview_box(void)
void fullscreen_internal(void)
void play_window_set_title(void)
void resize_play_window(void)
void load_theme_images(void)
void get_letterbox_sizes(int *pwidth, int *pheight, int *lb_width, int *lb_height, boolean player_can_upscale)
calculate sizes for letterboxing
void set_preview_box_colours(void)
void make_play_window(void)
actually in gui.c
void kill_play_window(void)
void add_to_clipmenu(void)
void remove_from_clipmenu(void)
LIVES_GLOBAL_INLINE int get_vspace(void)
void disable_record(void)
void unfade_background(void)
void make_custom_submenus(void)
char * get_menu_name(lives_clip_t *sfile, boolean add_setname)
boolean reshow_msg_area(LiVESWidget *widget, lives_painter_t *cr, livespointer psurf)
boolean on_msg_area_scroll(LiVESWidget *widget, LiVESXEventScroll *event, livespointer user_data)
void show_playbar_labels(int clipno)
void msg_area_scroll(LiVESAdjustment *adj, livespointer userdata)
void run_diskspace_dialog_cb(LiVESWidget *w, livespointer data)
#define CE_HRULE_HEIGHT
clip editor hrule height
#define CE_VIDBAR_HEIGHT
clip edit vid/aud bar height
#define CE_AUDBAR_HEIGHT
clip edit vid/aud bar height
boolean faster_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean fullscreen_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean rec_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean loop_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean sepwin_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean showfct_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean fade_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean slower_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean skip_back_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean dblsize_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean volup_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean more_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean less_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean voldown_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean skip_forward_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean key_press_or_release(LiVESWidget *widget, LiVESXEventKey *event, livespointer user_data)
wrapper for pl_key_function
boolean stop_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean loop_cont_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
boolean ping_pong_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod, livespointer user_data)
void on_open_fw_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_live_tvcard_activate(LiVESMenuItem *menuitem, livespointer user_data)
add live input peripherals
void on_live_fw_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_yuv4m_activate(LiVESMenuItem *menuitem, livespointer user_data)
error("LSD_RANDFUNC(ptr, size) must be defined")
boolean hide_desktop_panel(void)
LIVES_GLOBAL_INLINE char * lives_chomp(char *buff)
void * main_thread_execute(lives_funcptr_t func, int return_type, void *retval, const char *args_fmt,...)
void *(* lives_funcptr_t)(void *)
void set_drawing_area_from_pixbuf(LiVESWidget *widget, LiVESPixbuf *pixbuf, lives_painter_surface_t *surface)
_palette * palette
interface colour settings
void procw_desensitize(void)
void resize(double scale)
void load_preview_image(boolean update_always)
void replace_with_delegates(void)
void get_monitors(boolean reset)
#define USE_MPV
some shared structures
#define LIVES_GLOBAL_INLINE
boolean check_for_ratio_fps(double fps)
#define CURRENT_CLIP_HAS_AUDIO
#define HAS_EXTERNAL_PLAYER
int lives_system(const char *com, boolean allow_error)
boolean rewrite_recovery_file(void)
#define FPS_MAX
maximum fps we will allow (double)
#define CURRENT_CLIP_HAS_VIDEO
void set_sel_label(LiVESWidget *label)
#define CURRENT_CLIP_IS_NORMAL
void d_print(const char *fmt,...)
boolean check_for_executable(lives_checkstatus_t *cap, const char *exec)
#define CURRENT_CLIP_IS_VALID
void calc_midspect(int rwidth, int rheight, int *cwidth, int *cheight)
void calc_maxspect(int rwidth, int rheight, int *cwidth, int *cheight)
boolean lives_freep(void **ptr)
@ CLIP_TYPE_FILE
unimported video, not or partially broken in frames
@ CLIP_TYPE_GENERATOR
frames from generator plugin
@ CLIP_TYPE_DISK
imported video, broken into frames
@ CANCEL_ERROR
cancelled because of error
#define FX_KEYS_PHYSICAL
FX keys, 1 - 9 normally.
#define PREVSBWIDTHCHARS
char width of preview spinbutton
#define DEF_BUTTON_HEIGHT
#define STYLE_PLAIN
no theme (theme 'none')
#define FCWIDTHCHARS
char width of framecounter
#define MIN_SEPWIN_HEIGHT
#define NUM_VOL_LIGHTS
unused
#define FRAMEBLANK_MIN_HEIGHT
#define MAIN_SPIN_SPACER
pixel spacing for start/end spins for clip and multitrack editors
#define LIVES_FILE_EXT_BACKUP
#define FRAMEBLANK_MAX_HEIGHT
#define FRAMEBLANK_MAX_WIDTH
#define SCR_HEIGHT_SAFETY
#define LIVES_MAIN_WINDOW_WIDGET
#define LIVES_SENSE_STATE_INTERACTIVE
#define FRAMEBLANK_MIN_WIDTH
#define LIVES_SENSE_STATE_PROC_INSENSITIZED
#define STYLE_1
turn on theming if set
#define SPLASH_LEVEL_START_GUI
#define STYLE_2
colour the spinbuttons on the front page if set
#define LIVES_FILE_EXT_TAR_GZ
#define SCR_WIDTH_SAFETY
sepwin/screen size safety margins in pixels
#define SCREEN_AREA_BACKGROUND
#define LIVES_SENSE_STATE_INSENSITIZED
#define SCREEN_AREA_FOREGROUND
#define FN_KEYS
number of function keys
#define LIVES_FILE_EXT_PROJECT
#define GUI_SCREEN_HEIGHT
void mt_desensitise(lives_mt *mt)
void wipe_layout(lives_mt *mt)
boolean multitrack_delete(lives_mt *mt, boolean save_layout)
void add_aparam_menuitems(lives_mt *mt)
boolean on_multitrack_activate(LiVESMenuItem *menuitem, weed_plant_t *event_list)
menuitem callback
void on_devicemap_load_activate(LiVESMenuItem *, livespointer)
void on_devicemap_save_activate(LiVESMenuItem *, livespointer)
void on_midi_learn_activate(LiVESMenuItem *, livespointer)
start learning MIDI inputs
@ RFX_STATUS_TEST
test effects in the advanced menu
@ RFX_STATUS_CUSTOM
custom effects in the custom menu
@ RFX_STATUS_ANY
indicates free choice of statuses
#define VPP_LOCAL_DISPLAY
#define FX_CANDIDATE_AUDIO_VOL
#define VPP_CAN_RESIZE
type sepcific caps
#define MAX_FX_CANDIDATE_TYPES
void on_preferences_activate(LiVESMenuItem *menuitem, livespointer user_data)
void toggle_sets_pref(LiVESWidget *widget, livespointer prefidx)
callback to set to make a togglebutton or check_menu_item directly control a boolean pref widget is e...
LiVESResponseType get_utf8_pref(const char *key, char *val, int maxlen)
#define PREF_SHOW_DEVOPTS
#define SEPWIN_TYPE_STICKY
_future_prefs * future_prefs
void on_change_speed_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_delete_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_rename_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_export_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_rebuild_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
parse text and return non empty lines between <section> and </section>
void on_copy_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_new_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_edit_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_import_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_promote_rfx_activate(LiVESMenuItem *menuitem, livespointer user_data)
void update_rfx_menus(void)
void add_rfx_effects2(lives_rfx_status_t status)
void on_save_rte_defs_activate(LiVESMenuItem *menuitem, livespointer user_data)
void rte_window_set_interactive(boolean interactive)
void on_assign_rte_keys_activate(LiVESMenuItem *menuitem, livespointer user_data)
void explain_missing_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_troubleshoot_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_open_lives2lives_activate(LiVESMenuItem *menuitem, livespointer user_data)
void on_send_lives2lives_activate(LiVESMenuItem *menuitem, livespointer user_data)
LiVESWidgetColor normal_fore
LiVESWidgetColor info_base
LiVESWidgetColor banner_fade_text
LiVESWidgetColor menu_and_bars
LiVESWidgetColor info_text
LiVESWidgetColor normal_back
LiVESWidgetColor dark_red
LiVESWidgetColor light_green
LiVESWidgetColor menu_and_bars_fore
LiVESWidgetColor fade_colour
boolean crash_recovery
TRUE==maintain mainw->recovery file.
float volume
audio volume level (for jack and pulse)
boolean letterbox
playback with letterbox
char prefix_dir[PATH_MAX]
char theme[64]
the theme name
boolean show_desktop_panel
short startup_phase
0 = normal , -1 or 1: fresh install, 2: workdir set, 3: startup tests passed, 4: aud pl chosen,...
boolean(* init_audio)(int in_sample_rate, int in_nchans, int argc, char **argv)
void(* exit_screen)(uint16_t mouse_x, uint16_t mouse_y)
boolean(* init_screen)(int width, int height, boolean fullscreen, uint64_t window_id, int argc, char **argv)
lives_checkstatus_t has_icedax
lives_checkstatus_t has_composite
lives_checkstatus_t has_jackd
lives_checkstatus_t has_dvgrab
lives_checkstatus_t has_pulse_audio
lives_checkstatus_t has_cdda2wav
lives_checkstatus_t has_convert
corresponds to one clip in the GUI
lives_clip_type_t clip_type
int vsize
frame height (vertical) in pixels
int hsize
frame width (horizontal) in pixels (NOT macropixels !)
char name[CLIP_NAME_MAXLEN]
the display name
lives_rfx_t * rfx
pointer to rfx for current delegate (or NULL)
ulong func
menuitem activation function for current delegate
int delegate
offset in list of current delegate
LiVESList * list
list of filter_idx from which user can delegate
LiVESXDevice * mouse_device
unused for gtk+ < 3.0.0
LiVESWidget * paste_as_new
LiVESWidget * vol_checkbuttons[NUM_VOL_LIGHTS][2]
LiVESWidget * freventbox1
LiVESWidget * vj_save_set
int def_width
default sizes for when no file is loaded
LiVESWidget * send_lives2lives
LiVESWidget * m_sepwinbutton
_vid_playback_plugin * vpp
video plugin
LiVESWidget * loop_ping_pong
LiVESWidget * m_rewindbutton
LiVESWidget * custom_gens_menu
int num_rendered_effects_builtin
LiVESWidget * fade_aud_out
LiVESWidget * advanced_menu
LiVESWidget * preferences
LiVESTextBuffer * layout_textbuffer
stores layout errors
LiVESWidget * open_device_submenu
LiVESWidget * delaudio_submenu
LiVESWidget * recent_submenu
LiVESWidget * save_rte_defs
LiVESWidget * show_messages
LiVESWidget * custom_tools_separator
LiVESWidget * p_loopbutton
LiVESWidget * export_theme
LiVESWidget * preview_image
LiVESWidget * p_playbutton
LiVESWidget * freventbox0
LiVESWidget * change_speed
LiVESWidget * open_loc_menu
LiVESTargetEntry * target_table
drag and drop target table
LiVESWidget * custom_effects_submenu
LiVESWidget * show_file_comments
LiVESWidget * t_stopbutton
void * pulsed
pulseaudio player
LiVESWidget * vol_toolitem
LiVESWidget * laudio_draw
LiVESWidget * custom_effects_separator
lives_clip_t * files[MAX_FILES+1]
+1 for the clipboard
LiVESWidget * preview_scale
LiVESWidget * custom_utilities_menu
LiVESWidget * preview_hbox
LiVESWidget * export_custom_rfx
LiVESWidget * splash_window
splash window
lives_painter_surface_t * ei_surface
LiVESWidget * troubleshoot
LiVESWidget * recent[N_RECENT_FILES]
LiVESWidget * custom_tools_submenu
lives_mgeometry_t * mgeom
multi-head support
LiVESAccelGroup * accel_group
boolean reconfig
set to TRUE if a monitor / screen size change is detected
LiVESWidget * custom_effects_menu
char frameblank_path[PATH_MAX]
???
volatile boolean loop_cont
LiVESWidget * resample_video
boolean ignore_screen_size
applied during frame reconfig events
LiVESWidget * record_perf
LiVESWidget * select_to_end
volatile boolean ext_audio
using external video playback plugin to stream audio
LiVESWidget * vj_load_set
LiVESWidget * preview_controls
LiVESWidget * resize_menuitem
LiVESWidget * select_last
LiVESWidget * open_firewire
LiVESList * cliplist
hash table of clips in menu order
LiVESWidget * volume_scale
volatile lives_cancel_t cancelled
LiVESWidget * preview_spinbutton
LiVESWidget * delall_audio
lives_painter_surface_t * pi_surface
LiVESWidget * rte_defs_menu
int num_rendered_effects_test
LiVESWidget * effects_menu
LiVESWidget * splash_progress
LiVESWidget * message_box
LiVESWidget * t_fullscreen
pthread_mutex_t clip_list_mutex
prevent adding/removing to cliplist while another thread could be reading it
LiVESWidget * gens_submenu
LiVESWidget * play_window
int num_rendered_effects_custom
LiVESWidget * open_lives2lives
LiVESWidget * select_to_aend
void * jackd
jack audio player / transport
LiVESWidget * recaudio_sel
LiVESAdjustment * msg_adj
LiVESWidget * spinbutton_pb_fps
LiVESWidget * export_proj
LiVESWidget * rte_separator
LiVESWidget * resample_audio
LiVESWidget * spinbutton_end
LiVESWidget * recent_menu
LiVESWidget * full_screen
LiVESWidget * m_mutebutton
LiVESWidget * show_devopts
LiVESWidget * select_from_start
LiVESWidget * delete_custom_rfx
LiVESWidget * import_theme
pthread_mutex_t vpp_stream_mutex
prevent from writing audio when stream is closing
LiVESWidget * select_invert
LiVESWidget * p_playselbutton
LiVESWidget * p_mutebutton
LiVESWidget * open_vcd_submenu
LiVESWidget * append_audio
LiVESWidget * raudio_draw
LiVESWidget * export_allaudio
LiVESWidget * m_stopbutton
LiVESWidget * select_end_only
LiVESWidget * open_hfirewire
LiVESWidget * btoolbar
button toolbar - clip editor
lives_fx_candidate_t fx_candidates[MAX_FX_CANDIDATE_TYPES]
< effects which can have candidates from which a delegate is selected (current examples are: audio_vo...
boolean ext_playback
using external video playback plugin
LiVESWidget * ext_audio_checkbutton
boolean suppress_dprint
tidy up, e.g. by blocking "switched to file..." and "closed file..." messages
int pheight
playback height
LiVESWidget * vj_show_keys
LiVESWidget * lock_selwidth
LiVESWidget * custom_utilities_submenu
LiVESWidget * utilities_submenu
LiVESWidget * hbox3
hbox with start / end spins and selection label (C.E.)
LiVESWidget * show_clipboard_info
LiVESWidget * m_loopbutton
LiVESWidget * p_rewindbutton
LiVESWidget * show_layout_errors
ulong toy_func_random_frames
char sepimg_path[PATH_MAX]
LiVESWidget * preview_box
LiVESWidget * import_proj
LiVESWidget * start_image
LiVESWidget * ext_audio_mon
LiVESWidget * spinbutton_start
LiVESWidget * recaudio_submenu
lives_mt * multitrack
holds a pointer to the entire multitrack environment; NULL in Clip Edit mode
LiVESWidget * promote_test_rfx
for future use
LiVESWidget * save_selection
boolean foreign
for external window capture
LiVESWidget * edit_test_rfx
LiVESWidget * trim_submenu
LiVESWidget * show_file_info
LiVESWidget * custom_tools_menu
LiVESWidget * splash_label
LiVESWidget * load_cdtrack
LiVESWidget * int_audio_checkbutton
LiVESWidget * normalize_audio
boolean is_processing
states
LiVESWidget * ldg_menuitem
lives_painter_surface_t * play_surface
LiVESWidget * rev_clipboard
lives_painter_surface_t * msg_surface
LiVESWidget * t_infobutton
LiVESWidget * open_vcd_menu
lives_painter_surface_t * si_surface
LiVESWidget * fade_aud_in
LiVESWidget * m_playbutton
LiVESWidget * toy_random_frames
LiVESWidget * m_playselbutton
LiVESWidget * pl_eventbox
LiVESWidget * export_submenu
LiVESWidget * expl_missing
LiVESList * affected_layouts_map
map of layouts with errors
LiVESWidget * select_submenu
LiVESWidget * delsel_audio
LiVESWidget * run_test_rfx_menu
int playing_file
which number file we are playing (or -1) [generally mainw->current_file]
LiVESWidget * select_start_only
LiVESWidget * trim_to_pstart
LiVESWidget * open_loc_submenu
ulong config_func
(GUI) function pointers
LiVESWidget * framecounter
LiVESWidget * export_selaudio
volatile boolean threaded_dialog
not really threaded ! but threaded_dialog_spin() can be called to animate it
LiVESWidget * recaudio_clip
LiVESWidget * utilities_menu
LiVESWidget * msg_scrollbar
LiVESWidget * rename_test_rfx
LiVESWidget * open_device_menu
LiVESWidget * delete_test_rfx
LiVESWidget * run_test_rfx_submenu
LiVESWidget * ins_silence
LiVESWidget * loop_continue
LiVESWidget * custom_gens_submenu
LiVESWidget * stop_button
LiVESWidget * cancel_button
LiVESWidget * pause_button
LiVESWidget * preview_button
#define lives_strdup_printf(fmt,...)