diff options
author | jstebbins <[email protected]> | 2014-02-25 00:41:24 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2014-02-25 00:41:24 +0000 |
commit | 52140b164daccfbad57c9dbf91b196f1ff203e48 (patch) | |
tree | 7b6f1b3201dd0708fbc47e95c96945872e9b0c04 | |
parent | 62040281f4b9c793855db517675ff5ccdeda6995 (diff) |
LinGui: fix some preset loading issues
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6081 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | gtk/src/callbacks.c | 15 | ||||
-rw-r--r-- | gtk/src/ghb.ui | 8 | ||||
-rw-r--r-- | gtk/src/internal_defaults.xml | 2 | ||||
-rw-r--r-- | gtk/src/presets.c | 65 |
4 files changed, 68 insertions, 22 deletions
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index 81522d5ad..fd1988ea9 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -1822,10 +1822,10 @@ set_title_settings(signal_user_data_t *ud, GValue *settings) ghb_settings_set_string(settings, "MetaLongDescription", title->metadata->long_description); } + update_chapter_list_settings(settings); + ghb_set_pref_audio_settings(settings); ghb_set_pref_subtitle_settings(ud, title, settings); } - update_chapter_list_settings(settings); - ghb_set_pref_audio_settings(settings); set_destination_settings(ud, settings); ghb_settings_set_value(settings, "dest_dir", @@ -1853,7 +1853,7 @@ static void load_all_titles(signal_user_data_t *ud, int titleindex) { gint ii, count; - GValue *preset, *preset_path; + GValue *preset, *preset_path = NULL; GValue *settings_array; const hb_title_t *title; @@ -1866,7 +1866,14 @@ load_all_titles(signal_user_data_t *ud, int titleindex) settings_array = ghb_array_value_new(count); preset = ghb_get_current_preset(ud); - preset_path = ghb_get_current_preset_path(ud); + if (preset != NULL) + { + preset_path = ghb_get_current_preset_path(ud); + } + else + { + preset = ud->settings; + } for (ii = 0; ii < count; ii++) { int index; diff --git a/gtk/src/ghb.ui b/gtk/src/ghb.ui index 61d5f46fb..b1aff07ae 100644 --- a/gtk/src/ghb.ui +++ b/gtk/src/ghb.ui @@ -6924,7 +6924,7 @@ on the Video tab instead.</property> <property name="tooltip_text" translatable="yes">Enable maximum width limit.</property> <property name="xalign">0</property> <property name="draw_indicator">True</property> - <signal name="toggled" handler="setting_widget_changed_cb" swapped="no"/> + <signal name="toggled" handler="preset_widget_changed_cb" swapped="no"/> </object> <packing> <property name="top_attach">1</property> @@ -6946,7 +6946,7 @@ Setting this to 0 means there is no maximum width.</property> <property name="secondary_icon_activatable">False</property> <property name="adjustment">adjustment32</property> <property name="snap_to_ticks">True</property> - <signal name="value-changed" handler="setting_widget_changed_cb" swapped="no"/> + <signal name="value-changed" handler="preset_widget_changed_cb" swapped="no"/> </object> <packing> <property name="top_attach">1</property> @@ -6965,7 +6965,7 @@ Setting this to 0 means there is no maximum width.</property> <property name="tooltip_text" translatable="yes">Enable maximum height limit.</property> <property name="xalign">0</property> <property name="draw_indicator">True</property> - <signal name="toggled" handler="setting_widget_changed_cb" swapped="no"/> + <signal name="toggled" handler="preset_widget_changed_cb" swapped="no"/> </object> <packing> <property name="top_attach">2</property> @@ -6986,7 +6986,7 @@ Setting this to 0 means there is no maximum height.</property> <property name="primary_icon_activatable">False</property> <property name="secondary_icon_activatable">False</property> <property name="adjustment">adjustment33</property> - <signal name="value-changed" handler="setting_widget_changed_cb" swapped="no"/> + <signal name="value-changed" handler="preset_widget_changed_cb" swapped="no"/> </object> <packing> <property name="top_attach">2</property> diff --git a/gtk/src/internal_defaults.xml b/gtk/src/internal_defaults.xml index 2e87927d0..9a998bbb8 100644 --- a/gtk/src/internal_defaults.xml +++ b/gtk/src/internal_defaults.xml @@ -68,6 +68,8 @@ <string>Regular</string> <string>Normal</string> </array> + <key>preset_modified</key> + <false /> <key>preset_reload</key> <false /> <key>preset_selection</key> diff --git a/gtk/src/presets.c b/gtk/src/presets.c index fe3172f5e..e1f517ec5 100644 --- a/gtk/src/presets.c +++ b/gtk/src/presets.c @@ -965,8 +965,6 @@ ghb_preset_to_settings(GValue *settings, GValue *preset) ghb_settings_set_value(settings, "scale_width", ghb_settings_get_value(settings, "PictureWidth")); - ghb_settings_set_boolean(settings, "preset_modified", FALSE); - gboolean uses_max; gint uses_pic; gint vqtype; @@ -3466,6 +3464,32 @@ preset_import_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gtk_widget_destroy(dialog); } +GValue* +get_selected_path(signal_user_data_t *ud) +{ + GtkTreeView *treeview; + GtkTreeSelection *selection; + GtkTreeModel *store; + GtkTreeIter iter; + + treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "presets_list")); + selection = gtk_tree_view_get_selection(treeview); + if (gtk_tree_selection_get_selected(selection, &store, &iter)) + { + GtkTreePath *treepath; + gint *indices, len; + GValue *path; + + treepath = gtk_tree_model_get_path(store, &iter); + indices = gtk_tree_path_get_indices(treepath); + len = gtk_tree_path_get_depth(treepath); + + path = preset_path_from_indices(presetsPlist, indices, len); + return path; + } + return NULL; +} + G_MODULE_EXPORT void preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { @@ -3478,13 +3502,16 @@ preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gchar *filename; g_debug("preset_export_clicked_cb ()"); - preset = ghb_settings_get_value (ud->settings, "preset_selection"); + preset = get_selected_path(ud); if (preset == NULL) return; count = ghb_array_len(preset); if (count <= 0) + { + ghb_value_free(preset); return; + } name = g_value_get_string(ghb_array_get_nth(preset, count-1)); @@ -3507,7 +3534,10 @@ preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) indices = ghb_preset_indices_from_path(presetsPlist, preset, &len); if (indices == NULL) + { + ghb_value_free(preset); return; + } response = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_hide(dialog); @@ -3550,6 +3580,7 @@ preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } gtk_widget_destroy(dialog); g_free(indices); + ghb_value_free(preset); } G_MODULE_EXPORT void @@ -3565,8 +3596,7 @@ presets_new_folder_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gint count, *indices, len; g_debug("presets_new_folder_clicked_cb ()"); - preset = ghb_settings_get_value(ud->settings, "preset_selection"); - + preset = get_selected_path(ud); count = ghb_array_len(preset); if (count > 0) name = g_value_get_string(ghb_array_get_nth(preset, count-1)); @@ -3615,6 +3645,7 @@ presets_new_folder_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) ghb_value_free(dest); } g_free(indices); + ghb_value_free(preset); } G_MODULE_EXPORT void @@ -3629,8 +3660,7 @@ presets_save_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gint count, *indices, len; g_debug("presets_save_clicked_cb ()"); - preset = ghb_settings_get_value(ud->settings, "preset_selection"); - + preset = get_selected_path(ud); count = ghb_array_len(preset); if (count > 0) name = g_value_get_string(ghb_array_get_nth(preset, count-1)); @@ -3687,6 +3717,7 @@ presets_save_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) settings_save(ud, dest); ghb_value_free(dest); } + ghb_value_free(preset); } G_MODULE_EXPORT void @@ -3733,7 +3764,6 @@ presets_remove_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) path = gtk_tree_model_get_path(store, &iter); indices = gtk_tree_path_get_indices(path); len = gtk_tree_path_get_depth(path); - gtk_tree_path_free(path); folder = ghb_presets_get_folder(presetsPlist, indices, len); dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, @@ -3776,6 +3806,7 @@ presets_remove_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gtk_tree_path_free(path); } } + gtk_tree_path_free(path); g_free(preset); } } @@ -4149,20 +4180,17 @@ presets_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_ { GtkTreePath *treepath; gint *indices, len; - GValue *path; gboolean folder; treepath = gtk_tree_model_get_path(store, &iter); indices = gtk_tree_path_get_indices(treepath); len = gtk_tree_path_get_depth(treepath); - path = preset_path_from_indices(presetsPlist, indices, len); - ghb_settings_take_value(ud->settings, "preset_selection", path); - folder = ghb_presets_get_folder(presetsPlist, indices, len); if (!folder && !ghb_settings_get_boolean(ud->settings, "preset_reload")) { ghb_set_preset_settings_from_indices(ud, indices, len); + ghb_settings_set_boolean(ud->settings, "preset_modified", FALSE); ghb_set_current_title_settings(ud); ghb_load_settings(ud); } @@ -4219,7 +4247,7 @@ presets_default_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gint *indices, len; g_debug("presets_default_clicked_cb ()"); - preset = ghb_settings_get_value(ud->settings, "preset_selection"); + preset = get_selected_path(ud); indices = ghb_preset_indices_from_path(presetsPlist, preset, &len); if (indices) { @@ -4231,6 +4259,7 @@ presets_default_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } g_free(indices); } + ghb_value_free(preset); } G_MODULE_EXPORT void @@ -4252,7 +4281,7 @@ preset_edited_cb( g_debug("path (%s)", path); g_debug("text (%s)", text); - preset = ghb_settings_get_value (ud->settings, "preset_selection"); + preset = get_selected_path(ud); dest = ghb_array_value_new(MAX_NESTED_PRESET); count = ghb_array_len(preset); ghb_array_copy(dest, preset, count-1); @@ -4263,6 +4292,7 @@ preset_edited_cb( { // Already exists g_free(indices); + ghb_value_free(preset); return; } @@ -4278,5 +4308,12 @@ preset_edited_cb( ghb_dict_insert(dict, g_strdup("PresetName"), ghb_string_value_new(text)); store_presets(); gtk_tree_path_free (treepath); + ghb_value_free(preset); +} + +G_MODULE_EXPORT void +preset_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud) +{ + ghb_widget_to_setting(ud->settings, widget); } |