diff options
author | handbrake <[email protected]> | 2006-01-14 13:21:55 +0000 |
---|---|---|
committer | handbrake <[email protected]> | 2006-01-14 13:21:55 +0000 |
commit | dc8de40de13c3f3e643b980a95ef48ccafb542e3 (patch) | |
tree | 953b97afe7082bbe2ce4247c703a51aa8e29a3c9 /gtk2 | |
parent | 4beb6a8b483c9d84677b21cc271ce315f136335c (diff) |
HandBrake 0.6.0-test1
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@10 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk2')
-rw-r--r-- | gtk2/callbacks.c | 623 | ||||
-rw-r--r-- | gtk2/callbacks.h | 75 | ||||
-rw-r--r-- | gtk2/gtk2hb.glade | 1863 | ||||
-rw-r--r-- | gtk2/interface.c | 984 | ||||
-rw-r--r-- | gtk2/interface.h | 7 | ||||
-rw-r--r-- | gtk2/main.c | 409 | ||||
-rw-r--r-- | gtk2/status.h | 33 | ||||
-rw-r--r-- | gtk2/support.c | 144 | ||||
-rw-r--r-- | gtk2/support.h | 44 |
9 files changed, 4182 insertions, 0 deletions
diff --git a/gtk2/callbacks.c b/gtk2/callbacks.c new file mode 100644 index 000000000..04a140678 --- /dev/null +++ b/gtk2/callbacks.c @@ -0,0 +1,623 @@ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <gtk/gtk.h> + +#include "../core/HandBrake.h" +#include "status.h" + +#include "callbacks.h" +#include "interface.h" +#include "support.h" + + +#define GLADE_HOOKUP_OBJECT(component,widget,name) \ + g_object_set_data_full (G_OBJECT (component), name, \ + gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) + + +static int i_settings_preview_picture; +static int i_settings_width = 0; +static int i_settings_crop_top = 0; +static int i_settings_crop_bottom = 0; +static int i_settings_crop_left = 0; +static int i_settings_crop_right = 0; +static int b_settings_deinterlace = 0; + +gboolean on_win_main_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + HBClose( &hb_handle ); + + hb_handle = NULL; + + gtk_main_quit(); + return FALSE; +} + + +void on_button_browse_device (GtkButton *button, + gpointer user_data) +{ + GtkWidget *win_open; + + /* Create the open window */ + win_open = create_win_open(); + gtk_object_set_data( GTK_OBJECT(win_open), "entry", "entry_device" ); + gtk_widget_show( win_open ); + gdk_window_raise( win_open->window ); +} + +/*** + * Open file dialog box handle (you should have set entry to the right entry name of hb_win_main + */ +gboolean on_win_open_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + GtkWidget *win_open = gtk_widget_get_toplevel( GTK_WIDGET (widget) ); + + gtk_widget_destroy( win_open ); + return FALSE; +} + +void on_ok_button1_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *win_open = gtk_widget_get_toplevel( GTK_WIDGET (button) ); + + char *psz_entry = gtk_object_get_data( GTK_OBJECT( win_open ), "entry" ); + const char *psz_file = gtk_file_selection_get_filename( GTK_FILE_SELECTION( win_open ) ); + + GtkWidget *entry = lookup_widget( hb_win_main, psz_entry ); + + gtk_entry_set_text( GTK_ENTRY( entry ), psz_file ); + if( !strcmp( psz_entry, "entry_device" ) && *psz_file ) + { + /* Feed libhb with a device */ + HBScanDVD( hb_handle, psz_file, 0 ); + } + gtk_widget_destroy( win_open ); +} + + +void on_cancel_button1_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *win_open = gtk_widget_get_toplevel( GTK_WIDGET (button) ); + gtk_widget_destroy( win_open ); +} + +void on_entry_device_activate( GtkEntry *entry, + gpointer user_data) +{ + const char *psz_file = gtk_entry_get_text( GTK_ENTRY( entry ) ); + + /* Feed libhb with a device */ + if( *psz_file ) + { + HBScanDVD( hb_handle, psz_file, 0 ); + } +} + +static void menu_language_new( GtkOptionMenu *optionmenu, char *name, HBTitle *title, int i_default ) +{ + int i; + + /* build audio menu */ + GtkWidget *menu = gtk_menu_new(); + GtkWidget *item; + + item = gtk_menu_item_new_with_mnemonic( "None" ); + gtk_widget_show( item ); + gtk_menu_shell_append( GTK_MENU_SHELL(menu), item ); + + for( i = 0; i < HBListCount( title->audioList ); i++ ) + { + HBAudio *audio = (HBAudio*) HBListItemAt( title->audioList, i ); + + item = gtk_menu_item_new_with_mnemonic( audio->language ); + gtk_widget_show( item ); + gtk_menu_shell_append( GTK_MENU_SHELL(menu), item ); + } + + gtk_option_menu_set_menu( GTK_OPTION_MENU(optionmenu), menu ); + GLADE_HOOKUP_OBJECT( hb_win_main, menu, name ); + + gtk_option_menu_set_history( GTK_OPTION_MENU(optionmenu), i_default ); +} + +void on_optionmenu_title_changed( GtkOptionMenu *optionmenu, + gpointer user_data) +{ + GtkWidget *optionmenu_language = lookup_widget( hb_win_main, "optionmenu_language" ); + GtkWidget *optionmenu_language2 = lookup_widget( hb_win_main, "optionmenu_language2" ); + + HBTitle *title; + + int i = gtk_option_menu_get_history( optionmenu ); + + title = (HBTitle*) HBListItemAt( hb_status->titleList, i ); + + /* FIXME is it ok ?*/ + gtk_option_menu_remove_menu( GTK_OPTION_MENU(optionmenu_language) ); + gtk_option_menu_remove_menu( GTK_OPTION_MENU(optionmenu_language2) ); + + if( title ) + { + /* build audio menu */ + menu_language_new( GTK_OPTION_MENU(optionmenu_language), "menu_language", title, 1 ); + menu_language_new( GTK_OPTION_MENU(optionmenu_language2), "menu_language2", title, 0 ); + } +} + + + + + + + +void on_button_browse_file_clicked( GtkButton *button, + gpointer user_data) +{ + GtkWidget *win_open; + + /* Create the open window */ + win_open = create_win_open(); + gtk_object_set_data( GTK_OBJECT(win_open), "entry", "entry_file" ); + gtk_widget_show( win_open ); + gdk_window_raise( win_open->window ); +} + + +static void on_settings_darea_expose_event_callback( GtkWidget *widget, GdkEventExpose *event, gpointer data ) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(widget) ); + char label[1024]; + + int i; + uint8_t *rgba; + + GtkWidget *optionmenu_title = lookup_widget( hb_win_main, "optionmenu_title" ); + HBTitle *title; + + title = HBListItemAt( hb_status->titleList, gtk_option_menu_get_history( GTK_OPTION_MENU(optionmenu_title) ) ); + title->deinterlace = b_settings_deinterlace; + title->outWidth = i_settings_width; + + title->topCrop = i_settings_crop_top; + title->bottomCrop = i_settings_crop_bottom; + title->leftCrop = i_settings_crop_left; + title->rightCrop = i_settings_crop_right; + + rgba = HBGetPreview( hb_handle, title, i_settings_preview_picture ); + + if( title->outWidth != i_settings_width || + title->topCrop != i_settings_crop_top || + title->bottomCrop != i_settings_crop_bottom || + title->leftCrop != i_settings_crop_left || + title->rightCrop != i_settings_crop_right ) + { + i_settings_width = title->outWidth; + + i_settings_crop_top = title->topCrop; + i_settings_crop_bottom = title->bottomCrop; + i_settings_crop_left = title->leftCrop; + i_settings_crop_right = title->rightCrop; + + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_width")), i_settings_width ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_top")), i_settings_crop_top ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_bottom")), i_settings_crop_bottom ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_left")), i_settings_crop_left ); + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_right")), i_settings_crop_right ); + } + + sprintf( label, "Final size: %dx%d", title->outWidth, title->outHeight ); + gtk_label_set_text( GTK_LABEL(lookup_widget(win, "label_settings")), label ); + + /* FIXME do that only under x86 */ + for( i = 0; i < (title->outWidthMax + 2)*(title->outHeightMax + 2); i++ ) + { + const uint8_t r = rgba[4*i+2]; + const uint8_t g = rgba[4*i+1]; + const uint8_t b = rgba[4*i+0]; + const uint8_t a = rgba[4*i+3]; + + rgba[4*i+0] = r; + rgba[4*i+1] = g; + rgba[4*i+2] = b; + rgba[4*i+3] = a; + } + gdk_draw_rgb_32_image( widget->window, widget->style->fg_gc[GTK_STATE_NORMAL], + 0, 0, title->outWidthMax + 2, title->outHeightMax + 2, + GDK_RGB_DITHER_MAX, + rgba, + (title->outWidthMax+2) * 4 ); + + free( rgba ); +} + +void on_spinbutton_width_value_changed( GtkSpinButton *spinbutton, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(spinbutton) ); + + g_print( "on_spinbutton_width_value_changed\n" ); + + i_settings_width = gtk_spin_button_get_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_width")) ); + + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); + +} +/* + * FIXME use only one callback + */ +void +on_spinbutton_crop_top_value_changed (GtkSpinButton *spinbutton, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(spinbutton) ); + + i_settings_crop_top = gtk_spin_button_get_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_top")) ); + + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); +} + + +void +on_spinbutton_crop_bottom_value_changed + (GtkSpinButton *spinbutton, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(spinbutton) ); + + i_settings_crop_bottom = gtk_spin_button_get_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_bottom")) ); + + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); +} + + +void +on_spinbutton_crop_left_value_changed (GtkSpinButton *spinbutton, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(spinbutton) ); + + i_settings_crop_left = gtk_spin_button_get_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_left")) ); + + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); +} + + +void +on_spinbutton_crop_right_value_changed (GtkSpinButton *spinbutton, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(spinbutton) ); + + i_settings_crop_right = gtk_spin_button_get_value( GTK_SPIN_BUTTON(lookup_widget(win, "spinbutton_crop_right")) ); + + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); +} + + +void on_button_settings_clicked( GtkButton *button, + gpointer user_data) +{ + GtkWidget *optionmenu_title = lookup_widget( hb_win_main, "optionmenu_title" ); + HBTitle *title; + + GtkWidget *settings = create_win_settings(); + GtkWidget *darea = lookup_widget( settings, "drawingarea" ); + + title = HBListItemAt( hb_status->titleList, gtk_option_menu_get_history( GTK_OPTION_MENU(optionmenu_title) ) ); + + i_settings_preview_picture = 0; + + gtk_widget_set_size_request( darea, title->outWidthMax + 2, title->outHeightMax + 2 ); + + g_signal_connect (G_OBJECT(darea), "expose_event", + G_CALLBACK (on_settings_darea_expose_event_callback), NULL); + + gtk_spin_button_set_value( GTK_SPIN_BUTTON(lookup_widget(settings, "spinbutton_width")), title->outWidth ); + + gtk_widget_show( settings ); +} + +static void DisplayError( char *title, char *msg ) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new( NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, + "<b>%s</b>\n\n%s", title, msg ); + gtk_label_set_use_markup( GTK_LABEL( GTK_MESSAGE_DIALOG(dialog)->label), TRUE ); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK ); + gtk_window_set_modal( GTK_WINDOW(dialog), TRUE ); + gtk_dialog_run( GTK_DIALOG(dialog) ); + gtk_widget_destroy( dialog ); +} + +void on_button_start_clicked( GtkButton *button, + gpointer user_data) +{ + int i; + + if( hb_status->i_state != HB_STATE_ENCODING ) + { + GtkWidget *optionmenu_title = lookup_widget( hb_win_main, "optionmenu_title" ); + GtkWidget *widget; + HBTitle *title = HBListItemAt( hb_status->titleList, gtk_option_menu_get_history( GTK_OPTION_MENU(optionmenu_title) ) ); + + int i_ab; + + widget = lookup_widget( hb_win_main, "entry_file" ); + title->file = strdup( gtk_entry_get_text( GTK_ENTRY(widget) ) ); + + if( title->file == NULL || *title->file == '\0' ) + { + DisplayError( "Missing parameters", "You need to specify a file" ); + return; + } + + widget = lookup_widget( hb_win_main, "checkbutton_2pass" ); + title->twoPass = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget) ); + + title->deinterlace = b_settings_deinterlace; + + title->outWidth = i_settings_width; + + title->topCrop = i_settings_crop_top; + title->bottomCrop = i_settings_crop_bottom; + title->leftCrop = i_settings_crop_left; + title->rightCrop = i_settings_crop_right; + + widget = lookup_widget( hb_win_main, "radiobutton_cbitrate" ); + if( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON( widget ) ) ) + { + widget = lookup_widget( hb_win_main, "spinbutton_bitrate" ); + title->bitrate = gtk_spin_button_get_value( GTK_SPIN_BUTTON( widget ) ); + } + else + { + int i_size; + widget = lookup_widget( hb_win_main, "spinbutton_size" ); + i_size = gtk_spin_button_get_value( GTK_SPIN_BUTTON( widget ) ); + + /* FIXME FIXME target size FIXME FIXME */ + title->bitrate = 1024; + /* FIXME */ + } + + widget = lookup_widget( hb_win_main, "optionmenu_codec" ); + switch( gtk_option_menu_get_history( GTK_OPTION_MENU(widget) ) ) + { + case 0: + title->codec = HB_CODEC_FFMPEG; + break; + case 1: + title->codec = HB_CODEC_XVID; + break; + case 2: + title->codec = HB_CODEC_X264; + break; + } + + widget = lookup_widget( hb_win_main, "optionmenu_format" ); + switch( gtk_option_menu_get_history( GTK_OPTION_MENU(widget) ) ) + { + case 0: + { + /* Auto detect */ + char *p = strrchr( title->file, '.' ); + if( p && !strcasecmp( p, ".avi" ) ) + { + title->mux = HB_MUX_AVI; + } + else if( p && !strcasecmp( p, ".mp4" ) ) + { + title->mux = HB_MUX_MP4; + } + else if( p && !strcasecmp( p, ".ogm" ) ) + { + title->mux = HB_MUX_OGM; + } + else + { + title->mux = HB_MUX_AVI; + } + break; + } + case 1: + title->mux = HB_MUX_AVI; + break; + case 2: + title->mux = HB_MUX_MP4; + break; + case 3: + title->mux = HB_MUX_OGM; + break; + } + + /* audio */ + widget = lookup_widget( hb_win_main, "optionmenu_bitrate" ); + switch( gtk_option_menu_get_history( GTK_OPTION_MENU(widget) ) ) + { + case 0: + i_ab = 64; + break; + case 1: + i_ab = 92; + break; + case 2: + i_ab = 128; + break; + case 3: + i_ab = 160; + break; + case 4: + i_ab = 192; + break; + case 5: + i_ab = 256; + break; + case 6: + default: + i_ab = 320; + break; + + } + + HBListInit( &title->ripAudioList ); + widget = lookup_widget( hb_win_main, "optionmenu_language" ); + if( ( i = gtk_option_menu_get_history( GTK_OPTION_MENU(widget) ) ) > 0 ) + { + HBAudio *audio = HBListItemAt( title->audioList, i - 1 ); + + audio->outBitrate = i_ab; + if( title->mux == HB_MUX_AVI ) + { + audio->codec = HB_CODEC_MP3; + } + else if( title->mux == HB_MUX_MP4 ) + { + audio->codec = HB_CODEC_AAC; + } + else if( title->mux == HB_MUX_OGM ) + { + audio->codec = HB_CODEC_VORBIS; + } + HBListAdd( title->ripAudioList, audio ); + } + + widget = lookup_widget( hb_win_main, "optionmenu_language2" ); + if( ( i = gtk_option_menu_get_history( GTK_OPTION_MENU(widget) ) ) > 0 ) + { + HBAudio *audio = HBListItemAt( title->audioList, i - 1 ); + + audio->outBitrate = i_ab; + if( title->mux == HB_MUX_AVI ) + { + audio->codec = HB_CODEC_MP3; + } + else if( title->mux == HB_MUX_MP4 ) + { + audio->codec = HB_CODEC_AAC; + } + else if( title->mux == HB_MUX_OGM ) + { + audio->codec = HB_CODEC_VORBIS; + } + HBListAdd( title->ripAudioList, audio ); + } + HBStartRip( hb_handle, title ); + } + else if( hb_status->i_state == HB_STATE_ENCODING ) + { + HBStopRip( hb_handle ); + } +} + + +void on_entry_file_activate( GtkEntry *entry, + gpointer user_data) +{ +#if 0 + GtkWidget *widget = lookup_widget( hb_win_main, "button_start" ); + char *psz_file = gtk_entry_get_text( entry ); + + if( psz_file && *psz_file ) + { + gtk_widget_set_sensitive( widget, TRUE ); + } + else + { + gtk_widget_set_sensitive( widget, FALSE ); + } +#endif +} + + +static void SettingsUpdate( GtkWidget *win ) +{ + b_settings_deinterlace = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(lookup_widget(win, "checkbutton_deinterlace")) ); +} + +gboolean on_win_settings_delete_event( GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET (widget) ); + + SettingsUpdate( win ); + gtk_widget_destroy( win ); + + return FALSE; +} + + +void on_button_ok_settings_clicked( GtkButton *button, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(button) ); + + SettingsUpdate( win ); + + gtk_widget_destroy( win ); +} + + +void on_button_settings_next_clicked( GtkButton *button, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(button) ); + + if( i_settings_preview_picture < 9 ) + { + i_settings_preview_picture++; + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); + } + + if( i_settings_preview_picture == 9 ) + { + gtk_widget_set_sensitive( lookup_widget(win, "button_settings_next"), FALSE ); + } + if( i_settings_preview_picture > 0 ) + { + gtk_widget_set_sensitive( lookup_widget(win, "button_settings_previous"), TRUE ); + } +} + + +void on_button_settings_previous_clicked( GtkButton *button, + gpointer user_data) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(button) ); + + if( i_settings_preview_picture > 0 ) + { + i_settings_preview_picture--; + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); + } + + if( i_settings_preview_picture < 9 ) + { + gtk_widget_set_sensitive( lookup_widget(win, "button_settings_next"), TRUE ); + } + if( i_settings_preview_picture == 0 ) + { + gtk_widget_set_sensitive( lookup_widget(win, "button_settings_previous"), FALSE ); + } +} + + +void on_checkbutton_deinterlace_toggled( GtkToggleButton *togglebutton, + gpointer user_data ) +{ + GtkWidget *win = gtk_widget_get_toplevel( GTK_WIDGET(togglebutton) ); + b_settings_deinterlace = gtk_toggle_button_get_active( togglebutton ); + gtk_widget_queue_draw( lookup_widget(win, "drawingarea" ) ); +} + + diff --git a/gtk2/callbacks.h b/gtk2/callbacks.h new file mode 100644 index 000000000..7040f3567 --- /dev/null +++ b/gtk2/callbacks.h @@ -0,0 +1,75 @@ +#include <gtk/gtk.h> + +extern GtkWidget *hb_win_main; +extern HBHandle *hb_handle; +extern HBStatus *hb_status; + +gboolean on_win_main_delete_event( GtkWidget *widget, + GdkEvent *event, + gpointer user_data); + +gboolean on_win_open_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); + + +void on_button_browse_device (GtkButton *button, + gpointer user_data); + +void on_ok_button1_clicked (GtkButton *button, + gpointer user_data); + +void on_cancel_button1_clicked (GtkButton *button, + gpointer user_data); + +void on_entry_device_activate (GtkEntry *entry, + gpointer user_data); + +void on_optionmenu_title_changed (GtkOptionMenu *optionmenu, + gpointer user_data); + +void on_button_browse_file_clicked (GtkButton *button, + gpointer user_data); + +void on_button_settings_clicked (GtkButton *button, + gpointer user_data); + +void on_button_start_clicked (GtkButton *button, + gpointer user_data); + +void on_entry_file_activate (GtkEntry *entry, + gpointer user_data); + +gboolean on_win_settings_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); + +void on_button_ok_settings_clicked (GtkButton *button, + gpointer user_data); + +void on_button_settings_next_clicked (GtkButton *button, + gpointer user_data); + +void on_button_settings_previous_clicked (GtkButton *button, + gpointer user_data); + +void on_checkbutton_deinterlace_toggled (GtkToggleButton *togglebutton, + gpointer user_data); +void on_spinbutton_width_value_changed( GtkSpinButton *spinbutton, + gpointer user_data); + +void on_spinbutton_crop_top_value_changed (GtkSpinButton *spinbutton, + gpointer user_data); + +void on_spinbutton_crop_bottom_value_changed + (GtkSpinButton *spinbutton, + gpointer user_data); + +void +on_spinbutton_crop_left_value_changed (GtkSpinButton *spinbutton, + gpointer user_data); + +void +on_spinbutton_crop_right_value_changed (GtkSpinButton *spinbutton, + gpointer user_data); + diff --git a/gtk2/gtk2hb.glade b/gtk2/gtk2hb.glade new file mode 100644 index 000000000..50b3e81cd --- /dev/null +++ b/gtk2/gtk2hb.glade @@ -0,0 +1,1863 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkWindow" id="win_main"> + <property name="visible">True</property> + <property name="title" translatable="yes">HandBrake</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <signal name="delete_event" handler="on_win_main_delete_event" last_modification_time="Fri, 05 Dec 2003 23:54:16 GMT"/> + + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkFrame" id="frame_dvd"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + + <child> + <widget class="GtkVBox" id="vbox11"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkAlignment" id="alignment13"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="yalign">1</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Device </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCombo" id="combo1"> + <property name="visible">True</property> + <property name="value_in_list">False</property> + <property name="allow_empty">True</property> + <property name="case_sensitive">False</property> + <property name="enable_arrow_keys">True</property> + <property name="enable_arrows_always">False</property> + + <child internal-child="entry"> + <widget class="GtkEntry" id="entry_device"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char" translatable="yes">*</property> + <property name="activates_default">False</property> + <signal name="activate" handler="on_entry_device_activate" last_modification_time="Sat, 06 Dec 2003 02:59:59 GMT"/> + </widget> + </child> + + <child internal-child="list"> + <widget class="GtkList" id="combo-list1"> + <property name="visible">True</property> + <property name="selection_mode">GTK_SELECTION_BROWSE</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_browse_device"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_browse_device" last_modification_time="Sat, 06 Dec 2003 02:19:48 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">Browse</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">DVD</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox_parameters"> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkFrame" id="frame_video"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + + <child> + <widget class="GtkHBox" id="hbox18"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkAlignment" id="alignment7"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="label" translatable="yes">Title</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="label" translatable="yes">Codec</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkRadioButton" id="radiobutton_cbitrate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Custom bitrate</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="active">True</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkRadioButton" id="radiobutton_tsize"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Target size</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <property name="group">radiobutton_cbitrate</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_2pass"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">2-pass encoding</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="active">True</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkAlignment" id="alignment8"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_title"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">-1</property> + <signal name="changed" handler="on_optionmenu_title_changed" last_modification_time="Sat, 06 Dec 2003 04:23:30 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_codec"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">0</property> + + <child> + <widget class="GtkMenu" id="menu_codec"> + + <child> + <widget class="GtkMenuItem" id="mpeg-4_(ffmpeg)1"> + <property name="visible">True</property> + <property name="label" translatable="yes">MPEG-4 (FFmpeg)</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="mpeg-4_(xvid)1"> + <property name="visible">True</property> + <property name="label" translatable="yes">MPEG-4 (XviD)</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="h264_(x264)1"> + <property name="visible">True</property> + <property name="label" translatable="yes">H264 (x264)</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_bitrate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">1024 100 5000 1 10 10</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">700 0 2000 1 10 10</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_settings"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Crop & Resize..</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_settings_clicked" last_modification_time="Sat, 06 Dec 2003 05:00:14 GMT"/> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Video</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkFrame" id="frame_audio"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + + <child> + <widget class="GtkHBox" id="hbox19"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkAlignment" id="alignment9"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="label" translatable="yes">Language</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes">Secondary language</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="label" translatable="yes">Bitrate</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkAlignment" id="alignment10"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_language"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">-1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_language2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">-1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_bitrate"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">0</property> + + <child> + <widget class="GtkMenu" id="menu1"> + + <child> + <widget class="GtkMenuItem" id="2"> + <property name="visible">True</property> + <property name="label" translatable="yes">64</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="4"> + <property name="visible">True</property> + <property name="label" translatable="yes">96</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="7"> + <property name="visible">True</property> + <property name="label" translatable="yes">128</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="10"> + <property name="visible">True</property> + <property name="label" translatable="yes">160</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="11"> + <property name="visible">True</property> + <property name="label" translatable="yes">192</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="12"> + <property name="visible">True</property> + <property name="label" translatable="yes">256</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="13"> + <property name="visible">True</property> + <property name="label" translatable="yes">320</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label8"> + <property name="visible">True</property> + <property name="label" translatable="yes">Audio</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkFrame" id="frame_output"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="label_yalign">0.5</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> + + <child> + <widget class="GtkVBox" id="vbox2"> + <property name="border_width">5</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkHBox" id="hbox20"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkAlignment" id="alignment11"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="label" translatable="yes">Format</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkAlignment" id="alignment12"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xscale">1</property> + <property name="yscale">1</property> + + <child> + <widget class="GtkOptionMenu" id="optionmenu_format"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="history">0</property> + + <child> + <widget class="GtkMenu" id="menu2"> + + <child> + <widget class="GtkMenuItem" id="auto1"> + <property name="visible">True</property> + <property name="label" translatable="yes">Auto</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="avi1"> + <property name="visible">True</property> + <property name="label" translatable="yes">AVI</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="mp1"> + <property name="visible">True</property> + <property name="label" translatable="yes">MP4</property> + <property name="use_underline">True</property> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="ogm1"> + <property name="visible">True</property> + <property name="label" translatable="yes">OGM</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="label18"> + <property name="visible">True</property> + <property name="label" translatable="yes">File </property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkCombo" id="combo2"> + <property name="visible">True</property> + <property name="value_in_list">False</property> + <property name="allow_empty">True</property> + <property name="case_sensitive">False</property> + <property name="enable_arrow_keys">True</property> + <property name="enable_arrows_always">False</property> + + <child internal-child="entry"> + <widget class="GtkEntry" id="entry_file"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char" translatable="yes">*</property> + <property name="activates_default">False</property> + <signal name="activate" handler="on_entry_file_activate" last_modification_time="Sat, 06 Dec 2003 05:04:29 GMT"/> + </widget> + </child> + + <child internal-child="list"> + <widget class="GtkList" id="list1"> + <property name="visible">True</property> + <property name="selection_mode">GTK_SELECTION_BROWSE</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_browse_file"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_browse_file_clicked" last_modification_time="Sat, 06 Dec 2003 04:52:12 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image4"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="label" translatable="yes">Browse</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="label" translatable="yes">Output</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">6</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="button_start"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_start_clicked" last_modification_time="Sat, 06 Dec 2003 04:59:15 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="button_start_image"> + <property name="visible">True</property> + <property name="stock">gtk-apply</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="button_start_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Start</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">4</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkProgressBar" id="progressbar"> + <property name="visible">True</property> + <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> + <property name="fraction">0</property> + <property name="pulse_step">0.1</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkStatusbar" id="statusbar"> + <property name="visible">True</property> + <property name="has_resize_grip">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkFileSelection" id="win_open"> + <property name="border_width">10</property> + <property name="visible">True</property> + <property name="title" translatable="yes">Select File</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="show_fileops">True</property> + <signal name="delete_event" handler="on_win_open_delete_event" last_modification_time="Sat, 06 Dec 2003 00:17:21 GMT"/> + + <child internal-child="cancel_button"> + <widget class="GtkButton" id="cancel_button1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_cancel_button1_clicked" last_modification_time="Sat, 06 Dec 2003 00:17:46 GMT"/> + </widget> + </child> + + <child internal-child="ok_button"> + <widget class="GtkButton" id="ok_button1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_ok_button1_clicked" last_modification_time="Sat, 06 Dec 2003 00:17:56 GMT"/> + </widget> + </child> +</widget> + +<widget class="GtkWindow" id="win_settings"> + <property name="visible">True</property> + <property name="title" translatable="yes">Picture settings</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <signal name="delete_event" handler="on_win_settings_delete_event" last_modification_time="Sat, 06 Dec 2003 19:07:23 GMT"/> + + <child> + <widget class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkDrawingArea" id="drawingarea"> + <property name="visible">True</property> + </widget> + <packing> + <property name="padding">10</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table5"> + <property name="visible">True</property> + <property name="n_rows">1</property> + <property name="n_columns">3</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> + + <child> + <widget class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkHButtonBox" id="hbuttonbox2"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkButton" id="button_settings_previous"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_settings_previous_clicked" last_modification_time="Sat, 06 Dec 2003 20:58:51 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox12"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image7"> + <property name="visible">True</property> + <property name="stock">gtk-go-back</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label22"> + <property name="visible">True</property> + <property name="label" translatable="yes">Previous</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button_settings_next"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_settings_next_clicked" last_modification_time="Sat, 06 Dec 2003 20:51:27 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment6"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="stock">gtk-go-forward</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label23"> + <property name="visible">True</property> + <property name="label" translatable="yes">Next</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkHBox" id="hbox17"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkTable" id="table8"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">3</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> + + <child> + <widget class="GtkSpinButton" id="spinbutton_width"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">True</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 4096 16 16 10</property> + <signal name="value_changed" handler="on_spinbutton_width_value_changed" last_modification_time="Sun, 07 Dec 2003 23:24:59 GMT"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_crop_top"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 4096 2 10 10</property> + <signal name="value_changed" handler="on_spinbutton_crop_top_value_changed" last_modification_time="Sun, 07 Dec 2003 23:42:52 GMT"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label26"> + <property name="visible">True</property> + <property name="label" translatable="yes">Bottom crop</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="label" translatable="yes">Top crop</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label24"> + <property name="visible">True</property> + <property name="label" translatable="yes">Picture width</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_crop_bottom"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 4096 2 10 10</property> + <signal name="value_changed" handler="on_spinbutton_crop_bottom_value_changed" last_modification_time="Sun, 07 Dec 2003 23:43:06 GMT"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">5</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table9"> + <property name="visible">True</property> + <property name="n_rows">3</property> + <property name="n_columns">3</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> + + <child> + <widget class="GtkSpinButton" id="spinbutton_crop_left"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 4096 2 10 10</property> + <signal name="value_changed" handler="on_spinbutton_crop_left_value_changed" last_modification_time="Sun, 07 Dec 2003 23:43:30 GMT"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label28"> + <property name="visible">True</property> + <property name="label" translatable="yes">Right crop</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label27"> + <property name="visible">True</property> + <property name="label" translatable="yes">Left crop</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkSpinButton" id="spinbutton_crop_right"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="climb_rate">1</property> + <property name="digits">0</property> + <property name="numeric">False</property> + <property name="update_policy">GTK_UPDATE_ALWAYS</property> + <property name="snap_to_ticks">False</property> + <property name="wrap">False</property> + <property name="adjustment">0 0 4096 2 10 10</property> + <signal name="value_changed" handler="on_spinbutton_crop_right_value_changed" last_modification_time="Sun, 07 Dec 2003 23:43:42 GMT"/> + </widget> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkCheckButton" id="checkbutton_deinterlace"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">deinterlace</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="active">False</property> + <property name="inconsistent">False</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_checkbutton_deinterlace_toggled" last_modification_time="Sat, 06 Dec 2003 21:12:08 GMT"/> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">5</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options">fill</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkHSeparator" id="hseparator1"> + <property name="visible">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkTable" id="table4"> + <property name="visible">True</property> + <property name="n_rows">1</property> + <property name="n_columns">2</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> + + <child> + <widget class="GtkButton" id="button1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <signal name="clicked" handler="on_button_ok_settings_clicked" last_modification_time="Sat, 06 Dec 2003 19:07:02 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image5"> + <property name="visible">True</property> + <property name="stock">gtk-apply</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label20"> + <property name="visible">True</property> + <property name="label" translatable="yes">Ok</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_settings"> + <property name="visible">True</property> + <property name="label" translatable="yes">label21</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + <packing> + <property name="padding">5</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/gtk2/interface.c b/gtk2/interface.c new file mode 100644 index 000000000..826889c31 --- /dev/null +++ b/gtk2/interface.c @@ -0,0 +1,984 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> + +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> + +#include "HandBrake.h" +#include "status.h" +#include "callbacks.h" +#include "interface.h" +#include "support.h" + +#define GLADE_HOOKUP_OBJECT(component,widget,name) \ + g_object_set_data_full (G_OBJECT (component), name, \ + gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) + +#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ + g_object_set_data (G_OBJECT (component), name, widget) + +GtkWidget* +create_win_main (void) +{ + GtkWidget *win_main; + GtkWidget *vbox1; + GtkWidget *frame_dvd; + GtkWidget *vbox11; + GtkWidget *alignment13; + GtkWidget *hbox1; + GtkWidget *label3; + GtkWidget *combo1; + GtkWidget *entry_device; + GtkWidget *button_browse_device; + GtkWidget *alignment1; + GtkWidget *hbox2; + GtkWidget *image1; + GtkWidget *label4; + GtkWidget *label1; + GtkWidget *vbox_parameters; + GtkWidget *frame_video; + GtkWidget *hbox18; + GtkWidget *alignment7; + GtkWidget *vbox7; + GtkWidget *label13; + GtkWidget *label12; + GtkWidget *radiobutton_cbitrate; + GSList *radiobutton_cbitrate_group = NULL; + GtkWidget *radiobutton_tsize; + GtkWidget *checkbutton_2pass; + GtkWidget *alignment8; + GtkWidget *vbox8; + GtkWidget *optionmenu_title; + GtkWidget *optionmenu_codec; + GtkWidget *menu_codec; + GtkWidget *mpeg_4__ffmpeg_1; + GtkWidget *mpeg_4__xvid_1; + GtkWidget *h264__x264_1; + GtkObject *spinbutton_bitrate_adj; + GtkWidget *spinbutton_bitrate; + GtkObject *spinbutton_size_adj; + GtkWidget *spinbutton_size; + GtkWidget *button_settings; + GtkWidget *label6; + GtkWidget *frame_audio; + GtkWidget *hbox19; + GtkWidget *alignment9; + GtkWidget *vbox9; + GtkWidget *label14; + GtkWidget *label15; + GtkWidget *label16; + GtkWidget *alignment10; + GtkWidget *vbox10; + GtkWidget *optionmenu_language; + GtkWidget *optionmenu_language2; + GtkWidget *optionmenu_bitrate; + GtkWidget *menu1; + GtkWidget *_2; + GtkWidget *_4; + GtkWidget *_7; + GtkWidget *_10; + GtkWidget *_11; + GtkWidget *_12; + GtkWidget *_13; + GtkWidget *label8; + GtkWidget *frame_output; + GtkWidget *vbox2; + GtkWidget *hbox20; + GtkWidget *alignment11; + GtkWidget *label17; + GtkWidget *alignment12; + GtkWidget *optionmenu_format; + GtkWidget *menu2; + GtkWidget *auto1; + GtkWidget *avi1; + GtkWidget *mp1; + GtkWidget *ogm1; + GtkWidget *hbox6; + GtkWidget *label18; + GtkWidget *combo2; + GtkWidget *entry_file; + GtkWidget *button_browse_file; + GtkWidget *alignment2; + GtkWidget *hbox7; + GtkWidget *image4; + GtkWidget *label19; + GtkWidget *label9; + GtkWidget *hbuttonbox1; + GtkWidget *button_start; + GtkWidget *alignment3; + GtkWidget *hbox9; + GtkWidget *button_start_image; + GtkWidget *button_start_label; + GtkWidget *hbox10; + GtkWidget *progressbar; + GtkWidget *statusbar; + + win_main = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (win_main), "HandBrake"); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (win_main), vbox1); + + frame_dvd = gtk_frame_new (NULL); + gtk_widget_show (frame_dvd); + gtk_box_pack_start (GTK_BOX (vbox1), frame_dvd, TRUE, TRUE, 0); + + vbox11 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox11); + gtk_container_add (GTK_CONTAINER (frame_dvd), vbox11); + gtk_container_set_border_width (GTK_CONTAINER (vbox11), 5); + + alignment13 = gtk_alignment_new (0, 1, 1, 1); + gtk_widget_show (alignment13); + gtk_box_pack_start (GTK_BOX (vbox11), alignment13, TRUE, FALSE, 0); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_container_add (GTK_CONTAINER (alignment13), hbox1); + + label3 = gtk_label_new ("Device "); + gtk_widget_show (label3); + gtk_box_pack_start (GTK_BOX (hbox1), label3, FALSE, TRUE, 0); + + combo1 = gtk_combo_new (); + g_object_set_data (G_OBJECT (GTK_COMBO (combo1)->popwin), + "GladeParentKey", combo1); + gtk_widget_show (combo1); + gtk_box_pack_start (GTK_BOX (hbox1), combo1, TRUE, TRUE, 0); + + entry_device = GTK_COMBO (combo1)->entry; + gtk_widget_show (entry_device); + + button_browse_device = gtk_button_new (); + gtk_widget_show (button_browse_device); + gtk_box_pack_start (GTK_BOX (hbox1), button_browse_device, FALSE, FALSE, 0); + GTK_WIDGET_SET_FLAGS (button_browse_device, GTK_CAN_DEFAULT); + + alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment1); + gtk_container_add (GTK_CONTAINER (button_browse_device), alignment1); + + hbox2 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox2); + gtk_container_add (GTK_CONTAINER (alignment1), hbox2); + + image1 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image1); + gtk_box_pack_start (GTK_BOX (hbox2), image1, FALSE, FALSE, 0); + + label4 = gtk_label_new_with_mnemonic ("Browse"); + gtk_widget_show (label4); + gtk_box_pack_start (GTK_BOX (hbox2), label4, FALSE, FALSE, 0); + + label1 = gtk_label_new ("DVD"); + gtk_widget_show (label1); + gtk_frame_set_label_widget (GTK_FRAME (frame_dvd), label1); + + vbox_parameters = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox1), vbox_parameters, FALSE, TRUE, 0); + + frame_video = gtk_frame_new (NULL); + gtk_widget_show (frame_video); + gtk_box_pack_start (GTK_BOX (vbox_parameters), frame_video, FALSE, TRUE, 0); + + hbox18 = gtk_hbox_new (TRUE, 0); + gtk_widget_show (hbox18); + gtk_container_add (GTK_CONTAINER (frame_video), hbox18); + gtk_container_set_border_width (GTK_CONTAINER (hbox18), 5); + + alignment7 = gtk_alignment_new (0, 0.5, 1, 1); + gtk_widget_show (alignment7); + gtk_box_pack_start (GTK_BOX (hbox18), alignment7, TRUE, TRUE, 0); + + vbox7 = gtk_vbox_new (TRUE, 0); + gtk_widget_show (vbox7); + gtk_container_add (GTK_CONTAINER (alignment7), vbox7); + + label13 = gtk_label_new ("Title"); + gtk_widget_show (label13); + gtk_box_pack_start (GTK_BOX (vbox7), label13, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5); + + label12 = gtk_label_new ("Codec"); + gtk_widget_show (label12); + gtk_box_pack_start (GTK_BOX (vbox7), label12, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5); + + radiobutton_cbitrate = gtk_radio_button_new_with_mnemonic (NULL, "Custom bitrate"); + gtk_widget_show (radiobutton_cbitrate); + gtk_box_pack_start (GTK_BOX (vbox7), radiobutton_cbitrate, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton_cbitrate), radiobutton_cbitrate_group); + radiobutton_cbitrate_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton_cbitrate)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton_cbitrate), TRUE); + + radiobutton_tsize = gtk_radio_button_new_with_mnemonic (NULL, "Target size"); + gtk_widget_show (radiobutton_tsize); + gtk_box_pack_start (GTK_BOX (vbox7), radiobutton_tsize, FALSE, FALSE, 0); + gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton_tsize), radiobutton_cbitrate_group); + radiobutton_cbitrate_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton_tsize)); + + checkbutton_2pass = gtk_check_button_new_with_mnemonic ("2-pass encoding"); + gtk_widget_show (checkbutton_2pass); + gtk_box_pack_start (GTK_BOX (vbox7), checkbutton_2pass, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton_2pass), TRUE); + + alignment8 = gtk_alignment_new (1, 0.5, 1, 1); + gtk_widget_show (alignment8); + gtk_box_pack_start (GTK_BOX (hbox18), alignment8, TRUE, TRUE, 0); + + vbox8 = gtk_vbox_new (TRUE, 0); + gtk_widget_show (vbox8); + gtk_container_add (GTK_CONTAINER (alignment8), vbox8); + + optionmenu_title = gtk_option_menu_new (); + gtk_widget_show (optionmenu_title); + gtk_box_pack_start (GTK_BOX (vbox8), optionmenu_title, FALSE, FALSE, 0); + + optionmenu_codec = gtk_option_menu_new (); + gtk_widget_show (optionmenu_codec); + gtk_box_pack_start (GTK_BOX (vbox8), optionmenu_codec, FALSE, FALSE, 0); + + menu_codec = gtk_menu_new (); + + mpeg_4__ffmpeg_1 = gtk_menu_item_new_with_mnemonic ("MPEG-4 (FFmpeg)"); + gtk_widget_show (mpeg_4__ffmpeg_1); + gtk_container_add (GTK_CONTAINER (menu_codec), mpeg_4__ffmpeg_1); + + mpeg_4__xvid_1 = gtk_menu_item_new_with_mnemonic ("MPEG-4 (XviD)"); + gtk_widget_show (mpeg_4__xvid_1); + gtk_container_add (GTK_CONTAINER (menu_codec), mpeg_4__xvid_1); + + h264__x264_1 = gtk_menu_item_new_with_mnemonic ("H264 (x264)"); + gtk_widget_show (h264__x264_1); + gtk_container_add (GTK_CONTAINER (menu_codec), h264__x264_1); + + gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_codec), menu_codec); + + spinbutton_bitrate_adj = gtk_adjustment_new (1024, 100, 5000, 1, 10, 10); + spinbutton_bitrate = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_bitrate_adj), 1, 0); + gtk_widget_show (spinbutton_bitrate); + gtk_box_pack_start (GTK_BOX (vbox8), spinbutton_bitrate, FALSE, FALSE, 0); + + spinbutton_size_adj = gtk_adjustment_new (700, 0, 2000, 1, 10, 10); + spinbutton_size = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_size_adj), 1, 0); + gtk_widget_show (spinbutton_size); + gtk_box_pack_start (GTK_BOX (vbox8), spinbutton_size, FALSE, FALSE, 0); + + button_settings = gtk_button_new_with_mnemonic ("Crop & Resize.."); + gtk_widget_show (button_settings); + gtk_box_pack_start (GTK_BOX (vbox8), button_settings, FALSE, FALSE, 0); + + label6 = gtk_label_new ("Video"); + gtk_widget_show (label6); + gtk_frame_set_label_widget (GTK_FRAME (frame_video), label6); + + frame_audio = gtk_frame_new (NULL); + gtk_widget_show (frame_audio); + gtk_box_pack_start (GTK_BOX (vbox_parameters), frame_audio, FALSE, TRUE, 0); + + hbox19 = gtk_hbox_new (TRUE, 0); + gtk_widget_show (hbox19); + gtk_container_add (GTK_CONTAINER (frame_audio), hbox19); + gtk_container_set_border_width (GTK_CONTAINER (hbox19), 5); + + alignment9 = gtk_alignment_new (0, 0.5, 1, 1); + gtk_widget_show (alignment9); + gtk_box_pack_start (GTK_BOX (hbox19), alignment9, TRUE, TRUE, 0); + + vbox9 = gtk_vbox_new (TRUE, 0); + gtk_widget_show (vbox9); + gtk_container_add (GTK_CONTAINER (alignment9), vbox9); + + label14 = gtk_label_new ("Language"); + gtk_widget_show (label14); + gtk_box_pack_start (GTK_BOX (vbox9), label14, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5); + + label15 = gtk_label_new ("Secondary language"); + gtk_widget_show (label15); + gtk_box_pack_start (GTK_BOX (vbox9), label15, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label15), 0, 0.5); + + label16 = gtk_label_new ("Bitrate"); + gtk_widget_show (label16); + gtk_box_pack_start (GTK_BOX (vbox9), label16, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5); + + alignment10 = gtk_alignment_new (1, 0.5, 1, 1); + gtk_widget_show (alignment10); + gtk_box_pack_start (GTK_BOX (hbox19), alignment10, TRUE, TRUE, 0); + + vbox10 = gtk_vbox_new (TRUE, 0); + gtk_widget_show (vbox10); + gtk_container_add (GTK_CONTAINER (alignment10), vbox10); + + optionmenu_language = gtk_option_menu_new (); + gtk_widget_show (optionmenu_language); + gtk_box_pack_start (GTK_BOX (vbox10), optionmenu_language, FALSE, FALSE, 0); + + optionmenu_language2 = gtk_option_menu_new (); + gtk_widget_show (optionmenu_language2); + gtk_box_pack_start (GTK_BOX (vbox10), optionmenu_language2, FALSE, FALSE, 0); + + optionmenu_bitrate = gtk_option_menu_new (); + gtk_widget_show (optionmenu_bitrate); + gtk_box_pack_start (GTK_BOX (vbox10), optionmenu_bitrate, FALSE, FALSE, 0); + + menu1 = gtk_menu_new (); + + _2 = gtk_menu_item_new_with_mnemonic ("64"); + gtk_widget_show (_2); + gtk_container_add (GTK_CONTAINER (menu1), _2); + + _4 = gtk_menu_item_new_with_mnemonic ("96"); + gtk_widget_show (_4); + gtk_container_add (GTK_CONTAINER (menu1), _4); + + _7 = gtk_menu_item_new_with_mnemonic ("128"); + gtk_widget_show (_7); + gtk_container_add (GTK_CONTAINER (menu1), _7); + + _10 = gtk_menu_item_new_with_mnemonic ("160"); + gtk_widget_show (_10); + gtk_container_add (GTK_CONTAINER (menu1), _10); + + _11 = gtk_menu_item_new_with_mnemonic ("192"); + gtk_widget_show (_11); + gtk_container_add (GTK_CONTAINER (menu1), _11); + + _12 = gtk_menu_item_new_with_mnemonic ("256"); + gtk_widget_show (_12); + gtk_container_add (GTK_CONTAINER (menu1), _12); + + _13 = gtk_menu_item_new_with_mnemonic ("320"); + gtk_widget_show (_13); + gtk_container_add (GTK_CONTAINER (menu1), _13); + + gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_bitrate), menu1); + + label8 = gtk_label_new ("Audio"); + gtk_widget_show (label8); + gtk_frame_set_label_widget (GTK_FRAME (frame_audio), label8); + + frame_output = gtk_frame_new (NULL); + gtk_widget_show (frame_output); + gtk_box_pack_start (GTK_BOX (vbox_parameters), frame_output, FALSE, TRUE, 6); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_container_add (GTK_CONTAINER (frame_output), vbox2); + gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5); + + hbox20 = gtk_hbox_new (TRUE, 0); + gtk_widget_show (hbox20); + gtk_box_pack_start (GTK_BOX (vbox2), hbox20, TRUE, TRUE, 0); + + alignment11 = gtk_alignment_new (0, 0.5, 1, 1); + gtk_widget_show (alignment11); + gtk_box_pack_start (GTK_BOX (hbox20), alignment11, TRUE, TRUE, 0); + + label17 = gtk_label_new ("Format"); + gtk_widget_show (label17); + gtk_container_add (GTK_CONTAINER (alignment11), label17); + gtk_misc_set_alignment (GTK_MISC (label17), 0, 0.5); + + alignment12 = gtk_alignment_new (1, 0.5, 1, 1); + gtk_widget_show (alignment12); + gtk_box_pack_start (GTK_BOX (hbox20), alignment12, TRUE, TRUE, 0); + + optionmenu_format = gtk_option_menu_new (); + gtk_widget_show (optionmenu_format); + gtk_container_add (GTK_CONTAINER (alignment12), optionmenu_format); + + menu2 = gtk_menu_new (); + + auto1 = gtk_menu_item_new_with_mnemonic ("Auto"); + gtk_widget_show (auto1); + gtk_container_add (GTK_CONTAINER (menu2), auto1); + + avi1 = gtk_menu_item_new_with_mnemonic ("AVI"); + gtk_widget_show (avi1); + gtk_container_add (GTK_CONTAINER (menu2), avi1); + + mp1 = gtk_menu_item_new_with_mnemonic ("MP4"); + gtk_widget_show (mp1); + gtk_container_add (GTK_CONTAINER (menu2), mp1); + + ogm1 = gtk_menu_item_new_with_mnemonic ("OGM"); + gtk_widget_show (ogm1); + gtk_container_add (GTK_CONTAINER (menu2), ogm1); + + gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu_format), menu2); + + hbox6 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox6); + gtk_box_pack_start (GTK_BOX (vbox2), hbox6, TRUE, TRUE, 0); + + label18 = gtk_label_new ("File "); + gtk_widget_show (label18); + gtk_box_pack_start (GTK_BOX (hbox6), label18, FALSE, TRUE, 0); + + combo2 = gtk_combo_new (); + g_object_set_data (G_OBJECT (GTK_COMBO (combo2)->popwin), + "GladeParentKey", combo2); + gtk_widget_show (combo2); + gtk_box_pack_start (GTK_BOX (hbox6), combo2, TRUE, TRUE, 0); + + entry_file = GTK_COMBO (combo2)->entry; + gtk_widget_show (entry_file); + + button_browse_file = gtk_button_new (); + gtk_widget_show (button_browse_file); + gtk_box_pack_start (GTK_BOX (hbox6), button_browse_file, FALSE, FALSE, 0); + GTK_WIDGET_SET_FLAGS (button_browse_file, GTK_CAN_DEFAULT); + + alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment2); + gtk_container_add (GTK_CONTAINER (button_browse_file), alignment2); + + hbox7 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox7); + gtk_container_add (GTK_CONTAINER (alignment2), hbox7); + + image4 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image4); + gtk_box_pack_start (GTK_BOX (hbox7), image4, FALSE, FALSE, 0); + + label19 = gtk_label_new_with_mnemonic ("Browse"); + gtk_widget_show (label19); + gtk_box_pack_start (GTK_BOX (hbox7), label19, FALSE, FALSE, 0); + + label9 = gtk_label_new ("Output"); + gtk_widget_show (label9); + gtk_frame_set_label_widget (GTK_FRAME (frame_output), label9); + + hbuttonbox1 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox_parameters), hbuttonbox1, FALSE, TRUE, 4); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); + + button_start = gtk_button_new (); + gtk_widget_show (button_start); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button_start); + GTK_WIDGET_SET_FLAGS (button_start, GTK_CAN_DEFAULT); + + alignment3 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment3); + gtk_container_add (GTK_CONTAINER (button_start), alignment3); + + hbox9 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox9); + gtk_container_add (GTK_CONTAINER (alignment3), hbox9); + + button_start_image = gtk_image_new_from_stock ("gtk-apply", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (button_start_image); + gtk_box_pack_start (GTK_BOX (hbox9), button_start_image, FALSE, FALSE, 0); + + button_start_label = gtk_label_new_with_mnemonic ("Start"); + gtk_widget_show (button_start_label); + gtk_box_pack_start (GTK_BOX (hbox9), button_start_label, FALSE, FALSE, 0); + + hbox10 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox10); + gtk_box_pack_start (GTK_BOX (vbox1), hbox10, FALSE, FALSE, 0); + + progressbar = gtk_progress_bar_new (); + gtk_widget_show (progressbar); + gtk_box_pack_start (GTK_BOX (hbox10), progressbar, FALSE, FALSE, 0); + + statusbar = gtk_statusbar_new (); + gtk_widget_show (statusbar); + gtk_box_pack_start (GTK_BOX (hbox10), statusbar, TRUE, TRUE, 0); + + g_signal_connect ((gpointer) win_main, "delete_event", + G_CALLBACK (on_win_main_delete_event), + NULL); + g_signal_connect ((gpointer) entry_device, "activate", + G_CALLBACK (on_entry_device_activate), + NULL); + g_signal_connect ((gpointer) button_browse_device, "clicked", + G_CALLBACK (on_button_browse_device), + NULL); + g_signal_connect ((gpointer) optionmenu_title, "changed", + G_CALLBACK (on_optionmenu_title_changed), + NULL); + g_signal_connect ((gpointer) button_settings, "clicked", + G_CALLBACK (on_button_settings_clicked), + NULL); + g_signal_connect ((gpointer) entry_file, "activate", + G_CALLBACK (on_entry_file_activate), + NULL); + g_signal_connect ((gpointer) button_browse_file, "clicked", + G_CALLBACK (on_button_browse_file_clicked), + NULL); + g_signal_connect ((gpointer) button_start, "clicked", + G_CALLBACK (on_button_start_clicked), + NULL); + + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF (win_main, win_main, "win_main"); + GLADE_HOOKUP_OBJECT (win_main, vbox1, "vbox1"); + GLADE_HOOKUP_OBJECT (win_main, frame_dvd, "frame_dvd"); + GLADE_HOOKUP_OBJECT (win_main, vbox11, "vbox11"); + GLADE_HOOKUP_OBJECT (win_main, alignment13, "alignment13"); + GLADE_HOOKUP_OBJECT (win_main, hbox1, "hbox1"); + GLADE_HOOKUP_OBJECT (win_main, label3, "label3"); + GLADE_HOOKUP_OBJECT (win_main, combo1, "combo1"); + GLADE_HOOKUP_OBJECT (win_main, entry_device, "entry_device"); + GLADE_HOOKUP_OBJECT (win_main, button_browse_device, "button_browse_device"); + GLADE_HOOKUP_OBJECT (win_main, alignment1, "alignment1"); + GLADE_HOOKUP_OBJECT (win_main, hbox2, "hbox2"); + GLADE_HOOKUP_OBJECT (win_main, image1, "image1"); + GLADE_HOOKUP_OBJECT (win_main, label4, "label4"); + GLADE_HOOKUP_OBJECT (win_main, label1, "label1"); + GLADE_HOOKUP_OBJECT (win_main, vbox_parameters, "vbox_parameters"); + GLADE_HOOKUP_OBJECT (win_main, frame_video, "frame_video"); + GLADE_HOOKUP_OBJECT (win_main, hbox18, "hbox18"); + GLADE_HOOKUP_OBJECT (win_main, alignment7, "alignment7"); + GLADE_HOOKUP_OBJECT (win_main, vbox7, "vbox7"); + GLADE_HOOKUP_OBJECT (win_main, label13, "label13"); + GLADE_HOOKUP_OBJECT (win_main, label12, "label12"); + GLADE_HOOKUP_OBJECT (win_main, radiobutton_cbitrate, "radiobutton_cbitrate"); + GLADE_HOOKUP_OBJECT (win_main, radiobutton_tsize, "radiobutton_tsize"); + GLADE_HOOKUP_OBJECT (win_main, checkbutton_2pass, "checkbutton_2pass"); + GLADE_HOOKUP_OBJECT (win_main, alignment8, "alignment8"); + GLADE_HOOKUP_OBJECT (win_main, vbox8, "vbox8"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_title, "optionmenu_title"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_codec, "optionmenu_codec"); + GLADE_HOOKUP_OBJECT (win_main, menu_codec, "menu_codec"); + GLADE_HOOKUP_OBJECT (win_main, mpeg_4__ffmpeg_1, "mpeg_4__ffmpeg_1"); + GLADE_HOOKUP_OBJECT (win_main, mpeg_4__xvid_1, "mpeg_4__xvid_1"); + GLADE_HOOKUP_OBJECT (win_main, h264__x264_1, "h264__x264_1"); + GLADE_HOOKUP_OBJECT (win_main, spinbutton_bitrate, "spinbutton_bitrate"); + GLADE_HOOKUP_OBJECT (win_main, spinbutton_size, "spinbutton_size"); + GLADE_HOOKUP_OBJECT (win_main, button_settings, "button_settings"); + GLADE_HOOKUP_OBJECT (win_main, label6, "label6"); + GLADE_HOOKUP_OBJECT (win_main, frame_audio, "frame_audio"); + GLADE_HOOKUP_OBJECT (win_main, hbox19, "hbox19"); + GLADE_HOOKUP_OBJECT (win_main, alignment9, "alignment9"); + GLADE_HOOKUP_OBJECT (win_main, vbox9, "vbox9"); + GLADE_HOOKUP_OBJECT (win_main, label14, "label14"); + GLADE_HOOKUP_OBJECT (win_main, label15, "label15"); + GLADE_HOOKUP_OBJECT (win_main, label16, "label16"); + GLADE_HOOKUP_OBJECT (win_main, alignment10, "alignment10"); + GLADE_HOOKUP_OBJECT (win_main, vbox10, "vbox10"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_language, "optionmenu_language"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_language2, "optionmenu_language2"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_bitrate, "optionmenu_bitrate"); + GLADE_HOOKUP_OBJECT (win_main, menu1, "menu1"); + GLADE_HOOKUP_OBJECT (win_main, _2, "_2"); + GLADE_HOOKUP_OBJECT (win_main, _4, "_4"); + GLADE_HOOKUP_OBJECT (win_main, _7, "_7"); + GLADE_HOOKUP_OBJECT (win_main, _10, "_10"); + GLADE_HOOKUP_OBJECT (win_main, _11, "_11"); + GLADE_HOOKUP_OBJECT (win_main, _12, "_12"); + GLADE_HOOKUP_OBJECT (win_main, _13, "_13"); + GLADE_HOOKUP_OBJECT (win_main, label8, "label8"); + GLADE_HOOKUP_OBJECT (win_main, frame_output, "frame_output"); + GLADE_HOOKUP_OBJECT (win_main, vbox2, "vbox2"); + GLADE_HOOKUP_OBJECT (win_main, hbox20, "hbox20"); + GLADE_HOOKUP_OBJECT (win_main, alignment11, "alignment11"); + GLADE_HOOKUP_OBJECT (win_main, label17, "label17"); + GLADE_HOOKUP_OBJECT (win_main, alignment12, "alignment12"); + GLADE_HOOKUP_OBJECT (win_main, optionmenu_format, "optionmenu_format"); + GLADE_HOOKUP_OBJECT (win_main, menu2, "menu2"); + GLADE_HOOKUP_OBJECT (win_main, auto1, "auto1"); + GLADE_HOOKUP_OBJECT (win_main, avi1, "avi1"); + GLADE_HOOKUP_OBJECT (win_main, mp1, "mp1"); + GLADE_HOOKUP_OBJECT (win_main, ogm1, "ogm1"); + GLADE_HOOKUP_OBJECT (win_main, hbox6, "hbox6"); + GLADE_HOOKUP_OBJECT (win_main, label18, "label18"); + GLADE_HOOKUP_OBJECT (win_main, combo2, "combo2"); + GLADE_HOOKUP_OBJECT (win_main, entry_file, "entry_file"); + GLADE_HOOKUP_OBJECT (win_main, button_browse_file, "button_browse_file"); + GLADE_HOOKUP_OBJECT (win_main, alignment2, "alignment2"); + GLADE_HOOKUP_OBJECT (win_main, hbox7, "hbox7"); + GLADE_HOOKUP_OBJECT (win_main, image4, "image4"); + GLADE_HOOKUP_OBJECT (win_main, label19, "label19"); + GLADE_HOOKUP_OBJECT (win_main, label9, "label9"); + GLADE_HOOKUP_OBJECT (win_main, hbuttonbox1, "hbuttonbox1"); + GLADE_HOOKUP_OBJECT (win_main, button_start, "button_start"); + GLADE_HOOKUP_OBJECT (win_main, alignment3, "alignment3"); + GLADE_HOOKUP_OBJECT (win_main, hbox9, "hbox9"); + GLADE_HOOKUP_OBJECT (win_main, button_start_image, "button_start_image"); + GLADE_HOOKUP_OBJECT (win_main, button_start_label, "button_start_label"); + GLADE_HOOKUP_OBJECT (win_main, hbox10, "hbox10"); + GLADE_HOOKUP_OBJECT (win_main, progressbar, "progressbar"); + GLADE_HOOKUP_OBJECT (win_main, statusbar, "statusbar"); + + return win_main; +} + +GtkWidget* +create_win_open (void) +{ + GtkWidget *win_open; + GtkWidget *ok_button1; + GtkWidget *cancel_button1; + + win_open = gtk_file_selection_new ("Select File"); + gtk_container_set_border_width (GTK_CONTAINER (win_open), 10); + gtk_window_set_modal (GTK_WINDOW (win_open), TRUE); + + ok_button1 = GTK_FILE_SELECTION (win_open)->ok_button; + gtk_widget_show (ok_button1); + GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); + + cancel_button1 = GTK_FILE_SELECTION (win_open)->cancel_button; + gtk_widget_show (cancel_button1); + GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); + + g_signal_connect ((gpointer) win_open, "delete_event", + G_CALLBACK (on_win_open_delete_event), + NULL); + g_signal_connect ((gpointer) ok_button1, "clicked", + G_CALLBACK (on_ok_button1_clicked), + NULL); + g_signal_connect ((gpointer) cancel_button1, "clicked", + G_CALLBACK (on_cancel_button1_clicked), + NULL); + + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF (win_open, win_open, "win_open"); + GLADE_HOOKUP_OBJECT_NO_REF (win_open, ok_button1, "ok_button1"); + GLADE_HOOKUP_OBJECT_NO_REF (win_open, cancel_button1, "cancel_button1"); + + return win_open; +} + +GtkWidget* +create_win_settings (void) +{ + GtkWidget *win_settings; + GtkWidget *vbox4; + GtkWidget *drawingarea; + GtkWidget *table5; + GtkWidget *vbox5; + GtkWidget *hbuttonbox2; + GtkWidget *button_settings_previous; + GtkWidget *alignment5; + GtkWidget *hbox12; + GtkWidget *image7; + GtkWidget *label22; + GtkWidget *button_settings_next; + GtkWidget *alignment6; + GtkWidget *hbox13; + GtkWidget *image8; + GtkWidget *label23; + GtkWidget *vbox6; + GtkWidget *hbox17; + GtkWidget *table8; + GtkObject *spinbutton_width_adj; + GtkWidget *spinbutton_width; + GtkObject *spinbutton_crop_top_adj; + GtkWidget *spinbutton_crop_top; + GtkWidget *label26; + GtkWidget *label25; + GtkWidget *label24; + GtkObject *spinbutton_crop_bottom_adj; + GtkWidget *spinbutton_crop_bottom; + GtkWidget *table9; + GtkObject *spinbutton_crop_left_adj; + GtkWidget *spinbutton_crop_left; + GtkWidget *label28; + GtkWidget *label27; + GtkObject *spinbutton_crop_right_adj; + GtkWidget *spinbutton_crop_right; + GtkWidget *checkbutton_deinterlace; + GtkWidget *hseparator1; + GtkWidget *table4; + GtkWidget *button1; + GtkWidget *alignment4; + GtkWidget *hbox11; + GtkWidget *image5; + GtkWidget *label20; + GtkWidget *label_settings; + + win_settings = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (win_settings), "Picture settings"); + gtk_window_set_modal (GTK_WINDOW (win_settings), TRUE); + + vbox4 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox4); + gtk_container_add (GTK_CONTAINER (win_settings), vbox4); + + drawingarea = gtk_drawing_area_new (); + gtk_widget_show (drawingarea); + gtk_box_pack_start (GTK_BOX (vbox4), drawingarea, TRUE, TRUE, 10); + + table5 = gtk_table_new (1, 3, FALSE); + gtk_widget_show (table5); + gtk_box_pack_start (GTK_BOX (vbox4), table5, TRUE, TRUE, 0); + + vbox5 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox5); + gtk_table_attach (GTK_TABLE (table5), vbox5, 2, 3, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); + + hbuttonbox2 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox2); + gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox2, TRUE, TRUE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END); + + button_settings_previous = gtk_button_new (); + gtk_widget_show (button_settings_previous); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), button_settings_previous); + gtk_widget_set_sensitive (button_settings_previous, FALSE); + GTK_WIDGET_SET_FLAGS (button_settings_previous, GTK_CAN_DEFAULT); + + alignment5 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment5); + gtk_container_add (GTK_CONTAINER (button_settings_previous), alignment5); + + hbox12 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox12); + gtk_container_add (GTK_CONTAINER (alignment5), hbox12); + + image7 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image7); + gtk_box_pack_start (GTK_BOX (hbox12), image7, FALSE, FALSE, 0); + + label22 = gtk_label_new_with_mnemonic ("Previous"); + gtk_widget_show (label22); + gtk_box_pack_start (GTK_BOX (hbox12), label22, FALSE, FALSE, 0); + + button_settings_next = gtk_button_new (); + gtk_widget_show (button_settings_next); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), button_settings_next); + GTK_WIDGET_SET_FLAGS (button_settings_next, GTK_CAN_DEFAULT); + + alignment6 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment6); + gtk_container_add (GTK_CONTAINER (button_settings_next), alignment6); + + hbox13 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox13); + gtk_container_add (GTK_CONTAINER (alignment6), hbox13); + + image8 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image8); + gtk_box_pack_start (GTK_BOX (hbox13), image8, FALSE, FALSE, 0); + + label23 = gtk_label_new_with_mnemonic ("Next"); + gtk_widget_show (label23); + gtk_box_pack_start (GTK_BOX (hbox13), label23, FALSE, FALSE, 0); + + vbox6 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox6); + gtk_table_attach (GTK_TABLE (table5), vbox6, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + + hbox17 = gtk_hbox_new (TRUE, 0); + gtk_widget_show (hbox17); + gtk_box_pack_start (GTK_BOX (vbox6), hbox17, TRUE, TRUE, 0); + + table8 = gtk_table_new (3, 3, FALSE); + gtk_widget_show (table8); + gtk_box_pack_start (GTK_BOX (hbox17), table8, TRUE, TRUE, 5); + + spinbutton_width_adj = gtk_adjustment_new (0, 0, 4096, 16, 16, 10); + spinbutton_width = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_width_adj), 1, 0); + gtk_widget_show (spinbutton_width); + gtk_table_attach (GTK_TABLE (table8), spinbutton_width, 2, 3, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_width), TRUE); + + spinbutton_crop_top_adj = gtk_adjustment_new (0, 0, 4096, 2, 10, 10); + spinbutton_crop_top = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_crop_top_adj), 1, 0); + gtk_widget_show (spinbutton_crop_top); + gtk_table_attach (GTK_TABLE (table8), spinbutton_crop_top, 2, 3, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + label26 = gtk_label_new ("Bottom crop"); + gtk_widget_show (label26); + gtk_table_attach (GTK_TABLE (table8), label26, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label26), 0, 0.5); + + label25 = gtk_label_new ("Top crop"); + gtk_widget_show (label25); + gtk_table_attach (GTK_TABLE (table8), label25, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5); + + label24 = gtk_label_new ("Picture width"); + gtk_widget_show (label24); + gtk_table_attach (GTK_TABLE (table8), label24, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + spinbutton_crop_bottom_adj = gtk_adjustment_new (0, 0, 4096, 2, 10, 10); + spinbutton_crop_bottom = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_crop_bottom_adj), 1, 0); + gtk_widget_show (spinbutton_crop_bottom); + gtk_table_attach (GTK_TABLE (table8), spinbutton_crop_bottom, 2, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + table9 = gtk_table_new (3, 3, FALSE); + gtk_widget_show (table9); + gtk_box_pack_start (GTK_BOX (hbox17), table9, TRUE, TRUE, 5); + + spinbutton_crop_left_adj = gtk_adjustment_new (0, 0, 4096, 2, 10, 10); + spinbutton_crop_left = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_crop_left_adj), 1, 0); + gtk_widget_show (spinbutton_crop_left); + gtk_table_attach (GTK_TABLE (table9), spinbutton_crop_left, 2, 3, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + label28 = gtk_label_new ("Right crop"); + gtk_widget_show (label28); + gtk_table_attach (GTK_TABLE (table9), label28, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label28), 0, 0.5); + + label27 = gtk_label_new ("Left crop"); + gtk_widget_show (label27); + gtk_table_attach (GTK_TABLE (table9), label27, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label27), 0, 0.5); + + spinbutton_crop_right_adj = gtk_adjustment_new (0, 0, 4096, 2, 10, 10); + spinbutton_crop_right = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_crop_right_adj), 1, 0); + gtk_widget_show (spinbutton_crop_right); + gtk_table_attach (GTK_TABLE (table9), spinbutton_crop_right, 2, 3, 2, 3, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + checkbutton_deinterlace = gtk_check_button_new_with_mnemonic ("deinterlace"); + gtk_widget_show (checkbutton_deinterlace); + gtk_table_attach (GTK_TABLE (table9), checkbutton_deinterlace, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + hseparator1 = gtk_hseparator_new (); + gtk_widget_show (hseparator1); + gtk_box_pack_start (GTK_BOX (vbox4), hseparator1, FALSE, TRUE, 0); + + table4 = gtk_table_new (1, 2, FALSE); + gtk_widget_show (table4); + gtk_box_pack_start (GTK_BOX (vbox4), table4, FALSE, TRUE, 5); + + button1 = gtk_button_new (); + gtk_widget_show (button1); + gtk_table_attach (GTK_TABLE (table4), button1, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + alignment4 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment4); + gtk_container_add (GTK_CONTAINER (button1), alignment4); + + hbox11 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox11); + gtk_container_add (GTK_CONTAINER (alignment4), hbox11); + + image5 = gtk_image_new_from_stock ("gtk-apply", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image5); + gtk_box_pack_start (GTK_BOX (hbox11), image5, FALSE, FALSE, 0); + + label20 = gtk_label_new_with_mnemonic ("Ok"); + gtk_widget_show (label20); + gtk_box_pack_start (GTK_BOX (hbox11), label20, FALSE, FALSE, 0); + + label_settings = gtk_label_new ("label21"); + gtk_widget_show (label_settings); + gtk_table_attach (GTK_TABLE (table4), label_settings, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label_settings), 0, 0.5); + + g_signal_connect ((gpointer) win_settings, "delete_event", + G_CALLBACK (on_win_settings_delete_event), + NULL); + g_signal_connect ((gpointer) button_settings_previous, "clicked", + G_CALLBACK (on_button_settings_previous_clicked), + NULL); + g_signal_connect ((gpointer) button_settings_next, "clicked", + G_CALLBACK (on_button_settings_next_clicked), + NULL); + g_signal_connect ((gpointer) spinbutton_width, "value_changed", + G_CALLBACK (on_spinbutton_width_value_changed), + NULL); + g_signal_connect ((gpointer) spinbutton_crop_top, "value_changed", + G_CALLBACK (on_spinbutton_crop_top_value_changed), + NULL); + g_signal_connect ((gpointer) spinbutton_crop_bottom, "value_changed", + G_CALLBACK (on_spinbutton_crop_bottom_value_changed), + NULL); + g_signal_connect ((gpointer) spinbutton_crop_left, "value_changed", + G_CALLBACK (on_spinbutton_crop_left_value_changed), + NULL); + g_signal_connect ((gpointer) spinbutton_crop_right, "value_changed", + G_CALLBACK (on_spinbutton_crop_right_value_changed), + NULL); + g_signal_connect ((gpointer) checkbutton_deinterlace, "toggled", + G_CALLBACK (on_checkbutton_deinterlace_toggled), + NULL); + g_signal_connect ((gpointer) button1, "clicked", + G_CALLBACK (on_button_ok_settings_clicked), + NULL); + + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF (win_settings, win_settings, "win_settings"); + GLADE_HOOKUP_OBJECT (win_settings, vbox4, "vbox4"); + GLADE_HOOKUP_OBJECT (win_settings, drawingarea, "drawingarea"); + GLADE_HOOKUP_OBJECT (win_settings, table5, "table5"); + GLADE_HOOKUP_OBJECT (win_settings, vbox5, "vbox5"); + GLADE_HOOKUP_OBJECT (win_settings, hbuttonbox2, "hbuttonbox2"); + GLADE_HOOKUP_OBJECT (win_settings, button_settings_previous, "button_settings_previous"); + GLADE_HOOKUP_OBJECT (win_settings, alignment5, "alignment5"); + GLADE_HOOKUP_OBJECT (win_settings, hbox12, "hbox12"); + GLADE_HOOKUP_OBJECT (win_settings, image7, "image7"); + GLADE_HOOKUP_OBJECT (win_settings, label22, "label22"); + GLADE_HOOKUP_OBJECT (win_settings, button_settings_next, "button_settings_next"); + GLADE_HOOKUP_OBJECT (win_settings, alignment6, "alignment6"); + GLADE_HOOKUP_OBJECT (win_settings, hbox13, "hbox13"); + GLADE_HOOKUP_OBJECT (win_settings, image8, "image8"); + GLADE_HOOKUP_OBJECT (win_settings, label23, "label23"); + GLADE_HOOKUP_OBJECT (win_settings, vbox6, "vbox6"); + GLADE_HOOKUP_OBJECT (win_settings, hbox17, "hbox17"); + GLADE_HOOKUP_OBJECT (win_settings, table8, "table8"); + GLADE_HOOKUP_OBJECT (win_settings, spinbutton_width, "spinbutton_width"); + GLADE_HOOKUP_OBJECT (win_settings, spinbutton_crop_top, "spinbutton_crop_top"); + GLADE_HOOKUP_OBJECT (win_settings, label26, "label26"); + GLADE_HOOKUP_OBJECT (win_settings, label25, "label25"); + GLADE_HOOKUP_OBJECT (win_settings, label24, "label24"); + GLADE_HOOKUP_OBJECT (win_settings, spinbutton_crop_bottom, "spinbutton_crop_bottom"); + GLADE_HOOKUP_OBJECT (win_settings, table9, "table9"); + GLADE_HOOKUP_OBJECT (win_settings, spinbutton_crop_left, "spinbutton_crop_left"); + GLADE_HOOKUP_OBJECT (win_settings, label28, "label28"); + GLADE_HOOKUP_OBJECT (win_settings, label27, "label27"); + GLADE_HOOKUP_OBJECT (win_settings, spinbutton_crop_right, "spinbutton_crop_right"); + GLADE_HOOKUP_OBJECT (win_settings, checkbutton_deinterlace, "checkbutton_deinterlace"); + GLADE_HOOKUP_OBJECT (win_settings, hseparator1, "hseparator1"); + GLADE_HOOKUP_OBJECT (win_settings, table4, "table4"); + GLADE_HOOKUP_OBJECT (win_settings, button1, "button1"); + GLADE_HOOKUP_OBJECT (win_settings, alignment4, "alignment4"); + GLADE_HOOKUP_OBJECT (win_settings, hbox11, "hbox11"); + GLADE_HOOKUP_OBJECT (win_settings, image5, "image5"); + GLADE_HOOKUP_OBJECT (win_settings, label20, "label20"); + GLADE_HOOKUP_OBJECT (win_settings, label_settings, "label_settings"); + + return win_settings; +} + diff --git a/gtk2/interface.h b/gtk2/interface.h new file mode 100644 index 000000000..303e644b8 --- /dev/null +++ b/gtk2/interface.h @@ -0,0 +1,7 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +GtkWidget* create_win_main (void); +GtkWidget* create_win_open (void); +GtkWidget* create_win_settings (void); diff --git a/gtk2/main.c b/gtk2/main.c new file mode 100644 index 000000000..f0d5b406e --- /dev/null +++ b/gtk2/main.c @@ -0,0 +1,409 @@ +/* + * Initial main.c file generated by Glade. Edit as required. + * Glade will not overwrite this file. + */ + +#include "../core/HandBrake.h" + +#include <gtk/gtk.h> + +#include "interface.h" +#include "support.h" + +#include "status.h" + +#define GLADE_HOOKUP_OBJECT(component,widget,name) \ + g_object_set_data_full (G_OBJECT (component), name, \ + gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) + +GtkWidget *hb_win_main = NULL; +HBHandle *hb_handle = NULL; +HBStatus *hb_status = NULL; + +static int HBMain( void *data ); + +/* libhb callbacks */ +static void Scanning( void * data, int title, int titleCount ); +static void ScanDone( void * data, HBList * titleList ); +static void Encoding( void * data, float position, int pass, + int passCount, float frameRate, + float avgFrameRate, int remainingTime ); +static void RipDone( void * data, int result ); + + +int main (int argc, char **argv ) +{ + HBCallbacks callbacks; + GtkWidget *widget; + GList *items = NULL; + + int i_dummy; + + /* Create HB stuff */ + if( ( hb_handle = HBInit( 1, 0 ) ) == NULL ) + { + g_print( "HBInit: failed\n" ); + return -1; + } + + /* Emulate a HBStatus */ + hb_status = malloc( sizeof( HBStatus ) ); + hb_status->i_state = HB_STATE_NEED_DEVICE; + hb_status->b_new = 1; + hb_status->i_title = 0; + hb_status->i_title_count = 0; + hb_status->titleList = NULL; + hb_status->position = 0.0; + hb_status->i_remaining = 0; + hb_status->fps = 0.0; + + /* Set libhb callbacks */ + callbacks.data = NULL; + callbacks.scanning = Scanning; + callbacks.scanDone = ScanDone; + callbacks.encoding = Encoding; + callbacks.ripDone = RipDone; + HBSetCallbacks( hb_handle, callbacks ); + + gtk_set_locale (); + gtk_init (&argc, &argv); + + //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + + /* Create the main window */ + hb_win_main = create_win_main(); + gtk_window_set_title( GTK_WINDOW(hb_win_main), "HandBrake " HB_VERSION ); + + widget = lookup_widget( hb_win_main, "combo1" ); + gtk_combo_disable_activate( GTK_COMBO( widget ) ); + + widget = lookup_widget( hb_win_main, "combo2" ); + gtk_combo_disable_activate( GTK_COMBO( widget ) ); + + widget = lookup_widget( hb_win_main, "optionmenu_bitrate" ); + gtk_option_menu_set_history( GTK_OPTION_MENU(widget), 2 ); + + /* build dvd list */ + items = g_list_append (items, "" ); + items = g_list_append (items, "/dev/dvd" ); + gtk_combo_set_popdown_strings( GTK_COMBO(lookup_widget( hb_win_main, "combo1") ), items ); + + /* Display the main window */ + gtk_widget_show( hb_win_main ); + + i_dummy = gtk_timeout_add( 100, (GtkFunction)HBMain, NULL ); + gtk_main(); + gtk_timeout_remove( i_dummy ); + + return 0; +} + +static void StatusBarUpdate( char *msg ) +{ + GtkWidget *widget = lookup_widget( hb_win_main, "statusbar" ); + + gtk_statusbar_push( GTK_STATUSBAR(widget), + gtk_statusbar_get_context_id(GTK_STATUSBAR(widget), "status" ), + msg ); +} + +static void DisplayError( char *title, char *msg ) +{ + GtkWidget *dialog = gtk_message_dialog_new( NULL, GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, + "<b>%s</b>\n\n%s", title, msg ); + gtk_label_set_use_markup( GTK_LABEL( GTK_MESSAGE_DIALOG(dialog)->label), TRUE ); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK ); + gtk_window_set_modal( GTK_WINDOW(dialog), TRUE ); + gtk_dialog_run( GTK_DIALOG(dialog) ); + gtk_widget_destroy( dialog ); +} + +static void DisplayInfo( char *msg ) +{ + GtkWidget *dialog = gtk_message_dialog_new( NULL, GTK_DIALOG_MODAL, + GTK_MESSAGE_INFO, GTK_BUTTONS_OK, msg ); + gtk_label_set_use_markup( GTK_LABEL( GTK_MESSAGE_DIALOG(dialog)->label), TRUE ); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK ); + gtk_window_set_modal( GTK_WINDOW(dialog), TRUE ); + gtk_dialog_run( GTK_DIALOG(dialog) ); + gtk_widget_destroy( dialog ); +} + +static int HBMain( void *data ) +{ + int b_new = hb_status->b_new; + GtkWidget *widget; + gchar msg[1000]; + + hb_status->b_new = 0; + + switch( hb_status->i_state ) + { + case HB_STATE_NEED_DEVICE: + if( b_new ) + { + g_print( "HBMain: HB_MODE_NEED_DEVICE\n" ); + gtk_widget_set_sensitive( lookup_widget( hb_win_main, "frame_dvd"), TRUE ); + StatusBarUpdate( "Enter a device" ); + } + break; + + case HB_STATE_SCANNING: + if( b_new ) + { + g_print( "HBMain: HB_MODE_SCANNING\n" ); + } + + gtk_widget_set_sensitive( lookup_widget( hb_win_main, "frame_dvd"), FALSE ); + + gtk_progress_bar_pulse( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" ) )); + if( hb_status->i_title ) + { + sprintf( msg, "Scanning title %d/%d...", hb_status->i_title, hb_status->i_title_count ); + } + else + { + sprintf( msg, "Opening device..." ); + } + StatusBarUpdate( msg ); + break; + + case HB_STATE_INVALID_DEVICE: + if( b_new ) + { + g_print( "HBMain: HB_MODE_INVALID_DEVICE\n" ); + + gtk_widget_set_sensitive( lookup_widget( hb_win_main, "frame_dvd"), TRUE ); + + gtk_entry_set_text( GTK_ENTRY(lookup_widget( hb_win_main, "entry_device")), "" ); + + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), 0.0 ); + + StatusBarUpdate( "Enter a valid device" ); + + /* error dialog */ + DisplayError( "Invalid device", "Please select a valide device" ); + } + break; + + case HB_STATE_READY_TO_RIP: + if( b_new ) + { + GtkWidget *optionmenu_title = lookup_widget( hb_win_main, "optionmenu_title" ); + GtkWidget *menu; + GtkWidget *item; + int i; + + g_print( "HBMain: HB_MODE_READY_TO_RIP\n" ); + + /* create title menu */ + menu = gtk_menu_new(); + for( i = 0; i < HBListCount( hb_status->titleList ); i++ ) + { + HBTitle *title = (HBTitle*) HBListItemAt( hb_status->titleList, i ); + char string[1024]; + + sprintf( string, "%d - %02dh%02dm%02ds", + title->index, title->length / 3600, + ( title->length % 3600 ) / 60, + title->length % 60 ); + + item = gtk_menu_item_new_with_mnemonic( string ); + gtk_widget_show( item ); + gtk_menu_shell_append( GTK_MENU_SHELL(menu), item ); + } + + gtk_option_menu_set_menu( GTK_OPTION_MENU(optionmenu_title), menu ); + GLADE_HOOKUP_OBJECT( hb_win_main, menu, "menu_title" ); + + /* unhide */ + widget = lookup_widget( hb_win_main, "vbox_parameters" ); + gtk_widget_show( widget ); + + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), 0.0 ); + gtk_progress_bar_set_text( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), "" ); + + StatusBarUpdate( "Select your parameters" ); + } + break; + + case HB_STATE_ENCODING: + if( b_new ) + { + /* change the name to Stop */ + widget = lookup_widget( hb_win_main, "button_start_label" ); + gtk_label_set_text( GTK_LABEL( widget ), "Stop" ); + + widget = lookup_widget( hb_win_main, "button_start_image" ); + gtk_image_set_from_stock( GTK_IMAGE(widget), "gtk-cancel", GTK_ICON_SIZE_BUTTON ); + + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_video"), FALSE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_audio"), FALSE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_output"), FALSE ); + } + + if( hb_status->position <= 0 ) + { + StatusBarUpdate( "Starting..." ); + } + else + { + char string[1024]; + + /* Status bar */ + sprintf( string, "Encoding: %02dh%02dm%02ds remaining", + hb_status->i_remaining / 3600, + ( hb_status->i_remaining % 3600 ) / 60, + hb_status->i_remaining % 60 ); + StatusBarUpdate( string ); + + /* Progressbar */ + sprintf( string, "%.2f %% (%.2f fps)", 100 * hb_status->position, hb_status->fps ); + gtk_progress_bar_set_text( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), string ); + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), hb_status->position ); + } + break; + + case HB_STATE_DONE: + case HB_STATE_CANCELED: + if( b_new ) + { + g_print( "HBMain: HB_MODE_DONE/HB_MODE_CANCELED\n" ); + + /* change the name to Start */ + widget = lookup_widget( hb_win_main, "button_start_label" ); + gtk_label_set_text( GTK_LABEL( widget ), "Start" ); + + widget = lookup_widget( hb_win_main, "button_start_image" ); + gtk_image_set_from_stock( GTK_IMAGE(widget), "gtk-apply", GTK_ICON_SIZE_BUTTON ); + + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), 0.0 ); + gtk_progress_bar_set_text( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), "" ); + + if( hb_status->i_state == HB_STATE_DONE ) + { + StatusBarUpdate( "Done." ); + DisplayInfo( "Encoding finished with success." ); + } + else + { + StatusBarUpdate( "Canceled." ); + DisplayInfo("Encoding canceled."); + } + + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_video"), TRUE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_audio"), TRUE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_output"), TRUE ); + } + break; + + case HB_STATE_ERROR: + if( b_new ) + { + char *msg = "Unknown"; + + g_print( "HBMain: HB_MODE_ERROR\n" ); + + /* change the name to Start */ + widget = lookup_widget( hb_win_main, "button_start_label" ); + gtk_label_set_text( GTK_LABEL( widget ), "Start" ); + + widget = lookup_widget( hb_win_main, "button_start_image" ); + gtk_image_set_from_stock( GTK_IMAGE(widget), "gtk-apply", GTK_ICON_SIZE_BUTTON ); + + gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), 0.0 ); + gtk_progress_bar_set_text( GTK_PROGRESS_BAR(lookup_widget( hb_win_main, "progressbar" )), "" ); + + StatusBarUpdate( "Error." ); + switch( hb_status->i_error ) + { +#if 0 + case HB_ERROR_A52_SYNC: + msg = "corrupted AC3 data."; + break; + case HB_ERROR_AVI_WRITE: + msg = "could not write to file."; + break; + case HB_ERROR_DVD_OPEN: + msg = "could not open device."; + break; + case HB_ERROR_DVD_READ: + msg = "DVD read failed."; + break; + case HB_ERROR_MP3_INIT: + msg = "could not init MP3 encoder."; + break; + case HB_ERROR_MP3_ENCODE: + msg = "MP3 encoder failed."; + break; + case HB_ERROR_MPEG4_INIT: + msg = "could not init MPEG4 encoder."; + break; +#endif + default: + msg = "Generic error"; + break; + } + DisplayError( "An error occured", msg ); + + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_video"), TRUE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_audio"), TRUE ); + gtk_widget_set_sensitive( lookup_widget(hb_win_main, "frame_output"), TRUE ); + } + break; + } + + + return TRUE; +} + + +static void Scanning( void * data, int title, int titleCount ) +{ + if( hb_status->i_state != HB_STATE_SCANNING ) + { + hb_status->i_state = HB_STATE_SCANNING; + hb_status->b_new = 1; + } + hb_status->i_title = title; + hb_status->i_title_count = titleCount; +} + +static void ScanDone( void * data, HBList * titleList ) +{ + if( titleList == NULL ) + { + hb_status->i_state = HB_STATE_INVALID_DEVICE; + } + else + { + hb_status->i_state = HB_STATE_READY_TO_RIP; + } + hb_status->b_new = 1; + + hb_status->titleList = titleList; +} + +static void Encoding( void * data, float position, int pass, + int passCount, float frameRate, + float avgFrameRate, int remainingTime ) +{ + if( hb_status->i_state != HB_STATE_ENCODING ) + { + hb_status->i_state = HB_STATE_ENCODING; + hb_status->b_new = 1; + } + + hb_status->position = position; + hb_status->fps = frameRate; + hb_status->i_remaining = remainingTime; +} + +static void RipDone( void * data, int result ) +{ + /* TODO check result */ + hb_status->i_state = HB_STATE_DONE; + hb_status->b_new = 1; +} + diff --git a/gtk2/status.h b/gtk2/status.h new file mode 100644 index 000000000..c98e4c9b0 --- /dev/null +++ b/gtk2/status.h @@ -0,0 +1,33 @@ +/* + * + */ + +enum HBState_e +{ + HB_STATE_NEED_DEVICE, + HB_STATE_SCANNING, + HB_STATE_INVALID_DEVICE, + HB_STATE_READY_TO_RIP, + HB_STATE_ENCODING, + HB_STATE_DONE, + HB_STATE_CANCELED, + HB_STATE_ERROR, +}; + +typedef struct +{ + int i_state; + int i_error; + int b_new; + + int i_title; + int i_title_count; + + HBList *titleList; + + float position; + int i_remaining; + float fps; + +} HBStatus; + diff --git a/gtk2/support.c b/gtk2/support.c new file mode 100644 index 000000000..7dc3c78cb --- /dev/null +++ b/gtk2/support.c @@ -0,0 +1,144 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> + +#include <gtk/gtk.h> + +#include "support.h" + +GtkWidget* +lookup_widget (GtkWidget *widget, + const gchar *widget_name) +{ + GtkWidget *parent, *found_widget; + + for (;;) + { + if (GTK_IS_MENU (widget)) + parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); + else + parent = widget->parent; + if (!parent) + parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); + if (parent == NULL) + break; + widget = parent; + } + + found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), + widget_name); + if (!found_widget) + g_warning ("Widget not found: %s", widget_name); + return found_widget; +} + +static GList *pixmaps_directories = NULL; + +/* Use this function to set the directory containing installed pixmaps. */ +void +add_pixmap_directory (const gchar *directory) +{ + pixmaps_directories = g_list_prepend (pixmaps_directories, + g_strdup (directory)); +} + +/* This is an internally used function to find pixmap files. */ +static gchar* +find_pixmap_file (const gchar *filename) +{ + GList *elem; + + /* We step through each of the pixmaps directory to find it. */ + elem = pixmaps_directories; + while (elem) + { + gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, + G_DIR_SEPARATOR_S, filename); + if (g_file_test (pathname, G_FILE_TEST_EXISTS)) + return pathname; + g_free (pathname); + elem = elem->next; + } + return NULL; +} + +/* This is an internally used function to create pixmaps. */ +GtkWidget* +create_pixmap (GtkWidget *widget, + const gchar *filename) +{ + gchar *pathname = NULL; + GtkWidget *pixmap; + + if (!filename || !filename[0]) + return gtk_image_new (); + + pathname = find_pixmap_file (filename); + + if (!pathname) + { + g_warning ("Couldn't find pixmap file: %s", filename); + return gtk_image_new (); + } + + pixmap = gtk_image_new_from_file (pathname); + g_free (pathname); + return pixmap; +} + +/* This is an internally used function to create pixmaps. */ +GdkPixbuf* +create_pixbuf (const gchar *filename) +{ + gchar *pathname = NULL; + GdkPixbuf *pixbuf; + GError *error = NULL; + + if (!filename || !filename[0]) + return NULL; + + pathname = find_pixmap_file (filename); + + if (!pathname) + { + g_warning ("Couldn't find pixmap file: %s", filename); + return NULL; + } + + pixbuf = gdk_pixbuf_new_from_file (pathname, &error); + if (!pixbuf) + { + fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", + pathname, error->message); + g_error_free (error); + } + g_free (pathname); + return pixbuf; +} + +/* This is used to set ATK action descriptions. */ +void +glade_set_atk_action_description (AtkAction *action, + const gchar *action_name, + const gchar *description) +{ + gint n_actions, i; + + n_actions = atk_action_get_n_actions (action); + for (i = 0; i < n_actions; i++) + { + if (!strcmp (atk_action_get_name (action, i), action_name)) + atk_action_set_description (action, i, description); + } +} + diff --git a/gtk2/support.h b/gtk2/support.h new file mode 100644 index 000000000..2dea079c2 --- /dev/null +++ b/gtk2/support.h @@ -0,0 +1,44 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <gtk/gtk.h> + +/* + * Public Functions. + */ + +/* + * This function returns a widget in a component created by Glade. + * Call it with the toplevel widget in the component (i.e. a window/dialog), + * or alternatively any widget in the component, and the name of the widget + * you want returned. + */ +GtkWidget* lookup_widget (GtkWidget *widget, + const gchar *widget_name); + + +/* Use this function to set the directory containing installed pixmaps. */ +void add_pixmap_directory (const gchar *directory); + + +/* + * Private Functions. + */ + +/* This is used to create the pixmaps used in the interface. */ +GtkWidget* create_pixmap (GtkWidget *widget, + const gchar *filename); + +/* This is used to create the pixbufs used in the interface. */ +GdkPixbuf* create_pixbuf (const gchar *filename); + +/* This is used to set ATK action descriptions. */ +void glade_set_atk_action_description (AtkAction *action, + const gchar *action_name, + const gchar *description); + |