[gtksourceview] More tests in test-completion



commit 485f777433685f5f815faba0ca8b0ab7231f7754
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Tue Jun 11 14:46:06 2013 +0200

    More tests in test-completion
    
    With a .ui file (and a gresource).

 po/POTFILES.skip                    |    1 +
 tests/Makefile.am                   |   12 +-
 tests/test-completion.c             |  339 ++++++++++++++++++--------------
 tests/test-completion.gresource.xml |    6 +
 tests/test-completion.ui            |  373 +++++++++++++++++++++++++++++++++++
 5 files changed, 583 insertions(+), 148 deletions(-)
---
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 8cc57b2..0ca8a9b 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,3 +1,4 @@
 data/styles/testdark.xml
 docs/reference/lang-tutorial.xml
+tests/test-completion.ui
 tests/test-scheme.xml
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b51c07f..aaeb7d7 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -13,6 +13,12 @@ INCLUDES =                           \
 noinst_PROGRAMS = $(TEST_PROGS) $(UNIT_TEST_PROGS)
 TESTS = $(UNIT_TEST_PROGS)
 
+BUILT_SOURCES = \
+       test-completion-resources.c
+
+test-completion-resources.c: test-completion.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) 
--generate-dependencies $(srcdir)/test-completion.gresource.xml)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source 
$(srcdir)/test-completion.gresource.xml
+
 TEST_PROGS = test-widget
 test_widget_SOURCES = test-widget.c
 test_widget_LDADD =                    \
@@ -21,7 +27,9 @@ test_widget_LDADD =                   \
        $(TESTS_LIBS)
 
 TEST_PROGS += test-completion
-test_completion_SOURCES = test-completion.c
+test_completion_SOURCES =      \
+       $(BUILT_SOURCES)        \
+       test-completion.c
 test_completion_LDADD =                \
        $(top_builddir)/gtksourceview/libgtksourceview-3.0.la \
        $(DEP_LIBS)                     \
@@ -119,6 +127,8 @@ EXTRA_DIST =                                \
        language-specs/test-empty.lang  \
        language-specs/test-full.lang   \
        styles/classic.xml              \
+       test-completion.gresource.xml   \
+       test-completion.ui              \
        $(python_tests)
 
 -include $(top_srcdir)/git.mk
diff --git a/tests/test-completion.c b/tests/test-completion.c
index f357109..97e2105 100644
--- a/tests/test-completion.c
+++ b/tests/test-completion.c
@@ -24,14 +24,13 @@
 #include <gtksourceview/gtksource.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;
 
+static GtkSourceCompletionWords *word_provider;
+static TestProvider *fixed_provider;
+static TestProvider *random_provider;
+
 struct _TestProvider
 {
        GObject parent;
@@ -73,13 +72,6 @@ test_provider_get_priority (GtkSourceCompletionProvider *provider)
        return ((TestProvider *)provider)->priority;
 }
 
-static gboolean
-test_provider_match (GtkSourceCompletionProvider *provider,
-                     GtkSourceCompletionContext  *context)
-{
-       return TRUE;
-}
-
 static GList *
 select_random_proposals (GList *all_proposals)
 {
@@ -137,11 +129,8 @@ 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;
-
        //iface->get_icon = test_provider_get_icon;
 }
 
@@ -184,44 +173,50 @@ test_provider_init (TestProvider *self)
 }
 
 static void
-test_provider_set_fixed (TestProvider *provider)
+test_provider_set_fixed (TestProvider *provider,
+                        gint          nb_proposals)
 {
+       GdkPixbuf *icon = test_provider_get_icon (GTK_SOURCE_COMPLETION_PROVIDER (provider));
        GList *proposals = NULL;
+       gint i;
 
-       GdkPixbuf *icon = test_provider_get_icon (GTK_SOURCE_COMPLETION_PROVIDER (provider));
+       g_list_free_full (provider->proposals, g_object_unref);
 
-       proposals = g_list_prepend (proposals,
-                                   gtk_source_completion_item_new ("Proposal 3",
-                                                                   "Proposal 3",
-                                                                   icon,
-                                                                   "This is the third proposal... \n"
-                                                                   "it is so cool it takes two lines to 
describe"));
+       for (i = nb_proposals - 1; i > 0; i--)
+       {
+               gchar *name = g_strdup_printf ("Proposal %d", i);
 
-       proposals = g_list_prepend (proposals,
-                                   gtk_source_completion_item_new ("Proposal 2",
-                                                                   "Proposal 2",
-                                                                   icon,
-                                                                   "This is the second proposal..."));
+               proposals = g_list_prepend (proposals,
+                                           gtk_source_completion_item_new (name,
+                                                                           name,
+                                                                           icon,
+                                                                           "The extra info of the 
proposal.\n"
+                                                                           "A second line."));
+
+               g_free (name);
+       }
 
        proposals = g_list_prepend (proposals,
-                                   gtk_source_completion_item_new ("Proposal 1",
-                                                                   "Proposal 1",
+                                   gtk_source_completion_item_new ("A very long proposal. I repeat, a very 
long proposal!",
+                                                                   "A very long proposal. I repeat, a very 
long proposal!",
                                                                    icon,
-                                                                   NULL));
+                                                                   "To test the horizontal scrollbar."));
 
        provider->proposals = proposals;
        provider->is_random = 0;
 }
 
 static void
-test_provider_set_random (TestProvider *provider)
+test_provider_set_random (TestProvider *provider,
+                         gint          nb_proposals)
 {
        GdkPixbuf *icon = test_provider_get_icon (GTK_SOURCE_COMPLETION_PROVIDER (provider));
-
        GList *proposals = NULL;
        gint i;
 
-       for (i = 0; i < 10; i++)
+       g_list_free_full (provider->proposals, g_object_unref);
+
+       for (i = 0; i < nb_proposals; i++)
        {
                gchar *name = g_strdup_printf ("Proposal %d", i);
 
@@ -239,170 +234,220 @@ test_provider_set_random (TestProvider *provider)
 }
 
 static void
-remember_toggled_cb (GtkToggleButton *button,
-                    gpointer user_data)
+add_remove_provider (GtkToggleButton             *button,
+                    GtkSourceCompletion         *completion,
+                    GtkSourceCompletionProvider *provider)
 {
-       g_object_set (comp, "remember-info-visibility",
-                     gtk_toggle_button_get_active (button),
-                     NULL);
+       g_return_if_fail (provider != NULL);
+
+       if (gtk_toggle_button_get_active (button))
+       {
+               gtk_source_completion_add_provider (completion, provider, NULL);
+       }
+       else
+       {
+               gtk_source_completion_remove_provider (completion, provider, NULL);
+       }
 }
 
 static void
-select_on_show_toggled_cb (GtkToggleButton *button,
-                          gpointer user_data)
+enable_word_provider_toggled_cb (GtkToggleButton     *button,
+                                GtkSourceCompletion *completion)
 {
-       g_object_set (comp, "select-on-show",
-                     gtk_toggle_button_get_active (button),
-                     NULL);
+       add_remove_provider (button,
+                            completion,
+                            GTK_SOURCE_COMPLETION_PROVIDER (word_provider));
 }
 
 static void
-show_headers_toggled_cb (GtkToggleButton *button,
-                        gpointer user_data)
+enable_fixed_provider_toggled_cb (GtkToggleButton     *button,
+                                 GtkSourceCompletion *completion)
 {
-       g_object_set (comp, "show-headers",
-                     gtk_toggle_button_get_active (button),
-                     NULL);
+       add_remove_provider (button,
+                            completion,
+                            GTK_SOURCE_COMPLETION_PROVIDER (fixed_provider));
 }
 
 static void
-toggle_active_property (gpointer     source,
-                        gpointer     dest,
-                        const gchar *name)
+enable_random_provider_toggled_cb (GtkToggleButton     *button,
+                                  GtkSourceCompletion *completion)
 {
-       gboolean value;
-
-       g_object_get (source, name, &value, NULL);
-       g_object_set (dest, "active", value, NULL);
+       add_remove_provider (button,
+                            completion,
+                            GTK_SOURCE_COMPLETION_PROVIDER (random_provider));
 }
 
 static void
-show_icons_toggled_cb (GtkToggleButton *button,
-                      gpointer user_data)
+nb_proposals_changed_cb (GtkSpinButton *spin_button,
+                        TestProvider  *provider)
 {
-       g_object_set (comp, "show-icons",
-                     gtk_toggle_button_get_active (button),
-                     NULL);
+       gint nb_proposals = gtk_spin_button_get_value_as_int (spin_button);
+
+       if (provider->is_random)
+       {
+               test_provider_set_random (provider, nb_proposals);
+       }
+       else
+       {
+               test_provider_set_fixed (provider, nb_proposals);
+       }
 }
 
-static GtkWidget *
-create_window (void)
+static void
+create_completion (GtkSourceView       *source_view,
+                  GtkSourceCompletion *completion)
 {
-       GtkWidget *window;
-       GtkWidget *vbox;
-       GtkWidget *hbox;
-       GtkWidget *remember;
-       GtkWidget *select_on_show;
-       GtkWidget *show_headers;
-       GtkWidget *show_icons;
-       GtkSourceCompletion *completion;
+       /* Words completion provider */
+       word_provider = gtk_source_completion_words_new (NULL, NULL);
 
-       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-       gtk_window_resize (GTK_WINDOW (window), 600, 400);
+       gtk_source_completion_words_register (word_provider,
+                                             gtk_text_view_get_buffer (GTK_TEXT_VIEW (source_view)));
 
-       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1);
-       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);
+       gtk_source_completion_add_provider (completion,
+                                           GTK_SOURCE_COMPLETION_PROVIDER (word_provider),
+                                           NULL);
 
-       view = gtk_source_view_new ();
-       GtkWidget *scroll = gtk_scrolled_window_new (NULL, NULL);
-       gtk_container_add (GTK_CONTAINER (scroll), view);
+       g_object_set (word_provider, "priority", 10, NULL);
 
-       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");
-       show_icons = gtk_check_button_new_with_label ("Show icons");
+       /* Fixed provider: the proposals don't change */
+       fixed_provider = g_object_new (test_provider_get_type (), NULL);
+       test_provider_set_fixed (fixed_provider, 3);
+       fixed_provider->priority = 5;
+       fixed_provider->name = g_strdup ("Fixed Provider");
+
+       gtk_source_completion_add_provider (completion,
+                                           GTK_SOURCE_COMPLETION_PROVIDER (fixed_provider),
+                                           NULL);
+
+       /* Random provider: the proposals vary on each populate */
+       random_provider = g_object_new (test_provider_get_type (), NULL);
+       test_provider_set_random (random_provider, 10);
+       random_provider->priority = 1;
+       random_provider->name = g_strdup ("Random Provider");
+
+       gtk_source_completion_add_provider (completion,
+                                           GTK_SOURCE_COMPLETION_PROVIDER (random_provider),
+                                           NULL);
+}
+
+static void
+create_window (void)
+{
+       GtkBuilder *builder;
+       GError *error = NULL;
+       GtkWindow *window;
+       GtkSourceView *source_view;
+       GtkSourceBuffer *source_buffer;
+       GtkSourceCompletion *completion;
+       GtkCheckButton *remember_info_visibility;
+       GtkCheckButton *select_on_show;
+       GtkCheckButton *show_headers;
+       GtkCheckButton *show_icons;
+       GtkCheckButton *enable_word_provider;
+       GtkCheckButton *enable_fixed_provider;
+       GtkCheckButton *enable_random_provider;
+       GtkSpinButton *nb_fixed_proposals;
+       GtkSpinButton *nb_random_proposals;
+
+       builder = gtk_builder_new ();
+
+       gtk_builder_add_from_resource (builder,
+                                      "/org/gnome/gtksourceview/tests/ui/test-completion.ui",
+                                      &error);
+
+       if (error != NULL)
+       {
+               g_error ("Impossible to load test-completion.ui: %s", error->message);
+       }
 
-       completion = gtk_source_view_get_completion (GTK_SOURCE_VIEW (view));
+       window = GTK_WINDOW (gtk_builder_get_object (builder, "window"));
+       source_view = GTK_SOURCE_VIEW (gtk_builder_get_object (builder, "source_view"));
+       remember_info_visibility = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, 
"checkbutton_remember_info_visibility"));
+       select_on_show = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, "checkbutton_select_on_show"));
+       show_headers = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, "checkbutton_show_headers"));
+       show_icons = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, "checkbutton_show_icons"));
+       enable_word_provider = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, 
"checkbutton_word_provider"));
+       enable_fixed_provider = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, 
"checkbutton_fixed_provider"));
+       enable_random_provider = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, 
"checkbutton_random_provider"));
+       nb_fixed_proposals = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, 
"spinbutton_nb_fixed_proposals"));
+       nb_random_proposals = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, 
"spinbutton_nb_random_proposals"));
 
-       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");
-       toggle_active_property (completion, show_icons, "show-icons");
+       /* Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=643732:
+        * "Source view is created with a GtkTextBuffer instead of GtkSourceBuffer"
+        */
+       source_buffer = gtk_source_buffer_new (NULL);
 
-       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 (hbox), show_icons, FALSE, FALSE, 0);
+       gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view),
+                                 GTK_TEXT_BUFFER (source_buffer));
 
-       gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
-       gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+       g_object_unref (source_buffer);
 
-       gtk_container_add (GTK_CONTAINER (window), vbox);
+       completion = gtk_source_view_get_completion (source_view);
 
-       g_signal_connect (window, "destroy",
+       g_signal_connect (window,
+                         "destroy",
                          G_CALLBACK (gtk_main_quit),
-                          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);
-       g_signal_connect (show_icons, "toggled",
-                         G_CALLBACK (show_icons_toggled_cb),
                          NULL);
 
-       return window;
-}
+       g_object_bind_property (completion, "remember-info-visibility",
+                               remember_info_visibility, "active",
+                               G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
 
-static void
-create_completion (void)
-{
-       GtkSourceCompletionWords *prov_words;
+       g_object_bind_property (completion, "select-on-show",
+                               select_on_show, "active",
+                               G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
 
-       comp = gtk_source_view_get_completion (GTK_SOURCE_VIEW (view));
+       g_object_bind_property (completion, "show-headers",
+                               show_headers, "active",
+                               G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
 
-       /* Words completion provider */
-       prov_words = gtk_source_completion_words_new (NULL, NULL);
+       g_object_bind_property (completion, "show-icons",
+                               show_icons, "active",
+                               G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
 
-       gtk_source_completion_words_register (prov_words,
-                                             gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+       create_completion (source_view, completion);
 
-       gtk_source_completion_add_provider (comp,
-                                           GTK_SOURCE_COMPLETION_PROVIDER (prov_words),
-                                           NULL);
+       g_signal_connect (enable_word_provider,
+                         "toggled",
+                         G_CALLBACK (enable_word_provider_toggled_cb),
+                         completion);
 
-       g_object_set (prov_words, "priority", 10, NULL);
-       g_object_unref (prov_words);
+       g_signal_connect (enable_fixed_provider,
+                         "toggled",
+                         G_CALLBACK (enable_fixed_provider_toggled_cb),
+                         completion);
 
-       /* Fixed provider: the proposals don't change */
-       TestProvider *tp = g_object_new (test_provider_get_type (), NULL);
-       test_provider_set_fixed (tp);
-       tp->priority = 5;
-       tp->name = g_strdup ("Fixed Provider");
+       g_signal_connect (enable_random_provider,
+                         "toggled",
+                         G_CALLBACK (enable_random_provider_toggled_cb),
+                         completion);
 
-       gtk_source_completion_add_provider (comp,
-                                           GTK_SOURCE_COMPLETION_PROVIDER (tp),
-                                           NULL);
-       g_object_unref (tp);
+       g_signal_connect (nb_fixed_proposals,
+                         "value-changed",
+                         G_CALLBACK (nb_proposals_changed_cb),
+                         fixed_provider);
 
-       /* Random provider: the proposals vary on each populate */
-       tp = g_object_new (test_provider_get_type (), NULL);
-       test_provider_set_random (tp);
-       tp->priority = 1;
-       tp->name = g_strdup ("Random Provider");
+       g_signal_connect (nb_random_proposals,
+                         "value-changed",
+                         G_CALLBACK (nb_proposals_changed_cb),
+                         random_provider);
 
-       gtk_source_completion_add_provider (comp,
-                                           GTK_SOURCE_COMPLETION_PROVIDER (tp),
-                                           NULL);
-       g_object_unref (tp);
+       g_object_unref (builder);
 }
 
 int
 main (int argc, char *argv[])
 {
-       GtkWidget *window;
-
        gtk_init (&argc, &argv);
 
-       window = create_window ();
-       create_completion ();
-
-       gtk_widget_show_all (window);
+       create_window ();
 
        gtk_main ();
+
+       /* Not really useful, except for debugging memory leaks. */
+       g_object_unref (word_provider);
+       g_object_unref (fixed_provider);
+       g_object_unref (random_provider);
+
        return 0;
 }
diff --git a/tests/test-completion.gresource.xml b/tests/test-completion.gresource.xml
new file mode 100644
index 0000000..2225e21
--- /dev/null
+++ b/tests/test-completion.gresource.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/gtksourceview/tests/ui">
+    <file preprocess="xml-stripblanks">test-completion.ui</file>
+  </gresource>
+</gresources>
diff --git a/tests/test-completion.ui b/tests/test-completion.ui
new file mode 100644
index 0000000..8a7f624
--- /dev/null
+++ b/tests/test-completion.ui
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <!-- interface-requires gtksourceview 3.0 -->
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100000</property>
+    <property name="value">3</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="upper">100000</property>
+    <property name="value">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkWindow" id="window">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkGrid" id="grid1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">6</property>
+        <property name="column_spacing">10</property>
+        <child>
+          <object class="GtkGrid" id="grid2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="row_spacing">5</property>
+            <child>
+              <object class="GtkGrid" id="grid3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_left">10</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_remember_info_visibility">
+                    <property name="label">Remember info visibility</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_select_on_show">
+                    <property name="label">Select first on show</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_show_headers">
+                    <property name="label">Show headers</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_show_icons">
+                    <property name="label">Show icons</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">3</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label">Providers</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">2</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label">General options</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="grid4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_left">10</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_word_provider">
+                    <property name="label">Word provider</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_fixed_provider">
+                    <property name="label">Fixed provider</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_random_provider">
+                    <property name="label">Random provider</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="xalign">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">3</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label">Fixed provider proposals</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">4</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="grid5">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_left">10</property>
+                <child>
+                  <object class="GtkGrid" id="grid6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="column_spacing">5</property>
+                    <child>
+                      <object class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label">Number of proposals:</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="spinbutton_nb_fixed_proposals">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="text" translatable="yes">3</property>
+                        <property name="adjustment">adjustment1</property>
+                        <property name="value">3</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">5</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label5">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label">Random provider proposals</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">6</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="grid7">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_left">10</property>
+                <property name="column_spacing">5</property>
+                <child>
+                  <object class="GtkLabel" id="label6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label">Max number of proposals:</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="spinbutton_nb_random_proposals">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="adjustment">adjustment2</property>
+                    <property name="value">10</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">7</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="width_request">600</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkSourceView" id="source_view">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="left_margin">2</property>
+                <property name="right_margin">2</property>
+                <property name="tab_width">4</property>
+                <property name="auto_indent">True</property>
+                <property name="indent_on_tab">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]