]> granicus.if.org Git - handbrake/commitdiff
LinGui: show warning dialog when loading backup presets
authorJohn Stebbins <jstebbins.hb@gmail.com>
Wed, 7 Oct 2015 20:40:50 +0000 (13:40 -0700)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Fri, 9 Oct 2015 20:48:30 +0000 (13:48 -0700)
gtk/src/presets.c

index 122756e8452a14001a8c1bdd50e08027c3e5f95c..a6ee0f360281bdc9eeda7d7d5275d5d9e4fc25c7 100644 (file)
@@ -672,7 +672,7 @@ presets_add_config_file(const gchar *name)
             // We can't successfully load presets that were generated by
             // a newer version of handbrake than is currently running.
             hb_value_free(&preset);
-            return -1;
+            return -2;
         }
 
         hb_value_t *backup = hb_value_dup(preset);
@@ -1545,12 +1545,25 @@ store_prefs(void)
 void
 ghb_presets_load(signal_user_data_t *ud)
 {
-    if (presets_add_config_file("presets.json") < 0)
+    int result = presets_add_config_file("presets.json");
+    if (result == -2)
     {
         // The above can fail if the presets file was written by a
         // more recent version of HandBrake than is currently running.
         // Look for a backup version that matches the currently running
         // version.
+        GtkWindow *hb_window = GTK_WINDOW(GHB_WIDGET(ud->builder, "hb_window"));
+        gchar *message = g_strdup_printf(
+            _("Presets found are newer than what is supported by this version of HandBrake!\n\n"
+              "Would you like to continue?"));
+        if (!ghb_message_dialog(hb_window, GTK_MESSAGE_WARNING, message,
+            _("Get me out of here!"), _("Load backup presets")))
+        {
+            g_free(message);
+            exit(1);
+        }
+        g_free(message);
+
         gchar *name;
         int major, minor, micro;
 
@@ -1559,15 +1572,23 @@ ghb_presets_load(signal_user_data_t *ud)
         ghb_log("Failed to read presets file, trying backup (%s)...", name);
         if (presets_add_config_file(name) < 0)
         {
-            if (presets_add_config_file("presets") < 0)
-            {
-                ghb_log("Failed to read presets file, initailizing new presets...");
-                hb_presets_builtin_update();
-                store_presets();
-            }
+            ghb_log("Failed to read backup presets, using defaults...");
+            hb_presets_builtin_update();
+            // Don't store defaults unless the user explicitely saves
+            // a new preset.  This would overwrite the presets file
+            // that was generated by a newer version of HandBrake.
         }
         g_free(name);
     }
+    else if (result < 0)
+    {
+        if (presets_add_config_file("presets") < 0)
+        {
+            ghb_log("Failed to read presets file, initailizing new presets...");
+            hb_presets_builtin_update();
+            store_presets();
+        }
+    }
 }
 
 static void