]> granicus.if.org Git - handbrake/commitdiff
LinGui: add single title scan option to file menu
authorjstebbins <jstebbins.hb@gmail.com>
Sat, 14 Feb 2009 00:11:58 +0000 (00:11 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Sat, 14 Feb 2009 00:11:58 +0000 (00:11 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2163 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/callbacks.c
gtk/src/callbacks.h
gtk/src/ghb.ui
gtk/src/hb-backend.c
gtk/src/internal_defaults.xml
gtk/src/main.c
gtk/src/queuehandler.c
gtk/src/resource_data.h
gtk/src/resources.plist

index 1898271af3ccdcff07b926fe05725153891d10fe..acb434e7e215cf878184c6ad0cc09b92f8ea39a1 100644 (file)
@@ -467,18 +467,18 @@ update_source_label(signal_user_data_t *ud, const gchar *source)
        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))
        {
@@ -499,28 +499,39 @@ chooser_file_selected_cb(GtkFileChooser *dialog, GtkComboBox *combo)
 }
 
 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);
        }
@@ -536,61 +547,44 @@ source_type_changed_cb(GtkToggleButton *toggle, GtkFileChooser *chooser)
        }
 }
 
-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)
@@ -629,7 +623,7 @@ ghb_do_scan(signal_user_data_t *ud, const gchar *filename, gboolean force)
                        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
@@ -639,11 +633,24 @@ ghb_do_scan(signal_user_data_t *ud, const gchar *filename, gboolean force)
        }
 }
 
-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;
@@ -661,15 +668,20 @@ source_button_clicked_cb(GtkButton *button, signal_user_data_t *ud)
        {
                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)
@@ -679,10 +691,17 @@ source_button_clicked_cb(GtkButton *button, signal_user_data_t *ud)
                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);
                        }
@@ -690,7 +709,18 @@ source_button_clicked_cb(GtkButton *button, signal_user_data_t *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
@@ -701,7 +731,7 @@ dvd_source_activate_cb(GtkAction *action, signal_user_data_t *ud)
 
        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);
@@ -2336,6 +2366,13 @@ debug_log_handler(const gchar *domain, GLogLevelFlags flags, const gchar *msg, g
        }
 }
 
+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)
 {
index 1e7ad2f86afd1ff5fc5ce4dc515f8f2a59cf67d7..2c17e50e259dfab8afcef4ef712ff7a35b13d7f8 100644 (file)
@@ -31,6 +31,8 @@
 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);
@@ -44,7 +46,8 @@ gboolean ghb_reload_queue(signal_user_data_t *ud);
 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);
index ea7ff7634154ac9453b13c4c649b19e1dd4c6baf..7cc27df598d2d541f1588109fde12876371919f9 100644 (file)
     <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>
@@ -5385,4 +5408,166 @@ libxvidcore authors:
       <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>
index 9f889ad79eb88b56060dd736013c1ff55eb00b02..518d1b44d5317c8f84f6d9ad6b07afa12be05de9 100644 (file)
@@ -198,8 +198,8 @@ combo_opts_t direct_opts =
 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 =
 {
index 1bc553f2d03a42baf9a98ede9d09a897440566f6..8aaa284f6c2f6ec60220ee0a8b4d31376f8d48b4 100644 (file)
@@ -32,6 +32,8 @@
                <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>
index 779e8c5d67b483e1a3df0a8706ebbe7850ca072d..72deb03a7d0532248fa7ad4ac8c3aac154b899c7 100644 (file)
@@ -524,6 +524,8 @@ main (int argc, char *argv[])
        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);
index bed650262b46ddecb61dd429633feed618585187..848364d0e9a3f9e1b10799003bcc12be931259f4 100644 (file)
@@ -1193,7 +1193,7 @@ queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *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);
        }
 }
index 4c480cf71cd7fcd60854ca11faf40442ebad958b..98530766d7d06859b2056022c1fcafedeb2bb29f 100644 (file)
 "    &lt;property name=&quot;page_size&quot;&gt;0&lt;/property&gt;\n"
 "    &lt;property name=&quot;value&quot;&gt;0&lt;/property&gt;\n"
 "  &lt;/object&gt;\n"
+"  &lt;object class=&quot;GtkAdjustment&quot; id=&quot;adjustment24&quot"
+";&gt;\n"
+"    &lt;property name=&quot;upper&quot;&gt;100&lt;/property&gt;\n"
+"    &lt;property name=&quot;lower&quot;&gt;1&lt;/property&gt;\n"
+"    &lt;property name=&quot;page_increment&quot;&gt;1&lt;/property&gt;\n"
+"    &lt;property name=&quot;step_increment&quot;&gt;1&lt;/property&gt;\n"
+"    &lt;property name=&quot;page_size&quot;&gt;0&lt;/property&gt;\n"
+"    &lt;property name=&quot;value&quot;&gt;1&lt;/property&gt;\n"
+"  &lt;/object&gt;\n"
 "  &lt;object class=&quot;GtkAdjustment&quot; id=&quot;preview_progress_"
 "adj&quot;&gt;\n"
 "    &lt;property name=&quot;upper&quot;&gt;100&lt;/property&gt;\n"
 "          &lt;/object&gt;\n"
 "        &lt;/child&gt;\n"
 "        &lt;child&gt;\n"
+"          &lt;object class=&quot;GtkAction&quot; id=&quot;source_single"
+"&quot;&gt;\n"
+"            &lt;property name=&quot;icon-name&quot;&gt;gtk-open&lt;/pro"
+"perty&gt;\n"
+"            &lt;property name=&quot;name&quot;&gt;source_single&lt;/pro"
+"perty&gt;\n"
+"            &lt;property name=&quot;label&quot;&gt;Single _Title&lt;/pr"
+"operty&gt;\n"
+"            &lt;signal handler=&quot;single_title_source_cb&quot; name="
+"&quot;activate&quot;/&gt;\n"
+"          &lt;/object&gt;\n"
+"        &lt;/child&gt;\n"
+"        &lt;child&gt;\n"
 "          &lt;object class=&quot;GtkAction&quot; id=&quot;destination1&"
 "quot;&gt;\n"
 "            &lt;property name=&quot;stock_id&quot;&gt;gtk-save-as&lt;/p"
 "      &lt;menubar name=&quot;menubar1&quot;&gt;\n"
 "        &lt;menu action=&quot;menuitem1&quot;&gt;\n"
 "          &lt;menuitem action=&quot;source1&quot;/&gt;\n"
+"          &lt;menuitem action=&quot;source_single&quot;/&gt;\n"
 "          &lt;menuitem action=&quot;destination1&quot;/&gt;\n"
 "          &lt;separator/&gt;\n"
 "          &lt;menuitem action=&quot;preferences&quot;/&gt;\n"
 "      &lt;/menubar&gt;\n"
 "    &lt;/ui&gt;\n"
 "  &lt;/object&gt;\n"
+"  &lt;object class=&quot;GtkListStore&quot; id=&quot;device_list&quot;&"
+"gt;\n"
+"    &lt;columns&gt;\n"
+"      &lt;!-- column-name device --&gt;\n"
+"      &lt;column type=&quot;gchararray&quot;/&gt;\n"
+"    &lt;/columns&gt;\n"
+"  &lt;/object&gt;\n"
 "  &lt;object class=&quot;GtkWindow&quot; id=&quot;hb_window&quot;&gt;\n"
 "    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;\n"
 "    &lt;property name=&quot;title&quot; translatable=&quot;yes&quot;&gt"
 "ion-widget&gt;\n"
 "    &lt;/action-widgets&gt;\n"
 "  &lt;/object&gt;\n"
+"  &lt;object class=&quot;GtkFileChooserDialog&quot; id=&quot;source_dia"
+"log&quot;&gt;\n"
+"    &lt;property name=&quot;border_width&quot;&gt;5&lt;/property&gt;\n"
+"    &lt;property name=&quot;modal&quot;&gt;True&lt;/property&gt;\n"
+"    &lt;property name=&quot;type_hint&quot;&gt;dialog&lt;/property&gt;\n"
+"    &lt;property name=&quot;skip_taskbar_hint&quot;&gt;True&lt;/propert"
+"y&gt;\n"
+"    &lt;property name=&quot;skip_pager_hint&quot;&gt;True&lt;/property&"
+"gt;\n"
+"    &lt;property name=&quot;has_separator&quot;&gt;False&lt;/property&g"
+"t;\n"
+"    &lt;signal handler=&quot;chooser_file_selected_cb&quot; name=&quot;"
+"selection-changed&quot;/&gt;\n"
+"    &lt;child internal-child=&quot;vbox&quot;&gt;\n"
+"      &lt;object class=&quot;GtkVBox&quot; id=&quot;dialog-vbox6&quot;&"
+"gt;\n"
+"        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;\n"
+"        &lt;property name=&quot;spacing&quot;&gt;2&lt;/property&gt;\n"
+"        &lt;child&gt;\n"
+"          &lt;object class=&quot;GtkVBox&quot; id=&quot;source_extra&qu"
+"ot;&gt;\n"
+"            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&"
+"gt;\n"
+"            &lt;child&gt;\n"
+"              &lt;object class=&quot;GtkHBox&quot; id=&quot;single_titl"
+"e_box&quot;&gt;\n"
+"                &lt;property name=&quot;visible&quot;&gt;True&lt;/prope"
+"rty&gt;\n"
+"                &lt;property name=&quot;spacing&quot;&gt;4&lt;/property"
+"&gt;\n"
+"                &lt;child&gt;\n"
+"                  &lt;object class=&quot;GtkLabel&quot; id=&quot;label8"
+"9&quot;&gt;\n"
+"                    &lt;property name=&quot;visible&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;label&quot; translatable=&q"
+"uot;yes&quot;&gt;Title Number:&lt;/property&gt;\n"
+"                  &lt;/object&gt;\n"
+"                  &lt;packing&gt;\n"
+"                    &lt;property name=&quot;expand&quot;&gt;False&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;position&quot;&gt;0&lt;/pro"
+"perty&gt;\n"
+"                  &lt;/packing&gt;\n"
+"                &lt;/child&gt;\n"
+"                &lt;child&gt;\n"
+"                  &lt;object class=&quot;GtkAlignment&quot; id=&quot;al"
+"ignment1&quot;&gt;\n"
+"                    &lt;property name=&quot;visible&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;xalign&quot;&gt;0&lt;/prope"
+"rty&gt;\n"
+"                    &lt;property name=&quot;xscale&quot;&gt;0&lt;/prope"
+"rty&gt;\n"
+"                    &lt;child&gt;\n"
+"                      &lt;object class=&quot;GtkSpinButton&quot; id=&qu"
+"ot;single_title&quot;&gt;\n"
+"                        &lt;property name=&quot;visible&quot;&gt;True&l"
+"t;/property&gt;\n"
+"                        &lt;property name=&quot;can_focus&quot;&gt;True"
+"&lt;/property&gt;\n"
+"                        &lt;property name=&quot;events&quot;&gt;GDK_POI"
+"NTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK"
+" | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;\n"
+"                        &lt;property name=&quot;adjustment&quot;&gt;adj"
+"ustment24&lt;/property&gt;\n"
+"                        &lt;signal name=&quot;value_changed&quot; handl"
+"er=&quot;setting_widget_changed_cb&quot;/&gt;\n"
+"                      &lt;/object&gt;\n"
+"                    &lt;/child&gt;\n"
+"                  &lt;/object&gt;\n"
+"                  &lt;packing&gt;\n"
+"                    &lt;property name=&quot;position&quot;&gt;1&lt;/pro"
+"perty&gt;\n"
+"                  &lt;/packing&gt;\n"
+"                &lt;/child&gt;\n"
+"              &lt;/object&gt;\n"
+"              &lt;packing&gt;\n"
+"                &lt;property name=&quot;position&quot;&gt;0&lt;/propert"
+"y&gt;\n"
+"              &lt;/packing&gt;\n"
+"            &lt;/child&gt;\n"
+"            &lt;child&gt;\n"
+"              &lt;object class=&quot;GtkCheckButton&quot; id=&quot;sour"
+"ce_folder_flag&quot;&gt;\n"
+"                &lt;property name=&quot;label&quot; translatable=&quot;"
+"yes&quot;&gt;Open VIDEO_TS folder&lt;/property&gt;\n"
+"                &lt;property name=&quot;visible&quot;&gt;True&lt;/prope"
+"rty&gt;\n"
+"                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/pro"
+"perty&gt;\n"
+"                &lt;property name=&quot;receives_default&quot;&gt;False"
+"&lt;/property&gt;\n"
+"                &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOT"
+"ION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_B"
+"UTTON_RELEASE_MASK&lt;/property&gt;\n"
+"                &lt;property name=&quot;xalign&quot;&gt;0&lt;/property&"
+"gt;\n"
+"                &lt;property name=&quot;draw_indicator&quot;&gt;True&lt"
+";/property&gt;\n"
+"                &lt;signal handler=&quot;source_type_changed_cb&quot; n"
+"ame=&quot;toggled&quot;/&gt;\n"
+"              &lt;/object&gt;\n"
+"              &lt;packing&gt;\n"
+"                &lt;property name=&quot;position&quot;&gt;1&lt;/propert"
+"y&gt;\n"
+"              &lt;/packing&gt;\n"
+"            &lt;/child&gt;\n"
+"            &lt;child&gt;\n"
+"              &lt;object class=&quot;GtkHBox&quot; id=&quot;hbox74&quot"
+";&gt;\n"
+"                &lt;property name=&quot;visible&quot;&gt;True&lt;/prope"
+"rty&gt;\n"
+"                &lt;property name=&quot;spacing&quot;&gt;4&lt;/property"
+"&gt;\n"
+"                &lt;child&gt;\n"
+"                  &lt;object class=&quot;GtkLabel&quot; id=&quot;label9"
+"0&quot;&gt;\n"
+"                    &lt;property name=&quot;visible&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;label&quot; translatable=&q"
+"uot;yes&quot;&gt;Detected DVD devices:&lt;/property&gt;\n"
+"                  &lt;/object&gt;\n"
+"                  &lt;packing&gt;\n"
+"                    &lt;property name=&quot;expand&quot;&gt;False&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;position&quot;&gt;0&lt;/pro"
+"perty&gt;\n"
+"                  &lt;/packing&gt;\n"
+"                &lt;/child&gt;\n"
+"                &lt;child&gt;\n"
+"                  &lt;object class=&quot;GtkAlignment&quot; id=&quot;al"
+"ignment2&quot;&gt;\n"
+"                    &lt;property name=&quot;visible&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                    &lt;property name=&quot;xalign&quot;&gt;0&lt;/prope"
+"rty&gt;\n"
+"                    &lt;property name=&quot;xscale&quot;&gt;0&lt;/prope"
+"rty&gt;\n"
+"                    &lt;child&gt;\n"
+"                      &lt;object class=&quot;GtkComboBox&quot; id=&quot"
+";source_device&quot;&gt;\n"
+"                        &lt;property name=&quot;visible&quot;&gt;True&l"
+"t;/property&gt;\n"
+"                        &lt;property name=&quot;model&quot;&gt;device_l"
+"ist&lt;/property&gt;\n"
+"                        &lt;signal handler=&quot;dvd_device_changed_cb&"
+"quot; name=&quot;changed&quot;/&gt;\n"
+"                        &lt;child&gt;\n"
+"                          &lt;object class=&quot;GtkCellRendererText&qu"
+"ot; id=&quot;cellrenderertext1&quot;/&gt;\n"
+"                          &lt;attributes&gt;\n"
+"                            &lt;attribute name=&quot;text&quot;&gt;0&lt"
+";/attribute&gt;\n"
+"                          &lt;/attributes&gt;\n"
+"                        &lt;/child&gt;\n"
+"                      &lt;/object&gt;\n"
+"                    &lt;/child&gt;\n"
+"                  &lt;/object&gt;\n"
+"                  &lt;packing&gt;\n"
+"                    &lt;property name=&quot;position&quot;&gt;1&lt;/pro"
+"perty&gt;\n"
+"                  &lt;/packing&gt;\n"
+"                &lt;/child&gt;\n"
+"              &lt;/object&gt;\n"
+"              &lt;packing&gt;\n"
+"                &lt;property name=&quot;position&quot;&gt;2&lt;/propert"
+"y&gt;\n"
+"              &lt;/packing&gt;\n"
+"            &lt;/child&gt;\n"
+"          &lt;/object&gt;\n"
+"          &lt;packing&gt;\n"
+"            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&"
+"gt;\n"
+"            &lt;property name=&quot;position&quot;&gt;2&lt;/property&gt"
+";\n"
+"          &lt;/packing&gt;\n"
+"        &lt;/child&gt;\n"
+"        &lt;child internal-child=&quot;action_area&quot;&gt;\n"
+"          &lt;object class=&quot;GtkHButtonBox&quot; id=&quot;dialog-ac"
+"tion_area6&quot;&gt;\n"
+"            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&"
+"gt;\n"
+"            &lt;property name=&quot;layout_style&quot;&gt;end&lt;/prope"
+"rty&gt;\n"
+"            &lt;child&gt;\n"
+"              &lt;object class=&quot;GtkButton&quot; id=&quot;source_ca"
+"ncel&quot;&gt;\n"
+"                &lt;property name=&quot;label&quot; translatable=&quot;"
+"yes&quot;&gt;gtk-cancel&lt;/property&gt;\n"
+"                &lt;property name=&quot;visible&quot;&gt;True&lt;/prope"
+"rty&gt;\n"
+"                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/pro"
+"perty&gt;\n"
+"                &lt;property name=&quot;can_default&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                &lt;property name=&quot;has_default&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                &lt;property name=&quot;receives_default&quot;&gt;True&"
+"lt;/property&gt;\n"
+"                &lt;property name=&quot;use_stock&quot;&gt;True&lt;/pro"
+"perty&gt;\n"
+"              &lt;/object&gt;\n"
+"              &lt;packing&gt;\n"
+"                &lt;property name=&quot;position&quot;&gt;0&lt;/propert"
+"y&gt;\n"
+"              &lt;/packing&gt;\n"
+"            &lt;/child&gt;\n"
+"            &lt;child&gt;\n"
+"              &lt;object class=&quot;GtkButton&quot; id=&quot;source_ok"
+"&quot;&gt;\n"
+"                &lt;property name=&quot;label&quot; translatable=&quot;"
+"yes&quot;&gt;gtk-ok&lt;/property&gt;\n"
+"                &lt;property name=&quot;visible&quot;&gt;True&lt;/prope"
+"rty&gt;\n"
+"                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/pro"
+"perty&gt;\n"
+"                &lt;property name=&quot;can_default&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                &lt;property name=&quot;has_default&quot;&gt;True&lt;/p"
+"roperty&gt;\n"
+"                &lt;property name=&quot;receives_default&quot;&gt;True&"
+"lt;/property&gt;\n"
+"                &lt;property name=&quot;use_stock&quot;&gt;True&lt;/pro"
+"perty&gt;\n"
+"              &lt;/object&gt;\n"
+"              &lt;packing&gt;\n"
+"                &lt;property name=&quot;position&quot;&gt;1&lt;/propert"
+"y&gt;\n"
+"              &lt;/packing&gt;\n"
+"            &lt;/child&gt;\n"
+"          &lt;/object&gt;\n"
+"          &lt;packing&gt;\n"
+"            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&"
+"gt;\n"
+"            &lt;property name=&quot;pack_type&quot;&gt;end&lt;/property"
+"&gt;\n"
+"            &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt"
+";\n"
+"          &lt;/packing&gt;\n"
+"        &lt;/child&gt;\n"
+"      &lt;/object&gt;\n"
+"    &lt;/child&gt;\n"
+"    &lt;action-widgets&gt;\n"
+"      &lt;action-widget response=&quot;-6&quot;&gt;source_cancel&lt;/ac"
+"tion-widget&gt;\n"
+"      &lt;action-widget response=&quot;-3&quot;&gt;source_ok&lt;/action"
+"-widget&gt;\n"
+"    &lt;/action-widgets&gt;\n"
+"  &lt;/object&gt;\n"
 "&lt;/interface&gt;\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"
index 11fa87c5b8142df374d5c0eb3368d8cc43146a34..d0bc0c2f22feb47d1c31f856937ba02edf02dfbf 100644 (file)
     &lt;property name=&quot;page_size&quot;&gt;0&lt;/property&gt;
     &lt;property name=&quot;value&quot;&gt;0&lt;/property&gt;
   &lt;/object&gt;
+  &lt;object class=&quot;GtkAdjustment&quot; id=&quot;adjustment24&quot;&gt;
+    &lt;property name=&quot;upper&quot;&gt;100&lt;/property&gt;
+    &lt;property name=&quot;lower&quot;&gt;1&lt;/property&gt;
+    &lt;property name=&quot;page_increment&quot;&gt;1&lt;/property&gt;
+    &lt;property name=&quot;step_increment&quot;&gt;1&lt;/property&gt;
+    &lt;property name=&quot;page_size&quot;&gt;0&lt;/property&gt;
+    &lt;property name=&quot;value&quot;&gt;1&lt;/property&gt;
+  &lt;/object&gt;
   &lt;object class=&quot;GtkAdjustment&quot; id=&quot;preview_progress_adj&quot;&gt;
     &lt;property name=&quot;upper&quot;&gt;100&lt;/property&gt;
     &lt;property name=&quot;lower&quot;&gt;0&lt;/property&gt;
             &lt;signal handler=&quot;source_button_clicked_cb&quot; name=&quot;activate&quot;/&gt;
           &lt;/object&gt;
         &lt;/child&gt;
+        &lt;child&gt;
+          &lt;object class=&quot;GtkAction&quot; id=&quot;source_single&quot;&gt;
+            &lt;property name=&quot;icon-name&quot;&gt;gtk-open&lt;/property&gt;
+            &lt;property name=&quot;name&quot;&gt;source_single&lt;/property&gt;
+            &lt;property name=&quot;label&quot;&gt;Single _Title&lt;/property&gt;
+            &lt;signal handler=&quot;single_title_source_cb&quot; name=&quot;activate&quot;/&gt;
+          &lt;/object&gt;
+        &lt;/child&gt;
         &lt;child&gt;
           &lt;object class=&quot;GtkAction&quot; id=&quot;destination1&quot;&gt;
             &lt;property name=&quot;stock_id&quot;&gt;gtk-save-as&lt;/property&gt;
       &lt;menubar name=&quot;menubar1&quot;&gt;
         &lt;menu action=&quot;menuitem1&quot;&gt;
           &lt;menuitem action=&quot;source1&quot;/&gt;
+          &lt;menuitem action=&quot;source_single&quot;/&gt;
           &lt;menuitem action=&quot;destination1&quot;/&gt;
           &lt;separator/&gt;
           &lt;menuitem action=&quot;preferences&quot;/&gt;
       &lt;/menubar&gt;
     &lt;/ui&gt;
   &lt;/object&gt;
+  &lt;object class=&quot;GtkListStore&quot; id=&quot;device_list&quot;&gt;
+    &lt;columns&gt;
+      &lt;!-- column-name device --&gt;
+      &lt;column type=&quot;gchararray&quot;/&gt;
+    &lt;/columns&gt;
+  &lt;/object&gt;
   &lt;object class=&quot;GtkWindow&quot; id=&quot;hb_window&quot;&gt;
     &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
     &lt;property name=&quot;title&quot; translatable=&quot;yes&quot;&gt;HandBrake&lt;/property&gt;
@@ -5390,6 +5413,168 @@ libxvidcore authors:
       &lt;action-widget response=&quot;0&quot;&gt;update_remind&lt;/action-widget&gt;
     &lt;/action-widgets&gt;
   &lt;/object&gt;
+  &lt;object class=&quot;GtkFileChooserDialog&quot; id=&quot;source_dialog&quot;&gt;
+    &lt;property name=&quot;border_width&quot;&gt;5&lt;/property&gt;
+    &lt;property name=&quot;modal&quot;&gt;True&lt;/property&gt;
+    &lt;property name=&quot;type_hint&quot;&gt;dialog&lt;/property&gt;
+    &lt;property name=&quot;skip_taskbar_hint&quot;&gt;True&lt;/property&gt;
+    &lt;property name=&quot;skip_pager_hint&quot;&gt;True&lt;/property&gt;
+    &lt;property name=&quot;has_separator&quot;&gt;False&lt;/property&gt;
+    &lt;signal handler=&quot;chooser_file_selected_cb&quot; name=&quot;selection-changed&quot;/&gt;
+    &lt;child internal-child=&quot;vbox&quot;&gt;
+      &lt;object class=&quot;GtkVBox&quot; id=&quot;dialog-vbox6&quot;&gt;
+        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+        &lt;property name=&quot;spacing&quot;&gt;2&lt;/property&gt;
+        &lt;child&gt;
+          &lt;object class=&quot;GtkVBox&quot; id=&quot;source_extra&quot;&gt;
+            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+            &lt;child&gt;
+              &lt;object class=&quot;GtkHBox&quot; id=&quot;single_title_box&quot;&gt;
+                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;spacing&quot;&gt;4&lt;/property&gt;
+                &lt;child&gt;
+                  &lt;object class=&quot;GtkLabel&quot; id=&quot;label89&quot;&gt;
+                    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                    &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;Title Number:&lt;/property&gt;
+                  &lt;/object&gt;
+                  &lt;packing&gt;
+                    &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
+                    &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt;
+                  &lt;/packing&gt;
+                &lt;/child&gt;
+                &lt;child&gt;
+                  &lt;object class=&quot;GtkAlignment&quot; id=&quot;alignment1&quot;&gt;
+                    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                    &lt;property name=&quot;xalign&quot;&gt;0&lt;/property&gt;
+                    &lt;property name=&quot;xscale&quot;&gt;0&lt;/property&gt;
+                    &lt;child&gt;
+                      &lt;object class=&quot;GtkSpinButton&quot; id=&quot;single_title&quot;&gt;
+                        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                        &lt;property name=&quot;can_focus&quot;&gt;True&lt;/property&gt;
+                        &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
+                        &lt;property name=&quot;adjustment&quot;&gt;adjustment24&lt;/property&gt;
+                        &lt;signal name=&quot;value_changed&quot; handler=&quot;setting_widget_changed_cb&quot;/&gt;
+                      &lt;/object&gt;
+                    &lt;/child&gt;
+                  &lt;/object&gt;
+                  &lt;packing&gt;
+                    &lt;property name=&quot;position&quot;&gt;1&lt;/property&gt;
+                  &lt;/packing&gt;
+                &lt;/child&gt;
+              &lt;/object&gt;
+              &lt;packing&gt;
+                &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt;
+              &lt;/packing&gt;
+            &lt;/child&gt;
+            &lt;child&gt;
+              &lt;object class=&quot;GtkCheckButton&quot; id=&quot;source_folder_flag&quot;&gt;
+                &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;Open VIDEO_TS folder&lt;/property&gt;
+                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;receives_default&quot;&gt;False&lt;/property&gt;
+                &lt;property name=&quot;events&quot;&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;
+                &lt;property name=&quot;xalign&quot;&gt;0&lt;/property&gt;
+                &lt;property name=&quot;draw_indicator&quot;&gt;True&lt;/property&gt;
+                &lt;signal handler=&quot;source_type_changed_cb&quot; name=&quot;toggled&quot;/&gt;
+              &lt;/object&gt;
+              &lt;packing&gt;
+                &lt;property name=&quot;position&quot;&gt;1&lt;/property&gt;
+              &lt;/packing&gt;
+            &lt;/child&gt;
+            &lt;child&gt;
+              &lt;object class=&quot;GtkHBox&quot; id=&quot;hbox74&quot;&gt;
+                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;spacing&quot;&gt;4&lt;/property&gt;
+                &lt;child&gt;
+                  &lt;object class=&quot;GtkLabel&quot; id=&quot;label90&quot;&gt;
+                    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                    &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;Detected DVD devices:&lt;/property&gt;
+                  &lt;/object&gt;
+                  &lt;packing&gt;
+                    &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
+                    &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt;
+                  &lt;/packing&gt;
+                &lt;/child&gt;
+                &lt;child&gt;
+                  &lt;object class=&quot;GtkAlignment&quot; id=&quot;alignment2&quot;&gt;
+                    &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                    &lt;property name=&quot;xalign&quot;&gt;0&lt;/property&gt;
+                    &lt;property name=&quot;xscale&quot;&gt;0&lt;/property&gt;
+                    &lt;child&gt;
+                      &lt;object class=&quot;GtkComboBox&quot; id=&quot;source_device&quot;&gt;
+                        &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                        &lt;property name=&quot;model&quot;&gt;device_list&lt;/property&gt;
+                        &lt;signal handler=&quot;dvd_device_changed_cb&quot; name=&quot;changed&quot;/&gt;
+                        &lt;child&gt;
+                          &lt;object class=&quot;GtkCellRendererText&quot; id=&quot;cellrenderertext1&quot;/&gt;
+                          &lt;attributes&gt;
+                            &lt;attribute name=&quot;text&quot;&gt;0&lt;/attribute&gt;
+                          &lt;/attributes&gt;
+                        &lt;/child&gt;
+                      &lt;/object&gt;
+                    &lt;/child&gt;
+                  &lt;/object&gt;
+                  &lt;packing&gt;
+                    &lt;property name=&quot;position&quot;&gt;1&lt;/property&gt;
+                  &lt;/packing&gt;
+                &lt;/child&gt;
+              &lt;/object&gt;
+              &lt;packing&gt;
+                &lt;property name=&quot;position&quot;&gt;2&lt;/property&gt;
+              &lt;/packing&gt;
+            &lt;/child&gt;
+          &lt;/object&gt;
+          &lt;packing&gt;
+            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
+            &lt;property name=&quot;position&quot;&gt;2&lt;/property&gt;
+          &lt;/packing&gt;
+        &lt;/child&gt;
+        &lt;child internal-child=&quot;action_area&quot;&gt;
+          &lt;object class=&quot;GtkHButtonBox&quot; id=&quot;dialog-action_area6&quot;&gt;
+            &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+            &lt;property name=&quot;layout_style&quot;&gt;end&lt;/property&gt;
+            &lt;child&gt;
+              &lt;object class=&quot;GtkButton&quot; id=&quot;source_cancel&quot;&gt;
+                &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;gtk-cancel&lt;/property&gt;
+                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;can_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;has_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;receives_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;use_stock&quot;&gt;True&lt;/property&gt;
+              &lt;/object&gt;
+              &lt;packing&gt;
+                &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt;
+              &lt;/packing&gt;
+            &lt;/child&gt;
+            &lt;child&gt;
+              &lt;object class=&quot;GtkButton&quot; id=&quot;source_ok&quot;&gt;
+                &lt;property name=&quot;label&quot; translatable=&quot;yes&quot;&gt;gtk-ok&lt;/property&gt;
+                &lt;property name=&quot;visible&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;can_focus&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;can_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;has_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;receives_default&quot;&gt;True&lt;/property&gt;
+                &lt;property name=&quot;use_stock&quot;&gt;True&lt;/property&gt;
+              &lt;/object&gt;
+              &lt;packing&gt;
+                &lt;property name=&quot;position&quot;&gt;1&lt;/property&gt;
+              &lt;/packing&gt;
+            &lt;/child&gt;
+          &lt;/object&gt;
+          &lt;packing&gt;
+            &lt;property name=&quot;expand&quot;&gt;False&lt;/property&gt;
+            &lt;property name=&quot;pack_type&quot;&gt;end&lt;/property&gt;
+            &lt;property name=&quot;position&quot;&gt;0&lt;/property&gt;
+          &lt;/packing&gt;
+        &lt;/child&gt;
+      &lt;/object&gt;
+    &lt;/child&gt;
+    &lt;action-widgets&gt;
+      &lt;action-widget response=&quot;-6&quot;&gt;source_cancel&lt;/action-widget&gt;
+      &lt;action-widget response=&quot;-3&quot;&gt;source_ok&lt;/action-widget&gt;
+    &lt;/action-widgets&gt;
+  &lt;/object&gt;
 &lt;/interface&gt;
 </string>
        <key>icons</key>
@@ -5534,6 +5719,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <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>
@@ -5592,7 +5779,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <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>