static void pocketvox_setup_get_modules_grid(PocketvoxSetup *setup) { setup->priv = G_TYPE_INSTANCE_GET_PRIVATE (setup, TYPE_POCKETVOX_SETUP, PocketvoxSetupPrivate); PocketvoxSetupPrivate *priv = setup->priv; GVariant *modules; GVariantIter *iter; gchar *key, *value; gboolean isapps; priv->listBox = gtk_list_box_new(); GtkWidget *ph_widget = gtk_label_new("Add your modules"); gtk_label_set_markup(GTK_LABEL(ph_widget), _("<b><b><big> ADD YOUR MODULES </big></b></b>")); gtk_widget_show(ph_widget); gtk_list_box_set_placeholder(GTK_LIST_BOX(priv->listBox),ph_widget); //only need to connect signals modules = g_settings_get_value(priv->settings, "list-apps"); //get the content of the GVariant g_variant_get(modules, "a(ssb)", &iter); //loop other all apps while(g_variant_iter_loop(iter, "(ssb)", &key, &value, &isapps)) { pocketvox_setup_add_module(setup, key, value, isapps); } g_variant_iter_free(iter); }
static void show_filter_widgets (GtkWidget *chooser) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); LocaleInfo *info; GHashTableIter iter; remove_all_children (GTK_CONTAINER (priv->list)); g_hash_table_iter_init (&iter, priv->locales); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &info)) add_input_source_widgets_for_locale (chooser, info); gtk_widget_show_all (priv->list); gtk_adjustment_set_value (priv->adjustment, gtk_adjustment_get_lower (priv->adjustment)); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list), update_header_func_filter, NULL, NULL); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->list), GTK_SELECTION_SINGLE); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->list), priv->no_results); if (gtk_widget_is_visible (priv->filter_entry)) gtk_widget_grab_focus (priv->filter_entry); }
static void add_languages (CcLanguageChooser *chooser, char **locale_ids, GHashTable *initial) { CcLanguageChooserPrivate *priv = chooser->priv; while (*locale_ids) { const gchar *locale_id; gboolean is_initial; GtkWidget *widget; locale_id = *locale_ids; locale_ids ++; if (!cc_common_language_has_font (locale_id)) continue; is_initial = (g_hash_table_lookup (initial, locale_id) != NULL); widget = language_widget_new (locale_id, !is_initial); gtk_container_add (GTK_CONTAINER (priv->language_list), widget); } gtk_container_add (GTK_CONTAINER (priv->language_list), priv->more_item); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->language_list), priv->no_results); gtk_widget_show_all (priv->language_list); }
static void filter_changed (GtkDialog *chooser) { CcLanguageChooserPrivate *priv = GET_PRIVATE (chooser); gchar *filter_contents = NULL; g_clear_pointer (&priv->filter_words, g_strfreev); filter_contents = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (priv->filter_entry))); if (!filter_contents) { gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->language_list)); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->language_list), NULL); return; } priv->filter_words = g_strsplit_set (g_strstrip (filter_contents), " ", 0); g_free (filter_contents); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->language_list), priv->no_results); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->language_list)); }
static gboolean do_filter (GtkWidget *chooser) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); gchar **previous_words; gchar *filter_contents = NULL; priv->filter_timeout_id = 0; previous_words = priv->filter_words; filter_contents = cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (priv->filter_entry))); if (filter_contents) { priv->filter_words = g_strsplit_set (g_strstrip (filter_contents), " ", 0); g_free (filter_contents); } if (!priv->filter_words || !priv->filter_words[0]) { g_clear_pointer (&priv->filter_words, g_strfreev); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list)); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->list), NULL); } else { if (!previous_words || strvs_differ (priv->filter_words, previous_words)) { gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list)); gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->list), priv->no_results); } } g_strfreev (previous_words); return G_SOURCE_REMOVE; }
static void ide_editor_spell_widget_constructed (GObject *object) { IdeEditorSpellWidget *self = (IdeEditorSpellWidget *)object; GspellTextBuffer *spell_buffer; g_assert (IDE_IS_SOURCE_VIEW (self->view)); self->buffer = IDE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->view))); ide_buffer_set_spell_checking (self->buffer, TRUE); self->spellchecking_status = TRUE; spell_buffer = gspell_text_buffer_get_from_gtk_text_buffer (GTK_TEXT_BUFFER (self->buffer)); self->checker = gspell_text_buffer_get_spell_checker (spell_buffer); ide_editor_spell_dict_set_checker (self->dict, self->checker); self->spellchecker_language = gspell_checker_get_language (self->checker); gspell_language_chooser_set_language (GSPELL_LANGUAGE_CHOOSER (self->language_chooser_button), self->spellchecker_language); g_signal_connect_swapped (self->navigator, "notify::words-counted", G_CALLBACK (ide_editor_spell_widget__words_counted_cb), self); g_signal_connect_swapped (self->word_entry, "changed", G_CALLBACK (ide_editor_spell_widget__word_entry_changed_cb), self); g_signal_connect_swapped (self->word_entry, "populate-popup", G_CALLBACK (ide_editor_spell_widget__populate_popup_cb), self); g_signal_connect_swapped (self->ignore_button, "clicked", G_CALLBACK (ide_editor_spell_widget__ignore_button_clicked_cb), self); g_signal_connect_swapped (self->ignore_all_button, "clicked", G_CALLBACK (ide_editor_spell_widget__ignore_all_button_clicked_cb), self); g_signal_connect_swapped (self->change_button, "clicked", G_CALLBACK (ide_editor_spell_widget__change_button_clicked_cb), self); g_signal_connect_swapped (self->change_all_button, "clicked", G_CALLBACK (ide_editor_spell_widget__change_all_button_clicked_cb), self); g_signal_connect_swapped (self->suggestions_box, "row-selected", G_CALLBACK (ide_editor_spell_widget__row_selected_cb), self); g_signal_connect_swapped (self->suggestions_box, "row-activated", G_CALLBACK (ide_editor_spell_widget__row_activated_cb), self); g_signal_connect_swapped (self, "key-press-event", G_CALLBACK (ide_editor_spell_widget__key_press_event_cb), self); g_signal_connect_swapped (self->highlight_switch, "state-set", G_CALLBACK (ide_editor_spell_widget__highlight_switch_toggled_cb), self); g_signal_connect_object (self->language_chooser_button, "notify::language", G_CALLBACK (ide_editor_spell_widget__language_notify_cb), self, G_CONNECT_SWAPPED); g_signal_connect_swapped (self->dict_add_button, "clicked", G_CALLBACK (ide_editor_spell_widget__add_button_clicked_cb), self); g_signal_connect_swapped (self->dict_word_entry, "changed", G_CALLBACK (ide_editor_spell_widget__dict_word_entry_changed_cb), self); self->placeholder = gtk_label_new (NULL); gtk_widget_set_visible (self->placeholder, TRUE); gtk_list_box_set_placeholder (self->suggestions_box, self->placeholder); /* Due to the change of focus between the view and the spellchecker widget, * we need to start checking only when the widget is mapped, * so the view can keep the selection on the first word. */ g_signal_connect_object (self, "map", G_CALLBACK (ide_editor_spell__widget_mapped_cb), NULL, G_CONNECT_AFTER); g_signal_connect_swapped (self->dict, "loaded", G_CALLBACK (ide_editor_spell_widget__dict__loaded_cb), self); g_signal_connect_object (self->word_label, "notify::label", G_CALLBACK (ide_editor_spell_widget__word_label_notify_cb), self, G_CONNECT_SWAPPED); }