diff options
author | Matthias Clasen <maclas@gmx.de> | 2004-03-08 00:08:11 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-03-08 00:08:11 +0000 |
commit | bc830c88275e7b72f0a929938a10b1750700016a (patch) | |
tree | 2786a46232553b752215921ddf78c8ae0141d4ee /tests | |
parent | afec1da0616fbf3bfbaeab19da92c6c050d540d2 (diff) | |
download | gtk+-bc830c88275e7b72f0a929938a10b1750700016a.tar.gz |
Test dynamic addition/removal.
Mon Mar 8 01:06:17 2004 Matthias Clasen <maclas@gmx.de>
* tests/testentrycompletion.c: Test dynamic addition/removal.
Sun Mar 7 22:38:49 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkframe.c (gtk_frame_paint): Use ythickness, not
xthickness in the calculation of vertical dimensions.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testentrycompletion.c | 105 |
1 files changed, 98 insertions, 7 deletions
diff --git a/tests/testentrycompletion.c b/tests/testentrycompletion.c index fdee669ea4..7fcfb510ae 100644 --- a/tests/testentrycompletion.c +++ b/tests/testentrycompletion.c @@ -1,5 +1,7 @@ #include <config.h> +#include <stdlib.h> +#include <string.h> #include <gtk/gtk.h> /* Don't copy this bad example; inline RGB data is always a better @@ -130,16 +132,32 @@ create_completion_model (void) return GTK_TREE_MODEL (store); } -#if 0 static gboolean match_func (GtkEntryCompletion *completion, const gchar *key, GtkTreeIter *iter, gpointer user_data) { - return FALSE; + gchar *item = NULL; + GtkTreeModel *model; + + gboolean ret = FALSE; + + model = gtk_entry_completion_get_model (completion); + + gtk_tree_model_get (model, iter, 1, &item, -1); + + if (item != NULL) + { + g_print ("compare %s %s\n", key, item); + if (strncmp (key, item, strlen (key)) == 0) + ret = TRUE; + + g_free (item); + } + + return ret; } -#endif static void activated_cb (GtkEntryCompletion *completion, @@ -149,6 +167,60 @@ activated_cb (GtkEntryCompletion *completion, g_print ("action activated: %d\n", index); } +static gint timer_count = 0; + +static gchar *dynamic_completions[] = { + "GNOME", + "gnominious", + "Gnomonic projection", + "total", + "totally", + "toto", + "tottery", + "totterer", + "Totten trust", + "totipotent", + "totipotency", + "totemism", + "totem pole", + "Totara", + "totalizer", + "totalizator", + "totalitarianism", + "total parenteral nutrition", + "total hysterectomy", + "total eclipse", + "Totipresence", + "Totipalmi", + "zombie" +}; + +static gint +animation_timer (GtkEntryCompletion *completion) +{ + GtkTreeIter iter; + gint n_completions = G_N_ELEMENTS (dynamic_completions); + gint n; + + GtkListStore *store = GTK_LIST_STORE (gtk_entry_completion_get_model (completion)); + + if ((timer_count / n_completions) % 2 == 0) + { + n = timer_count % n_completions; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, dynamic_completions[n], -1); + + } + else + { + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); + gtk_list_store_remove (store, &iter); + } + + timer_count++; + return TRUE; +} + int main (int argc, char *argv[]) { @@ -215,22 +287,41 @@ main (int argc, char *argv[]) gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), cell, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (completion), cell, "pixbuf", 0, NULL); - /* Use model column 1 as the text column */ - gtk_entry_completion_set_text_column (completion, 1); -#if 0 cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion), cell, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (completion), cell, "text", 1, NULL); gtk_entry_completion_set_match_func (completion, match_func, NULL, NULL); -#endif gtk_entry_completion_insert_action_text (completion, 100, "action!"); gtk_entry_completion_insert_action_text (completion, 101, "'nother action!"); g_signal_connect (completion, "action_activated", G_CALLBACK (activated_cb), 0); + /* Create our third entry */ + entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); + + /* Create the completion object */ + completion = gtk_entry_completion_new (); + + /* Assign the completion to the entry */ + gtk_entry_set_completion (GTK_ENTRY (entry), completion); + g_object_unref (completion); + + /* Create a tree model and use it as the completion model */ + completion_model = tgtk_list_store_new (1, G_TYPE_STRING); + + gtk_entry_completion_set_model (completion, completion_model); + g_object_unref (completion_model); + + /* Use model column 0 as the text column */ + gtk_entry_completion_set_text_column (completion, 0); + + /* Fill the completion dynamically */ + g_timeout_add (1000, (GSourceFunc) animation_timer, completion); + gtk_widget_show_all (window); gtk_main (); |