OSDN Git Service

LinGui: adjust the width of the subtitle list
[handbrake-jp/handbrake-jp-git.git] / gtk / src / presets.c
index 5bd8786..fe6493d 100644 (file)
  * any later version.
  * 
  */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
 #include <glib.h>
 #include <glib-object.h>
 #include <glib/gstdio.h>
@@ -1112,6 +1116,28 @@ load_plist(const gchar *name)
        return plist;
 }
 
+gboolean
+ghb_lock_file(const gchar *name)
+{
+#if !defined(_WIN32)
+       gchar *config, *path;
+       int fd, lock = 0;
+
+       config = ghb_get_user_config_dir(NULL);
+       path = g_strdup_printf ("%s/%s", config, name);
+       fd = open(path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
+       if (fd >= 0)
+               lock = lockf(fd, F_TLOCK, 0);
+       if (lock)
+               close(fd);
+       g_free(config);
+       g_free(path);
+       return !lock;
+#else
+       return 1;
+#endif
+}
+
 static void
 remove_plist(const gchar *name)
 {
@@ -1855,7 +1881,7 @@ value_map_t mix_xlat[] =
 
 value_map_t deint_xlat[] =
 {
-       {"0", "none"},
+       {"0", "off"},
        {"1", "custom"},
        {"2", "fast"},
        {"3", "slow"},
@@ -1865,7 +1891,7 @@ value_map_t deint_xlat[] =
 
 value_map_t denoise_xlat[] =
 {
-       {"0", "none"},
+       {"0", "off"},
        {"1", "custom"},
        {"2", "weak"},
        {"3", "medium"},
@@ -1875,7 +1901,7 @@ value_map_t denoise_xlat[] =
 
 value_map_t detel_xlat[] =
 {
-       {"0", "none"},
+       {"0", "off"},
        {"1", "custom"},
        {"2", "default"},
        {NULL, NULL}
@@ -1883,7 +1909,7 @@ value_map_t detel_xlat[] =
 
 value_map_t decomb_xlat[] =
 {
-       {"0", "none"},
+       {"0", "off"},
        {"1", "custom"},
        {"2", "default"},
        {NULL, NULL}
@@ -1905,7 +1931,14 @@ export_lang_xlat2(GValue *lin_val)
        {
                if (strcmp(str, ghb_language_table[ii].iso639_2) == 0)
                {
-                       gval = ghb_string_value_new(ghb_language_table[ii].eng_name);
+                       const gchar *lang;
+
+                       if (ghb_language_table[ii].native_name[0] != 0)
+                               lang = ghb_language_table[ii].native_name;
+                       else
+                               lang = ghb_language_table[ii].eng_name;
+
+                       gval = ghb_string_value_new(lang);
                        g_free(str);
                        return gval;
                }
@@ -1951,7 +1984,8 @@ import_lang_xlat2(GValue *mac_val)
        str = ghb_value_string(mac_val);
        for (ii = 0; ghb_language_table[ii].eng_name; ii++)
        {
-               if (strcmp(str, ghb_language_table[ii].eng_name) == 0)
+               if ((strcmp(str, ghb_language_table[ii].eng_name) == 0) ||
+                       (strcmp(str, ghb_language_table[ii].native_name) == 0))
                {
                        gval = ghb_string_value_new(ghb_language_table[ii].iso639_2);
                        g_free(str);
@@ -3152,7 +3186,7 @@ preset_import_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 
        g_debug("preset_import_clicked_cb ()");
 
-       dialog = gtk_file_chooser_dialog_new("Export Preset", NULL,
+       dialog = gtk_file_chooser_dialog_new("Import Preset", NULL,
                                GTK_FILE_CHOOSER_ACTION_OPEN,
                                GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
@@ -4040,12 +4074,28 @@ preset_edited_cb(
        GtkTreeStore *store;
        GtkTreeView *treeview;
        GtkTreeIter iter;
-       gint *indices, len;
+       gint *indices, len, count;
        GValue *dict;
+       GValue *preset, *dest;
        
        g_debug("preset_edited_cb ()");
        g_debug("path (%s)", path);
        g_debug("text (%s)", text);
+
+       preset = ghb_settings_get_value (ud->settings, "preset_selection");
+       dest = ghb_array_value_new(MAX_NESTED_PRESET);
+       count = ghb_array_len(preset);
+       ghb_array_copy(dest, preset, count-1);
+       ghb_array_append(dest, ghb_string_value_new(text));
+       indices = ghb_preset_indices_from_path(presetsPlist, dest, &len);
+       ghb_value_free(dest);
+       if (indices != NULL)
+       {
+               // Already exists
+               g_free(indices);
+               return;
+       }
+
        treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "presets_list"));
        store = GTK_TREE_STORE(gtk_tree_view_get_model(treeview));
        treepath = gtk_tree_path_new_from_string (path);