+G_MODULE_EXPORT void
+subtitle_forced_toggled_cb(
+ GtkCellRendererToggle *cell,
+ gchar *path,
+ signal_user_data_t *ud)
+{
+ GtkTreeView *tv;
+ GtkTreeModel *tm;
+ GtkTreeIter ti;
+ gboolean active;
+ gint row;
+ GtkTreePath *tp;
+ gint *indices;
+ GValue *subtitle_list, *settings;
+ gint source;
+
+ g_debug("forced toggled");
+ tp = gtk_tree_path_new_from_string (path);
+ tv = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "subtitle_list"));
+ g_return_if_fail(tv != NULL);
+ tm = gtk_tree_view_get_model(tv);
+ g_return_if_fail(tm != NULL);
+ gtk_tree_model_get_iter(tm, &ti, tp);
+ gtk_tree_model_get(tm, &ti, 1, &active, -1);
+ active ^= 1;
+
+ // Get the row number
+ indices = gtk_tree_path_get_indices (tp);
+ row = indices[0];
+ gtk_tree_path_free(tp);
+
+ subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
+
+ if (row < 0 || row >= ghb_array_len(subtitle_list))
+ return;
+
+ settings = ghb_array_get_nth(subtitle_list, row);
+
+ source = ghb_settings_get_int(settings, "SubtitleSource");
+ if (source != VOBSUB)
+ return;
+
+ ghb_settings_set_boolean(settings, "SubtitleForced", active);
+ gtk_list_store_set(GTK_LIST_STORE(tm), &ti, 1, active, -1);
+ ghb_live_reset(ud);
+}
+
+G_MODULE_EXPORT void
+subtitle_burned_toggled_cb(
+ GtkCellRendererToggle *cell,
+ gchar *path,
+ signal_user_data_t *ud)
+{
+ GtkTreeView *tv;
+ GtkTreeModel *tm;
+ GtkTreeIter ti;
+ GtkTreePath *tp;
+ gboolean active;
+ gint row;
+ gint *indices;
+ GValue *subtitle_list;
+ gint count;
+ GValue *settings;
+ gint source;
+
+ g_debug("burned toggled");
+ tp = gtk_tree_path_new_from_string (path);
+ tv = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "subtitle_list"));
+ g_return_if_fail(tv != NULL);
+ tm = gtk_tree_view_get_model(tv);
+ g_return_if_fail(tm != NULL);
+ gtk_tree_model_get_iter(tm, &ti, tp);
+ gtk_tree_model_get(tm, &ti, 2, &active, -1);
+ active ^= 1;
+
+ // Get the row number
+ indices = gtk_tree_path_get_indices (tp);
+ row = indices[0];
+ gtk_tree_path_free(tp);
+
+ subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
+ count = ghb_array_len(subtitle_list);
+ if (row < 0 || row >= count)
+ return;
+
+ settings = ghb_array_get_nth(subtitle_list, row);
+ source = ghb_settings_get_int(settings, "SubtitleSource");
+ if (source != VOBSUB)
+ return;
+ if (!active && mustBurn(ud, settings))
+ return;
+
+ ghb_settings_set_boolean(settings, "SubtitleBurned", active);
+ gtk_list_store_set(GTK_LIST_STORE(tm), &ti, 2, active, -1);
+
+ if (active)
+ {
+ ghb_settings_set_boolean(settings, "SubtitleDefaultTrack", !active);
+ gtk_list_store_set(GTK_LIST_STORE(tm), &ti, 3, !active, -1);
+ }
+
+ // Unburn the rest
+ if (active)
+ ghb_subtitle_exclusive_burn(ud, row);
+ ghb_update_destination_extension(ud);
+ ghb_live_reset(ud);
+}
+
+G_MODULE_EXPORT void
+subtitle_default_toggled_cb(
+ GtkCellRendererToggle *cell,
+ gchar *path,
+ signal_user_data_t *ud)
+{
+ GtkTreeView *tv;
+ GtkTreeModel *tm;
+ GtkTreeIter ti;
+ GtkTreePath *tp;
+ gboolean active;
+ gint row;
+ gint *indices;
+ GValue *subtitle_list;
+ gint count;
+ GValue *settings;
+
+ g_debug("default toggled");
+ tp = gtk_tree_path_new_from_string (path);
+ tv = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "subtitle_list"));
+ g_return_if_fail(tv != NULL);
+ tm = gtk_tree_view_get_model(tv);
+ g_return_if_fail(tm != NULL);
+ gtk_tree_model_get_iter(tm, &ti, tp);
+ gtk_tree_model_get(tm, &ti, 3, &active, -1);
+ active ^= 1;
+
+ // Get the row number
+ indices = gtk_tree_path_get_indices (tp);
+ row = indices[0];
+ gtk_tree_path_free(tp);
+
+ subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
+ count = ghb_array_len(subtitle_list);
+ if (row < 0 || row >= count)
+ return;
+
+ settings = ghb_array_get_nth(subtitle_list, row);
+ if (active && mustBurn(ud, settings))
+ return;
+
+ ghb_settings_set_boolean(settings, "SubtitleDefaultTrack", active);
+ gtk_list_store_set(GTK_LIST_STORE(tm), &ti, 3, active, -1);
+
+ if (active)
+ {
+ ghb_settings_set_boolean(settings, "SubtitleBurned", !active);
+ gtk_list_store_set(GTK_LIST_STORE(tm), &ti, 2, !active, -1);
+ }
+ // allow only one default
+ ghb_subtitle_exclusive_default(ud, row);
+ ghb_live_reset(ud);
+}
+