28 #define LAST_INDEX "last_index"
29 #define CHANGED_ID "changed_id"
47 gint column, index, id;
50 model = gtk_combo_box_get_model(GTK_COMBO_BOX(cbwe));
51 if (!gtk_tree_model_get_iter_first(model, &iter))
54 gtk_combo_box_set_active(GTK_COMBO_BOX(cbwe), -1);
58 column = gtk_combo_box_get_entry_text_column(cbwe);
61 gtk_tree_model_get(model, &iter, column, &tree_string, -1);
62 match = g_utf8_collate(text, tree_string) == 0;
68 id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cbwe), CHANGED_ID));
69 g_signal_handler_block(cbwe,
id);
70 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(cbwe), &iter);
71 g_signal_handler_unblock(cbwe,
id);
73 index = gtk_combo_box_get_active(GTK_COMBO_BOX(cbwe));
74 g_object_set_data(G_OBJECT(cbwe), LAST_INDEX, GINT_TO_POINTER(index));
77 while (gtk_tree_model_iter_next(model, &iter));
89 gnc_cbwe_changed_cb (GtkComboBox *widget,
94 index = gtk_combo_box_get_active(widget);
97 g_object_set_data(G_OBJECT(cbwe), LAST_INDEX, GINT_TO_POINTER(index));
118 gnc_cbwe_match_selected_cb (GtkEntryCompletion *completion,
119 GtkTreeModel *comp_model,
120 GtkTreeIter *comp_iter,
126 column = gtk_combo_box_get_entry_text_column(cbwe);
127 gtk_tree_model_get(comp_model, comp_iter, column, &text, -1);
147 gnc_cbwe_focus_out_cb (GtkEntry *entry,
148 GdkEventFocus *event,
155 text = gtk_entry_get_text(entry);
159 index = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cbwe), LAST_INDEX));
160 gtk_combo_box_set_active(GTK_COMBO_BOX(cbwe), index);
165 gnc_cbwe_add_completion (GtkComboBox *cbwe)
168 GtkEntryCompletion *completion;
171 entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(cbwe)));
172 completion = gtk_entry_get_completion(entry);
177 completion = gtk_entry_completion_new();
178 model = gtk_combo_box_get_model(GTK_COMBO_BOX(cbwe));
179 gtk_entry_completion_set_model(completion, model);
180 gtk_entry_completion_set_text_column(completion, 0);
181 gtk_entry_completion_set_inline_completion(completion, TRUE);
182 gtk_entry_set_completion(entry, completion);
183 g_object_unref(completion);
187 gnc_cbwe_require_list_item (GtkComboBox *cbwe)
190 GtkEntryCompletion *completion;
196 gnc_cbwe_add_completion(cbwe);
201 entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(cbwe)));
202 completion = gtk_entry_get_completion(entry);
203 index = gtk_combo_box_get_active(GTK_COMBO_BOX(cbwe));
206 model = gtk_entry_completion_get_model(completion);
207 if (gtk_tree_model_get_iter_first(model, &iter))
209 gtk_combo_box_set_active(GTK_COMBO_BOX(cbwe), 0);
213 g_object_set_data(G_OBJECT(cbwe), LAST_INDEX, GINT_TO_POINTER(index));
217 id = g_signal_connect(cbwe,
"changed",
218 G_CALLBACK(gnc_cbwe_changed_cb), cbwe);
219 g_signal_connect(completion,
"match_selected",
220 G_CALLBACK(gnc_cbwe_match_selected_cb), cbwe);
221 g_signal_connect(entry,
"focus-out-event",
222 G_CALLBACK(gnc_cbwe_focus_out_cb), cbwe);
224 g_object_set_data(G_OBJECT(cbwe), CHANGED_ID, GINT_TO_POINTER(
id));
void gnc_cbwe_set_by_string(GtkComboBox *cbwe, const gchar *text)