| 1710 | } |
| 1711 | |
| 1712 | static void subtitle_def_lang_list_init(signal_user_data_t *ud) |
| 1713 | { |
| 1714 | GhbValue * lang_list; |
| 1715 | GtkTreeView * tv; |
| 1716 | GtkTreeModel * avail; |
| 1717 | GtkTreeStore * selected; |
| 1718 | int ii, count; |
| 1719 | |
| 1720 | tv = GTK_TREE_VIEW(ghb_builder_widget("subtitle_avail_lang")); |
| 1721 | avail = gtk_tree_view_get_model(tv); |
| 1722 | tv = GTK_TREE_VIEW(ghb_builder_widget("subtitle_selected_lang")); |
| 1723 | selected = GTK_TREE_STORE(gtk_tree_view_get_model(tv)); |
| 1724 | |
| 1725 | // Clear selected languages. |
| 1726 | subtitle_def_selected_lang_list_clear(ud); |
| 1727 | |
| 1728 | lang_list = ghb_dict_get_value(ud->settings, "SubtitleLanguageList"); |
| 1729 | if (lang_list == NULL) |
| 1730 | { |
| 1731 | lang_list = ghb_array_new(); |
| 1732 | ghb_dict_set(ud->settings, "SubtitleLanguageList", lang_list); |
| 1733 | } |
| 1734 | |
| 1735 | count = ghb_array_len(lang_list); |
| 1736 | for (ii = 0; ii < count; ) |
| 1737 | { |
| 1738 | GhbValue * lang_val = ghb_array_get(lang_list, ii); |
| 1739 | int idx = ghb_lookup_lang(lang_val); |
| 1740 | GtkTreeIter iter; |
| 1741 | |
| 1742 | if (ii == 0) |
| 1743 | { |
| 1744 | const iso639_lang_t *lang; |
| 1745 | lang = ghb_iso639_lookup_by_int(idx); |
| 1746 | subtitle_update_pref_lang(ud, lang); |
| 1747 | } |
| 1748 | if (ghb_find_lang_row(avail, &iter, idx)) |
| 1749 | { |
| 1750 | gchar * lang; |
| 1751 | gint index; |
| 1752 | GtkTreeIter pos; |
| 1753 | |
| 1754 | gtk_tree_model_get(avail, &iter, 0, &lang, 1, &index, -1); |
| 1755 | gtk_tree_store_append(selected, &pos, NULL); |
| 1756 | gtk_tree_store_set(selected, &pos, 0, lang, 1, index, -1); |
| 1757 | g_free(lang); |
| 1758 | gtk_tree_store_remove(GTK_TREE_STORE(avail), &iter); |
| 1759 | ii++; |
| 1760 | } |
| 1761 | else |
| 1762 | { |
| 1763 | // Error in list. Probably duplicate languages. Remove |
| 1764 | // this item from the list. |
| 1765 | ghb_array_remove(lang_list, ii); |
| 1766 | count--; |
| 1767 | } |
| 1768 | } |
| 1769 | if (count == 0) |
no test coverage detected