| 2484 | } |
| 2485 | |
| 2486 | static void |
| 2487 | audio_def_lang_list_init(signal_user_data_t *ud) |
| 2488 | { |
| 2489 | GhbValue * lang_list; |
| 2490 | GtkTreeView * tv; |
| 2491 | GtkTreeModel * avail; |
| 2492 | GtkTreeStore * selected; |
| 2493 | int ii, count; |
| 2494 | |
| 2495 | tv = GTK_TREE_VIEW(ghb_builder_widget("audio_avail_lang")); |
| 2496 | avail = gtk_tree_view_get_model(tv); |
| 2497 | tv = GTK_TREE_VIEW(ghb_builder_widget("audio_selected_lang")); |
| 2498 | selected = GTK_TREE_STORE(gtk_tree_view_get_model(tv)); |
| 2499 | |
| 2500 | // Clear selected languages. |
| 2501 | audio_def_selected_lang_list_clear(ud); |
| 2502 | |
| 2503 | lang_list = ghb_dict_get_value(ud->settings, "AudioLanguageList"); |
| 2504 | if (lang_list == NULL) |
| 2505 | { |
| 2506 | lang_list = ghb_array_new(); |
| 2507 | ghb_dict_set(ud->settings, "AudioLanguageList", lang_list); |
| 2508 | } |
| 2509 | |
| 2510 | count = ghb_array_len(lang_list); |
| 2511 | for (ii = 0; ii < count; ) |
| 2512 | { |
| 2513 | GhbValue * lang_val = ghb_array_get(lang_list, ii); |
| 2514 | int idx = ghb_lookup_lang(lang_val); |
| 2515 | GtkTreeIter iter; |
| 2516 | |
| 2517 | if (ghb_find_lang_row(avail, &iter, idx)) |
| 2518 | { |
| 2519 | gchar * lang; |
| 2520 | gint index; |
| 2521 | GtkTreeIter pos; |
| 2522 | |
| 2523 | gtk_tree_model_get(avail, &iter, 0, &lang, 1, &index, -1); |
| 2524 | gtk_tree_store_append(selected, &pos, NULL); |
| 2525 | gtk_tree_store_set(selected, &pos, 0, lang, 1, index, -1); |
| 2526 | g_free(lang); |
| 2527 | gtk_tree_store_remove(GTK_TREE_STORE(avail), &iter); |
| 2528 | ii++; |
| 2529 | } |
| 2530 | else |
| 2531 | { |
| 2532 | // Error in list. Probably duplicate languages. Remove |
| 2533 | // this item from the list. |
| 2534 | ghb_array_remove(lang_list, ii); |
| 2535 | count--; |
| 2536 | } |
| 2537 | } |
| 2538 | } |
| 2539 | |
| 2540 | void ghb_audio_defaults_to_ui(signal_user_data_t *ud) |
| 2541 | { |
no test coverage detected