| 1579 | } |
| 1580 | |
| 1581 | void |
| 1582 | subtitle_remove_lang_iter(GtkTreeModel *tm, GtkTreeIter *iter, |
| 1583 | signal_user_data_t *ud) |
| 1584 | { |
| 1585 | GtkTreeView * avail; |
| 1586 | GtkTreeStore * avail_ts; |
| 1587 | GtkTreeIter pos, sibling; |
| 1588 | char * lang; |
| 1589 | int index; |
| 1590 | GtkTreePath * tp = gtk_tree_model_get_path(tm, iter); |
| 1591 | int * ind = gtk_tree_path_get_indices(tp); |
| 1592 | int row = ind[0]; |
| 1593 | GhbValue * slang_list; |
| 1594 | GtkTreeSelection * tsel; |
| 1595 | |
| 1596 | gtk_tree_path_free(tp); |
| 1597 | avail = GTK_TREE_VIEW(ghb_builder_widget("subtitle_avail_lang")); |
| 1598 | avail_ts = GTK_TREE_STORE(gtk_tree_view_get_model(avail)); |
| 1599 | tsel = gtk_tree_view_get_selection(avail); |
| 1600 | |
| 1601 | // Add to UI available language list box |
| 1602 | gtk_tree_model_get(tm, iter, 0, &lang, 1, &index, -1); |
| 1603 | if (ghb_find_lang_row(GTK_TREE_MODEL(avail_ts), &sibling, index)) |
| 1604 | { |
| 1605 | gtk_tree_store_insert_before(avail_ts, &pos, NULL, &sibling); |
| 1606 | } |
| 1607 | else |
| 1608 | { |
| 1609 | gtk_tree_store_append(avail_ts, &pos, NULL); |
| 1610 | } |
| 1611 | gtk_tree_store_set(avail_ts, &pos, 0, lang, 1, index, -1); |
| 1612 | g_free(lang); |
| 1613 | |
| 1614 | // Select the item added to the available list and make it |
| 1615 | // visible in the scrolled window |
| 1616 | tp = gtk_tree_model_get_path(GTK_TREE_MODEL(avail_ts), &pos); |
| 1617 | gtk_tree_selection_select_iter(tsel, &pos); |
| 1618 | gtk_tree_view_scroll_to_cell(avail, tp, NULL, FALSE, 0, 0); |
| 1619 | gtk_tree_path_free(tp); |
| 1620 | |
| 1621 | // Remove from UI selected language list box |
| 1622 | gtk_tree_store_remove(GTK_TREE_STORE(tm), iter); |
| 1623 | |
| 1624 | // Remove from preset language list |
| 1625 | slang_list = ghb_dict_get_value(ud->settings, "SubtitleLanguageList"); |
| 1626 | ghb_array_remove(slang_list, row); |
| 1627 | ghb_clear_presets_selection(ud); |
| 1628 | |
| 1629 | if (row == 0) |
| 1630 | { |
| 1631 | if (ghb_array_len(slang_list) > 0) |
| 1632 | { |
| 1633 | const iso639_lang_t *lang_id; |
| 1634 | GhbValue *entry = ghb_array_get(slang_list, 0); |
| 1635 | lang_id = ghb_iso639_lookup_by_int(ghb_lookup_lang(entry)); |
| 1636 | subtitle_update_pref_lang(ud, lang_id); |
| 1637 | } |
| 1638 | else |
no test coverage detected