void glade_gtk_listbox_get_child_property (GladeWidgetAdaptor *adaptor, GObject *container, GObject *child, const gchar *property_name, GValue *value) { g_return_if_fail (GTK_IS_LIST_BOX (container)); g_return_if_fail (GTK_IS_LIST_BOX_ROW (child)); if (strcmp (property_name, "position") == 0) { gint position = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (child)); g_value_set_int (value, position); } else { /* Chain Up */ GWA_GET_CLASS (GTK_TYPE_CONTAINER)->child_get_property (adaptor, container, child, property_name, value); } }
static GtkListBoxRow * get_next_row_to_focus (GtkListBox *listbox, GtkListBoxRow *row) { g_autoptr(GList) children = NULL; gint index; gint new_index; gint len; g_assert (GTK_IS_LIST_BOX (listbox)); g_assert (GTK_IS_LIST_BOX_ROW (row)); children = gtk_container_get_children (GTK_CONTAINER (listbox)); if (0 == (len = g_list_length (children))) return NULL; index = gtk_list_box_row_get_index (row); if (index < len - 1) new_index = index + 1; else if (index == len - 1 && len > 1) new_index = index - 1; else return NULL; return gtk_list_box_get_row_at_index (listbox, new_index); }
static void glade_gtk_listbox_child_insert_action (GladeWidgetAdaptor *adaptor, GObject *container, GObject *object, const gchar *group_format, gboolean after) { GladeWidget *parent; GladeWidget *gchild; gint position; parent = glade_widget_get_from_gobject (container); glade_command_push_group (group_format, glade_widget_get_name (parent)); position = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (object)); if (after) position++; gchild = glade_command_create (glade_widget_adaptor_get_by_type (GTK_TYPE_LIST_BOX_ROW), parent, NULL, glade_widget_get_project (parent)); glade_widget_pack_property_set (gchild, "position", position); glade_command_pop_group (); }
static void row_activated (GtkListBox *listbox, GtkListBoxRow *row, GtkCssProvider *provider) { const gchar *blend_mode; blend_mode = blend_modes[gtk_list_box_row_get_index (row)].id; update_css_for_blend_mode (provider, blend_mode); }
G_MODULE_EXPORT void subtitle_remove_lang_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) { GtkListBox *avail, *selected; GtkListBoxRow *row; GtkWidget *label; avail = GTK_LIST_BOX(GHB_WIDGET(ud->builder, "subtitle_avail_lang")); selected = GTK_LIST_BOX(GHB_WIDGET(ud->builder, "subtitle_selected_lang")); row = gtk_list_box_get_selected_row(selected); if (row != NULL) { gint index; GValue *lang_list; index = gtk_list_box_row_get_index(row); // Remove from UI selected language list box label = gtk_bin_get_child(GTK_BIN(row)); g_object_ref(G_OBJECT(label)); int idx = (intptr_t)g_object_get_data(G_OBJECT(label), "lang_idx"); gtk_widget_destroy(GTK_WIDGET(row)); gtk_widget_show(label); // Add to UI available language list box gtk_list_box_insert(avail, label, idx); // Remove from preset language list lang_list = ghb_settings_get_value(ud->settings, "SubtitleLanguageList"); GValue *glang = ghb_array_get_nth(lang_list, index); ghb_array_remove(lang_list, index); ghb_value_free(glang); ghb_clear_presets_selection(ud); if (ghb_array_len(lang_list) > 0) { const iso639_lang_t *lang; GValue *entry = ghb_array_get_nth(lang_list, 0); lang = ghb_iso639_lookup_by_int(ghb_lookup_audio_lang(entry)); subtitle_update_pref_lang(ud, lang); } else { subtitle_update_pref_lang(ud, NULL); } } }