[gtksourceview] Update test-completion with priorities and test providers
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtksourceview] Update test-completion with priorities and test providers
- Date: Fri, 1 Jan 2010 22:50:58 +0000 (UTC)
commit 44b50949a36cfc3c2ecf507762f6b99f788d2afe
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date: Fri Jan 1 23:05:14 2010 +0100
Update test-completion with priorities and test providers
tests/Makefile.am | 3 +-
tests/completion-simple.c | 179 -----------------------------
tests/test-completion.c | 275 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 276 insertions(+), 181 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 61cc842..f48eccd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,8 +19,7 @@ test_widget_LDADD = \
$(TESTS_LIBS)
TEST_PROGS += test-completion
-test_completion_SOURCES = \
- completion-simple.c
+test_completion_SOURCES = test-completion.c
test_completion_LDADD = \
$(top_builddir)/gtksourceview/libgtksourceview-2.0.la \
$(DEP_LIBS) \
diff --git a/tests/test-completion.c b/tests/test-completion.c
new file mode 100644
index 0000000..17efcee
--- /dev/null
+++ b/tests/test-completion.c
@@ -0,0 +1,275 @@
+/*
+ * main.c
+ * Copyright (C) perriman 2007 <chuchiperriman gmail com>
+ *
+ * main.c is free software.
+ *
+ * You may redistribute it and/or modify it under the terms of the
+ * GNU General Public License, as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * main.c is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with main.c. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtksourceview/gtksourceview.h>
+#include <gtksourceview/gtksourcecompletion.h>
+#include <gtksourceview/gtksourcecompletioninfo.h>
+#include <gtksourceview/gtksourcecompletionitem.h>
+#include <gtksourceview/gtksourcelanguagemanager.h>
+#include <gtksourceview/completion-providers/words/gtksourcecompletionwords.h>
+
+static GtkWidget *view;
+static GtkSourceCompletion *comp;
+
+static const gboolean change_keys = FALSE;
+
+typedef struct _TestProvider TestProvider;
+typedef struct _TestProviderClass TestProviderClass;
+
+struct _TestProvider
+{
+ GObject parent;
+
+ GList *proposals;
+ gint priority;
+ gchar *name;
+};
+
+struct _TestProviderClass
+{
+ GObjectClass parent_class;
+};
+
+static void test_provider_iface_init (GtkSourceCompletionProviderIface *iface);
+GType test_provider_get_type (void);
+
+G_DEFINE_TYPE_WITH_CODE (TestProvider,
+ test_provider,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_SOURCE_COMPLETION_PROVIDER,
+ test_provider_iface_init))
+
+static const gchar *
+test_provider_get_name (GtkSourceCompletionProvider *provider)
+{
+ return ((TestProvider *)provider)->name;
+}
+
+static gint
+test_provider_get_priority (GtkSourceCompletionProvider *provider)
+{
+ return ((TestProvider *)provider)->priority;
+}
+
+static gboolean
+test_provider_match (GtkSourceCompletionProvider *provider,
+ GtkSourceCompletionContext *context)
+{
+ return TRUE;
+}
+
+static void
+test_provider_populate (GtkSourceCompletionProvider *provider,
+ GtkSourceCompletionContext *context)
+{
+ gtk_source_completion_context_add_proposals (context,
+ provider,
+ ((TestProvider *)provider)->proposals,
+ TRUE);
+}
+
+static void
+test_provider_iface_init (GtkSourceCompletionProviderIface *iface)
+{
+ iface->get_name = test_provider_get_name;
+
+ iface->populate = test_provider_populate;
+ iface->match = test_provider_match;
+ iface->get_priority = test_provider_get_priority;
+}
+
+static void
+test_provider_class_init (TestProviderClass *klass)
+{
+}
+
+static void
+test_provider_init (TestProvider *self)
+{
+ GList *proposals = NULL;
+
+ proposals = g_list_prepend (proposals,
+ gtk_source_completion_item_new ("Proposal 3", "Proposal 3", NULL, NULL));
+
+ proposals = g_list_prepend (proposals,
+ gtk_source_completion_item_new ("Proposal 2", "Proposal 2", NULL, NULL));
+
+ proposals = g_list_prepend (proposals,
+ gtk_source_completion_item_new ("Proposal 1", "Proposal 1", NULL, NULL));
+
+ self->proposals = proposals;
+}
+
+static void
+destroy_cb (GtkObject *object,
+ gpointer user_data)
+{
+ gtk_main_quit ();
+}
+
+static void
+remember_toggled_cb (GtkToggleButton *button,
+ gpointer user_data)
+{
+ g_object_set (comp, "remember-info-visibility",
+ gtk_toggle_button_get_active (button),
+ NULL);
+}
+
+static void
+select_on_show_toggled_cb (GtkToggleButton *button,
+ gpointer user_data)
+{
+ g_object_set (comp, "select-on-show",
+ gtk_toggle_button_get_active (button),
+ NULL);
+}
+
+static void
+show_headers_toggled_cb (GtkToggleButton *button,
+ gpointer user_data)
+{
+ g_object_set (comp, "show-headers",
+ gtk_toggle_button_get_active (button),
+ NULL);
+}
+
+static void
+toggle_active_property (gpointer source,
+ gpointer dest,
+ const gchar *name)
+{
+ gboolean value;
+
+ g_object_get (source, name, &value, NULL);
+ g_object_set (dest, "active", value, NULL);
+}
+
+static GtkWidget*
+create_window (void)
+{
+ GtkWidget *window;
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *remember;
+ GtkWidget *select_on_show;
+ GtkWidget *show_headers;
+ GtkSourceCompletion *completion;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_resize (GTK_WINDOW (window), 600, 400);
+
+ vbox = gtk_vbox_new (FALSE, 1);
+ hbox = gtk_hbox_new (FALSE, 1);
+
+ view = gtk_source_view_new ();
+ GtkWidget *scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scroll), view);
+
+ remember = gtk_check_button_new_with_label ("Remember info visibility");
+ select_on_show = gtk_check_button_new_with_label ("Select first on show");
+ show_headers = gtk_check_button_new_with_label ("Show headers");
+
+ completion = gtk_source_view_get_completion (GTK_SOURCE_VIEW (view));
+
+ toggle_active_property (completion, remember, "remember-info-visibility");
+ toggle_active_property (completion, select_on_show, "select-on-show");
+ toggle_active_property (completion, show_headers, "show-headers");
+
+ gtk_box_pack_start (GTK_BOX (hbox), remember, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), select_on_show, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), show_headers, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (destroy_cb),
+ NULL);
+ g_signal_connect (remember, "toggled",
+ G_CALLBACK (remember_toggled_cb),
+ NULL);
+ g_signal_connect (select_on_show, "toggled",
+ G_CALLBACK (select_on_show_toggled_cb),
+ NULL);
+ g_signal_connect (show_headers, "toggled",
+ G_CALLBACK (show_headers_toggled_cb),
+ NULL);
+
+ return window;
+}
+
+static void
+create_completion(void)
+{
+ GtkSourceCompletionWords *prov_words;
+
+ comp = gtk_source_view_get_completion (GTK_SOURCE_VIEW (view));
+ prov_words = gtk_source_completion_words_new (NULL, NULL);
+
+ gtk_source_completion_words_register (prov_words,
+ gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ gtk_source_completion_add_provider (comp,
+ GTK_SOURCE_COMPLETION_PROVIDER (prov_words),
+ NULL);
+
+ TestProvider *tp = g_object_new (test_provider_get_type (), NULL);
+ tp->priority = 1;
+ tp->name = "Test Provider 1";
+
+ gtk_source_completion_add_provider (comp,
+ GTK_SOURCE_COMPLETION_PROVIDER (tp),
+ NULL);
+
+ tp = g_object_new (test_provider_get_type (), NULL);
+ tp->priority = 5;
+ tp->name = "Test Provider 5";
+
+ gtk_source_completion_add_provider (comp,
+ GTK_SOURCE_COMPLETION_PROVIDER (tp),
+ NULL);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *window;
+
+ gtk_set_locale ();
+ gtk_init (&argc, &argv);
+
+ window = create_window ();
+ create_completion ();
+
+ gtk_widget_show_all (window);
+
+ gtk_main ();
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]