return TRUE;
}
-static GtkWidget *dvd_device_combo = NULL;
-
void
-chooser_file_selected_cb(GtkFileChooser *dialog, GtkComboBox *combo)
+chooser_file_selected_cb(GtkFileChooser *dialog, signal_user_data_t *ud)
{
const gchar *name = gtk_file_chooser_get_filename (dialog);
GtkTreeModel *store;
GtkTreeIter iter;
const gchar *device;
gboolean foundit = FALSE;
+ GtkComboBox *combo;
if (name == NULL) return;
+ combo = GTK_COMBO_BOX(GHB_WIDGET(ud->builder, "source_device"));
store = gtk_combo_box_get_model(combo);
if (gtk_tree_model_get_iter_first(store, &iter))
{
}
void
-dvd_device_changed_cb(GtkComboBox *combo, GtkWidget *dialog)
+dvd_device_changed_cb(GtkComboBox *combo, signal_user_data_t *ud)
{
- gint ii = gtk_combo_box_get_active (combo);
- if (ii != 0)
+ GtkWidget *dialog;
+ gint ii;
+
+ ii = gtk_combo_box_get_active (combo);
+ if (ii > 0)
{
- const gchar *device = gtk_combo_box_get_active_text (combo);
- const gchar *name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog));
+ const gchar *device, *name;
+
+ dialog = GHB_WIDGET(ud->builder, "source_dialog");
+ device = gtk_combo_box_get_active_text (combo);
+ name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog));
if (name == NULL || strcmp(name, device) != 0)
gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(dialog), device);
}
}
void
-source_type_changed_cb(GtkToggleButton *toggle, GtkFileChooser *chooser)
+source_type_changed_cb(GtkToggleButton *toggle, signal_user_data_t *ud)
{
gchar *folder;
+ GtkFileChooser *chooser;
+ GtkWidget *dvd_device_combo;
g_debug("source_type_changed_cb ()");
+ chooser = GTK_FILE_CHOOSER(GHB_WIDGET(ud->builder, "source_dialog"));
+ dvd_device_combo = GHB_WIDGET(ud->builder, "source_device");
folder = gtk_file_chooser_get_current_folder (chooser);
if (gtk_toggle_button_get_active (toggle))
{
- gtk_file_chooser_set_action (chooser, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gtk_file_chooser_set_action (chooser,
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
gtk_widget_set_sensitive (dvd_device_combo, FALSE);
gtk_combo_box_set_active (GTK_COMBO_BOX(dvd_device_combo), 0);
}
}
}
-static GtkWidget*
-source_dialog_extra_widgets(GtkWidget *dialog, gboolean checkbutton_active)
+static void
+source_dialog_extra_widgets(
+ signal_user_data_t *ud,
+ GtkWidget *dialog,
+ gboolean checkbutton_active)
{
- GtkBox *vbox;
- GtkWidget *checkbutton;
-
- vbox = GTK_BOX(gtk_vbox_new (FALSE, 2));
- checkbutton = gtk_check_button_new_with_label ("Open VIDEO_TS folder");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(checkbutton), checkbutton_active);
- gtk_box_pack_start (vbox, checkbutton, FALSE, FALSE, 1);
- gtk_widget_show(checkbutton);
-
- GtkWidget *combo;
- GtkBox *hbox;
+ GtkToggleButton *checkbutton;
+ GtkComboBox *combo;
GList *drives, *link;
- GtkWidget *label, *blank;
+
+ checkbutton = GTK_TOGGLE_BUTTON(
+ GHB_WIDGET(ud->builder, "source_folder_flag"));
+ gtk_toggle_button_set_active(checkbutton, checkbutton_active);
+ combo = GTK_COMBO_BOX(GHB_WIDGET(ud->builder, "source_device"));
+ gtk_list_store_clear(GTK_LIST_STORE(
+ gtk_combo_box_get_model(combo)));
- hbox = GTK_BOX(gtk_hbox_new (FALSE, 2));
- combo = gtk_combo_box_new_text();
- label = gtk_label_new("Detected DVD devices:");
- blank = gtk_label_new("");
link = drives = dvd_device_list();
- gtk_combo_box_append_text (GTK_COMBO_BOX(combo), "Not Selected");
+ gtk_combo_box_append_text (combo, "Not Selected");
while (link != NULL)
{
gchar *name = (gchar*)link->data;
- gtk_combo_box_append_text (GTK_COMBO_BOX(combo), name);
+ gtk_combo_box_append_text(combo, name);
g_free(name);
link = link->next;
}
g_list_free(drives);
- gtk_combo_box_set_active (GTK_COMBO_BOX(combo), 0);
- gtk_box_pack_start (vbox, GTK_WIDGET(hbox), FALSE, FALSE, 1);
- gtk_widget_show(GTK_WIDGET(hbox));
- gtk_box_pack_start (hbox, label, FALSE, FALSE, 1);
- gtk_widget_show(label);
- gtk_box_pack_start (hbox, combo, FALSE, FALSE, 2);
- gtk_widget_show(combo);
- gtk_box_pack_start (hbox, blank, TRUE, TRUE, 1);
- gtk_widget_show(blank);
-
- // Ugly hackish global alert
- dvd_device_combo = combo;
- g_signal_connect(combo, "changed", (GCallback)dvd_device_changed_cb, dialog);
- g_signal_connect(dialog, "selection-changed", (GCallback)chooser_file_selected_cb, combo);
-
- g_signal_connect(checkbutton, "toggled", (GCallback)source_type_changed_cb, dialog);
- return GTK_WIDGET(vbox);
}
extern GValue *ghb_queue_edit_settings;
static gchar *last_scan_file = NULL;
void
-ghb_do_scan(signal_user_data_t *ud, const gchar *filename, gboolean force)
+ghb_do_scan(
+ signal_user_data_t *ud,
+ const gchar *filename,
+ gint titlenum,
+ gboolean force)
{
if (!force && last_scan_file != NULL &&
strcmp(last_scan_file, filename) == 0)
prune_logs(ud);
gint preview_count;
preview_count = ghb_settings_get_int(ud->settings, "preview_count");
- ghb_backend_scan(path, 0, preview_count);
+ ghb_backend_scan(path, titlenum, preview_count);
g_free(path);
}
else
}
}
-void
-source_button_clicked_cb(GtkButton *button, signal_user_data_t *ud)
+static gboolean
+update_source_name(gpointer data)
+{
+ signal_user_data_t *ud = (signal_user_data_t*)data;
+ GtkWidget *dialog;
+ gchar *sourcename;
+
+ sourcename = ghb_settings_get_string(ud->settings, "source");
+ dialog = GHB_WIDGET(ud->builder, "source_dialog");
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), sourcename);
+ g_free(sourcename);
+ return FALSE;
+}
+
+static void
+do_source_dialog(GtkButton *button, gboolean single, signal_user_data_t *ud)
{
GtkWidget *dialog;
- GtkWidget *widget;
gchar *sourcename;
gint response;
GtkFileChooserAction action;
{
action = GTK_FILE_CHOOSER_ACTION_OPEN;
}
- dialog = gtk_file_chooser_dialog_new ("Select Source",
- NULL,
- action,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
- NULL);
- widget = source_dialog_extra_widgets(dialog, checkbutton_active);
- gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER(dialog), widget);
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), sourcename);
+ GtkWidget *widget;
+ widget = GHB_WIDGET(ud->builder, "single_title_box");
+ if (single)
+ gtk_widget_show(widget);
+ else
+ gtk_widget_hide(widget);
+ dialog = GHB_WIDGET(ud->builder, "source_dialog");
+ source_dialog_extra_widgets(ud, dialog, checkbutton_active);
+ gtk_file_chooser_set_action(GTK_FILE_CHOOSER(dialog), action);
+ // Updating the filename in the file chooser dialog doesn't seem
+ // to work unless the dialog is running for some reason.
+ // So handle it in an "idle" event.
+ //gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), sourcename);
+ g_idle_add((GSourceFunc)update_source_name, ud);
response = gtk_dialog_run(GTK_DIALOG (dialog));
gtk_widget_hide(dialog);
if (response == GTK_RESPONSE_ACCEPT)
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
if (filename != NULL)
{
- ghb_do_scan(ud, filename, TRUE);
+ gint titlenum;
+
+ if (single)
+ titlenum = ghb_settings_get_int(ud->settings, "single_title");
+ else
+ titlenum = 0;
+ ghb_do_scan(ud, filename, titlenum, TRUE);
if (strcmp(sourcename, filename) != 0)
{
- ghb_settings_set_string (ud->settings, "default_source", filename);
+ ghb_settings_set_string (ud->settings,
+ "default_source", filename);
ghb_pref_save (ud->settings, "default_source");
ghb_dvd_set_current (filename, ud);
}
}
}
g_free(sourcename);
- gtk_widget_destroy(dialog);
+}
+
+void
+source_button_clicked_cb(GtkButton *button, signal_user_data_t *ud)
+{
+ do_source_dialog(button, FALSE, ud);
+}
+
+void
+single_title_source_cb(GtkButton *button, signal_user_data_t *ud)
+{
+ do_source_dialog(button, TRUE, ud);
}
void
sourcename = ghb_settings_get_string(ud->settings, "source");
filename = gtk_action_get_name(action);
- ghb_do_scan(ud, filename, TRUE);
+ ghb_do_scan(ud, filename, 0, TRUE);
if (strcmp(sourcename, filename) != 0)
{
ghb_settings_set_string (ud->settings, "default_source", filename);
}
}
+void
+warn_log_handler(const gchar *domain, GLogLevelFlags flags, const gchar *msg, gpointer data)
+{
+ printf("mywarning\n");
+ printf("%s: %s\n", domain, msg);
+}
+
void
ghb_hbfd(signal_user_data_t *ud, gboolean hbfd)
{
void ghb_check_all_depencencies(signal_user_data_t *ud);
gboolean ghb_timer_cb(gpointer data);
gboolean ghb_log_cb(GIOChannel *source, GIOCondition cond, gpointer data);
+void warn_log_handler(
+ const gchar *domain, GLogLevelFlags flags, const gchar *msg, gpointer ud);
void debug_log_handler(
const gchar *domain, GLogLevelFlags flags, const gchar *msg, gpointer ud);
void ghb_hbfd(signal_user_data_t *ud, gboolean hbfd);
gboolean ghb_cancel_encode(const gchar *extra_msg);
GValue* ghb_start_next_job(signal_user_data_t *ud, gboolean find_first);
void ghb_check_dependency(signal_user_data_t *ud, GtkWidget *widget);
-void ghb_do_scan(signal_user_data_t *ud, const gchar *filename, gboolean force);
+void ghb_do_scan( signal_user_data_t *ud, const gchar *filename,
+ gint titlenum, gboolean force);
void ghb_log(gchar *log, ...);
gpointer ghb_check_update(signal_user_data_t *ud);
void ghb_uninhibit_gpm(void);
<property name="page_size">0</property>
<property name="value">0</property>
</object>
+ <object class="GtkAdjustment" id="adjustment24">
+ <property name="upper">100</property>
+ <property name="lower">1</property>
+ <property name="page_increment">1</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
<object class="GtkAdjustment" id="preview_progress_adj">
<property name="upper">100</property>
<property name="lower">0</property>
<signal handler="source_button_clicked_cb" name="activate"/>
</object>
</child>
+ <child>
+ <object class="GtkAction" id="source_single">
+ <property name="icon-name">gtk-open</property>
+ <property name="name">source_single</property>
+ <property name="label">Single _Title</property>
+ <signal handler="single_title_source_cb" name="activate"/>
+ </object>
+ </child>
<child>
<object class="GtkAction" id="destination1">
<property name="stock_id">gtk-save-as</property>
<menubar name="menubar1">
<menu action="menuitem1">
<menuitem action="source1"/>
+ <menuitem action="source_single"/>
<menuitem action="destination1"/>
<separator/>
<menuitem action="preferences"/>
</menubar>
</ui>
</object>
+ <object class="GtkListStore" id="device_list">
+ <columns>
+ <!-- column-name device -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
<object class="GtkWindow" id="hb_window">
<property name="visible">True</property>
<property name="title" translatable="yes">HandBrake</property>
<action-widget response="0">update_remind</action-widget>
</action-widgets>
</object>
+ <object class="GtkFileChooserDialog" id="source_dialog">
+ <property name="border_width">5</property>
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="has_separator">False</property>
+ <signal handler="chooser_file_selected_cb" name="selection-changed"/>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox6">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="source_extra">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="single_title_box">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label89">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Title Number:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkSpinButton" id="single_title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="adjustment">adjustment24</property>
+ <signal name="value_changed" handler="setting_widget_changed_cb"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="source_folder_flag">
+ <property name="label" translatable="yes">Open VIDEO_TS folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <signal handler="source_type_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox74">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label90">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Detected DVD devices:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkComboBox" id="source_device">
+ <property name="visible">True</property>
+ <property name="model">device_list</property>
+ <signal handler="dvd_device_changed_cb" name="changed"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="source_cancel">
+ <property name="label" translatable="yes">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="source_ok">
+ <property name="label" translatable="yes">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">source_cancel</action-widget>
+ <action-widget response="-3">source_ok</action-widget>
+ </action-widgets>
+ </object>
</interface>
static options_map_t d_badapt_opts[] =
{
{"Off", "0", 0, "0"},
- {"Faster", "1", 1, "1"},
- {"More Effecient", "2", 2, "2"},
+ {"Fast", "1", 1, "1"},
+ {"Optimal", "2", 2, "2"},
};
combo_opts_t badapt_opts =
{
<integer>0</integer>
<key>scale_width</key>
<integer>0</integer>
+ <key>single_title</key>
+ <integer>1</integer>
<key>start_chapter</key>
<integer>1</integer>
<key>start_frame</key>
<key>update_skip_version</key>
<integer>0</integer>
<key>VideoQualityGranularity</key>
- <string>0.2</string>
+ <string>1</string>
<key>version</key>
<string>0.1</string>
</dict>
ud = g_malloc0(sizeof(signal_user_data_t));
ud->debug = ghb_debug;
g_log_set_handler (NULL, G_LOG_LEVEL_DEBUG, debug_log_handler, ud);
+ g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, warn_log_handler, ud);
+ //g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL, warn_log_handler, ud);
ud->settings = ghb_settings_new();
// Enable events that alert us to media change events
watch_volumes (ud);
}
gchar *source;
source = ghb_settings_get_string(ghb_queue_edit_settings, "source");
- ghb_do_scan(ud, source, FALSE);
+ ghb_do_scan(ud, source, 0, FALSE);
g_free(source);
}
}
" <property name="page_size">0</property>\n"
" <property name="value">0</property>\n"
" </object>\n"
+" <object class="GtkAdjustment" id="adjustment24""
+";>\n"
+" <property name="upper">100</property>\n"
+" <property name="lower">1</property>\n"
+" <property name="page_increment">1</property>\n"
+" <property name="step_increment">1</property>\n"
+" <property name="page_size">0</property>\n"
+" <property name="value">1</property>\n"
+" </object>\n"
" <object class="GtkAdjustment" id="preview_progress_"
"adj">\n"
" <property name="upper">100</property>\n"
" </object>\n"
" </child>\n"
" <child>\n"
+" <object class="GtkAction" id="source_single"
+"">\n"
+" <property name="icon-name">gtk-open</pro"
+"perty>\n"
+" <property name="name">source_single</pro"
+"perty>\n"
+" <property name="label">Single _Title</pr"
+"operty>\n"
+" <signal handler="single_title_source_cb" name="
+""activate"/>\n"
+" </object>\n"
+" </child>\n"
+" <child>\n"
" <object class="GtkAction" id="destination1&"
"quot;>\n"
" <property name="stock_id">gtk-save-as</p"
" <menubar name="menubar1">\n"
" <menu action="menuitem1">\n"
" <menuitem action="source1"/>\n"
+" <menuitem action="source_single"/>\n"
" <menuitem action="destination1"/>\n"
" <separator/>\n"
" <menuitem action="preferences"/>\n"
" </menubar>\n"
" </ui>\n"
" </object>\n"
+" <object class="GtkListStore" id="device_list"&"
+"gt;\n"
+" <columns>\n"
+" <!-- column-name device -->\n"
+" <column type="gchararray"/>\n"
+" </columns>\n"
+" </object>\n"
" <object class="GtkWindow" id="hb_window">\n"
" <property name="visible">True</property>\n"
" <property name="title" translatable="yes">"
"ion-widget>\n"
" </action-widgets>\n"
" </object>\n"
+" <object class="GtkFileChooserDialog" id="source_dia"
+"log">\n"
+" <property name="border_width">5</property>\n"
+" <property name="modal">True</property>\n"
+" <property name="type_hint">dialog</property>\n"
+" <property name="skip_taskbar_hint">True</propert"
+"y>\n"
+" <property name="skip_pager_hint">True</property&"
+"gt;\n"
+" <property name="has_separator">False</property&g"
+"t;\n"
+" <signal handler="chooser_file_selected_cb" name=""
+"selection-changed"/>\n"
+" <child internal-child="vbox">\n"
+" <object class="GtkVBox" id="dialog-vbox6"&"
+"gt;\n"
+" <property name="visible">True</property>\n"
+" <property name="spacing">2</property>\n"
+" <child>\n"
+" <object class="GtkVBox" id="source_extra&qu"
+"ot;>\n"
+" <property name="visible">True</property&"
+"gt;\n"
+" <child>\n"
+" <object class="GtkHBox" id="single_titl"
+"e_box">\n"
+" <property name="visible">True</prope"
+"rty>\n"
+" <property name="spacing">4</property"
+">\n"
+" <child>\n"
+" <object class="GtkLabel" id="label8"
+"9">\n"
+" <property name="visible">True</p"
+"roperty>\n"
+" <property name="label" translatable=&q"
+"uot;yes">Title Number:</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="expand">False</p"
+"roperty>\n"
+" <property name="position">0</pro"
+"perty>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class="GtkAlignment" id="al"
+"ignment1">\n"
+" <property name="visible">True</p"
+"roperty>\n"
+" <property name="xalign">0</prope"
+"rty>\n"
+" <property name="xscale">0</prope"
+"rty>\n"
+" <child>\n"
+" <object class="GtkSpinButton" id=&qu"
+"ot;single_title">\n"
+" <property name="visible">True&l"
+"t;/property>\n"
+" <property name="can_focus">True"
+"</property>\n"
+" <property name="events">GDK_POI"
+"NTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK"
+" | GDK_BUTTON_RELEASE_MASK</property>\n"
+" <property name="adjustment">adj"
+"ustment24</property>\n"
+" <signal name="value_changed" handl"
+"er="setting_widget_changed_cb"/>\n"
+" </object>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">1</pro"
+"perty>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">0</propert"
+"y>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class="GtkCheckButton" id="sour"
+"ce_folder_flag">\n"
+" <property name="label" translatable=""
+"yes">Open VIDEO_TS folder</property>\n"
+" <property name="visible">True</prope"
+"rty>\n"
+" <property name="can_focus">True</pro"
+"perty>\n"
+" <property name="receives_default">False"
+"</property>\n"
+" <property name="events">GDK_POINTER_MOT"
+"ION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_B"
+"UTTON_RELEASE_MASK</property>\n"
+" <property name="xalign">0</property&"
+"gt;\n"
+" <property name="draw_indicator">True<"
+";/property>\n"
+" <signal handler="source_type_changed_cb" n"
+"ame="toggled"/>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">1</propert"
+"y>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class="GtkHBox" id="hbox74""
+";>\n"
+" <property name="visible">True</prope"
+"rty>\n"
+" <property name="spacing">4</property"
+">\n"
+" <child>\n"
+" <object class="GtkLabel" id="label9"
+"0">\n"
+" <property name="visible">True</p"
+"roperty>\n"
+" <property name="label" translatable=&q"
+"uot;yes">Detected DVD devices:</property>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="expand">False</p"
+"roperty>\n"
+" <property name="position">0</pro"
+"perty>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class="GtkAlignment" id="al"
+"ignment2">\n"
+" <property name="visible">True</p"
+"roperty>\n"
+" <property name="xalign">0</prope"
+"rty>\n"
+" <property name="xscale">0</prope"
+"rty>\n"
+" <child>\n"
+" <object class="GtkComboBox" id=""
+";source_device">\n"
+" <property name="visible">True&l"
+"t;/property>\n"
+" <property name="model">device_l"
+"ist</property>\n"
+" <signal handler="dvd_device_changed_cb&"
+"quot; name="changed"/>\n"
+" <child>\n"
+" <object class="GtkCellRendererText&qu"
+"ot; id="cellrenderertext1"/>\n"
+" <attributes>\n"
+" <attribute name="text">0<"
+";/attribute>\n"
+" </attributes>\n"
+" </child>\n"
+" </object>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">1</pro"
+"perty>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">2</propert"
+"y>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="expand">False</property&"
+"gt;\n"
+" <property name="position">2</property>"
+";\n"
+" </packing>\n"
+" </child>\n"
+" <child internal-child="action_area">\n"
+" <object class="GtkHButtonBox" id="dialog-ac"
+"tion_area6">\n"
+" <property name="visible">True</property&"
+"gt;\n"
+" <property name="layout_style">end</prope"
+"rty>\n"
+" <child>\n"
+" <object class="GtkButton" id="source_ca"
+"ncel">\n"
+" <property name="label" translatable=""
+"yes">gtk-cancel</property>\n"
+" <property name="visible">True</prope"
+"rty>\n"
+" <property name="can_focus">True</pro"
+"perty>\n"
+" <property name="can_default">True</p"
+"roperty>\n"
+" <property name="has_default">True</p"
+"roperty>\n"
+" <property name="receives_default">True&"
+"lt;/property>\n"
+" <property name="use_stock">True</pro"
+"perty>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">0</propert"
+"y>\n"
+" </packing>\n"
+" </child>\n"
+" <child>\n"
+" <object class="GtkButton" id="source_ok"
+"">\n"
+" <property name="label" translatable=""
+"yes">gtk-ok</property>\n"
+" <property name="visible">True</prope"
+"rty>\n"
+" <property name="can_focus">True</pro"
+"perty>\n"
+" <property name="can_default">True</p"
+"roperty>\n"
+" <property name="has_default">True</p"
+"roperty>\n"
+" <property name="receives_default">True&"
+"lt;/property>\n"
+" <property name="use_stock">True</pro"
+"perty>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="position">1</propert"
+"y>\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+" <packing>\n"
+" <property name="expand">False</property&"
+"gt;\n"
+" <property name="pack_type">end</property"
+">\n"
+" <property name="position">0</property>"
+";\n"
+" </packing>\n"
+" </child>\n"
+" </object>\n"
+" </child>\n"
+" <action-widgets>\n"
+" <action-widget response="-6">source_cancel</ac"
+"tion-widget>\n"
+" <action-widget response="-3">source_ok</action"
+"-widget>\n"
+" </action-widgets>\n"
+" </object>\n"
"</interface>\n"
"</string>\n"
" <key>icons</key>\n"
" <integer>0</integer>\n"
" <key>scale_width</key>\n"
" <integer>0</integer>\n"
+" <key>single_title</key>\n"
+" <integer>1</integer>\n"
" <key>start_chapter</key>\n"
" <integer>1</integer>\n"
" <key>start_frame</key>\n"
" <key>LoggingLevel</key>\n"
" <string>1</string>\n"
" <key>VideoQualityGranularity</key>\n"
-" <string>0.2</string>\n"
+" <string>1</string>\n"
" <key>allow_tweaks</key>\n"
" <false />\n"
" <key>chapters_in_destination</key>\n"
<property name="page_size">0</property>
<property name="value">0</property>
</object>
+ <object class="GtkAdjustment" id="adjustment24">
+ <property name="upper">100</property>
+ <property name="lower">1</property>
+ <property name="page_increment">1</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
<object class="GtkAdjustment" id="preview_progress_adj">
<property name="upper">100</property>
<property name="lower">0</property>
<signal handler="source_button_clicked_cb" name="activate"/>
</object>
</child>
+ <child>
+ <object class="GtkAction" id="source_single">
+ <property name="icon-name">gtk-open</property>
+ <property name="name">source_single</property>
+ <property name="label">Single _Title</property>
+ <signal handler="single_title_source_cb" name="activate"/>
+ </object>
+ </child>
<child>
<object class="GtkAction" id="destination1">
<property name="stock_id">gtk-save-as</property>
<menubar name="menubar1">
<menu action="menuitem1">
<menuitem action="source1"/>
+ <menuitem action="source_single"/>
<menuitem action="destination1"/>
<separator/>
<menuitem action="preferences"/>
</menubar>
</ui>
</object>
+ <object class="GtkListStore" id="device_list">
+ <columns>
+ <!-- column-name device -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
<object class="GtkWindow" id="hb_window">
<property name="visible">True</property>
<property name="title" translatable="yes">HandBrake</property>
<action-widget response="0">update_remind</action-widget>
</action-widgets>
</object>
+ <object class="GtkFileChooserDialog" id="source_dialog">
+ <property name="border_width">5</property>
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="has_separator">False</property>
+ <signal handler="chooser_file_selected_cb" name="selection-changed"/>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox6">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="source_extra">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="single_title_box">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label89">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Title Number:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkSpinButton" id="single_title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="adjustment">adjustment24</property>
+ <signal name="value_changed" handler="setting_widget_changed_cb"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="source_folder_flag">
+ <property name="label" translatable="yes">Open VIDEO_TS folder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <signal handler="source_type_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox74">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label90">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Detected DVD devices:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkComboBox" id="source_device">
+ <property name="visible">True</property>
+ <property name="model">device_list</property>
+ <signal handler="dvd_device_changed_cb" name="changed"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="source_cancel">
+ <property name="label" translatable="yes">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="source_ok">
+ <property name="label" translatable="yes">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">source_cancel</action-widget>
+ <action-widget response="-3">source_ok</action-widget>
+ </action-widgets>
+ </object>
</interface>
</string>
<key>icons</key>
<integer>0</integer>
<key>scale_width</key>
<integer>0</integer>
+ <key>single_title</key>
+ <integer>1</integer>
<key>start_chapter</key>
<integer>1</integer>
<key>start_frame</key>
<key>LoggingLevel</key>
<string>1</string>
<key>VideoQualityGranularity</key>
- <string>0.2</string>
+ <string>1</string>
<key>allow_tweaks</key>
<false />
<key>chapters_in_destination</key>