home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 June / ccd0605.iso / LINUX / gopchop-1.1.7.tar.tar / gopchop-1.1.7.tar / gopchop-1.1.7 / src / interface.c < prev    next >
C/C++ Source or Header  |  2005-05-01  |  61KB  |  1,247 lines

  1. /*
  2.  * DO NOT EDIT THIS FILE - it is generated by Glade.
  3.  */
  4.  
  5. #ifdef HAVE_CONFIG_H
  6. #  include <config.h>
  7. #endif
  8.  
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <unistd.h>
  12. #include <string.h>
  13. #include <stdio.h>
  14.  
  15. #include <gdk/gdkkeysyms.h>
  16. #include <gtk/gtk.h>
  17.  
  18. #include "callbacks.h"
  19. #include "interface.h"
  20. #include "support.h"
  21.  
  22. #define GLADE_HOOKUP_OBJECT(component,widget,name) \
  23.   g_object_set_data_full (G_OBJECT (component), name, \
  24.     gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
  25.  
  26. #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  27.   g_object_set_data (G_OBJECT (component), name, widget)
  28.  
  29. GtkWidget*
  30. create_main_window (void)
  31. {
  32.   GtkWidget *main_window;
  33.   GtkWidget *main_window_box;
  34.   GtkWidget *menubar;
  35.   GtkWidget *menu_file;
  36.   GtkWidget *menu_file_menu;
  37.   GtkWidget *menu_load_mpeg2;
  38.   GtkWidget *image22;
  39.   GtkWidget *menu_load_clip_list;
  40.   GtkWidget *image23;
  41.   GtkWidget *menu_save_clip_list;
  42.   GtkWidget *image24;
  43.   GtkWidget *menu_export_mpeg2;
  44.   GtkWidget *image25;
  45.   GtkWidget *menu_file_close;
  46.   GtkWidget *menu_file_separator;
  47.   GtkWidget *menu_file_quit;
  48.   GtkWidget *menu_edit;
  49.   GtkWidget *menu_edit_menu;
  50.   GtkWidget *menu_delete;
  51.   GtkWidget *menu_file_clear;
  52.   GtkWidget *separator1;
  53.   GtkWidget *menu_options_preferences;
  54.   GtkWidget *menu_view;
  55.   GtkWidget *menu_view_menu;
  56.   GtkWidget *menu_info_window;
  57.   GtkWidget *menu_video_window;
  58.   GtkWidget *menu_help;
  59.   GtkWidget *menu_help_menu;
  60.   GtkWidget *menu_help_about;
  61.   GtkWidget *image26;
  62.   GtkWidget *hseparator2;
  63.   GtkWidget *main_label_clips;
  64.   GtkWidget *main_scrolledwindow;
  65.   GtkWidget *main_clist;
  66.   GtkWidget *hbox3;
  67.   GtkObject *GOP_selector_spinbutton_adj;
  68.   GtkWidget *GOP_selector_spinbutton;
  69.   GtkWidget *GOP_selector;
  70.   GtkWidget *main_button_box;
  71.   GtkWidget *button_start_mark;
  72.   GtkWidget *main_label_mark;
  73.   GtkWidget *button_end_mark;
  74.   GtkWidget *vseparator1;
  75.   GtkWidget *button_prev;
  76.   GtkWidget *button_run;
  77.   GtkWidget *button_next;
  78.   GtkWidget *vbox2;
  79.   GtkWidget *slider_run_speed;
  80.   GtkWidget *label_run_speed;
  81.   GtkWidget *button_refresh;
  82.   GtkWidget *main_status_box;
  83.   GtkWidget *main_statusbar;
  84.   GtkWidget *main_progressbar;
  85.   GtkAccelGroup *accel_group;
  86.  
  87.   accel_group = gtk_accel_group_new ();
  88.  
  89.   main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  90.   gtk_widget_set_name (main_window, "main_window");
  91.   gtk_window_set_title (GTK_WINDOW (main_window), _("GOPchop"));
  92.  
  93.   main_window_box = gtk_vbox_new (FALSE, 0);
  94.   gtk_widget_set_name (main_window_box, "main_window_box");
  95.   gtk_widget_show (main_window_box);
  96.   gtk_container_add (GTK_CONTAINER (main_window), main_window_box);
  97.  
  98.   menubar = gtk_menu_bar_new ();
  99.   gtk_widget_set_name (menubar, "menubar");
  100.   gtk_widget_show (menubar);
  101.   gtk_box_pack_start (GTK_BOX (main_window_box), menubar, FALSE, FALSE, 0);
  102.  
  103.   menu_file = gtk_menu_item_new_with_mnemonic (_("_File"));
  104.   gtk_widget_set_name (menu_file, "menu_file");
  105.   gtk_widget_show (menu_file);
  106.   gtk_container_add (GTK_CONTAINER (menubar), menu_file);
  107.  
  108.   menu_file_menu = gtk_menu_new ();
  109.   gtk_widget_set_name (menu_file_menu, "menu_file_menu");
  110.   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_file), menu_file_menu);
  111.  
  112.   menu_load_mpeg2 = gtk_image_menu_item_new_with_mnemonic (_("Load _MPEG-2"));
  113.   gtk_widget_set_name (menu_load_mpeg2, "menu_load_mpeg2");
  114.   gtk_widget_show (menu_load_mpeg2);
  115.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_load_mpeg2);
  116.   gtk_widget_add_accelerator (menu_load_mpeg2, "activate", accel_group,
  117.                               GDK_N, GDK_CONTROL_MASK,
  118.                               GTK_ACCEL_VISIBLE);
  119.  
  120.   image22 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
  121.   gtk_widget_set_name (image22, "image22");
  122.   gtk_widget_show (image22);
  123.   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_mpeg2), image22);
  124.  
  125.   menu_load_clip_list = gtk_image_menu_item_new_with_mnemonic (_("_Load Clip List"));
  126.   gtk_widget_set_name (menu_load_clip_list, "menu_load_clip_list");
  127.   gtk_widget_show (menu_load_clip_list);
  128.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_load_clip_list);
  129.   gtk_widget_add_accelerator (menu_load_clip_list, "activate", accel_group,
  130.                               GDK_O, GDK_CONTROL_MASK,
  131.                               GTK_ACCEL_VISIBLE);
  132.  
  133.   image23 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
  134.   gtk_widget_set_name (image23, "image23");
  135.   gtk_widget_show (image23);
  136.   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_clip_list), image23);
  137.  
  138.   menu_save_clip_list = gtk_image_menu_item_new_with_mnemonic (_("_Save Clip List"));
  139.   gtk_widget_set_name (menu_save_clip_list, "menu_save_clip_list");
  140.   gtk_widget_show (menu_save_clip_list);
  141.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_save_clip_list);
  142.   gtk_widget_set_sensitive (menu_save_clip_list, FALSE);
  143.   gtk_widget_add_accelerator (menu_save_clip_list, "activate", accel_group,
  144.                               GDK_S, GDK_CONTROL_MASK,
  145.                               GTK_ACCEL_VISIBLE);
  146.  
  147.   image24 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
  148.   gtk_widget_set_name (image24, "image24");
  149.   gtk_widget_show (image24);
  150.   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_clip_list), image24);
  151.  
  152.   menu_export_mpeg2 = gtk_image_menu_item_new_with_mnemonic (_("_Export MPEG-2"));
  153.   gtk_widget_set_name (menu_export_mpeg2, "menu_export_mpeg2");
  154.   gtk_widget_show (menu_export_mpeg2);
  155.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_export_mpeg2);
  156.  
  157.   image25 = gtk_image_new_from_stock ("gtk-convert", GTK_ICON_SIZE_MENU);
  158.   gtk_widget_set_name (image25, "image25");
  159.   gtk_widget_show (image25);
  160.   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_export_mpeg2), image25);
  161.  
  162.   menu_file_close = gtk_image_menu_item_new_from_stock ("gtk-close", accel_group);
  163.   gtk_widget_set_name (menu_file_close, "menu_file_close");
  164.   gtk_widget_show (menu_file_close);
  165.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_file_close);
  166.   gtk_widget_set_sensitive (menu_file_close, FALSE);
  167.  
  168.   menu_file_separator = gtk_menu_item_new ();
  169.   gtk_widget_set_name (menu_file_separator, "menu_file_separator");
  170.   gtk_widget_show (menu_file_separator);
  171.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_file_separator);
  172.   gtk_widget_set_sensitive (menu_file_separator, FALSE);
  173.  
  174.   menu_file_quit = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group);
  175.   gtk_widget_set_name (menu_file_quit, "menu_file_quit");
  176.   gtk_widget_show (menu_file_quit);
  177.   gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_file_quit);
  178.  
  179.   menu_edit = gtk_menu_item_new_with_mnemonic (_("_Edit"));
  180.   gtk_widget_set_name (menu_edit, "menu_edit");
  181.   gtk_widget_show (menu_edit);
  182.   gtk_container_add (GTK_CONTAINER (menubar), menu_edit);
  183.  
  184.   menu_edit_menu = gtk_menu_new ();
  185.   gtk_widget_set_name (menu_edit_menu, "menu_edit_menu");
  186.   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_edit), menu_edit_menu);
  187.  
  188.   menu_delete = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group);
  189.   gtk_widget_set_name (menu_delete, "menu_delete");
  190.   gtk_widget_show (menu_delete);
  191.   gtk_container_add (GTK_CONTAINER (menu_edit_menu), menu_delete);
  192.  
  193.   menu_file_clear = gtk_image_menu_item_new_from_stock ("gtk-clear", accel_group);
  194.   gtk_widget_set_name (menu_file_clear, "menu_file_clear");
  195.   gtk_widget_show (menu_file_clear);
  196.   gtk_container_add (GTK_CONTAINER (menu_edit_menu), menu_file_clear);
  197.  
  198.   separator1 = gtk_menu_item_new ();
  199.   gtk_widget_set_name (separator1, "separator1");
  200.   gtk_widget_show (separator1);
  201.   gtk_container_add (GTK_CONTAINER (menu_edit_menu), separator1);
  202.   gtk_widget_set_sensitive (separator1, FALSE);
  203.  
  204.   menu_options_preferences = gtk_image_menu_item_new_from_stock ("gtk-preferences", accel_group);
  205.   gtk_widget_set_name (menu_options_preferences, "menu_options_preferences");
  206.   gtk_widget_show (menu_options_preferences);
  207.   gtk_container_add (GTK_CONTAINER (menu_edit_menu), menu_options_preferences);
  208.   gtk_widget_set_sensitive (menu_options_preferences, FALSE);
  209.  
  210.   menu_view = gtk_menu_item_new_with_mnemonic (_("_View"));
  211.   gtk_widget_set_name (menu_view, "menu_view");
  212.   gtk_widget_show (menu_view);
  213.   gtk_container_add (GTK_CONTAINER (menubar), menu_view);
  214.  
  215.   menu_view_menu = gtk_menu_new ();
  216.   gtk_widget_set_name (menu_view_menu, "menu_view_menu");
  217.   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_view), menu_view_menu);
  218.  
  219.   menu_info_window = gtk_check_menu_item_new_with_mnemonic (_("Info Window"));
  220.   gtk_widget_set_name (menu_info_window, "menu_info_window");
  221.   gtk_widget_show (menu_info_window);
  222.   gtk_container_add (GTK_CONTAINER (menu_view_menu), menu_info_window);
  223.   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_info_window), TRUE);
  224.  
  225.   menu_video_window = gtk_check_menu_item_new_with_mnemonic (_("Video Window"));
  226.   gtk_widget_set_name (menu_video_window, "menu_video_window");
  227.   gtk_container_add (GTK_CONTAINER (menu_view_menu), menu_video_window);
  228.  
  229.   menu_help = gtk_menu_item_new_with_mnemonic (_("_Help"));
  230.   gtk_widget_set_name (menu_help, "menu_help");
  231.   gtk_widget_show (menu_help);
  232.   gtk_container_add (GTK_CONTAINER (menubar), menu_help);
  233.  
  234.   menu_help_menu = gtk_menu_new ();
  235.   gtk_widget_set_name (menu_help_menu, "menu_help_menu");
  236.   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_help), menu_help_menu);
  237.  
  238.   menu_help_about = gtk_image_menu_item_new_with_mnemonic (_("_About..."));
  239.   gtk_widget_set_name (menu_help_about, "menu_help_about");
  240.   gtk_widget_show (menu_help_about);
  241.   gtk_container_add (GTK_CONTAINER (menu_help_menu), menu_help_about);
  242.  
  243.   image26 = create_pixmap (main_window, "menu_about.png");
  244.   gtk_widget_set_name (image26, "image26");
  245.   gtk_widget_show (image26);
  246.   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_help_about), image26);
  247.  
  248.   hseparator2 = gtk_hseparator_new ();
  249.   gtk_widget_set_name (hseparator2, "hseparator2");
  250.   gtk_widget_show (hseparator2);
  251.   gtk_box_pack_start (GTK_BOX (main_window_box), hseparator2, FALSE, TRUE, 0);
  252.  
  253.   main_label_clips = gtk_label_new (_("Clips: 0"));
  254.   gtk_widget_set_name (main_label_clips, "main_label_clips");
  255.   gtk_widget_show (main_label_clips);
  256.   gtk_box_pack_start (GTK_BOX (main_window_box), main_label_clips, FALSE, FALSE, 0);
  257.   gtk_label_set_justify (GTK_LABEL (main_label_clips), GTK_JUSTIFY_CENTER);
  258.  
  259.   main_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
  260.   gtk_widget_set_name (main_scrolledwindow, "main_scrolledwindow");
  261.   gtk_widget_show (main_scrolledwindow);
  262.   gtk_box_pack_start (GTK_BOX (main_window_box), main_scrolledwindow, TRUE, TRUE, 0);
  263.   GTK_WIDGET_UNSET_FLAGS (main_scrolledwindow, GTK_CAN_FOCUS);
  264.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (main_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  265.   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (main_scrolledwindow), GTK_SHADOW_IN);
  266.  
  267.   main_clist = gtk_tree_view_new ();
  268.   gtk_widget_set_name (main_clist, "main_clist");
  269.   gtk_widget_show (main_clist);
  270.   gtk_container_add (GTK_CONTAINER (main_scrolledwindow), main_clist);
  271.  
  272.   hbox3 = gtk_hbox_new (FALSE, 0);
  273.   gtk_widget_set_name (hbox3, "hbox3");
  274.   gtk_widget_show (hbox3);
  275.   gtk_box_pack_start (GTK_BOX (main_window_box), hbox3, FALSE, TRUE, 0);
  276.  
  277.   GOP_selector_spinbutton_adj = gtk_adjustment_new (0, 0, 20, 1, 2, 1);
  278.   GOP_selector_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (GOP_selector_spinbutton_adj), 1, 0);
  279.   gtk_widget_set_name (GOP_selector_spinbutton, "GOP_selector_spinbutton");
  280.   gtk_widget_show (GOP_selector_spinbutton);
  281.   gtk_box_pack_start (GTK_BOX (hbox3), GOP_selector_spinbutton, FALSE, TRUE, 0);
  282.  
  283.   GOP_selector = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 20, 1, 2, 1)));
  284.   gtk_widget_set_name (GOP_selector, "GOP_selector");
  285.   gtk_widget_show (GOP_selector);
  286.   gtk_box_pack_start (GTK_BOX (hbox3), GOP_selector, TRUE, TRUE, 0);
  287.   gtk_scale_set_draw_value (GTK_SCALE (GOP_selector), FALSE);
  288.   gtk_scale_set_digits (GTK_SCALE (GOP_selector), 0);
  289.  
  290.   main_button_box = gtk_hbox_new (TRUE, 0);
  291.   gtk_widget_set_name (main_button_box, "main_button_box");
  292.   gtk_widget_show (main_button_box);
  293.   gtk_box_pack_start (GTK_BOX (main_window_box), main_button_box, FALSE, TRUE, 0);
  294.  
  295.   button_start_mark = gtk_toggle_button_new_with_mnemonic (_("Start Mark"));
  296.   gtk_widget_set_name (button_start_mark, "button_start_mark");
  297.   gtk_widget_show (button_start_mark);
  298.   gtk_box_pack_start (GTK_BOX (main_button_box), button_start_mark, FALSE, FALSE, 0);
  299.   gtk_container_set_border_width (GTK_CONTAINER (button_start_mark), 4);
  300.  
  301.   main_label_mark = gtk_label_new (_("no mark set"));
  302.   gtk_widget_set_name (main_label_mark, "main_label_mark");
  303.   gtk_widget_show (main_label_mark);
  304.   gtk_box_pack_start (GTK_BOX (main_button_box), main_label_mark, FALSE, FALSE, 0);
  305.   gtk_label_set_justify (GTK_LABEL (main_label_mark), GTK_JUSTIFY_CENTER);
  306.  
  307.   button_end_mark = gtk_button_new_with_mnemonic (_("End Mark"));
  308.   gtk_widget_set_name (button_end_mark, "button_end_mark");
  309.   gtk_widget_show (button_end_mark);
  310.   gtk_box_pack_start (GTK_BOX (main_button_box), button_end_mark, FALSE, FALSE, 0);
  311.   gtk_container_set_border_width (GTK_CONTAINER (button_end_mark), 4);
  312.   gtk_widget_set_sensitive (button_end_mark, FALSE);
  313.  
  314.   vseparator1 = gtk_vseparator_new ();
  315.   gtk_widget_set_name (vseparator1, "vseparator1");
  316.   gtk_widget_show (vseparator1);
  317.   gtk_box_pack_start (GTK_BOX (main_button_box), vseparator1, TRUE, TRUE, 0);
  318.  
  319.   button_prev = gtk_button_new_with_mnemonic (_("Prev"));
  320.   gtk_widget_set_name (button_prev, "button_prev");
  321.   gtk_widget_show (button_prev);
  322.   gtk_box_pack_start (GTK_BOX (main_button_box), button_prev, FALSE, FALSE, 0);
  323.   gtk_container_set_border_width (GTK_CONTAINER (button_prev), 4);
  324.   gtk_widget_set_sensitive (button_prev, FALSE);
  325.  
  326.   button_run = gtk_toggle_button_new_with_mnemonic (_("Run"));
  327.   gtk_widget_set_name (button_run, "button_run");
  328.   gtk_widget_show (button_run);
  329.   gtk_box_pack_start (GTK_BOX (main_button_box), button_run, FALSE, FALSE, 0);
  330.   gtk_container_set_border_width (GTK_CONTAINER (button_run), 4);
  331.   gtk_widget_set_sensitive (button_run, FALSE);
  332.  
  333.   button_next = gtk_button_new_with_mnemonic (_("Next"));
  334.   gtk_widget_set_name (button_next, "button_next");
  335.   gtk_widget_show (button_next);
  336.   gtk_box_pack_start (GTK_BOX (main_button_box), button_next, FALSE, FALSE, 0);
  337.   gtk_container_set_border_width (GTK_CONTAINER (button_next), 4);
  338.   gtk_widget_set_sensitive (button_next, FALSE);
  339.  
  340.   vbox2 = gtk_vbox_new (FALSE, 0);
  341.   gtk_widget_set_name (vbox2, "vbox2");
  342.   gtk_widget_show (vbox2);
  343.   gtk_box_pack_start (GTK_BOX (main_button_box), vbox2, TRUE, TRUE, 0);
  344.  
  345.   slider_run_speed = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (1, 1, 100, 1, 2, 1)));
  346.   gtk_widget_set_name (slider_run_speed, "slider_run_speed");
  347.   gtk_widget_show (slider_run_speed);
  348.   gtk_box_pack_start (GTK_BOX (vbox2), slider_run_speed, TRUE, TRUE, 0);
  349.   gtk_scale_set_digits (GTK_SCALE (slider_run_speed), 0);
  350.  
  351.   label_run_speed = gtk_label_new (_("Run Speed"));
  352.   gtk_widget_set_name (label_run_speed, "label_run_speed");
  353.   gtk_widget_show (label_run_speed);
  354.   gtk_box_pack_start (GTK_BOX (vbox2), label_run_speed, FALSE, FALSE, 0);
  355.   gtk_label_set_justify (GTK_LABEL (label_run_speed), GTK_JUSTIFY_CENTER);
  356.  
  357.   button_refresh = gtk_button_new_with_mnemonic (_("Refresh"));
  358.   gtk_widget_set_name (button_refresh, "button_refresh");
  359.   gtk_widget_show (button_refresh);
  360.   gtk_box_pack_start (GTK_BOX (main_button_box), button_refresh, FALSE, FALSE, 0);
  361.   gtk_container_set_border_width (GTK_CONTAINER (button_refresh), 4);
  362.   gtk_widget_set_sensitive (button_refresh, FALSE);
  363.  
  364.   main_status_box = gtk_hbox_new (FALSE, 0);
  365.   gtk_widget_set_name (main_status_box, "main_status_box");
  366.   gtk_widget_show (main_status_box);
  367.   gtk_box_pack_start (GTK_BOX (main_window_box), main_status_box, FALSE, TRUE, 0);
  368.  
  369.   main_statusbar = gtk_statusbar_new ();
  370.   gtk_widget_set_name (main_statusbar, "main_statusbar");
  371.   gtk_widget_show (main_statusbar);
  372.   gtk_box_pack_start (GTK_BOX (main_status_box), main_statusbar, TRUE, TRUE, 0);
  373.  
  374.   main_progressbar = gtk_progress_bar_new ();
  375.   gtk_widget_set_name (main_progressbar, "main_progressbar");
  376.   gtk_widget_show (main_progressbar);
  377.   gtk_box_pack_start (GTK_BOX (main_status_box), main_progressbar, TRUE, TRUE, 0);
  378.  
  379.   g_signal_connect ((gpointer) main_window, "delete_event",
  380.                     G_CALLBACK (on_main_window_delete_event),
  381.                     NULL);
  382.   g_signal_connect ((gpointer) menu_load_mpeg2, "activate",
  383.                     G_CALLBACK (on_menu_load_mpeg2_activate),
  384.                     NULL);
  385.   g_signal_connect ((gpointer) menu_load_clip_list, "activate",
  386.                     G_CALLBACK (on_menu_load_clip_list_activate),
  387.                     NULL);
  388.   g_signal_connect ((gpointer) menu_save_clip_list, "activate",
  389.                     G_CALLBACK (on_menu_save_clip_list_activate),
  390.                     NULL);
  391.   g_signal_connect ((gpointer) menu_export_mpeg2, "activate",
  392.                     G_CALLBACK (on_menu_export_mpeg2_activate),
  393.                     NULL);
  394.   g_signal_connect ((gpointer) menu_file_close, "activate",
  395.                     G_CALLBACK (on_menu_file_close_activate),
  396.                     NULL);
  397.   g_signal_connect ((gpointer) menu_file_quit, "activate",
  398.                     G_CALLBACK (on_menu_file_quit_activate),
  399.                     NULL);
  400.   g_signal_connect ((gpointer) menu_delete, "activate",
  401.                     G_CALLBACK (on_menu_delete_activate),
  402.                     NULL);
  403.   g_signal_connect ((gpointer) menu_file_clear, "activate",
  404.                     G_CALLBACK (on_menu_file_clear_activate),
  405.                     NULL);
  406.   g_signal_connect ((gpointer) menu_options_preferences, "activate",
  407.                     G_CALLBACK (on_menu_options_preferences_activate),
  408.                     NULL);
  409.   g_signal_connect ((gpointer) menu_info_window, "activate",
  410.                     G_CALLBACK (on_menu_info_window_activate),
  411.                     NULL);
  412.   g_signal_connect ((gpointer) menu_video_window, "activate",
  413.                     G_CALLBACK (on_menu_video_window_activate),
  414.                     NULL);
  415.   g_signal_connect ((gpointer) menu_help_about, "activate",
  416.                     G_CALLBACK (on_menu_help_about_activate),
  417.                     NULL);
  418.   g_signal_connect ((gpointer) main_clist, "key_press_event",
  419.                     G_CALLBACK (on_main_clist_key_press_event),
  420.                     NULL);
  421.   g_signal_connect ((gpointer) main_clist, "button_press_event",
  422.                     G_CALLBACK (on_main_clist_button_press_event),
  423.                     NULL);
  424.   g_signal_connect ((gpointer) GOP_selector_spinbutton, "value_changed",
  425.                     G_CALLBACK (on_GOP_selector_spinbutton_value_changed),
  426.                     NULL);
  427.   g_signal_connect ((gpointer) GOP_selector, "value_changed",
  428.                     G_CALLBACK (on_GOP_selector_value_changed),
  429.                     NULL);
  430.   g_signal_connect ((gpointer) button_start_mark, "toggled",
  431.                     G_CALLBACK (on_button_start_mark_toggled),
  432.                     NULL);
  433.   g_signal_connect ((gpointer) button_end_mark, "clicked",
  434.                     G_CALLBACK (on_button_end_mark_clicked),
  435.                     NULL);
  436.   g_signal_connect ((gpointer) button_prev, "clicked",
  437.                     G_CALLBACK (on_button_prev_clicked),
  438.                     NULL);
  439.   g_signal_connect ((gpointer) button_run, "toggled",
  440.                     G_CALLBACK (on_button_run_toggled),
  441.                     NULL);
  442.   g_signal_connect ((gpointer) button_next, "clicked",
  443.                     G_CALLBACK (on_button_next_clicked),
  444.                     NULL);
  445.   g_signal_connect ((gpointer) slider_run_speed, "value_changed",
  446.                     G_CALLBACK (on_slider_run_speed_value_changed),
  447.                     NULL);
  448.   g_signal_connect ((gpointer) button_refresh, "clicked",
  449.                     G_CALLBACK (on_button_refresh_clicked),
  450.                     NULL);
  451.  
  452.   /* Store pointers to all widgets, for use by lookup_widget(). */
  453.   GLADE_HOOKUP_OBJECT_NO_REF (main_window, main_window, "main_window");
  454.   GLADE_HOOKUP_OBJECT (main_window, main_window_box, "main_window_box");
  455.   GLADE_HOOKUP_OBJECT (main_window, menubar, "menubar");
  456.   GLADE_HOOKUP_OBJECT (main_window, menu_file, "menu_file");
  457.   GLADE_HOOKUP_OBJECT (main_window, menu_file_menu, "menu_file_menu");
  458.   GLADE_HOOKUP_OBJECT (main_window, menu_load_mpeg2, "menu_load_mpeg2");
  459.   GLADE_HOOKUP_OBJECT (main_window, image22, "image22");
  460.   GLADE_HOOKUP_OBJECT (main_window, menu_load_clip_list, "menu_load_clip_list");
  461.   GLADE_HOOKUP_OBJECT (main_window, image23, "image23");
  462.   GLADE_HOOKUP_OBJECT (main_window, menu_save_clip_list, "menu_save_clip_list");
  463.   GLADE_HOOKUP_OBJECT (main_window, image24, "image24");
  464.   GLADE_HOOKUP_OBJECT (main_window, menu_export_mpeg2, "menu_export_mpeg2");
  465.   GLADE_HOOKUP_OBJECT (main_window, image25, "image25");
  466.   GLADE_HOOKUP_OBJECT (main_window, menu_file_close, "menu_file_close");
  467.   GLADE_HOOKUP_OBJECT (main_window, menu_file_separator, "menu_file_separator");
  468.   GLADE_HOOKUP_OBJECT (main_window, menu_file_quit, "menu_file_quit");
  469.   GLADE_HOOKUP_OBJECT (main_window, menu_edit, "menu_edit");
  470.   GLADE_HOOKUP_OBJECT (main_window, menu_edit_menu, "menu_edit_menu");
  471.   GLADE_HOOKUP_OBJECT (main_window, menu_delete, "menu_delete");
  472.   GLADE_HOOKUP_OBJECT (main_window, menu_file_clear, "menu_file_clear");
  473.   GLADE_HOOKUP_OBJECT (main_window, separator1, "separator1");
  474.   GLADE_HOOKUP_OBJECT (main_window, menu_options_preferences, "menu_options_preferences");
  475.   GLADE_HOOKUP_OBJECT (main_window, menu_view, "menu_view");
  476.   GLADE_HOOKUP_OBJECT (main_window, menu_view_menu, "menu_view_menu");
  477.   GLADE_HOOKUP_OBJECT (main_window, menu_info_window, "menu_info_window");
  478.   GLADE_HOOKUP_OBJECT (main_window, menu_video_window, "menu_video_window");
  479.   GLADE_HOOKUP_OBJECT (main_window, menu_help, "menu_help");
  480.   GLADE_HOOKUP_OBJECT (main_window, menu_help_menu, "menu_help_menu");
  481.   GLADE_HOOKUP_OBJECT (main_window, menu_help_about, "menu_help_about");
  482.   GLADE_HOOKUP_OBJECT (main_window, image26, "image26");
  483.   GLADE_HOOKUP_OBJECT (main_window, hseparator2, "hseparator2");
  484.   GLADE_HOOKUP_OBJECT (main_window, main_label_clips, "main_label_clips");
  485.   GLADE_HOOKUP_OBJECT (main_window, main_scrolledwindow, "main_scrolledwindow");
  486.   GLADE_HOOKUP_OBJECT (main_window, main_clist, "main_clist");
  487.   GLADE_HOOKUP_OBJECT (main_window, hbox3, "hbox3");
  488.   GLADE_HOOKUP_OBJECT (main_window, GOP_selector_spinbutton, "GOP_selector_spinbutton");
  489.   GLADE_HOOKUP_OBJECT (main_window, GOP_selector, "GOP_selector");
  490.   GLADE_HOOKUP_OBJECT (main_window, main_button_box, "main_button_box");
  491.   GLADE_HOOKUP_OBJECT (main_window, button_start_mark, "button_start_mark");
  492.   GLADE_HOOKUP_OBJECT (main_window, main_label_mark, "main_label_mark");
  493.   GLADE_HOOKUP_OBJECT (main_window, button_end_mark, "button_end_mark");
  494.   GLADE_HOOKUP_OBJECT (main_window, vseparator1, "vseparator1");
  495.   GLADE_HOOKUP_OBJECT (main_window, button_prev, "button_prev");
  496.   GLADE_HOOKUP_OBJECT (main_window, button_run, "button_run");
  497.   GLADE_HOOKUP_OBJECT (main_window, button_next, "button_next");
  498.   GLADE_HOOKUP_OBJECT (main_window, vbox2, "vbox2");
  499.   GLADE_HOOKUP_OBJECT (main_window, slider_run_speed, "slider_run_speed");
  500.   GLADE_HOOKUP_OBJECT (main_window, label_run_speed, "label_run_speed");
  501.   GLADE_HOOKUP_OBJECT (main_window, button_refresh, "button_refresh");
  502.   GLADE_HOOKUP_OBJECT (main_window, main_status_box, "main_status_box");
  503.   GLADE_HOOKUP_OBJECT (main_window, main_statusbar, "main_statusbar");
  504.   GLADE_HOOKUP_OBJECT (main_window, main_progressbar, "main_progressbar");
  505.  
  506.   gtk_window_add_accel_group (GTK_WINDOW (main_window), accel_group);
  507.  
  508.   return main_window;
  509. }
  510.  
  511. GtkWidget*
  512. create_about_window (void)
  513. {
  514.   GtkWidget *about_window;
  515.   GtkWidget *about_box;
  516.   GtkWidget *about_box_picture;
  517.   GtkWidget *about_pixmap;
  518.   GtkWidget *about_label_version;
  519.   GtkWidget *about_label_cvsid;
  520.   GtkWidget *about_label_gpl;
  521.   GtkWidget *about_box_buttons;
  522.   GtkWidget *about_button_cool;
  523.   GtkWidget *label2;
  524.  
  525.   about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  526.   gtk_widget_set_name (about_window, "about_window");
  527.   gtk_window_set_title (GTK_WINDOW (about_window), _("About..."));
  528.  
  529.   about_box = gtk_vbox_new (FALSE, 0);
  530.   gtk_widget_set_name (about_box, "about_box");
  531.   gtk_widget_show (about_box);
  532.   gtk_container_add (GTK_CONTAINER (about_window), about_box);
  533.   gtk_container_set_border_width (GTK_CONTAINER (about_box), 4);
  534.  
  535.   about_box_picture = gtk_vbox_new (FALSE, 0);
  536.   gtk_widget_set_name (about_box_picture, "about_box_picture");
  537.   gtk_widget_show (about_box_picture);
  538.   gtk_box_pack_start (GTK_BOX (about_box), about_box_picture, TRUE, TRUE, 4);
  539.  
  540.   about_pixmap = create_pixmap (about_window, "about.xpm");
  541.   gtk_widget_set_name (about_pixmap, "about_pixmap");
  542.   gtk_widget_show (about_pixmap);
  543.   gtk_box_pack_start (GTK_BOX (about_box_picture), about_pixmap, FALSE, FALSE, 0);
  544.  
  545.   about_label_version = gtk_label_new (_("GOPchop"));
  546.   gtk_widget_set_name (about_label_version, "about_label_version");
  547.   gtk_widget_show (about_label_version);
  548.   gtk_box_pack_start (GTK_BOX (about_box), about_label_version, FALSE, FALSE, 0);
  549.   gtk_label_set_justify (GTK_LABEL (about_label_version), GTK_JUSTIFY_CENTER);
  550.  
  551.   about_label_cvsid = gtk_label_new (_("CVS"));
  552.   gtk_widget_set_name (about_label_cvsid, "about_label_cvsid");
  553.   gtk_widget_show (about_label_cvsid);
  554.   gtk_box_pack_start (GTK_BOX (about_box), about_label_cvsid, FALSE, FALSE, 0);
  555.   gtk_label_set_justify (GTK_LABEL (about_label_cvsid), GTK_JUSTIFY_CENTER);
  556.  
  557.   about_label_gpl = gtk_label_new (_("Copyright 2001-2004\nKees Cook <kees@outflux.net>\n\nGOPchop is a GOP-accurate MPEG2-PS editor.\n\n\nGOPchop comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome\nto redistribute it under certain conditions;\nfor details visit:\n\nhttp://www.gnu.org/copyleft/gpl.html\n"));
  558.   gtk_widget_set_name (about_label_gpl, "about_label_gpl");
  559.   gtk_widget_show (about_label_gpl);
  560.   gtk_box_pack_start (GTK_BOX (about_box), about_label_gpl, FALSE, FALSE, 0);
  561.   gtk_label_set_justify (GTK_LABEL (about_label_gpl), GTK_JUSTIFY_CENTER);
  562.  
  563.   about_box_buttons = gtk_hbox_new (TRUE, 0);
  564.   gtk_widget_set_name (about_box_buttons, "about_box_buttons");
  565.   gtk_widget_show (about_box_buttons);
  566.   gtk_box_pack_start (GTK_BOX (about_box), about_box_buttons, FALSE, TRUE, 0);
  567.  
  568.   about_button_cool = gtk_button_new_with_mnemonic (_("Cool"));
  569.   gtk_widget_set_name (about_button_cool, "about_button_cool");
  570.   gtk_widget_show (about_button_cool);
  571.   gtk_box_pack_start (GTK_BOX (about_box_buttons), about_button_cool, FALSE, FALSE, 0);
  572.   gtk_container_set_border_width (GTK_CONTAINER (about_button_cool), 4);
  573.  
  574.   label2 = gtk_label_new (_("(Image from www.sciencephotography.com)"));
  575.   gtk_widget_set_name (label2, "label2");
  576.   gtk_widget_show (label2);
  577.   gtk_box_pack_start (GTK_BOX (about_box), label2, FALSE, FALSE, 0);
  578.   gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER);
  579.  
  580.   g_signal_connect ((gpointer) about_window, "destroy",
  581.                     G_CALLBACK (on_about_window_destroy),
  582.                     NULL);
  583.   g_signal_connect ((gpointer) about_button_cool, "clicked",
  584.                     G_CALLBACK (on_about_button_cool_clicked),
  585.                     NULL);
  586.  
  587.   /* Store pointers to all widgets, for use by lookup_widget(). */
  588.   GLADE_HOOKUP_OBJECT_NO_REF (about_window, about_window, "about_window");
  589.   GLADE_HOOKUP_OBJECT (about_window, about_box, "about_box");
  590.   GLADE_HOOKUP_OBJECT (about_window, about_box_picture, "about_box_picture");
  591.   GLADE_HOOKUP_OBJECT (about_window, about_pixmap, "about_pixmap");
  592.   GLADE_HOOKUP_OBJECT (about_window, about_label_version, "about_label_version");
  593.   GLADE_HOOKUP_OBJECT (about_window, about_label_cvsid, "about_label_cvsid");
  594.   GLADE_HOOKUP_OBJECT (about_window, about_label_gpl, "about_label_gpl");
  595.   GLADE_HOOKUP_OBJECT (about_window, about_box_buttons, "about_box_buttons");
  596.   GLADE_HOOKUP_OBJECT (about_window, about_button_cool, "about_button_cool");
  597.   GLADE_HOOKUP_OBJECT (about_window, label2, "label2");
  598.  
  599.   return about_window;
  600. }
  601.  
  602. GtkWidget*
  603. create_preferences_window (void)
  604. {
  605.   GtkWidget *preferences_window;
  606.   GtkWidget *dialog_vbox2;
  607.   GtkWidget *vbox3;
  608.   GtkWidget *pref_frame_general;
  609.   GtkWidget *vbox4;
  610.   GtkWidget *hbox1;
  611.   GtkWidget *label6;
  612.   GtkWidget *video_output_driver_combo;
  613.   GtkWidget *combo_entry1;
  614.   GtkWidget *hbox2;
  615.   GtkWidget *label7;
  616.   GtkWidget *default_run_speed_slider;
  617.   GtkObject *default_run_speed_spinner_adj;
  618.   GtkWidget *default_run_speed_spinner;
  619.   GtkWidget *run_loop_checkbutton;
  620.   GtkWidget *auto_refresh_checkbutton;
  621.   GtkWidget *label3;
  622.   GtkWidget *pref_frame_advanced;
  623.   GtkWidget *vbox7;
  624.   GtkWidget *drop_orphaned_frames_checkbutton;
  625.   GtkWidget *adjust_timestamps_checkbutton;
  626.   GtkWidget *force_system_header_checkbutton;
  627.   GtkWidget *drop_trailing_pack_with_system_header_checkbutton;
  628.   GtkWidget *ignore_endcode_checkbutton;
  629.   GtkWidget *label8;
  630.   GtkWidget *pref_frame_devel;
  631.   GtkWidget *vbox6;
  632.   GtkWidget *ignore_errors_checkbutton;
  633.   GtkWidget *label5;
  634.   GtkWidget *dialog_action_area2;
  635.   GtkWidget *cancelbutton1;
  636.   GtkWidget *okbutton1;
  637.   GtkTooltips *tooltips;
  638.  
  639.   tooltips = gtk_tooltips_new ();
  640.  
  641.   preferences_window = gtk_dialog_new ();
  642.   gtk_widget_set_name (preferences_window, "preferences_window");
  643.   gtk_window_set_title (GTK_WINDOW (preferences_window), _("Preferences"));
  644.   gtk_window_set_modal (GTK_WINDOW (preferences_window), TRUE);
  645.   gtk_window_set_resizable (GTK_WINDOW (preferences_window), FALSE);
  646.   gtk_window_set_type_hint (GTK_WINDOW (preferences_window), GDK_WINDOW_TYPE_HINT_DIALOG);
  647.  
  648.   dialog_vbox2 = GTK_DIALOG (preferences_window)->vbox;
  649.   gtk_widget_set_name (dialog_vbox2, "dialog_vbox2");
  650.   gtk_widget_show (dialog_vbox2);
  651.  
  652.   vbox3 = gtk_vbox_new (FALSE, 0);
  653.   gtk_widget_set_name (vbox3, "vbox3");
  654.   gtk_widget_show (vbox3);
  655.   gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox3, TRUE, TRUE, 0);
  656.  
  657.   pref_frame_general = gtk_frame_new (NULL);
  658.   gtk_widget_set_name (pref_frame_general, "pref_frame_general");
  659.   gtk_widget_show (pref_frame_general);
  660.   gtk_box_pack_start (GTK_BOX (vbox3), pref_frame_general, TRUE, TRUE, 3);
  661.   gtk_container_set_border_width (GTK_CONTAINER (pref_frame_general), 3);
  662.  
  663.   vbox4 = gtk_vbox_new (FALSE, 2);
  664.   gtk_widget_set_name (vbox4, "vbox4");
  665.   gtk_widget_show (vbox4);
  666.   gtk_container_add (GTK_CONTAINER (pref_frame_general), vbox4);
  667.  
  668.   hbox1 = gtk_hbox_new (FALSE, 0);
  669.   gtk_widget_set_name (hbox1, "hbox1");
  670.   gtk_widget_show (hbox1);
  671.   gtk_box_pack_start (GTK_BOX (vbox4), hbox1, TRUE, TRUE, 0);
  672.  
  673.   label6 = gtk_label_new (_("Video Output Driver"));
  674.   gtk_widget_set_name (label6, "label6");
  675.   gtk_widget_show (label6);
  676.   gtk_box_pack_start (GTK_BOX (hbox1), label6, FALSE, FALSE, 0);
  677.  
  678.   video_output_driver_combo = gtk_combo_new ();
  679.   g_object_set_data (G_OBJECT (GTK_COMBO (video_output_driver_combo)->popwin),
  680.                      "GladeParentKey", video_output_driver_combo);
  681.   gtk_widget_set_name (video_output_driver_combo, "video_output_driver_combo");
  682.   gtk_widget_show (video_output_driver_combo);
  683.   gtk_box_pack_start (GTK_BOX (hbox1), video_output_driver_combo, FALSE, FALSE, 10);
  684.   gtk_widget_set_size_request (video_output_driver_combo, 90, 24);
  685.  
  686.   combo_entry1 = GTK_COMBO (video_output_driver_combo)->entry;
  687.   gtk_widget_set_name (combo_entry1, "combo_entry1");
  688.   gtk_widget_show (combo_entry1);
  689.   gtk_widget_set_size_request (combo_entry1, 60, 24);
  690.   gtk_tooltips_set_tip (tooltips, combo_entry1, _("Desired output video driver.  The \"xv\" drivers are recommended, since they can correct for non-square aspect ratios."), NULL);
  691.   gtk_editable_set_editable (GTK_EDITABLE (combo_entry1), FALSE);
  692.  
  693.   hbox2 = gtk_hbox_new (FALSE, 0);
  694.   gtk_widget_set_name (hbox2, "hbox2");
  695.   gtk_widget_show (hbox2);
  696.   gtk_box_pack_start (GTK_BOX (vbox4), hbox2, FALSE, FALSE, 0);
  697.  
  698.   label7 = gtk_label_new (_("Default Run Speed"));
  699.   gtk_widget_set_name (label7, "label7");
  700.   gtk_widget_show (label7);
  701.   gtk_box_pack_start (GTK_BOX (hbox2), label7, FALSE, FALSE, 0);
  702.  
  703.   default_run_speed_slider = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (1, 1, 100, 1, 2, 1)));
  704.   gtk_widget_set_name (default_run_speed_slider, "default_run_speed_slider");
  705.   gtk_widget_show (default_run_speed_slider);
  706.   gtk_box_pack_start (GTK_BOX (hbox2), default_run_speed_slider, TRUE, TRUE, 7);
  707.   gtk_scale_set_draw_value (GTK_SCALE (default_run_speed_slider), FALSE);
  708.   gtk_scale_set_digits (GTK_SCALE (default_run_speed_slider), 0);
  709.  
  710.   default_run_speed_spinner_adj = gtk_adjustment_new (1, 1, 100, 1, 5, 25);
  711.   default_run_speed_spinner = gtk_spin_button_new (GTK_ADJUSTMENT (default_run_speed_spinner_adj), 1, 0);
  712.   gtk_widget_set_name (default_run_speed_spinner, "default_run_speed_spinner");
  713.   gtk_widget_show (default_run_speed_spinner);
  714.   gtk_box_pack_start (GTK_BOX (hbox2), default_run_speed_spinner, FALSE, FALSE, 0);
  715.   gtk_tooltips_set_tip (tooltips, default_run_speed_spinner, _("On load, sets the Run Speed to this value."), NULL);
  716.   gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (default_run_speed_spinner), TRUE);
  717.  
  718.   run_loop_checkbutton = gtk_check_button_new_with_mnemonic (_("Run Loop"));
  719.   gtk_widget_set_name (run_loop_checkbutton, "run_loop_checkbutton");
  720.   gtk_widget_show (run_loop_checkbutton);
  721.   gtk_box_pack_start (GTK_BOX (vbox4), run_loop_checkbutton, FALSE, FALSE, 0);
  722.   gtk_tooltips_set_tip (tooltips, run_loop_checkbutton, _("When in \"Run\" mode, the playback will loop from the end of the stream back to the start, and continue playing indefinitely."), NULL);
  723.  
  724.   auto_refresh_checkbutton = gtk_check_button_new_with_mnemonic (_("Auto Refresh"));
  725.   gtk_widget_set_name (auto_refresh_checkbutton, "auto_refresh_checkbutton");
  726.   gtk_widget_show (auto_refresh_checkbutton);
  727.   gtk_box_pack_start (GTK_BOX (vbox4), auto_refresh_checkbutton, FALSE, FALSE, 0);
  728.   gtk_tooltips_set_tip (tooltips, auto_refresh_checkbutton, _("Redraws the selected GOP on each click of the \"Next\" and \"Prev\" buttons as well as any changes made to the GOP selector bar."), NULL);
  729.  
  730.   label3 = gtk_label_new (_("General"));
  731.   gtk_widget_set_name (label3, "label3");
  732.   gtk_widget_show (label3);
  733.   gtk_frame_set_label_widget (GTK_FRAME (pref_frame_general), label3);
  734.  
  735.   pref_frame_advanced = gtk_frame_new (NULL);
  736.   gtk_widget_set_name (pref_frame_advanced, "pref_frame_advanced");
  737.   gtk_widget_show (pref_frame_advanced);
  738.   gtk_box_pack_start (GTK_BOX (vbox3), pref_frame_advanced, TRUE, TRUE, 0);
  739.   gtk_container_set_border_width (GTK_CONTAINER (pref_frame_advanced), 3);
  740.  
  741.   vbox7 = gtk_vbox_new (FALSE, 2);
  742.   gtk_widget_set_name (vbox7, "vbox7");
  743.   gtk_widget_show (vbox7);
  744.   gtk_container_add (GTK_CONTAINER (pref_frame_advanced), vbox7);
  745.  
  746.   drop_orphaned_frames_checkbutton = gtk_check_button_new_with_mnemonic (_("Drop Orphaned Frames"));
  747.   gtk_widget_set_name (drop_orphaned_frames_checkbutton, "drop_orphaned_frames_checkbutton");
  748.   gtk_widget_show (drop_orphaned_frames_checkbutton);
  749.   gtk_box_pack_start (GTK_BOX (vbox7), drop_orphaned_frames_checkbutton, FALSE, FALSE, 0);
  750.   gtk_tooltips_set_tip (tooltips, drop_orphaned_frames_checkbutton, _("If a GOP is \"open\", that means that there are Pictures in the GOP that depend on the prior GOP's Pictures.  When this \"open\" GOP is at the start of a splice point, it is already marked \"broken\" to indicate to the decoder that the dependent Pictures should be ignore.  However, some decoders do not honor the \"broken\" flag, and try to decode this Pictures, causing a garbled image.  If \"Drop Orphaned Frames\" is selected, the invalid Pictures will be removed from the stream when the GOP is saved.  This can cause corrupted video if video packets containing data from two different Pictures end up in the same Pack, since GOPchop currently drops the entire Pack."), NULL);
  751.  
  752.   adjust_timestamps_checkbutton = gtk_check_button_new_with_mnemonic (_("Adjust GOP Timestamps"));
  753.   gtk_widget_set_name (adjust_timestamps_checkbutton, "adjust_timestamps_checkbutton");
  754.   gtk_widget_show (adjust_timestamps_checkbutton);
  755.   gtk_box_pack_start (GTK_BOX (vbox7), adjust_timestamps_checkbutton, FALSE, FALSE, 0);
  756.   gtk_tooltips_set_tip (tooltips, adjust_timestamps_checkbutton, _("When clips are written to the destination stream, the timestamps in the GOP header will be recalculated, starting at 0:00.0.  Without this, the GOP timestamp will jump forward at every split point.  Some decoders are sensitive to this."), NULL);
  757.  
  758.   force_system_header_checkbutton = gtk_check_button_new_with_mnemonic (_("Force Prepended System Header"));
  759.   gtk_widget_set_name (force_system_header_checkbutton, "force_system_header_checkbutton");
  760.   gtk_widget_show (force_system_header_checkbutton);
  761.   gtk_box_pack_start (GTK_BOX (vbox7), force_system_header_checkbutton, FALSE, FALSE, 0);
  762.   gtk_tooltips_set_tip (tooltips, force_system_header_checkbutton, _("Forces a Pack to be written to the start of the saved stream, which includes the first System Header seen in the source stream, followed by Private Stream 2 padding to 2048 bytes.  This may be needed for DVD authoring tools."), NULL);
  763.  
  764.   drop_trailing_pack_with_system_header_checkbutton = gtk_check_button_new_with_mnemonic (_("Drop Trailing Pack with System Header"));
  765.   gtk_widget_set_name (drop_trailing_pack_with_system_header_checkbutton, "drop_trailing_pack_with_system_header_checkbutton");
  766.   gtk_widget_show (drop_trailing_pack_with_system_header_checkbutton);
  767.   gtk_box_pack_start (GTK_BOX (vbox7), drop_trailing_pack_with_system_header_checkbutton, FALSE, FALSE, 0);
  768.   gtk_tooltips_set_tip (tooltips, drop_trailing_pack_with_system_header_checkbutton, _("If the last Pack in the destination stream contains a System Header, it will be discarded during save.  This may be needed for DVD authoring tools."), NULL);
  769.  
  770.   ignore_endcode_checkbutton = gtk_check_button_new_with_mnemonic (_("Ignore Program End Codes"));
  771.   gtk_widget_set_name (ignore_endcode_checkbutton, "ignore_endcode_checkbutton");
  772.   gtk_widget_show (ignore_endcode_checkbutton);
  773.   gtk_box_pack_start (GTK_BOX (vbox7), ignore_endcode_checkbutton, FALSE, FALSE, 0);
  774.   gtk_tooltips_set_tip (tooltips, ignore_endcode_checkbutton, _("If the source stream has multiple MPEGs concatenated together, there may be Program End codes in the middle of the stream.  If they are ignored, GOPchop will continue parsing until EOF."), NULL);
  775.  
  776.   label8 = gtk_label_new (_("Advanced"));
  777.   gtk_widget_set_name (label8, "label8");
  778.   gtk_widget_show (label8);
  779.   gtk_frame_set_label_widget (GTK_FRAME (pref_frame_advanced), label8);
  780.  
  781.   pref_frame_devel = gtk_frame_new (NULL);
  782.   gtk_widget_set_name (pref_frame_devel, "pref_frame_devel");
  783.   gtk_widget_show (pref_frame_devel);
  784.   gtk_box_pack_start (GTK_BOX (vbox3), pref_frame_devel, TRUE, TRUE, 3);
  785.   gtk_container_set_border_width (GTK_CONTAINER (pref_frame_devel), 3);
  786.  
  787.   vbox6 = gtk_vbox_new (FALSE, 2);
  788.   gtk_widget_set_name (vbox6, "vbox6");
  789.   gtk_widget_show (vbox6);
  790.   gtk_container_add (GTK_CONTAINER (pref_frame_devel), vbox6);
  791.  
  792.   ignore_errors_checkbutton = gtk_check_button_new_with_mnemonic (_("Ignore Errors"));
  793.   gtk_widget_set_name (ignore_errors_checkbutton, "ignore_errors_checkbutton");
  794.   gtk_widget_show (ignore_errors_checkbutton);
  795.   gtk_box_pack_start (GTK_BOX (vbox6), ignore_errors_checkbutton, FALSE, FALSE, 0);
  796.   gtk_tooltips_set_tip (tooltips, ignore_errors_checkbutton, _("Disables the reporting of unusual data in the stream during initial MPEG2 and GOP parsing."), NULL);
  797.  
  798.   label5 = gtk_label_new (_("Developer"));
  799.   gtk_widget_set_name (label5, "label5");
  800.   gtk_widget_show (label5);
  801.   gtk_frame_set_label_widget (GTK_FRAME (pref_frame_devel), label5);
  802.  
  803.   dialog_action_area2 = GTK_DIALOG (preferences_window)->action_area;
  804.   gtk_widget_set_name (dialog_action_area2, "dialog_action_area2");
  805.   gtk_widget_show (dialog_action_area2);
  806.   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_SPREAD);
  807.  
  808.   cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
  809.   gtk_widget_set_name (cancelbutton1, "cancelbutton1");
  810.   gtk_widget_show (cancelbutton1);
  811.   gtk_dialog_add_action_widget (GTK_DIALOG (preferences_window), cancelbutton1, GTK_RESPONSE_CANCEL);
  812.   GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
  813.  
  814.   okbutton1 = gtk_button_new_from_stock ("gtk-ok");
  815.   gtk_widget_set_name (okbutton1, "okbutton1");
  816.   gtk_widget_show (okbutton1);
  817.   gtk_dialog_add_action_widget (GTK_DIALOG (preferences_window), okbutton1, GTK_RESPONSE_OK);
  818.   GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
  819.  
  820.   g_signal_connect ((gpointer) preferences_window, "delete_event",
  821.                     G_CALLBACK (on_preferences_window_delete_event),
  822.                     NULL);
  823.   g_signal_connect ((gpointer) default_run_speed_slider, "value_changed",
  824.                     G_CALLBACK (on_preferences_run_speed_slider_value_changed),
  825.                     NULL);
  826.   g_signal_connect ((gpointer) default_run_speed_spinner, "value_changed",
  827.                     G_CALLBACK (on_preferences_run_speed_spinner_value_changed),
  828.                     NULL);
  829.   g_signal_connect ((gpointer) cancelbutton1, "clicked",
  830.                     G_CALLBACK (on_preferences_cancelbutton_clicked),
  831.                     NULL);
  832.   g_signal_connect ((gpointer) okbutton1, "clicked",
  833.                     G_CALLBACK (on_preferences_okbutton_clicked),
  834.                     NULL);
  835.  
  836.   /* Store pointers to all widgets, for use by lookup_widget(). */
  837.   GLADE_HOOKUP_OBJECT_NO_REF (preferences_window, preferences_window, "preferences_window");
  838.   GLADE_HOOKUP_OBJECT_NO_REF (preferences_window, dialog_vbox2, "dialog_vbox2");
  839.   GLADE_HOOKUP_OBJECT (preferences_window, vbox3, "vbox3");
  840.   GLADE_HOOKUP_OBJECT (preferences_window, pref_frame_general, "pref_frame_general");
  841.   GLADE_HOOKUP_OBJECT (preferences_window, vbox4, "vbox4");
  842.   GLADE_HOOKUP_OBJECT (preferences_window, hbox1, "hbox1");
  843.   GLADE_HOOKUP_OBJECT (preferences_window, label6, "label6");
  844.   GLADE_HOOKUP_OBJECT (preferences_window, video_output_driver_combo, "video_output_driver_combo");
  845.   GLADE_HOOKUP_OBJECT (preferences_window, combo_entry1, "combo_entry1");
  846.   GLADE_HOOKUP_OBJECT (preferences_window, hbox2, "hbox2");
  847.   GLADE_HOOKUP_OBJECT (preferences_window, label7, "label7");
  848.   GLADE_HOOKUP_OBJECT (preferences_window, default_run_speed_slider, "default_run_speed_slider");
  849.   GLADE_HOOKUP_OBJECT (preferences_window, default_run_speed_spinner, "default_run_speed_spinner");
  850.   GLADE_HOOKUP_OBJECT (preferences_window, run_loop_checkbutton, "run_loop_checkbutton");
  851.   GLADE_HOOKUP_OBJECT (preferences_window, auto_refresh_checkbutton, "auto_refresh_checkbutton");
  852.   GLADE_HOOKUP_OBJECT (preferences_window, label3, "label3");
  853.   GLADE_HOOKUP_OBJECT (preferences_window, pref_frame_advanced, "pref_frame_advanced");
  854.   GLADE_HOOKUP_OBJECT (preferences_window, vbox7, "vbox7");
  855.   GLADE_HOOKUP_OBJECT (preferences_window, drop_orphaned_frames_checkbutton, "drop_orphaned_frames_checkbutton");
  856.   GLADE_HOOKUP_OBJECT (preferences_window, adjust_timestamps_checkbutton, "adjust_timestamps_checkbutton");
  857.   GLADE_HOOKUP_OBJECT (preferences_window, force_system_header_checkbutton, "force_system_header_checkbutton");
  858.   GLADE_HOOKUP_OBJECT (preferences_window, drop_trailing_pack_with_system_header_checkbutton, "drop_trailing_pack_with_system_header_checkbutton");
  859.   GLADE_HOOKUP_OBJECT (preferences_window, ignore_endcode_checkbutton, "ignore_endcode_checkbutton");
  860.   GLADE_HOOKUP_OBJECT (preferences_window, label8, "label8");
  861.   GLADE_HOOKUP_OBJECT (preferences_window, pref_frame_devel, "pref_frame_devel");
  862.   GLADE_HOOKUP_OBJECT (preferences_window, vbox6, "vbox6");
  863.   GLADE_HOOKUP_OBJECT (preferences_window, ignore_errors_checkbutton, "ignore_errors_checkbutton");
  864.   GLADE_HOOKUP_OBJECT (preferences_window, label5, "label5");
  865.   GLADE_HOOKUP_OBJECT_NO_REF (preferences_window, dialog_action_area2, "dialog_action_area2");
  866.   GLADE_HOOKUP_OBJECT (preferences_window, cancelbutton1, "cancelbutton1");
  867.   GLADE_HOOKUP_OBJECT (preferences_window, okbutton1, "okbutton1");
  868.   GLADE_HOOKUP_OBJECT_NO_REF (preferences_window, tooltips, "tooltips");
  869.  
  870.   return preferences_window;
  871. }
  872.  
  873. GtkWidget*
  874. create_GOP_window (void)
  875. {
  876.   GtkWidget *GOP_window;
  877.   GtkWidget *GOP_box;
  878.   GtkWidget *GOP_label_filename;
  879.   GtkWidget *GOP_hseparator;
  880.   GtkWidget *GOP_label_GOP;
  881.   GtkWidget *GOP_label_sequence_info;
  882.   GtkWidget *GOP_scrolledwindow;
  883.   GtkWidget *GOP_clist;
  884.  
  885.   GOP_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  886.   gtk_widget_set_name (GOP_window, "GOP_window");
  887.   gtk_window_set_title (GTK_WINDOW (GOP_window), _("GOP Info"));
  888.   gtk_window_set_default_size (GTK_WINDOW (GOP_window), 400, 400);
  889.  
  890.   GOP_box = gtk_vbox_new (FALSE, 0);
  891.   gtk_widget_set_name (GOP_box, "GOP_box");
  892.   gtk_widget_show (GOP_box);
  893.   gtk_container_add (GTK_CONTAINER (GOP_window), GOP_box);
  894.  
  895.   GOP_label_filename = gtk_label_new ("");
  896.   gtk_widget_set_name (GOP_label_filename, "GOP_label_filename");
  897.   gtk_widget_show (GOP_label_filename);
  898.   gtk_box_pack_start (GTK_BOX (GOP_box), GOP_label_filename, FALSE, FALSE, 0);
  899.   gtk_misc_set_padding (GTK_MISC (GOP_label_filename), 4, 4);
  900.  
  901.   GOP_hseparator = gtk_hseparator_new ();
  902.   gtk_widget_set_name (GOP_hseparator, "GOP_hseparator");
  903.   gtk_widget_show (GOP_hseparator);
  904.   gtk_box_pack_start (GTK_BOX (GOP_box), GOP_hseparator, FALSE, TRUE, 0);
  905.  
  906.   GOP_label_GOP = gtk_label_new (_("No GOP selected"));
  907.   gtk_widget_set_name (GOP_label_GOP, "GOP_label_GOP");
  908.   gtk_widget_show (GOP_label_GOP);
  909.   gtk_box_pack_start (GTK_BOX (GOP_box), GOP_label_GOP, FALSE, FALSE, 0);
  910.   gtk_label_set_justify (GTK_LABEL (GOP_label_GOP), GTK_JUSTIFY_CENTER);
  911.  
  912.   GOP_label_sequence_info = gtk_label_new (_("No Sequence Info Found"));
  913.   gtk_widget_set_name (GOP_label_sequence_info, "GOP_label_sequence_info");
  914.   gtk_widget_show (GOP_label_sequence_info);
  915.   gtk_box_pack_start (GTK_BOX (GOP_box), GOP_label_sequence_info, FALSE, FALSE, 0);
  916.   gtk_label_set_justify (GTK_LABEL (GOP_label_sequence_info), GTK_JUSTIFY_CENTER);
  917.  
  918.   GOP_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
  919.   gtk_widget_set_name (GOP_scrolledwindow, "GOP_scrolledwindow");
  920.   gtk_widget_show (GOP_scrolledwindow);
  921.   gtk_box_pack_start (GTK_BOX (GOP_box), GOP_scrolledwindow, TRUE, TRUE, 0);
  922.   GTK_WIDGET_UNSET_FLAGS (GOP_scrolledwindow, GTK_CAN_FOCUS);
  923.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (GOP_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  924.   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (GOP_scrolledwindow), GTK_SHADOW_IN);
  925.  
  926.   GOP_clist = gtk_tree_view_new ();
  927.   gtk_widget_set_name (GOP_clist, "GOP_clist");
  928.   gtk_widget_show (GOP_clist);
  929.   gtk_container_add (GTK_CONTAINER (GOP_scrolledwindow), GOP_clist);
  930.  
  931.   g_signal_connect ((gpointer) GOP_window, "delete_event",
  932.                     G_CALLBACK (on_GOP_window_delete_event),
  933.                     NULL);
  934.  
  935.   /* Store pointers to all widgets, for use by lookup_widget(). */
  936.   GLADE_HOOKUP_OBJECT_NO_REF (GOP_window, GOP_window, "GOP_window");
  937.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_box, "GOP_box");
  938.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_label_filename, "GOP_label_filename");
  939.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_hseparator, "GOP_hseparator");
  940.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_label_GOP, "GOP_label_GOP");
  941.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_label_sequence_info, "GOP_label_sequence_info");
  942.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_scrolledwindow, "GOP_scrolledwindow");
  943.   GLADE_HOOKUP_OBJECT (GOP_window, GOP_clist, "GOP_clist");
  944.  
  945.   return GOP_window;
  946. }
  947.  
  948. GtkWidget*
  949. create_main_popup (void)
  950. {
  951.   GtkWidget *main_popup;
  952.   GtkWidget *main_popup_delete;
  953.  
  954.   main_popup = gtk_menu_new ();
  955.   gtk_widget_set_name (main_popup, "main_popup");
  956.  
  957.   main_popup_delete = gtk_menu_item_new_with_mnemonic (_("Delete"));
  958.   gtk_widget_set_name (main_popup_delete, "main_popup_delete");
  959.   gtk_widget_show (main_popup_delete);
  960.   gtk_container_add (GTK_CONTAINER (main_popup), main_popup_delete);
  961.  
  962.   g_signal_connect ((gpointer) main_popup_delete, "activate",
  963.                     G_CALLBACK (on_main_popup_delete_activate),
  964.                     NULL);
  965.  
  966.   /* Store pointers to all widgets, for use by lookup_widget(). */
  967.   GLADE_HOOKUP_OBJECT_NO_REF (main_popup, main_popup, "main_popup");
  968.   GLADE_HOOKUP_OBJECT (main_popup, main_popup_delete, "main_popup_delete");
  969.  
  970.   return main_popup;
  971. }
  972.  
  973. GtkWidget*
  974. create_error_dialog (void)
  975. {
  976.   GtkWidget *error_dialog;
  977.   GtkWidget *error_box;
  978.   GtkWidget *error_box_reason;
  979.   GtkWidget *error_box_icon;
  980.   GtkWidget *error_pixmap;
  981.   GtkWidget *error_label_pixmap;
  982.   GtkWidget *hseparator1;
  983.   GtkWidget *error_scrolledwindow;
  984.   GtkWidget *error_text_why;
  985.   GtkWidget *error_box_buttons;
  986.   GtkWidget *error_button_annoying;
  987.  
  988.   error_dialog = gtk_dialog_new ();
  989.   gtk_widget_set_name (error_dialog, "error_dialog");
  990.   gtk_window_set_title (GTK_WINDOW (error_dialog), _("Error"));
  991.   gtk_window_set_type_hint (GTK_WINDOW (error_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
  992.  
  993.   error_box = GTK_DIALOG (error_dialog)->vbox;
  994.   gtk_widget_set_name (error_box, "error_box");
  995.   gtk_widget_show (error_box);
  996.  
  997.   error_box_reason = gtk_vbox_new (FALSE, 0);
  998.   gtk_widget_set_name (error_box_reason, "error_box_reason");
  999.   gtk_widget_show (error_box_reason);
  1000.   gtk_box_pack_start (GTK_BOX (error_box), error_box_reason, TRUE, TRUE, 0);
  1001.  
  1002.   error_box_icon = gtk_hbox_new (FALSE, 4);
  1003.   gtk_widget_set_name (error_box_icon, "error_box_icon");
  1004.   gtk_widget_show (error_box_icon);
  1005.   gtk_box_pack_start (GTK_BOX (error_box_reason), error_box_icon, FALSE, FALSE, 0);
  1006.   gtk_container_set_border_width (GTK_CONTAINER (error_box_icon), 10);
  1007.  
  1008.   error_pixmap = create_pixmap (error_dialog, "error.xpm");
  1009.   gtk_widget_set_name (error_pixmap, "error_pixmap");
  1010.   gtk_widget_show (error_pixmap);
  1011.   gtk_box_pack_start (GTK_BOX (error_box_icon), error_pixmap, FALSE, FALSE, 0);
  1012.  
  1013.   error_label_pixmap = gtk_label_new (_("\"You have 20 seconds to comply.\""));
  1014.   gtk_widget_set_name (error_label_pixmap, "error_label_pixmap");
  1015.   gtk_widget_show (error_label_pixmap);
  1016.   gtk_box_pack_start (GTK_BOX (error_box_icon), error_label_pixmap, TRUE, TRUE, 0);
  1017.   gtk_label_set_justify (GTK_LABEL (error_label_pixmap), GTK_JUSTIFY_CENTER);
  1018.  
  1019.   hseparator1 = gtk_hseparator_new ();
  1020.   gtk_widget_set_name (hseparator1, "hseparator1");
  1021.   gtk_widget_show (hseparator1);
  1022.   gtk_box_pack_start (GTK_BOX (error_box_reason), hseparator1, FALSE, FALSE, 0);
  1023.  
  1024.   error_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
  1025.   gtk_widget_set_name (error_scrolledwindow, "error_scrolledwindow");
  1026.   gtk_widget_show (error_scrolledwindow);
  1027.   gtk_box_pack_start (GTK_BOX (error_box_reason), error_scrolledwindow, TRUE, TRUE, 0);
  1028.   GTK_WIDGET_UNSET_FLAGS (error_scrolledwindow, GTK_CAN_FOCUS);
  1029.   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (error_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
  1030.   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (error_scrolledwindow), GTK_SHADOW_IN);
  1031.  
  1032.   error_text_why = gtk_text_view_new ();
  1033.   gtk_widget_set_name (error_text_why, "error_text_why");
  1034.   gtk_widget_show (error_text_why);
  1035.   gtk_container_add (GTK_CONTAINER (error_scrolledwindow), error_text_why);
  1036.   gtk_text_view_set_editable (GTK_TEXT_VIEW (error_text_why), FALSE);
  1037.   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (error_text_why), GTK_WRAP_WORD);
  1038.  
  1039.   error_box_buttons = GTK_DIALOG (error_dialog)->action_area;
  1040.   gtk_widget_set_name (error_box_buttons, "error_box_buttons");
  1041.   gtk_widget_show (error_box_buttons);
  1042.   gtk_button_box_set_layout (GTK_BUTTON_BOX (error_box_buttons), GTK_BUTTONBOX_END);
  1043.  
  1044.   error_button_annoying = gtk_button_new_with_mnemonic (_("That's annoying!"));
  1045.   gtk_widget_set_name (error_button_annoying, "error_button_annoying");
  1046.   gtk_widget_show (error_button_annoying);
  1047.   gtk_dialog_add_action_widget (GTK_DIALOG (error_dialog), error_button_annoying, 0);
  1048.  
  1049.   g_signal_connect ((gpointer) error_button_annoying, "clicked",
  1050.                     G_CALLBACK (on_error_button_annoying_clicked),
  1051.                     NULL);
  1052.  
  1053.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1054.   GLADE_HOOKUP_OBJECT_NO_REF (error_dialog, error_dialog, "error_dialog");
  1055.   GLADE_HOOKUP_OBJECT_NO_REF (error_dialog, error_box, "error_box");
  1056.   GLADE_HOOKUP_OBJECT (error_dialog, error_box_reason, "error_box_reason");
  1057.   GLADE_HOOKUP_OBJECT (error_dialog, error_box_icon, "error_box_icon");
  1058.   GLADE_HOOKUP_OBJECT (error_dialog, error_pixmap, "error_pixmap");
  1059.   GLADE_HOOKUP_OBJECT (error_dialog, error_label_pixmap, "error_label_pixmap");
  1060.   GLADE_HOOKUP_OBJECT (error_dialog, hseparator1, "hseparator1");
  1061.   GLADE_HOOKUP_OBJECT (error_dialog, error_scrolledwindow, "error_scrolledwindow");
  1062.   GLADE_HOOKUP_OBJECT (error_dialog, error_text_why, "error_text_why");
  1063.   GLADE_HOOKUP_OBJECT_NO_REF (error_dialog, error_box_buttons, "error_box_buttons");
  1064.   GLADE_HOOKUP_OBJECT (error_dialog, error_button_annoying, "error_button_annoying");
  1065.  
  1066.   return error_dialog;
  1067. }
  1068.  
  1069. GtkWidget*
  1070. create_new_file_window (void)
  1071. {
  1072.   GtkWidget *new_file_window;
  1073.   GtkWidget *ok_button1;
  1074.   GtkWidget *cancel_button1;
  1075.  
  1076.   new_file_window = gtk_file_selection_new (_("Select MPEG File"));
  1077.   gtk_widget_set_name (new_file_window, "new_file_window");
  1078.   gtk_container_set_border_width (GTK_CONTAINER (new_file_window), 10);
  1079.   gtk_window_set_modal (GTK_WINDOW (new_file_window), TRUE);
  1080.   gtk_window_set_type_hint (GTK_WINDOW (new_file_window), GDK_WINDOW_TYPE_HINT_DIALOG);
  1081.   gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (new_file_window));
  1082.  
  1083.   ok_button1 = GTK_FILE_SELECTION (new_file_window)->ok_button;
  1084.   gtk_widget_set_name (ok_button1, "ok_button1");
  1085.   gtk_widget_show (ok_button1);
  1086.   GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT);
  1087.  
  1088.   cancel_button1 = GTK_FILE_SELECTION (new_file_window)->cancel_button;
  1089.   gtk_widget_set_name (cancel_button1, "cancel_button1");
  1090.   gtk_widget_show (cancel_button1);
  1091.   GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT);
  1092.  
  1093.   g_signal_connect ((gpointer) new_file_window, "destroy",
  1094.                     G_CALLBACK (on_new_file_window_destroy),
  1095.                     NULL);
  1096.   g_signal_connect ((gpointer) new_file_window, "delete_event",
  1097.                     G_CALLBACK (on_new_file_window_delete_event),
  1098.                     NULL);
  1099.   g_signal_connect ((gpointer) ok_button1, "clicked",
  1100.                     G_CALLBACK (on_new_file_okbutton_clicked),
  1101.                     NULL);
  1102.   g_signal_connect ((gpointer) cancel_button1, "clicked",
  1103.                     G_CALLBACK (on_new_file_cancelbutton_clicked),
  1104.                     NULL);
  1105.  
  1106.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1107.   GLADE_HOOKUP_OBJECT_NO_REF (new_file_window, new_file_window, "new_file_window");
  1108.   GLADE_HOOKUP_OBJECT_NO_REF (new_file_window, ok_button1, "ok_button1");
  1109.   GLADE_HOOKUP_OBJECT_NO_REF (new_file_window, cancel_button1, "cancel_button1");
  1110.  
  1111.   return new_file_window;
  1112. }
  1113.  
  1114. GtkWidget*
  1115. create_open_file_window (void)
  1116. {
  1117.   GtkWidget *open_file_window;
  1118.   GtkWidget *fileselection_button_ok;
  1119.   GtkWidget *fileselection_button_cancel;
  1120.  
  1121.   open_file_window = gtk_file_selection_new (_("Open Session"));
  1122.   gtk_widget_set_name (open_file_window, "open_file_window");
  1123.   gtk_container_set_border_width (GTK_CONTAINER (open_file_window), 10);
  1124.   gtk_window_set_modal (GTK_WINDOW (open_file_window), TRUE);
  1125.   gtk_window_set_type_hint (GTK_WINDOW (open_file_window), GDK_WINDOW_TYPE_HINT_DIALOG);
  1126.   gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (open_file_window));
  1127.  
  1128.   fileselection_button_ok = GTK_FILE_SELECTION (open_file_window)->ok_button;
  1129.   gtk_widget_set_name (fileselection_button_ok, "fileselection_button_ok");
  1130.   gtk_widget_show (fileselection_button_ok);
  1131.   GTK_WIDGET_SET_FLAGS (fileselection_button_ok, GTK_CAN_DEFAULT);
  1132.  
  1133.   fileselection_button_cancel = GTK_FILE_SELECTION (open_file_window)->cancel_button;
  1134.   gtk_widget_set_name (fileselection_button_cancel, "fileselection_button_cancel");
  1135.   gtk_widget_show (fileselection_button_cancel);
  1136.   GTK_WIDGET_SET_FLAGS (fileselection_button_cancel, GTK_CAN_DEFAULT);
  1137.  
  1138.   g_signal_connect ((gpointer) open_file_window, "destroy",
  1139.                     G_CALLBACK (on_open_file_window_destroy),
  1140.                     NULL);
  1141.   g_signal_connect ((gpointer) open_file_window, "delete_event",
  1142.                     G_CALLBACK (on_open_file_window_delete_event),
  1143.                     NULL);
  1144.   g_signal_connect ((gpointer) fileselection_button_ok, "clicked",
  1145.                     G_CALLBACK (on_open_file_okbutton_clicked),
  1146.                     NULL);
  1147.   g_signal_connect ((gpointer) fileselection_button_cancel, "clicked",
  1148.                     G_CALLBACK (on_open_file_cancelbutton_clicked),
  1149.                     NULL);
  1150.  
  1151.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1152.   GLADE_HOOKUP_OBJECT_NO_REF (open_file_window, open_file_window, "open_file_window");
  1153.   GLADE_HOOKUP_OBJECT_NO_REF (open_file_window, fileselection_button_ok, "fileselection_button_ok");
  1154.   GLADE_HOOKUP_OBJECT_NO_REF (open_file_window, fileselection_button_cancel, "fileselection_button_cancel");
  1155.  
  1156.   return open_file_window;
  1157. }
  1158.  
  1159. GtkWidget*
  1160. create_save_file_window (void)
  1161. {
  1162.   GtkWidget *save_file_window;
  1163.   GtkWidget *saveselection_button_ok;
  1164.   GtkWidget *saveselection_button_cancel;
  1165.  
  1166.   save_file_window = gtk_file_selection_new (_("Save Session"));
  1167.   gtk_widget_set_name (save_file_window, "save_file_window");
  1168.   gtk_container_set_border_width (GTK_CONTAINER (save_file_window), 10);
  1169.   gtk_window_set_modal (GTK_WINDOW (save_file_window), TRUE);
  1170.   gtk_window_set_type_hint (GTK_WINDOW (save_file_window), GDK_WINDOW_TYPE_HINT_DIALOG);
  1171.  
  1172.   saveselection_button_ok = GTK_FILE_SELECTION (save_file_window)->ok_button;
  1173.   gtk_widget_set_name (saveselection_button_ok, "saveselection_button_ok");
  1174.   gtk_widget_show (saveselection_button_ok);
  1175.   GTK_WIDGET_SET_FLAGS (saveselection_button_ok, GTK_CAN_DEFAULT);
  1176.  
  1177.   saveselection_button_cancel = GTK_FILE_SELECTION (save_file_window)->cancel_button;
  1178.   gtk_widget_set_name (saveselection_button_cancel, "saveselection_button_cancel");
  1179.   gtk_widget_show (saveselection_button_cancel);
  1180.   GTK_WIDGET_SET_FLAGS (saveselection_button_cancel, GTK_CAN_DEFAULT);
  1181.  
  1182.   g_signal_connect ((gpointer) save_file_window, "destroy",
  1183.                     G_CALLBACK (on_save_file_window_destroy),
  1184.                     NULL);
  1185.   g_signal_connect ((gpointer) save_file_window, "delete_event",
  1186.                     G_CALLBACK (on_save_file_window_delete_event),
  1187.                     NULL);
  1188.   g_signal_connect ((gpointer) saveselection_button_ok, "clicked",
  1189.                     G_CALLBACK (on_save_file_okbutton_clicked),
  1190.                     NULL);
  1191.   g_signal_connect ((gpointer) saveselection_button_cancel, "clicked",
  1192.                     G_CALLBACK (on_save_file_cancelbutton_clicked),
  1193.                     NULL);
  1194.  
  1195.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1196.   GLADE_HOOKUP_OBJECT_NO_REF (save_file_window, save_file_window, "save_file_window");
  1197.   GLADE_HOOKUP_OBJECT_NO_REF (save_file_window, saveselection_button_ok, "saveselection_button_ok");
  1198.   GLADE_HOOKUP_OBJECT_NO_REF (save_file_window, saveselection_button_cancel, "saveselection_button_cancel");
  1199.  
  1200.   return save_file_window;
  1201. }
  1202.  
  1203. GtkWidget*
  1204. create_export_file_window (void)
  1205. {
  1206.   GtkWidget *export_file_window;
  1207.   GtkWidget *ok_button2;
  1208.   GtkWidget *cancel_button2;
  1209.  
  1210.   export_file_window = gtk_file_selection_new (_("Save MPEG As"));
  1211.   gtk_widget_set_name (export_file_window, "export_file_window");
  1212.   gtk_container_set_border_width (GTK_CONTAINER (export_file_window), 10);
  1213.   gtk_window_set_modal (GTK_WINDOW (export_file_window), TRUE);
  1214.   gtk_window_set_type_hint (GTK_WINDOW (export_file_window), GDK_WINDOW_TYPE_HINT_DIALOG);
  1215.  
  1216.   ok_button2 = GTK_FILE_SELECTION (export_file_window)->ok_button;
  1217.   gtk_widget_set_name (ok_button2, "ok_button2");
  1218.   gtk_widget_show (ok_button2);
  1219.   GTK_WIDGET_SET_FLAGS (ok_button2, GTK_CAN_DEFAULT);
  1220.  
  1221.   cancel_button2 = GTK_FILE_SELECTION (export_file_window)->cancel_button;
  1222.   gtk_widget_set_name (cancel_button2, "cancel_button2");
  1223.   gtk_widget_show (cancel_button2);
  1224.   GTK_WIDGET_SET_FLAGS (cancel_button2, GTK_CAN_DEFAULT);
  1225.  
  1226.   g_signal_connect ((gpointer) export_file_window, "destroy",
  1227.                     G_CALLBACK (on_export_file_window_destroy),
  1228.                     NULL);
  1229.   g_signal_connect ((gpointer) export_file_window, "delete_event",
  1230.                     G_CALLBACK (on_export_file_window_delete_event),
  1231.                     NULL);
  1232.   g_signal_connect ((gpointer) ok_button2, "clicked",
  1233.                     G_CALLBACK (on_export_file_okbutton_clicked),
  1234.                     NULL);
  1235.   g_signal_connect ((gpointer) cancel_button2, "clicked",
  1236.                     G_CALLBACK (on_export_file_cancelbutton_clicked),
  1237.                     NULL);
  1238.  
  1239.   /* Store pointers to all widgets, for use by lookup_widget(). */
  1240.   GLADE_HOOKUP_OBJECT_NO_REF (export_file_window, export_file_window, "export_file_window");
  1241.   GLADE_HOOKUP_OBJECT_NO_REF (export_file_window, ok_button2, "ok_button2");
  1242.   GLADE_HOOKUP_OBJECT_NO_REF (export_file_window, cancel_button2, "cancel_button2");
  1243.  
  1244.   return export_file_window;
  1245. }
  1246.  
  1247.