G_MODULE_EXPORT void gw_addvocabularywindow_add_cb (GtkWidget *widget, gpointer data) { GwAddVocabularyWindow *window; GwAddVocabularyWindowPrivate *priv; GwAddVocabularyWindowClass *klass; GtkListStore *wordstore; const gchar *kanji, *furigana, *definitions; window = GW_ADDVOCABULARYWINDOW (gtk_widget_get_ancestor (GTK_WIDGET (data), GW_TYPE_ADDVOCABULARYWINDOW)); g_return_if_fail (window != NULL); priv = window->priv; klass = GW_ADDVOCABULARYWINDOW_CLASS (G_OBJECT_GET_CLASS (window)); kanji = gw_addvocabularywindow_get_kanji (window); furigana = gw_addvocabularywindow_get_furigana (window); definitions = gw_addvocabularywindow_get_definitions (window); wordstore = gw_addvocabularywindow_get_wordstore (window); priv->wordstore = GW_VOCABULARYWORDSTORE (wordstore); gw_vocabularywordstore_load (priv->wordstore, NULL); gw_vocabularywordstore_new_word (priv->wordstore, &(priv->iter), NULL, kanji, furigana, definitions); if (klass->last_selected_list_name != NULL) g_free (klass->last_selected_list_name); klass->last_selected_list_name = g_strdup (gw_addvocabularywindow_get_list (window)); priv->valid = TRUE; g_signal_emit (G_OBJECT (window), klass->signalid[GW_ADDVOCABULARYWINDOW_CLASS_SIGNALID_WORD_ADDED], 0); gtk_widget_destroy (GTK_WIDGET (window)); }
static void gw_addvocabularywindow_init_combobox (GwAddVocabularyWindow *window) { GwAddVocabularyWindowPrivate *priv; GwAddVocabularyWindowClass *klass; GwApplication *application; GtkListStore *store; GtkTreeModel *model; priv = window->priv; klass = GW_ADDVOCABULARYWINDOW_CLASS (G_OBJECT_GET_CLASS (window)); application = gw_window_get_application (GW_WINDOW (window)); store = gw_application_get_vocabularyliststore (application); model = GTK_TREE_MODEL (store); //Initialize the combobox gtk_combo_box_set_model (priv->vocabulary_list_combobox, model); //Remove the default entry since it doesn't seem to be editable for some reason priv->list_entry = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (priv->vocabulary_list_combobox))); gtk_widget_destroy (GTK_WIDGET (priv->list_entry)); //Add our entry priv->list_entry = GTK_ENTRY (gtk_entry_new ()); gtk_entry_set_activates_default (priv->list_entry, TRUE); g_signal_connect (G_OBJECT (priv->list_entry), "changed", G_CALLBACK (gw_addvocabularywindow_list_changed_cb), window); gtk_widget_show (GTK_WIDGET (priv->list_entry)); gtk_combo_box_set_entry_text_column (priv->vocabulary_list_combobox, GW_VOCABULARYLISTSTORE_COLUMN_NAME); gtk_container_add (GTK_CONTAINER (priv->vocabulary_list_combobox), GTK_WIDGET (priv->list_entry)); //Set the correct initial selection if (klass->last_selected_list_name != NULL) { gtk_entry_set_text (priv->list_entry, klass->last_selected_list_name); } else { gtk_combo_box_set_active (priv->vocabulary_list_combobox, 0); } gtk_editable_select_region (GTK_EDITABLE (priv->list_entry), 0, 0); }