[glade] Added Registration & User Survey Dialog in Help menu



commit c1a904e7de4482f33636567fafca709343b8901b
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date:   Mon Feb 17 21:04:38 2014 -0300

    Added Registration & User Survey Dialog in Help menu

 src/Makefile.am                   |   11 +-
 src/glade-http.c                  |  421 ++++++
 src/glade-http.h                  |   89 ++
 src/glade-logo.h                  |  464 ++++++
 src/glade-registration.c          |  606 ++++++++
 src/glade-registration.css        |   86 ++
 src/glade-registration.glade      | 2982 +++++++++++++++++++++++++++++++++++++
 src/glade-registration.h          |   60 +
 src/glade-resources.gresource.xml |    2 +
 src/glade-window.c                |   23 +-
 src/glade.glade                   |   18 +-
 11 files changed, 4751 insertions(+), 11 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 89e597e..e8ca978 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,19 +24,20 @@ BUILT_SOURCES = glade-resources.c glade-resources.h
 
 glade_SOURCES = \
        glade-window.c \
-       glade-window.h \
        glade-close-button.c \
-       glade-close-button.h \
        glade-resources.c \
        glade-preferences.c \
-       glade-preferences.h \
+       glade-http.c \
+       glade-registration.c \
        main.c
 
 noinst_HEADERS = \
        glade-window.h \
        glade-close-button.h \
        glade-resources.h \
-       glade-preferences.h
+       glade-preferences.h \
+       glade-logo.h \
+       glade-registration.h
 
 # Generate resources
 glade-resources.h: glade-resources.gresource.xml $(UI_FILES)
@@ -59,6 +60,6 @@ endif
 glade-win32-res.o: glade.rc
        $(WINDRES) $< $@
 
-UI_FILES = glade.glade glade-preferences.glade
+UI_FILES = glade.glade glade-preferences.glade glade-registration.glade glade-registration.css
 
 EXTRA_DIST = glade.rc.in glade-resources.gresource.xml $(UI_FILES)
diff --git a/src/glade-http.c b/src/glade-http.c
new file mode 100644
index 0000000..0dd1da1
--- /dev/null
+++ b/src/glade-http.c
@@ -0,0 +1,421 @@
+/*
+ * Copyright (C) 2014 Juan Pablo Ugarte.
+   *
+ * This program is free software; you can 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.
+   *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Juan Pablo Ugarte <juanpablougarte gmail com>
+ */
+
+#include <glade-http.h>
+#include <string.h>
+#include <stdio.h>
+
+#define HTTP_BUFFER_SIZE 16
+
+struct _GladeHTTPPrivate
+{
+  gchar *host;
+  gint port;
+  gboolean tls;
+
+  GladeHTTPStatus status;
+  GSocketConnection *connection;
+  GCancellable *cancellable;
+  
+  GString *data;
+  GString *response;
+
+  gchar response_buffer[HTTP_BUFFER_SIZE];
+};
+
+enum
+{
+  PROP_0,
+
+  PROP_HOST,
+  PROP_PORT,
+  PROP_TLS,
+  N_PROPERTIES
+};
+
+enum
+{
+  REQUEST_DONE,
+  STATUS,
+
+  LAST_SIGNAL
+};
+
+static GParamSpec *properties[N_PROPERTIES];
+static guint http_signals[LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE (GladeHTTP, glade_http, G_TYPE_OBJECT);
+
+static void
+glade_http_emit_request_done (GladeHTTP *http, gchar *response)
+{
+  gint http_major, http_minor, code, i;
+  gchar **headers, **values, *blank, *data, tmp;
+
+  if ((blank = g_strstr_len (response, -1, "\r\n\r\n")))
+    data = blank + 4;
+  else if ((blank = g_strstr_len (response, -1, "\n\n")))
+    data = blank + 2;
+  else
+    return;
+
+  tmp = *blank;
+  *blank = '\0';
+  headers = g_strsplit (response, "\n", 0);
+  *blank = tmp;
+
+  values = g_new0 (gchar *, g_strv_length (headers));
+  
+  for (i = 0; headers[i]; i++)
+    {
+      g_strchug (headers[i]);
+
+      if (i)
+        {
+          gchar *colon = g_strstr_len (headers[i], -1, ":");
+
+          if (colon)
+            {
+              *colon++ = '\0';
+              values[i-1] = g_strchug (colon);
+            }
+          else
+            values[i-1] = "";
+        }
+      else
+        {
+          if (sscanf (response, "HTTP/%d.%d %d", &http_major, &http_minor, &code) != 3)
+            http_major = http_minor = code = 0;
+        }
+    }
+  
+  /* emit request-done */
+  g_signal_emit (http, http_signals[REQUEST_DONE], 0, code,
+                 (headers[0]) ? &headers[1] : NULL, values, 
+                 data);
+
+  g_strfreev (headers);
+  g_free (values);
+}
+
+static void
+glade_http_emit_status (GladeHTTP *http, GladeHTTPStatus status, GError *error)
+{
+  GladeHTTPPrivate *priv = http->priv;
+
+  if (priv->status == status)
+    return;
+
+  priv->status = status;
+
+  g_signal_emit (http, http_signals[STATUS], 0, status, error);
+}
+
+static void
+on_read_ready (GObject *source, GAsyncResult *res, gpointer data)
+{
+  GladeHTTPPrivate *priv = GLADE_HTTP (data)->priv;
+  gssize bytes_read;
+
+  glade_http_emit_status (data, GLADE_HTTP_RECEIVING, NULL);
+
+  bytes_read = g_input_stream_read_finish (G_INPUT_STREAM (source), res, NULL);
+  
+  if (bytes_read > 0)
+    {
+      g_string_append_len (priv->response, priv->response_buffer, bytes_read);
+
+      /* NOTE: We do not need to parse content-lenght because we do not support
+       * multiples HTTP requests in the same connection.
+       */
+      if (priv->cancellable)
+        g_cancellable_reset (priv->cancellable);
+      
+      g_input_stream_read_async (g_io_stream_get_input_stream (G_IO_STREAM (priv->connection)),
+                                 priv->response_buffer, HTTP_BUFFER_SIZE,
+                                 G_PRIORITY_DEFAULT, priv->cancellable,
+                                 on_read_ready, data);
+      return;
+    }
+  else if (bytes_read < 0)
+    {
+      /* Read error */
+      g_message ("g_input_stream_read_finish error");
+      return;
+    }
+
+  /* emit request-done */
+  glade_http_emit_request_done (data, priv->response->str);
+  glade_http_emit_status (data, GLADE_HTTP_READY, NULL);
+}
+
+static void
+on_write_ready (GObject *source, GAsyncResult *res, gpointer data)
+{
+  GladeHTTPPrivate *priv = GLADE_HTTP (data)->priv;
+  GError *error = NULL;
+  gsize count;
+
+  count = g_output_stream_write_finish (G_OUTPUT_STREAM (source), res, &error);
+
+  if (error)
+    {
+      glade_http_emit_status (data, GLADE_HTTP_ERROR, error);
+      g_error_free (error);
+      return;
+    }
+
+  if (priv->data->len != count)
+    {
+      g_warning ("priv->data_size = %ld, write = %ld", priv->data->len, count);
+      return;
+    }
+
+  glade_http_emit_status (data, GLADE_HTTP_WAITING, NULL);
+  g_input_stream_read_async (g_io_stream_get_input_stream (G_IO_STREAM (priv->connection)),
+                             priv->response_buffer, HTTP_BUFFER_SIZE,
+                             G_PRIORITY_DEFAULT, priv->cancellable, on_read_ready, data);
+}
+
+static void
+on_connect_ready (GObject *source, GAsyncResult *res, gpointer data)
+{
+  GladeHTTPPrivate *priv = GLADE_HTTP (data)->priv;
+  GError *error = NULL;
+
+  priv->connection = g_socket_client_connect_to_host_finish (G_SOCKET_CLIENT (source), res, &error);
+
+  if (error)
+    {
+      glade_http_emit_status (data, GLADE_HTTP_ERROR, error);
+      g_error_free (error);
+      return;
+    }
+
+  if (priv->connection)
+    {
+      glade_http_emit_status (data, GLADE_HTTP_SENDING, NULL);
+      g_output_stream_write_async (g_io_stream_get_output_stream (G_IO_STREAM (priv->connection)),
+                                   priv->data->str, priv->data->len, G_PRIORITY_DEFAULT,
+                                   priv->cancellable, on_write_ready, data);
+    }
+}
+
+static void
+glade_http_init (GladeHTTP *http)
+{
+  GladeHTTPPrivate *priv;
+  
+  priv = http->priv = G_TYPE_INSTANCE_GET_PRIVATE (http, GLADE_TYPE_HTTP, GladeHTTPPrivate);
+
+  priv->data = g_string_new ("");
+  priv->response = g_string_new ("");
+}
+
+static void
+glade_http_clear (GladeHTTP *http)
+{
+  GladeHTTPPrivate *priv = http->priv;
+
+  if (priv->cancellable)
+    g_cancellable_cancel (priv->cancellable);
+
+  g_clear_object (&priv->connection);
+  g_clear_object (&priv->cancellable);
+
+  g_string_assign (priv->data, "");
+  g_string_assign (priv->response, "");
+
+  priv->status = GLADE_HTTP_READY;
+}
+
+static void
+glade_http_finalize (GObject *object)
+{
+  GladeHTTPPrivate *priv = GLADE_HTTP (object)->priv;
+
+  glade_http_clear (GLADE_HTTP (object));
+  
+  g_string_free (priv->data, TRUE);
+  g_string_free (priv->response, TRUE);
+  
+  G_OBJECT_CLASS (glade_http_parent_class)->finalize (object);
+}
+
+static void
+glade_http_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+  GladeHTTPPrivate *priv;
+  
+  g_return_if_fail (GLADE_IS_HTTP (object));
+  priv = GLADE_HTTP (object)->priv;
+  
+  switch (prop_id)
+    {
+      case PROP_HOST:
+        g_free (priv->host);
+        priv->host = g_strdup (g_value_get_string (value));
+        break;
+      case PROP_PORT:
+        priv->port = g_value_get_int (value);
+        break;
+      case PROP_TLS:
+        priv->tls = g_value_get_boolean (value);
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+glade_http_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+  GladeHTTPPrivate *priv;
+  
+  g_return_if_fail (GLADE_IS_HTTP (object));
+  priv = GLADE_HTTP (object)->priv;
+
+  switch (prop_id)
+    {
+      case PROP_HOST:
+        g_value_set_string (value, priv->host);
+        break;
+      case PROP_PORT:
+        g_value_set_int (value, priv->port);
+        break;
+      case PROP_TLS:
+        g_value_set_boolean (value, priv->tls);
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+glade_http_class_init (GladeHTTPClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  g_type_class_add_private (klass, sizeof (GladeHTTPPrivate));
+
+  object_class->finalize = glade_http_finalize;
+  object_class->set_property = glade_http_set_property;
+  object_class->get_property = glade_http_get_property;
+
+  properties[PROP_HOST] =
+    g_param_spec_string ("host", "Host",
+                         "Host to connect to",
+                         NULL, G_PARAM_READWRITE);
+
+  properties[PROP_PORT] =
+    g_param_spec_int ("port", "TCP Port",
+                      "TCP port to connect to",
+                      0, 65536, 80, G_PARAM_READWRITE);
+
+  properties[PROP_TLS] =
+    g_param_spec_boolean ("tls", "TLS",
+                          "Wheter to use tls encryption or not",
+                          FALSE, G_PARAM_READWRITE);
+
+  /* Install all properties */
+  g_object_class_install_properties (object_class, N_PROPERTIES, properties);
+  
+  http_signals[REQUEST_DONE] =
+    g_signal_new ("request-done",
+                  G_OBJECT_CLASS_TYPE (klass), 0,
+                  G_STRUCT_OFFSET (GladeHTTPClass, request_done),
+                  NULL, NULL, NULL,
+                  G_TYPE_NONE, 4,
+                  G_TYPE_INT, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRING);
+
+  http_signals[STATUS] =
+    g_signal_new ("status",
+                  G_OBJECT_CLASS_TYPE (klass), 0,
+                  G_STRUCT_OFFSET (GladeHTTPClass, status),
+                  NULL, NULL, NULL,
+                  G_TYPE_NONE, 2,
+                  G_TYPE_INT, G_TYPE_ERROR);
+}
+
+GladeHTTP *
+glade_http_new (const gchar *host, gint port, gboolean tls)
+{
+  return GLADE_HTTP (g_object_new (GLADE_TYPE_HTTP,
+                                   "host", host,
+                                   "port", port,
+                                   "tls", tls,
+                                   NULL));
+}
+
+const gchar *
+glade_http_get_host (GladeHTTP *http)
+{
+  g_return_val_if_fail (GLADE_IS_HTTP (http), NULL);
+  return http->priv->host;
+}
+
+gint
+glade_http_get_port (GladeHTTP *http)
+{
+  g_return_val_if_fail (GLADE_IS_HTTP (http), NULL);
+  return http->priv->port;
+}
+
+void
+glade_http_request_send_async (GladeHTTP    *http,
+                               GCancellable *cancellable,
+                               const gchar  *format,
+                               ...)
+{
+  GladeHTTPPrivate *priv;
+  GSocketClient *client;
+  va_list ap;
+
+  g_return_if_fail (GLADE_IS_HTTP (http));
+
+  priv = http->priv;
+  client = g_socket_client_new ();
+  glade_http_clear (http);
+
+  va_start (ap, format);
+  g_string_vprintf (priv->data, format, ap);
+  va_end (ap);
+
+  priv->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
+
+  if (priv->tls)
+    {
+      g_socket_client_set_tls (client, TRUE);
+      g_socket_client_set_tls_validation_flags (client, 0);
+    }
+
+  glade_http_emit_status (http, GLADE_HTTP_CONNECTING, NULL);
+  
+  g_socket_client_connect_to_host_async (client,
+                                         priv->host,
+                                         priv->port,
+                                         cancellable,
+                                         on_connect_ready,
+                                         http);
+  g_object_unref (client);
+}
diff --git a/src/glade-http.h b/src/glade-http.h
new file mode 100644
index 0000000..8eb4f0c
--- /dev/null
+++ b/src/glade-http.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 Juan Pablo Ugarte.
+ *
+ * This program is free software; you can 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.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Juan Pablo Ugarte <juanpablougarte gmail com>
+ */
+
+#ifndef _GLADE_HTTP_H_
+#define _GLADE_HTTP_H_
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define GLADE_TYPE_HTTP             (glade_http_get_type ())
+#define GLADE_HTTP(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_HTTP, GladeHTTP))
+#define GLADE_HTTP_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_HTTP, GladeHTTPClass))
+#define GLADE_IS_HTTP(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_HTTP))
+#define GLADE_IS_HTTP_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_HTTP))
+#define GLADE_HTTP_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_HTTP, GladeHTTPClass))
+
+typedef struct _GladeHTTPClass GladeHTTPClass;
+typedef struct _GladeHTTP GladeHTTP;
+typedef struct _GladeHTTPPrivate GladeHTTPPrivate;
+
+typedef enum
+{
+  GLADE_HTTP_READY,
+  GLADE_HTTP_CONNECTING,
+  GLADE_HTTP_SENDING,
+  GLADE_HTTP_WAITING,
+  GLADE_HTTP_RECEIVING,
+  GLADE_HTTP_ERROR
+} GladeHTTPStatus;
+
+struct _GladeHTTPClass
+{
+  GObjectClass parent_class;
+
+  /* Signals */
+  void (*request_done) (GladeHTTP    *self,
+                        gint          code,
+                        const gchar **headers,
+                        const gchar **values,
+                        const gchar *response);
+  
+  void (*status)       (GladeHTTP      *self,
+                        GladeHTTPStatus status,
+                        GError         *error);
+};
+
+struct _GladeHTTP
+{
+  GObject parent_instance;
+
+  GladeHTTPPrivate *priv;
+};
+
+GType glade_http_get_type (void) G_GNUC_CONST;
+
+GladeHTTP *glade_http_new                (const gchar *host,
+                                          gint         port,
+                                          gboolean     tls);
+
+const gchar *glade_http_get_host         (GladeHTTP    *http);
+gint         glade_http_get_port         (GladeHTTP    *http);
+
+void         glade_http_request_send_async (GladeHTTP    *http,
+                                            GCancellable *cancellable,
+                                            const gchar  *format,
+                                            ...);
+G_END_DECLS
+
+#endif /* _GLADE_HTTP_H_ */
+
diff --git a/src/glade-logo.h b/src/glade-logo.h
new file mode 100644
index 0000000..aa4094b
--- /dev/null
+++ b/src/glade-logo.h
@@ -0,0 +1,464 @@
+#ifndef __GLADE_LOGO_H__
+#define __GLADE_LOGO_H__
+
+#define GLADE_LOGO_WIDTH 250.000000
+#define GLADE_LOGO_HEIGHT 320.000000
+
+#include <cairo.h>
+
+static cairo_path_data_t glade_logo_data[] = {
+       {.header.type = 0, .header.length = 2},
+       {.point.x = 123.696550, .point.y = 318.839150},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 110.137780, .point.y = 316.186390},
+       {.point.x = 93.163559, .point.y = 308.523530},
+       {.point.x = 81.491943, .point.y = 299.786260},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 74.318660, .point.y = 294.416420},
+       {.point.x = 70.948005, .point.y = 291.542980},
+       {.point.x = 73.133025, .point.y = 292.660410},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 73.717653, .point.y = 292.959390},
+       {.point.x = 78.022635, .point.y = 295.379740},
+       {.point.x = 82.699646, .point.y = 298.038960},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 93.959038, .point.y = 304.440780},
+       {.point.x = 106.365290, .point.y = 309.839000},
+       {.point.x = 122.560570, .point.y = 315.383310},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 135.528970, .point.y = 319.822940},
+       {.point.x = 135.996650, .point.y = 321.245660},
+       {.point.x = 123.696550, .point.y = 318.839150},
+       {.header.type = 3, .header.length = 1},
+       {.header.type = 0, .header.length = 2},
+       {.point.x = 142.756790, .point.y = 315.724410},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 136.618200, .point.y = 314.637070},
+       {.point.x = 127.290740, .point.y = 312.502950},
+       {.point.x = 122.029090, .point.y = 310.981900},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 100.716080, .point.y = 304.820740},
+       {.point.x = 70.321696, .point.y = 290.954990},
+       {.point.x = 65.447634, .point.y = 285.169740},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 58.774939, .point.y = 278.299380},
+       {.point.x = 53.992986, .point.y = 268.625140},
+       {.point.x = 49.958962, .point.y = 261.324430},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 47.523844, .point.y = 257.617650},
+       {.point.x = 42.130573, .point.y = 241.288660},
+       {.point.x = 41.176872, .point.y = 234.735310},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 40.418249, .point.y = 229.522570},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 43.722262, .point.y = 231.869110},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 45.539469, .point.y = 233.159710},
+       {.point.x = 47.286530, .point.y = 234.635700},
+       {.point.x = 47.604635, .point.y = 235.149060},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 47.922741, .point.y = 235.662440},
+       {.point.x = 50.209284, .point.y = 237.656870},
+       {.point.x = 52.685837, .point.y = 239.581140},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 56.830671, .point.y = 242.801670},
+       {.point.x = 56.687487, .point.y = 242.533900},
+       {.point.x = 50.884762, .point.y = 236.212940},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 43.522477, .point.y = 228.193080},
+       {.point.x = 35.998221, .point.y = 216.962400},
+       {.point.x = 33.686140, .point.y = 210.542260},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 32.790743, .point.y = 208.055930},
+       {.point.x = 31.167873, .point.y = 198.513310},
+       {.point.x = 30.079749, .point.y = 189.336420},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 27.815569, .point.y = 170.240820},
+       {.point.x = 24.767722, .point.y = 156.964690},
+       {.point.x = 20.465785, .point.y = 147.458830},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 17.114317, .point.y = 140.053160},
+       {.point.x = 8.311111, .point.y = 130.080900},
+       {.point.x = 3.296087, .point.y = 128.009000},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 0.000000, .point.y = 126.647260},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 4.144992, .point.y = 125.215950},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 13.321669, .point.y = 122.047160},
+       {.point.x = 27.559263, .point.y = 122.587300},
+       {.point.x = 41.689313, .point.y = 126.640270},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 43.864665, .point.y = 127.264240},
+       {.point.x = 44.147165, .point.y = 127.083760},
+       {.point.x = 43.525241, .point.y = 125.467260},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 42.209792, .point.y = 122.048150},
+       {.point.x = 37.704335, .point.y = 98.061740},
+       {.point.x = 37.049273, .point.y = 90.990130},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 36.410914, .point.y = 84.098830},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 38.991277, .point.y = 88.894460},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 42.258249, .point.y = 94.966230},
+       {.point.x = 51.083142, .point.y = 103.248380},
+       {.point.x = 57.127155, .point.y = 105.915010},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 59.685857, .point.y = 107.043890},
+       {.point.x = 64.080437, .point.y = 108.282110},
+       {.point.x = 66.892897, .point.y = 108.666600},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 72.006482, .point.y = 109.365680},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 68.132801, .point.y = 104.851900},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 58.276521, .point.y = 93.366950},
+       {.point.x = 52.394362, .point.y = 76.305000},
+       {.point.x = 52.421619, .point.y = 59.279620},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 52.439689, .point.y = 48.021450},
+       {.point.x = 53.403708, .point.y = 44.740490},
+       {.point.x = 55.405866, .point.y = 49.123360},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 57.449226, .point.y = 53.596370},
+       {.point.x = 66.161062, .point.y = 62.177070},
+       {.point.x = 71.960271, .point.y = 65.428560},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 78.595935, .point.y = 69.149040},
+       {.point.x = 84.942194, .point.y = 71.235930},
+       {.point.x = 98.112537, .point.y = 74.028410},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 118.834700, .point.y = 78.422080},
+       {.point.x = 129.297940, .point.y = 86.810330},
+       {.point.x = 134.949400, .point.y = 103.560060},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 136.960850, .point.y = 109.521560},
+       {.point.x = 137.702390, .point.y = 110.603800},
+       {.point.x = 139.775660, .point.y = 110.603800},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 141.759080, .point.y = 110.603800},
+       {.point.x = 142.959450, .point.y = 109.126040},
+       {.point.x = 146.082780, .point.y = 102.839170},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 151.082470, .point.y = 92.775430},
+       {.point.x = 152.697710, .point.y = 84.891870},
+       {.point.x = 152.140680, .point.y = 73.271850},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 151.770390, .point.y = 65.546970},
+       {.point.x = 151.100790, .point.y = 62.657570},
+       {.point.x = 148.295030, .point.y = 56.677340},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 146.426510, .point.y = 52.694770},
+       {.point.x = 143.419160, .point.y = 47.574320},
+       {.point.x = 141.612020, .point.y = 45.298540},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 139.804880, .point.y = 43.022780},
+       {.point.x = 138.761070, .point.y = 41.160780},
+       {.point.x = 139.292410, .point.y = 41.160780},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 139.823750, .point.y = 41.160780},
+       {.point.x = 143.581670, .point.y = 42.288120},
+       {.point.x = 147.643320, .point.y = 43.665990},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 168.470380, .point.y = 50.731350},
+       {.point.x = 185.041050, .point.y = 62.180450},
+       {.point.x = 195.403970, .point.y = 76.665070},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 206.970430, .point.y = 92.831970},
+       {.point.x = 211.172080, .point.y = 110.362940},
+       {.point.x = 205.951990, .point.y = 120.675680},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 200.998710, .point.y = 130.461270},
+       {.point.x = 186.841420, .point.y = 132.870190},
+       {.point.x = 171.235190, .point.y = 126.582920},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 167.613620, .point.y = 125.123920},
+       {.point.x = 164.480200, .point.y = 124.100040},
+       {.point.x = 164.272020, .point.y = 124.307680},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 162.701490, .point.y = 125.874100},
+       {.point.x = 181.175230, .point.y = 134.959400},
+       {.point.x = 189.389290, .point.y = 136.660200},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 204.602600, .point.y = 139.810270},
+       {.point.x = 212.735560, .point.y = 135.110600},
+       {.point.x = 216.656990, .point.y = 120.903480},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 217.415840, .point.y = 118.154200},
+       {.point.x = 218.079500, .point.y = 116.885370},
+       {.point.x = 218.131750, .point.y = 118.083860},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 218.184050, .point.y = 119.282330},
+       {.point.x = 220.630880, .point.y = 124.958210},
+       {.point.x = 223.569190, .point.y = 130.696890},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 228.364950, .point.y = 140.063290},
+       {.point.x = 228.892210, .point.y = 141.774070},
+       {.point.x = 228.722430, .point.y = 147.417480},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 228.502960, .point.y = 154.712020},
+       {.point.x = 227.950120, .point.y = 155.260630},
+       {.point.x = 217.163860, .point.y = 158.886960},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 200.608790, .point.y = 164.452770},
+       {.point.x = 168.872120, .point.y = 158.189320},
+       {.point.x = 144.057060, .point.y = 144.458820},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 139.753660, .point.y = 142.077690},
+       {.point.x = 139.408770, .point.y = 142.009130},
+       {.point.x = 141.642810, .point.y = 143.978950},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 149.285820, .point.y = 150.718000},
+       {.point.x = 171.460130, .point.y = 161.069350},
+       {.point.x = 187.401030, .point.y = 165.339660},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 194.556210, .point.y = 167.256420},
+       {.point.x = 199.319980, .point.y = 167.769860},
+       {.point.x = 210.295840, .point.y = 167.807280},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 223.417650, .point.y = 167.852080},
+       {.point.x = 224.458420, .point.y = 167.697810},
+       {.point.x = 229.844970, .point.y = 164.912030},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 232.974190, .point.y = 163.293670},
+       {.point.x = 235.690420, .point.y = 162.125100},
+       {.point.x = 235.881040, .point.y = 162.315250},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 236.071670, .point.y = 162.505390},
+       {.point.x = 238.147160, .point.y = 166.692030},
+       {.point.x = 240.493240, .point.y = 171.618920},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 244.758840, .point.y = 180.576910},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 242.292050, .point.y = 182.765970},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 240.935300, .point.y = 183.969950},
+       {.point.x = 235.802670, .point.y = 186.305030},
+       {.point.x = 230.886200, .point.y = 187.955040},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 222.932510, .point.y = 190.624360},
+       {.point.x = 220.482560, .point.y = 190.951420},
+       {.point.x = 208.660190, .point.y = 190.922040},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 185.571990, .point.y = 190.864740},
+       {.point.x = 161.177750, .point.y = 184.277320},
+       {.point.x = 134.518850, .point.y = 170.901160},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 126.187910, .point.y = 166.721090},
+       {.point.x = 119.371700, .point.y = 163.423110},
+       {.point.x = 119.371700, .point.y = 163.572320},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 119.371700, .point.y = 164.299780},
+       {.point.x = 132.201590, .point.y = 172.198450},
+       {.point.x = 140.920720, .point.y = 176.838870},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 169.969120, .point.y = 192.298800},
+       {.point.x = 207.076830, .point.y = 201.357560},
+       {.point.x = 228.399960, .point.y = 198.194380},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 238.127890, .point.y = 196.751280},
+       {.point.x = 244.331630, .point.y = 194.114690},
+       {.point.x = 244.132370, .point.y = 191.508060},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 244.057170, .point.y = 190.522900},
+       {.point.x = 244.614590, .point.y = 189.479870},
+       {.point.x = 245.371310, .point.y = 189.190240},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 246.752150, .point.y = 188.661740},
+       {.point.x = 248.151880, .point.y = 193.219250},
+       {.point.x = 249.607270, .point.y = 202.982460},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 250.197440, .point.y = 206.941400},
+       {.point.x = 249.971220, .point.y = 207.563880},
+       {.point.x = 247.264910, .point.y = 209.427760},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 243.550750, .point.y = 211.985770},
+       {.point.x = 234.146040, .point.y = 215.691980},
+       {.point.x = 227.793440, .point.y = 217.101100},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 220.397260, .point.y = 218.741710},
+       {.point.x = 197.462460, .point.y = 218.415190},
+       {.point.x = 186.259650, .point.y = 216.509800},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 161.405830, .point.y = 212.282630},
+       {.point.x = 131.394370, .point.y = 201.164570},
+       {.point.x = 107.944890, .point.y = 187.497250},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 99.832740, .point.y = 182.769160},
+       {.point.x = 101.108060, .point.y = 184.558500},
+       {.point.x = 109.820110, .point.y = 190.128300},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 154.725830, .point.y = 218.837410},
+       {.point.x = 215.587610, .point.y = 233.521700},
+       {.point.x = 243.762630, .point.y = 222.444990},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 246.715400, .point.y = 221.284150},
+       {.point.x = 249.408480, .point.y = 220.334360},
+       {.point.x = 249.747260, .point.y = 220.334360},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 250.625720, .point.y = 220.334360},
+       {.point.x = 249.019980, .point.y = 234.298240},
+       {.point.x = 247.900400, .point.y = 236.395070},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 246.668540, .point.y = 238.702140},
+       {.point.x = 233.155300, .point.y = 244.235230},
+       {.point.x = 225.206560, .point.y = 245.687200},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 216.136510, .point.y = 247.344000},
+       {.point.x = 194.897850, .point.y = 247.097790},
+       {.point.x = 183.164020, .point.y = 245.199800},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 154.674260, .point.y = 240.591530},
+       {.point.x = 122.448020, .point.y = 229.032500},
+       {.point.x = 96.783842, .point.y = 214.216640},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 91.668358, .point.y = 211.263470},
+       {.point.x = 87.482954, .point.y = 209.063940},
+       {.point.x = 87.482954, .point.y = 209.328780},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 87.482954, .point.y = 210.579470},
+       {.point.x = 108.469500, .point.y = 223.132920},
+       {.point.x = 119.880070, .point.y = 228.707660},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 165.230910, .point.y = 250.864210},
+       {.point.x = 212.406640, .point.y = 259.720830},
+       {.point.x = 241.346160, .point.y = 251.511290},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 244.599120, .point.y = 250.588490},
+       {.point.x = 244.411040, .point.y = 251.808390},
+       {.point.x = 239.897760, .point.y = 260.905900},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 235.716470, .point.y = 269.334200},
+       {.point.x = 234.008630, .point.y = 270.526800},
+       {.point.x = 221.210550, .point.y = 273.955380},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 189.715030, .point.y = 282.392960},
+       {.point.x = 129.641310, .point.y = 268.561220},
+       {.point.x = 84.028349, .point.y = 242.369700},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 78.328227, .point.y = 239.096620},
+       {.point.x = 73.664500, .point.y = 236.627100},
+       {.point.x = 73.664500, .point.y = 236.881880},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 73.664500, .point.y = 237.980050},
+       {.point.x = 92.653213, .point.y = 249.551640},
+       {.point.x = 103.735580, .point.y = 255.206990},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 137.171580, .point.y = 272.269460},
+       {.point.x = 175.760740, .point.y = 283.180310},
+       {.point.x = 202.813930, .point.y = 283.220810},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 209.829440, .point.y = 283.231410},
+       {.point.x = 218.004750, .point.y = 283.041020},
+       {.point.x = 220.981260, .point.y = 282.797950},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 226.393100, .point.y = 282.355980},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 222.593640, .point.y = 286.888910},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 215.336720, .point.y = 295.546760},
+       {.point.x = 209.880680, .point.y = 297.789690},
+       {.point.x = 192.184340, .point.y = 299.389950},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 162.968990, .point.y = 302.031850},
+       {.point.x = 110.647120, .point.y = 287.339290},
+       {.point.x = 74.482976, .point.y = 266.338060},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 69.063484, .point.y = 263.190860},
+       {.point.x = 66.035280, .point.y = 261.780580},
+       {.point.x = 67.753620, .point.y = 263.204130},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 69.471960, .point.y = 264.627640},
+       {.point.x = 75.868309, .point.y = 268.757370},
+       {.point.x = 81.967721, .point.y = 272.381260},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 112.337680, .point.y = 290.425200},
+       {.point.x = 157.272050, .point.y = 305.370190},
+       {.point.x = 181.819790, .point.y = 305.591670},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 187.227180, .point.y = 305.640470},
+       {.point.x = 191.651750, .point.y = 306.038160},
+       {.point.x = 191.652140, .point.y = 306.475500},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 191.652540, .point.y = 306.912830},
+       {.point.x = 192.729100, .point.y = 307.292210},
+       {.point.x = 194.044520, .point.y = 307.318580},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 197.616970, .point.y = 307.390180},
+       {.point.x = 188.752660, .point.y = 311.902130},
+       {.point.x = 178.576750, .point.y = 315.191770},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 168.487010, .point.y = 318.453560},
+       {.point.x = 158.963560, .point.y = 318.595160},
+       {.point.x = 142.756790, .point.y = 315.724410},
+       {.header.type = 3, .header.length = 1},
+       {.header.type = 0, .header.length = 2},
+       {.point.x = 229.914170, .point.y = 123.294940},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 229.257580, .point.y = 121.562790},
+       {.point.x = 227.370710, .point.y = 117.998680},
+       {.point.x = 225.721070, .point.y = 115.374690},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 219.548550, .point.y = 105.556270},
+       {.point.x = 219.289200, .point.y = 98.584660},
+       {.point.x = 224.901150, .point.y = 93.333820},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 227.261960, .point.y = 91.124930},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 227.494380, .point.y = 94.358570},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 227.622200, .point.y = 96.137080},
+       {.point.x = 229.261540, .point.y = 99.977660},
+       {.point.x = 231.137300, .point.y = 102.893200},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 235.630820, .point.y = 109.877580},
+       {.point.x = 236.499380, .point.y = 117.951240},
+       {.point.x = 233.299520, .point.y = 122.991960},
+       {.header.type = 1, .header.length = 2},
+       {.point.x = 231.107950, .point.y = 126.444310},
+       {.header.type = 3, .header.length = 1},
+       {.header.type = 0, .header.length = 2},
+       {.point.x = 123.871880, .point.y = 73.326950},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 119.605310, .point.y = 69.007030},
+       {.point.x = 114.688600, .point.y = 66.460670},
+       {.point.x = 100.262330, .point.y = 61.099550},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 84.688709, .point.y = 55.312050},
+       {.point.x = 70.765125, .point.y = 48.403090},
+       {.point.x = 65.419079, .point.y = 43.810160},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 56.557214, .point.y = 36.196690},
+       {.point.x = 52.316764, .point.y = 25.709480},
+       {.point.x = 52.317986, .point.y = 11.409390},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 52.318962, .point.y = -1.171975},
+       {.point.x = 52.923953, .point.y = -2.314802},
+       {.point.x = 56.775387, .point.y = 2.988140},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 62.139216, .point.y = 10.373460},
+       {.point.x = 66.245251, .point.y = 12.787330},
+       {.point.x = 87.482954, .point.y = 21.040550},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 101.013180, .point.y = 26.298550},
+       {.point.x = 106.778120, .point.y = 29.872960},
+       {.point.x = 113.982870, .point.y = 37.471140},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 121.379730, .point.y = 45.271940},
+       {.point.x = 125.489100, .point.y = 54.312360},
+       {.point.x = 126.912000, .point.y = 65.914650},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 127.532980, .point.y = 70.978350},
+       {.point.x = 127.884210, .point.y = 75.508590},
+       {.point.x = 127.692490, .point.y = 75.981870},
+       {.header.type = 2, .header.length = 4},
+       {.point.x = 127.500760, .point.y = 76.455140},
+       {.point.x = 125.781500, .point.y = 75.260430},
+       {.point.x = 123.871880, .point.y = 73.326950},
+       {.header.type = 3, .header.length = 1}
+};
+
+cairo_path_t glade_logo_path = {0, glade_logo_data, 450};
+
+#endif /* __GLADE_LOGO_H__ */
diff --git a/src/glade-registration.c b/src/glade-registration.c
new file mode 100644
index 0000000..6ce941f
--- /dev/null
+++ b/src/glade-registration.c
@@ -0,0 +1,606 @@
+/*
+ * Copyright (C) 2014 Juan Pablo Ugarte.
+ *
+ * This program is free software; you can 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.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Juan Pablo Ugarte <juanpablougarte gmail com>
+ */
+
+#include "config.h"
+#include "glade-registration.h"
+#include "glade-http.h"
+#include "glade-logo.h"
+#include <gladeui/glade.h>
+#include <glib/gi18n.h>
+
+struct _GladeRegistrationPrivate
+{
+  GtkWidget    *infobar;
+  GtkWidget    *net_spinner;
+  GtkLabel     *infobar_label;
+  GtkLabel     *status_label;
+  GladeHTTP    *http;
+  GCancellable *cancellable;
+
+  /* Form widgets */
+
+  GtkWidget *name;
+  GtkWidget *email;
+  GtkWidget *country_id;
+  GtkWidget *city;
+  GtkWidget *contact_type;
+  GtkWidget *contact_name;
+  GtkWidget *contact_website;
+  GtkWidget *subscribe;
+
+  GtkWidget *validation_token;
+
+  GtkWidget *experience;
+  GtkWidget *experience_unit;
+  GtkWidget *experience_not_programmer;
+  GtkWidget *lang_c;
+  GtkWidget *lang_cpp;
+  GtkWidget *lang_csharp;
+  GtkWidget *lang_java;
+  GtkWidget *lang_python;
+  GtkWidget *lang_javascript;
+  GtkWidget *lang_vala;
+  GtkWidget *lang_perl;
+  GtkWidget *lang_other;
+  GtkWidget *start_using;
+  GtkWidget *start_using_unit;
+  GtkWidget *version;
+  GtkWidget *version_other;
+  GtkWidget *os;
+  GtkWidget *os_linux;
+  GtkWidget *os_bsd;
+  GtkWidget *os_windows;
+  GtkWidget *os_osx;
+  GtkWidget *os_solaris;
+  GtkWidget *os_other;
+  GtkWidget *freq;
+  GtkWidget *user_level;
+  GtkWidget *soft_free;
+  GtkWidget *soft_open;
+  GtkWidget *soft_commercial;
+  GtkWidget *soft_none;
+  GtkWidget *field_academic;
+  GtkWidget *field_accounting;
+  GtkWidget *field_desktop;
+  GtkWidget *field_educational;
+  GtkWidget *field_embedded;
+  GtkWidget *field_medical;
+  GtkWidget *field_industrial;
+  GtkWidget *field_scientific;
+  GtkWidget *field_other;
+  GtkWidget *improvement;
+  GtkWidget *problem;
+  GtkWidget *problem_other;
+  GtkWidget *bug;
+  GtkWidget *bugzilla;
+  GtkWidget *contributing;
+  GtkWidget *contributing_whynot;
+  GtkWidget *comments;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE (GladeRegistration, glade_registration, GTK_TYPE_DIALOG);
+
+
+static void
+string_append_input_key_value_tuple (GString *string,
+                                     const gchar *name,
+                                     GtkWidget *input)
+{
+  if (string->len)
+    g_string_append_c (string, '&');
+
+  g_string_append (string, name);
+  g_string_append_c (string, '=');
+  
+  if (GTK_IS_ENTRY (input))
+    g_string_append_uri_escaped (string, gtk_entry_get_text (GTK_ENTRY (input)), NULL, FALSE);
+  else if (GTK_IS_TEXT_VIEW (input))
+    {
+      GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (input));      
+      GtkTextIter start, end;
+      gchar *text;
+      
+      gtk_text_buffer_get_bounds (buffer, &start, &end);
+      text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+      g_string_append_uri_escaped (string, text ? text : "", NULL, FALSE);
+      g_free (text);
+    }
+  else if (GTK_IS_COMBO_BOX (input))
+    g_string_append_uri_escaped (string, gtk_combo_box_get_active_id (GTK_COMBO_BOX (input)), NULL, FALSE);
+  else if (GTK_IS_RADIO_BUTTON (input))
+    {
+      GSList *group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (input));
+
+      for (; group; group = g_slist_next (group))
+        {
+          if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (group->data)))            
+            g_string_append (string, gtk_widget_get_name (group->data));
+        }
+    }
+  else if (GTK_IS_TOGGLE_BUTTON (input))
+    g_string_append_printf (string, "%d", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (input)) ? 1 : 0);
+}
+
+static void
+glade_registration_show_message (GladeRegistration *registration,
+                                 GtkMessageType     type,
+                                 const gchar       *message)
+{
+  gtk_info_bar_set_message_type (GTK_INFO_BAR (registration->priv->infobar), type);
+  gtk_label_set_text (registration->priv->infobar_label, message ? message : "");
+
+  /* Only show the infobar if the dialog is visible */
+  if (gtk_widget_is_visible (GTK_WIDGET (registration)))
+    gtk_widget_show (registration->priv->infobar);
+}
+
+static void 
+on_http_status (GladeHTTP         *http,
+                GladeHTTPStatus    status,
+                GError            *error,
+                GladeRegistration *registration)
+{
+  gchar *text = NULL;
+  
+  switch (status)
+    {
+      case GLADE_HTTP_READY:
+      break;
+      case GLADE_HTTP_CONNECTING:
+        text = g_strdup_printf (_("Connecting to %s"), glade_http_get_host (http));
+      break;
+      case GLADE_HTTP_SENDING:
+        text = g_strdup_printf (_("Sending data to %s"), glade_http_get_host (http));
+      break;
+      case GLADE_HTTP_WAITING:
+        text = g_strdup_printf (_("Waiting for %s"), glade_http_get_host (http));
+      break;
+      case GLADE_HTTP_RECEIVING:
+        text = g_strdup_printf (_("Receiving data from %s"), glade_http_get_host (http));
+      break;
+      case GLADE_HTTP_ERROR:
+        glade_registration_show_message (registration, GTK_MESSAGE_WARNING, error->message);
+      break;
+    }
+
+  gtk_label_set_text (registration->priv->status_label, text ? text : "");
+  gtk_widget_set_visible (registration->priv->net_spinner, text != NULL);
+  g_free (text);
+}
+
+#define append_input_tuple(s,i) string_append_input_key_value_tuple (s, #i, priv->i)
+
+static void 
+on_http_request_done (GladeHTTP         *http,
+                      gint               code,
+                      const gchar      **headers,
+                      const gchar      **values,
+                      const gchar       *response,
+                      GladeRegistration *registration)
+{  
+  switch (code)
+    {
+      case 100:
+        /* Ignore Continue HTTP response */
+      break;
+      case 200:
+        {
+          const gchar *status = NULL, *message = _("Internal server error");
+          gint i;
+
+          for (i = 0; headers[i]; i++)
+            {
+              if (g_strcmp0 (headers[i], "X-Glade-Status") == 0)
+                status = values[i];
+              else if (g_strcmp0 (headers[i], "X-Glade-Message") == 0)
+                message = values[i];
+            }
+
+          if (status == NULL)
+            {
+              glade_registration_show_message (registration, GTK_MESSAGE_WARNING, message);
+              return;
+            }
+          
+          if (g_strcmp0 (status, "ok") == 0)
+            {
+              gtk_widget_hide (GTK_WIDGET (registration));
+              glade_util_ui_message (glade_app_get_window (), GLADE_UI_INFO, NULL, "%s", message);
+            }
+          else if (g_strcmp0 (status, "error") == 0)
+            glade_registration_show_message (registration, GTK_MESSAGE_INFO, message);
+        }
+      break;
+      default:
+        glade_registration_show_message (registration, GTK_MESSAGE_INFO, response);
+      break;
+    }
+}
+
+#ifdef GDK_WINDOWING_X11
+#include "gdk/gdkx.h"
+#endif
+
+#ifdef GDK_WINDOWING_QUARTZ
+#include "gdk/gdkquartz.h"
+#endif
+
+#ifdef GDK_WINDOWING_WIN32
+#include "gdk/gdkwin32.h"
+#endif
+
+#ifdef GDK_WINDOWING_WAYLAND
+#include "gdk/gdkwayland.h"
+#endif
+
+#ifdef GDK_WINDOWING_BROADWAY
+#include "gdk/gdkbroadway.h"
+#endif
+
+static const gchar *
+get_gdk_backend (GtkWidget *widget)
+{
+  GdkDisplay *display = gtk_widget_get_display (widget);
+
+#ifdef GDK_WINDOWING_X11
+  if (GDK_IS_X11_DISPLAY (display))
+    return "X11";
+  else
+#endif
+
+#ifdef GDK_WINDOWING_QUARTZ
+  if (GDK_IS_QUARTZ_DISPLAY (display))
+    return "Quartz";
+  else
+#endif
+
+#ifdef GDK_WINDOWING_WIN32
+  if (GDK_IS_WIN32_DISPLAY (display))
+    return "Win32";
+  else
+#endif
+
+#ifdef GDK_WINDOWING_WAYLAND
+  if (GDK_IS_WAYLAND_DISPLAY (display))
+    return "Wayland";
+  else
+#endif
+
+#ifdef GDK_WINDOWING_BROADWAY
+  if (GDK_IS_BROADWAY_DISPLAY (display))
+    return "Broadway";
+  else
+#endif
+  {
+    return "Unknown";
+  }
+}
+
+static void 
+glade_registration_clear_cancellable (GladeRegistrationPrivate *priv)
+{
+  if (priv->cancellable)
+    {
+      g_cancellable_cancel (priv->cancellable);
+      g_clear_object (&priv->cancellable);
+    }
+}
+
+static void 
+on_registration_dialog_response (GtkDialog *dialog, gint response_id)
+{
+  GladeRegistrationPrivate *priv = GLADE_REGISTRATION (dialog)->priv;
+  GString *post;
+
+  gtk_widget_hide (priv->infobar);
+  
+  if (response_id != GTK_RESPONSE_APPLY)
+    {
+      gtk_widget_hide (GTK_WIDGET (dialog));
+      glade_registration_clear_cancellable (priv);
+      return;
+    }
+
+  glade_registration_clear_cancellable (priv);
+  priv->cancellable = g_cancellable_new ();
+  
+  post = g_string_new ("");
+
+  append_input_tuple (post, name);
+  append_input_tuple (post, email);
+  append_input_tuple (post, country_id);
+  append_input_tuple (post, city);
+  append_input_tuple (post, contact_type);
+  append_input_tuple (post, contact_name);
+  append_input_tuple (post, contact_website);
+
+  append_input_tuple (post, validation_token);
+  
+  append_input_tuple (post, experience);
+  append_input_tuple (post, experience_unit);
+  append_input_tuple (post, experience_not_programmer);
+  append_input_tuple (post, lang_c);
+  append_input_tuple (post, lang_cpp);
+  append_input_tuple (post, lang_csharp);
+  append_input_tuple (post, lang_java);
+  append_input_tuple (post, lang_python);
+  append_input_tuple (post, lang_javascript);
+  append_input_tuple (post, lang_vala);
+  append_input_tuple (post, lang_perl);
+  append_input_tuple (post, lang_other);
+  append_input_tuple (post, start_using);
+  append_input_tuple (post, start_using_unit);
+  append_input_tuple (post, version);
+  append_input_tuple (post, version_other);
+  append_input_tuple (post, os);
+  string_append_input_key_value_tuple (post, "linux", priv->os_linux);
+  string_append_input_key_value_tuple (post, "bsd", priv->os_bsd);
+  string_append_input_key_value_tuple (post, "windows", priv->os_windows);
+  string_append_input_key_value_tuple (post, "osx", priv->os_osx);
+  string_append_input_key_value_tuple (post, "solaris", priv->os_solaris);
+  append_input_tuple (post, os_other);
+  append_input_tuple (post, freq);
+  append_input_tuple (post, user_level);
+  append_input_tuple (post, soft_free);
+  append_input_tuple (post, soft_open);
+  append_input_tuple (post, soft_commercial);
+  append_input_tuple (post, soft_none);
+  append_input_tuple (post, field_academic);
+  append_input_tuple (post, field_accounting);
+  append_input_tuple (post, field_desktop);
+  append_input_tuple (post, field_educational);
+  append_input_tuple (post, field_embedded);
+  append_input_tuple (post, field_medical);
+  append_input_tuple (post, field_industrial);
+  append_input_tuple (post, field_scientific);
+  append_input_tuple (post, field_other);
+  append_input_tuple (post, improvement);
+  append_input_tuple (post, problem);
+  append_input_tuple (post, problem_other);
+  append_input_tuple (post, bug);
+  append_input_tuple (post, bugzilla);
+  append_input_tuple (post, contributing);
+  append_input_tuple (post, contributing_whynot);
+  append_input_tuple (post, comments);
+  
+  glade_http_request_send_async (priv->http,  priv->cancellable,
+                                 "POST /~jpu/glade/registration_master.php HTTP/1.1\r\n"
+                                 "Host: %s\r\n"
+                                 "User-Agent: Glade/"PACKAGE_VERSION" (%s; Gtk+ %d.%d.%d; glib %d.%d.%d)\r\n"
+                                 "Connection: close\r\n"
+                                 "Accept: text/plain\r\n"
+                                 "Content-Type: application/x-www-form-urlencoded\r\n"
+                                 "Content-Length: %d\r\n"
+                                 "\r\n"
+                                 "%s",
+                                 glade_http_get_host (priv->http),
+                                 get_gdk_backend (GTK_WIDGET (dialog)),
+                                 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION,
+                                 glib_major_version, glib_minor_version, glib_micro_version,
+                                 post->len,
+                                 post->str);
+  
+  g_string_free (post, TRUE);
+}
+
+static void
+on_privacy_button_clicked (GtkButton *button, GtkScrolledWindow *swindow)
+{
+  GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment (swindow);
+  gtk_adjustment_set_value (adj, gtk_adjustment_get_upper (adj));
+}
+
+static void
+toggle_button_set_visible_on_toggle (GtkToggleButton *button, GtkWidget *widget)
+{
+  gtk_widget_set_visible (widget, gtk_toggle_button_get_active (button));
+}
+
+static void
+toggle_button_set_sensitive_on_toggle (GtkToggleButton *button, GtkWidget *widget)
+{
+  gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (button));
+}
+
+static void 
+glade_registration_set_css_provider_forall (GtkWidget *widget, gpointer data)
+{
+  gtk_style_context_add_provider (gtk_widget_get_style_context (widget),
+                                  GTK_STYLE_PROVIDER (data),
+                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+  
+  if (GTK_IS_CONTAINER (widget))
+    gtk_container_forall (GTK_CONTAINER (widget), glade_registration_set_css_provider_forall, data);
+}
+
+static gboolean
+on_viewport_draw (GtkWidget *widget, cairo_t *cr)
+{
+  GdkWindow *window = gtk_viewport_get_bin_window (GTK_VIEWPORT (widget));
+
+  if (gtk_cairo_should_draw_window (cr, window))
+    { 
+      GtkAllocation alloc;
+      gdouble scale;
+
+      gtk_widget_get_allocation (widget, &alloc);
+      
+      scale = MIN (alloc.width/GLADE_LOGO_WIDTH, alloc.height/GLADE_LOGO_HEIGHT) - .1;
+      
+      cairo_save (cr);
+
+      cairo_set_source_rgba (cr, 0, 0, 0, .04);
+      cairo_scale (cr, scale, scale);
+      cairo_translate (cr, (alloc.width / scale) - GLADE_LOGO_WIDTH*.95,
+                       (alloc.height / scale) - GLADE_LOGO_HEIGHT);
+      cairo_append_path (cr, &glade_logo_path);
+      cairo_fill (cr);
+
+      cairo_restore (cr);
+    }
+
+  gtk_container_propagate_draw (GTK_CONTAINER (widget),
+                                gtk_bin_get_child (GTK_BIN (widget)),
+                                cr);
+  return TRUE;
+}
+
+static void
+glade_registration_init (GladeRegistration *registration)
+{
+  GladeRegistrationPrivate *priv = glade_registration_get_instance_private (registration);
+  GtkCssProvider *css_provider;
+  GFile *file;
+
+  registration->priv = priv;
+
+  /* HTTPS default port is 443 */
+  priv->http = glade_http_new ("people.gnome.org", 443, TRUE);
+
+  g_signal_connect_object (priv->http, "request-done",
+                           G_CALLBACK (on_http_request_done),
+                           registration, 0);
+  g_signal_connect_object (priv->http, "status",
+                           G_CALLBACK (on_http_status),
+                           registration, 0);
+  
+  gtk_widget_init_template (GTK_WIDGET (registration));
+
+  /* Apply Custom CSS */
+  css_provider = gtk_css_provider_new ();
+  file = g_file_new_for_uri ("resource:///org/gnome/glade/glade-registration.css");
+  if (gtk_css_provider_load_from_file (css_provider, file, NULL))
+    glade_registration_set_css_provider_forall (GTK_WIDGET (registration), css_provider);
+  g_object_unref (file);
+
+  if (GTK_IS_COMBO_BOX_TEXT (priv->version_other))
+    {
+      GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (priv->version_other);
+      gchar id[16], text[18];
+      gint minor;
+
+      for (minor = 0; minor <= GLADE_MINOR_VERSION; minor+=2)
+        {
+          g_snprintf (id, 16, "%d", minor);
+          g_snprintf (text, 18, "3.%d", minor);
+          gtk_combo_box_text_append (combo, id, text);
+        }
+
+      gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
+    }
+}
+
+static void
+glade_registration_finalize (GObject *object)
+{
+  GladeRegistrationPrivate *priv = GLADE_REGISTRATION (object)->priv;
+
+  g_clear_object (&priv->http);
+  g_clear_object (&priv->cancellable);
+
+  G_OBJECT_CLASS (glade_registration_parent_class)->finalize (object);
+}
+
+static void
+glade_registration_class_init (GladeRegistrationClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/glade/glade-registration.glade");
+
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, infobar);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, net_spinner);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, infobar_label);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, status_label);
+  
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, name);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, email);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, country_id);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, city);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_type);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_name);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_website);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, subscribe);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, validation_token);
+
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience_unit);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience_not_programmer);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_c);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_cpp);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_csharp);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_java);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_python);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_javascript);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_vala);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_perl);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_other);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, start_using);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, start_using_unit);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, version);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, version_other);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_linux);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_bsd);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_windows);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_osx);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_solaris);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_other);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, freq);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, user_level);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_free);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_open);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_commercial);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_none);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_academic);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_accounting);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_desktop);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_educational);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_embedded);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_medical);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_industrial);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_scientific);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_other);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, improvement);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, problem);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, problem_other);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, bug);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, bugzilla);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contributing);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contributing_whynot);
+  gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, comments);
+  
+  gtk_widget_class_bind_template_callback (widget_class, on_registration_dialog_response);
+  gtk_widget_class_bind_template_callback (widget_class, on_privacy_button_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, toggle_button_set_visible_on_toggle);
+  gtk_widget_class_bind_template_callback (widget_class, toggle_button_set_sensitive_on_toggle);
+  gtk_widget_class_bind_template_callback (widget_class, on_viewport_draw);
+  
+  object_class->finalize = glade_registration_finalize;
+}
+
+GtkWidget*
+glade_registration_new (void)
+{
+  return GTK_WIDGET (g_object_new (GLADE_TYPE_REGISTRATION, NULL));
+}
+
diff --git a/src/glade-registration.css b/src/glade-registration.css
new file mode 100644
index 0000000..df6e597
--- /dev/null
+++ b/src/glade-registration.css
@@ -0,0 +1,86 @@
+/*
+ * Glade - A user interface designer for GTK+ and GNOME
+ * Copyright (C) 2014 Juan Pablo Ugarte
+ * 
+ * This program is free software; you can 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.
+ * 
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ * 
+ * Author: Juan Pablo Ugarte <juanpablougarte gmail com>
+ * 
+ */
+
+GtkFrame {
+  background: none;
+}
+
+GtkScrolledWindow.survey_page {
+  border: 0px;
+  margin: 0px;
+  padding:0px;
+  background: white;
+  background-size: 100%;
+}
+
+GtkButtonBox.title,
+GtkFrame.title {
+  background-color: #4a90d9;
+  border-radius: 8px;
+  padding: 8px;
+  box-shadow: 2px 2px 4px gray;
+}
+
+GtkFrame.title > GtkLabel {
+  color: white;
+  font-size: 14pt;
+  font-weight: bold;
+  text-shadow: 1px 1px 2px black;
+}
+
+GtkFrame.survey_question {
+  border: 4px solid;
+  border-color: #c1c0bf;
+  border-radius: 16px;
+  padding: 8px;
+}
+
+GtkFrame.textbox {
+  border-radius: 16px;
+  background-color: #656565;
+  box-shadow: 4px 4px 2px #333;
+  padding: 8px;
+}
+
+GtkFrame.textbox GtkButton,
+GtkFrame.textbox GtkLabel {
+  color: white;
+  text-shadow: 1px 1px 1px black;
+}
+
+GtkLabel.textbox_title {
+  font-size: 10pt;
+  font-weight: bold;
+}
+
+GtkLabel.survey_question,
+GtkFrame.survey_question > GtkBox > GtkLabel {
+  font-size: 10pt;
+  font-weight: bold;
+  padding: 0px 0px 8px 0px;
+  text-shadow: 1px 1px white;
+}
+
+GtkCheckButton:hover {
+  background-color:white;
+}
+
diff --git a/src/glade-registration.glade b/src/glade-registration.glade
new file mode 100644
index 0000000..5219ae7
--- /dev/null
+++ b/src/glade-registration.glade
@@ -0,0 +1,2982 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.0 
+
+Glade - A user interface designer for GTK+ and GNOME
+Copyright (C) 2014 Juan Pablo Ugarte
+
+This program is free software; you can 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.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+Author: Juan Pablo Ugarte <juanpablougarte gmail com>
+
+-->
+<interface>
+  <requires lib="gtk+" version="3.10"/>
+  <!-- interface-css-provider-path glade-registration.css -->
+  <!-- interface-license-type gplv2 -->
+  <!-- interface-name Glade -->
+  <!-- interface-description A user interface designer for GTK+ and GNOME -->
+  <!-- interface-copyright 2013 Juan Pablo Ugarte -->
+  <!-- interface-authors Juan Pablo Ugarte <juanpablougarte gmail com> -->
+  <object class="GtkAdjustment" id="experience_adjustment">
+    <property name="upper">256</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="start_using_adjustment">
+    <property name="upper">256</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <template class="GladeRegistration" parent="GtkDialog">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Glade registration &amp; User survey</property>
+    <property name="default_width">512</property>
+    <property name="default_height">640</property>
+    <property name="icon_name">glade</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="on_registration_dialog_response" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkInfoBar" id="infobar">
+            <property name="app_paintable">True</property>
+            <property name="can_focus">False</property>
+            <property name="vexpand">False</property>
+            <property name="show_close_button">True</property>
+            <signal name="close" handler="gtk_widget_hide" swapped="no"/>
+            <signal name="response" handler="gtk_widget_hide" swapped="no"/>
+            <child internal-child="action_area">
+              <object class="GtkButtonBox" id="infobar-action_area1">
+                <property name="can_focus">False</property>
+                <property name="spacing">6</property>
+                <property name="layout_style">end</property>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child internal-child="content_area">
+              <object class="GtkBox" id="infobar-content_area1">
+                <property name="can_focus">False</property>
+                <property name="spacing">16</property>
+                <child>
+                  <object class="GtkLabel" id="infobar_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="no_show_all">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="min_content_height">480</property>
+            <child>
+              <object class="GtkViewport" id="viewport">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <signal name="draw" handler="on_viewport_draw" swapped="no"/>
+                <child>
+                  <object class="GtkBox" id="box16">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">8</property>
+                    <child>
+                      <object class="GtkFrame" id="frame2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="vexpand">False</property>
+                        <property name="border_width">6</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkLabel" id="label24">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes"> User Information</property>
+                          </object>
+                        </child>
+                        <child type="label_item">
+                          <placeholder/>
+                        </child>
+                        <style>
+                          <class name="title"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="box12">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="valign">start</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_end">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="hexpand">False</property>
+                        <property name="vexpand">False</property>
+                        <property name="spacing">4</property>
+                        <child>
+                          <object class="GtkFrame" id="frame20">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkGrid" id="grid1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="column_spacing">4</property>
+                                <child>
+                                  <object class="GtkEntry" id="name">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="hexpand">True</property>
+                                    <property name="width_chars">32</property>
+                                    <property name="placeholder_text" translatable="yes">&lt;Your name or 
nickname is required&gt;</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>
+                                <child>
+                                  <object class="GtkLabel" id="label2">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">Name:</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="GtkLabel" id="label3">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">Email:</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="GtkEntry" id="email">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip_text" translatable="yes">Tokens are processed 
manually in batches.
+Please be patient.</property>
+                                    <property name="margin_top">4</property>
+                                    <property name="placeholder_text" translatable="yes">&lt;Required to 
send back registration token&gt;</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label4">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">Country:</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="GtkLabel" id="label19">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">City:</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>
+                                <child>
+                                  <object class="GtkComboBoxText" id="contact_type">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="active">0</property>
+                                    <items>
+                                      <item id="c" translatable="yes">Company</item>
+                                      <item id="o" translatable="yes">Organization</item>
+                                      <item id="p" translatable="yes">Personal</item>
+                                    </items>
+                                  </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="GtkLabel" id="label27">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">1</property>
+                                    <property name="label" translatable="yes">Website</property>
+                                  </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="GtkEntry" id="city">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="width_chars">16</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" id="contact_name">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">4</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" id="contact_website">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">5</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" id="subscribe">
+                                    <property name="label" translatable="yes">Subscribe me to the mailing 
list</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="tooltip_text" translatable="yes">Subscribe to Glade 
Users mailing list.
+You will be sent email requesting confirmation!</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">6</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkComboBoxText" id="country_id">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="margin_top">4</property>
+                                    <property name="margin_bottom">4</property>
+                                    <property name="active">0</property>
+                                    <items>
+                                      <item id="other">Choose your country</item>
+                                      <item id="af">Afghanistan</item>
+                                      <item id="ax">Ã…land Islands</item>
+                                      <item id="al">Albania</item>
+                                      <item id="dz">Algeria</item>
+                                      <item id="as">American Samoa</item>
+                                      <item id="ao">Angola</item>
+                                      <item id="ai">Anguilla</item>
+                                      <item id="aq">Antarctica</item>
+                                      <item id="ag">Antigua and Barbuda</item>
+                                      <item id="ar">Argentina</item>
+                                      <item id="am">Armenia</item>
+                                      <item id="aw">Aruba</item>
+                                      <item id="au">Australia</item>
+                                      <item id="at">Austria</item>
+                                      <item id="az">Azerbaijan</item>
+                                      <item id="bs">Bahamas</item>
+                                      <item id="bh">Bahrain</item>
+                                      <item id="bd">Bangladesh</item>
+                                      <item id="bb">Barbados</item>
+                                      <item id="by">Belarus</item>
+                                      <item id="be">Belgium</item>
+                                      <item id="bz">Belize</item>
+                                      <item id="bj">Benin</item>
+                                      <item id="bm">Bermuda</item>
+                                      <item id="bt">Bhutan</item>
+                                      <item id="bo">Bolivia, Plurinational State of</item>
+                                      <item id="bq">Bonaire, Sint Eustatius and Saba</item>
+                                      <item id="ba">Bosnia and Herzegovina</item>
+                                      <item id="bw">Botswana</item>
+                                      <item id="bv">Bouvet Island</item>
+                                      <item id="br">Brazil</item>
+                                      <item id="io">British Indian Ocean Territory</item>
+                                      <item id="bn">Brunei Darussalam</item>
+                                      <item id="bg">Bulgaria</item>
+                                      <item id="bf">Burkina Faso</item>
+                                      <item id="bi">Burundi</item>
+                                      <item id="kh">Cambodia</item>
+                                      <item id="cm">Cameroon</item>
+                                      <item id="ca">Canada</item>
+                                      <item id="cv">Cape Verde</item>
+                                      <item id="ky">Cayman Islands</item>
+                                      <item id="cf">Central African Republic</item>
+                                      <item id="td">Chad</item>
+                                      <item id="cl">Chile</item>
+                                      <item id="cn">China</item>
+                                      <item id="cx">Christmas Island</item>
+                                      <item id="cc">Cocos (Keeling) Islands</item>
+                                      <item id="co">Colombia</item>
+                                      <item id="km">Comoros</item>
+                                      <item id="cg">Congo</item>
+                                      <item id="cd">Congo, The Democratic Republic of the</item>
+                                      <item id="ck">Cook Islands</item>
+                                      <item id="cr">Costa Rica</item>
+                                      <item id="ci">Côte D'ivoire</item>
+                                      <item id="hr">Croatia</item>
+                                      <item id="cu">Cuba</item>
+                                      <item id="cw">Curaçao</item>
+                                      <item id="cy">Cyprus</item>
+                                      <item id="cz">Czech Republic</item>
+                                      <item id="dk">Denmark</item>
+                                      <item id="dj">Djibouti</item>
+                                      <item id="dm">Dominica</item>
+                                      <item id="do">Dominican Republic</item>
+                                      <item id="ec">Ecuador</item>
+                                      <item id="eg">Egypt</item>
+                                      <item id="sv">El Salvador</item>
+                                      <item id="gq">Equatorial Guinea</item>
+                                      <item id="er">Eritrea</item>
+                                      <item id="ee">Estonia</item>
+                                      <item id="et">Ethiopia</item>
+                                      <item id="fk">Falkland Islands (Malvinas)</item>
+                                      <item id="fo">Faroe Islands</item>
+                                      <item id="fj">Fiji</item>
+                                      <item id="fi">Finland</item>
+                                      <item id="fr">France</item>
+                                      <item id="gf">French Guiana</item>
+                                      <item id="pf">French Polynesia</item>
+                                      <item id="tf">French Southern Territories</item>
+                                      <item id="ga">Gabon</item>
+                                      <item id="gm">Gambia</item>
+                                      <item id="ge">Georgia</item>
+                                      <item id="de">Germany</item>
+                                      <item id="gh">Ghana</item>
+                                      <item id="gi">Gibraltar</item>
+                                      <item id="gr">Greece</item>
+                                      <item id="gl">Greenland</item>
+                                      <item id="gd">Grenada</item>
+                                      <item id="gp">Guadeloupe</item>
+                                      <item id="gu">Guam</item>
+                                      <item id="gt">Guatemala</item>
+                                      <item id="gg">Guernsey</item>
+                                      <item id="gn">Guinea</item>
+                                      <item id="gw">Guinea-bissau</item>
+                                      <item id="gy">Guyana</item>
+                                      <item id="ht">Haiti</item>
+                                      <item id="hm">Heard Island and Mcdonald Islands</item>
+                                      <item id="va">Holy See (Vatican City State)</item>
+                                      <item id="hn">Honduras</item>
+                                      <item id="hk">Hong Kong</item>
+                                      <item id="hu">Hungary</item>
+                                      <item id="is">Iceland</item>
+                                      <item id="in">India</item>
+                                      <item id="id">Indonesia</item>
+                                      <item id="ir">Iran, Islamic Republic of</item>
+                                      <item id="iq">Iraq</item>
+                                      <item id="ie">Ireland</item>
+                                      <item id="im">Isle of Man</item>
+                                      <item id="il">Israel</item>
+                                      <item id="it">Italy</item>
+                                      <item id="jm">Jamaica</item>
+                                      <item id="jp">Japan</item>
+                                      <item id="je">Jersey</item>
+                                      <item id="jo">Jordan</item>
+                                      <item id="kz">Kazakhstan</item>
+                                      <item id="ke">Kenya</item>
+                                      <item id="ki">Kiribati</item>
+                                      <item id="kp">Korea, Democratic People's Republic of</item>
+                                      <item id="kr">Korea, Republic of</item>
+                                      <item id="kw">Kuwait</item>
+                                      <item id="kg">Kyrgyzstan</item>
+                                      <item id="la">Lao People's Democratic Republic</item>
+                                      <item id="lv">Latvia</item>
+                                      <item id="lb">Lebanon</item>
+                                      <item id="ls">Lesotho</item>
+                                      <item id="lr">Liberia</item>
+                                      <item id="ly">Libya</item>
+                                      <item id="li">Liechtenstein</item>
+                                      <item id="lt">Lithuania</item>
+                                      <item id="lu">Luxembourg</item>
+                                      <item id="mo">Macao</item>
+                                      <item id="mk">Macedonia, The Former Yugoslav Republic of</item>
+                                      <item id="mg">Madagascar</item>
+                                      <item id="mw">Malawi</item>
+                                      <item id="my">Malaysia</item>
+                                      <item id="mv">Maldives</item>
+                                      <item id="ml">Mali</item>
+                                      <item id="mt">Malta</item>
+                                      <item id="mh">Marshall Islands</item>
+                                      <item id="mq">Martinique</item>
+                                      <item id="mr">Mauritania</item>
+                                      <item id="mu">Mauritius</item>
+                                      <item id="yt">Mayotte</item>
+                                      <item id="mx">Mexico</item>
+                                      <item id="fm">Micronesia, Federated States of</item>
+                                      <item id="md">Moldova, Republic of</item>
+                                      <item id="mc">Monaco</item>
+                                      <item id="mn">Mongolia</item>
+                                      <item id="me">Montenegro</item>
+                                      <item id="ms">Montserrat</item>
+                                      <item id="ma">Morocco</item>
+                                      <item id="mz">Mozambique</item>
+                                      <item id="mm">Myanmar</item>
+                                      <item id="na">Namibia</item>
+                                      <item id="nr">Nauru</item>
+                                      <item id="np">Nepal</item>
+                                      <item id="nl">Netherlands</item>
+                                      <item id="nc">New Caledonia</item>
+                                      <item id="nz">New Zealand</item>
+                                      <item id="ni">Nicaragua</item>
+                                      <item id="ne">Niger</item>
+                                      <item id="ng">Nigeria</item>
+                                      <item id="nu">Niue</item>
+                                      <item id="nf">Norfolk Island</item>
+                                      <item id="mp">Northern Mariana Islands</item>
+                                      <item id="no">Norway</item>
+                                      <item id="om">Oman</item>
+                                      <item id="pk">Pakistan</item>
+                                      <item id="pw">Palau</item>
+                                      <item id="ps">Palestine, State of</item>
+                                      <item id="pa">Panama</item>
+                                      <item id="pg">Papua New Guinea</item>
+                                      <item id="py">Paraguay</item>
+                                      <item id="pe">Peru</item>
+                                      <item id="ph">Philippines</item>
+                                      <item id="pn">Pitcairn</item>
+                                      <item id="pl">Poland</item>
+                                      <item id="pt">Portugal</item>
+                                      <item id="pr">Puerto Rico</item>
+                                      <item id="qa">Qatar</item>
+                                      <item id="re">Réunion</item>
+                                      <item id="ro">Romania</item>
+                                      <item id="ru">Russian Federation</item>
+                                      <item id="rw">Rwanda</item>
+                                      <item id="bl">Saint Barthélemy</item>
+                                      <item id="sh">Saint Helena, Ascension and Tristan Da Cunha</item>
+                                      <item id="kn">Saint Kitts and Nevis</item>
+                                      <item id="lc">Saint Lucia</item>
+                                      <item id="mf">Saint Martin (French Part)</item>
+                                      <item id="pm">Saint Pierre and Miquelon</item>
+                                      <item id="vc">Saint Vincent and The Grenadines</item>
+                                      <item id="ws">Samoa</item>
+                                      <item id="sm">San Marino</item>
+                                      <item id="st">Sao Tome and Principe</item>
+                                      <item id="sa">Saudi Arabia</item>
+                                      <item id="sn">Senegal</item>
+                                      <item id="rs">Serbia</item>
+                                      <item id="sc">Seychelles</item>
+                                      <item id="sl">Sierra Leone</item>
+                                      <item id="sg">Singapore</item>
+                                      <item id="sx">Sint Maarten (Dutch Part)</item>
+                                      <item id="sk">Slovakia</item>
+                                      <item id="si">Slovenia</item>
+                                      <item id="sb">Solomon Islands</item>
+                                      <item id="so">Somalia</item>
+                                      <item id="za">South Africa</item>
+                                      <item id="gs">South Georgia and The South Sandwich Islands</item>
+                                      <item id="ss">South Sudan</item>
+                                      <item id="es">Spain</item>
+                                      <item id="lk">Sri Lanka</item>
+                                      <item id="sd">Sudan</item>
+                                      <item id="sr">Suriname</item>
+                                      <item id="sj">Svalbard and Jan Mayen</item>
+                                      <item id="sz">Swaziland</item>
+                                      <item id="se">Sweden</item>
+                                      <item id="ch">Switzerland</item>
+                                      <item id="sy">Syrian Arab Republic</item>
+                                      <item id="tw">Taiwan, Province of China</item>
+                                      <item id="tj">Tajikistan</item>
+                                      <item id="tz">Tanzania, United Republic of</item>
+                                      <item id="th">Thailand</item>
+                                      <item id="tl">Timor-leste</item>
+                                      <item id="tg">Togo</item>
+                                      <item id="tk">Tokelau</item>
+                                      <item id="to">Tonga</item>
+                                      <item id="tt">Trinidad and Tobago</item>
+                                      <item id="tn">Tunisia</item>
+                                      <item id="tr">Turkey</item>
+                                      <item id="tm">Turkmenistan</item>
+                                      <item id="tc">Turks and Caicos Islands</item>
+                                      <item id="tv">Tuvalu</item>
+                                      <item id="ug">Uganda</item>
+                                      <item id="ua">Ukraine</item>
+                                      <item id="ae">United Arab Emirates</item>
+                                      <item id="gb">United Kingdom</item>
+                                      <item id="us">United States</item>
+                                      <item id="um">United States Minor Outlying Islands</item>
+                                      <item id="uy">Uruguay</item>
+                                      <item id="uz">Uzbekistan</item>
+                                      <item id="vu">Vanuatu</item>
+                                      <item id="ve">Venezuela, Bolivarian Republic of</item>
+                                      <item id="vn">Vietnam</item>
+                                      <item id="vg">Virgin Islands, British</item>
+                                      <item id="vi">Virgin Islands, U.S.</item>
+                                      <item id="wf">Wallis and Futuna</item>
+                                      <item id="eh">Western Sahara</item>
+                                      <item id="ye">Yemen</item>
+                                      <item id="zm">Zambia</item>
+                                      <item id="zw">Zimbabwe</item>
+                                    </items>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="halign">center</property>
+                            <property name="valign">center</property>
+                            <property name="hexpand">False</property>
+                            <property name="vexpand">False</property>
+                            <property name="border_width">6</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkBox" id="box2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label6">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">We care about 
privacy!</property>
+                                    <property name="wrap">True</property>
+                                    <property name="max_width_chars">8</property>
+                                    <style>
+                                      <class name="textbox_title"/>
+                                    </style>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label25">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">All the data will be stored in 
a private location and will not be shared with the public or any third party.</property>
+                                    <property name="wrap">True</property>
+                                    <property name="wrap_mode">word-char</property>
+                                    <property name="width_chars">18</property>
+                                    <property name="max_width_chars">18</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="privacy_button">
+                                    <property name="label" translatable="yes">See Privacy Note</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="halign">end</property>
+                                    <property name="relief">none</property>
+                                    <signal name="clicked" handler="on_privacy_button_clicked" 
object="scrolledwindow" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="textbox"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="box14">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="spacing">4</property>
+                        <child>
+                          <object class="GtkCheckButton" id="checkbutton2">
+                            <property name="label" translatable="yes">Update Info</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>
+                            <signal name="toggled" handler="toggle_button_set_sensitive_on_toggle" 
object="validation_token" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="validation_token">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="width_chars">48</property>
+                            <property name="placeholder_text" translatable="yes">&lt;Insert update token, if 
you want to update previously sent data&gt;</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="frame4">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="border_width">6</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkLabel" id="label12">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes"> Glade User Survey</property>
+                          </object>
+                        </child>
+                        <child type="label_item">
+                          <placeholder/>
+                        </child>
+                        <style>
+                          <class name="title"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkBox" id="box20">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">12</property>
+                        <property name="margin_end">12</property>
+                        <property name="margin_right">12</property>
+                        <property name="margin_bottom">4</property>
+                        <property name="orientation">vertical</property>
+                        <property name="spacing">8</property>
+                        <child>
+                          <object class="GtkFrame" id="frame5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <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" translatable="yes">How long have you been 
programming?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box3">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">4</property>
+                                    <child>
+                                      <object class="GtkSpinButton" id="experience">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="text" translatable="yes">0</property>
+                                        <property name="adjustment">experience_adjustment</property>
+                                        <property name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="experience_unit">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="y" translatable="yes">years</item>
+                                          <item id="m" translatable="yes">months</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="experience_not_programmer">
+                                        <property name="label" translatable="yes">I am not a 
programmer</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box22">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label7">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Which programming languages do 
you prefer?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box13">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">8</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_c">
+                                        <property name="label" translatable="yes">C</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_cpp">
+                                        <property name="label" translatable="yes">C++</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_csharp">
+                                        <property name="label" translatable="yes">C#</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_java">
+                                        <property name="label" translatable="yes">Java</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_python">
+                                        <property name="label" translatable="yes">Python</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_javascript">
+                                        <property name="label" translatable="yes">Javascript</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">5</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_vala">
+                                        <property name="label" translatable="yes">Vala</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">6</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_perl">
+                                        <property name="label" translatable="yes">Perl</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">7</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="lang_other">
+                                        <property name="label" translatable="yes">Other</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">8</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame7">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box25">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label8">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">When did you start using 
Glade?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box4">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">4</property>
+                                    <child>
+                                      <object class="GtkSpinButton" id="start_using">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="text" translatable="yes">0</property>
+                                        <property name="adjustment">start_using_adjustment</property>
+                                        <property name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="start_using_unit">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="y" translatable="yes">years</item>
+                                          <item id="m" translatable="yes">months</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label21">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">ago</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame8">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box26">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="hexpand">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label22">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Which version do you normally 
use?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box10">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="halign">start</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="version">
+                                        <property name="label" translatable="yes">What is available in my 
OS</property>
+                                        <property name="name">0</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="version_stable">
+                                        <property name="label" translatable="yes">Latest stable from 
sources</property>
+                                        <property name="name">1</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>
+                                        <property name="group">version</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="version_3_8">
+                                        <property name="label" translatable="yes">3.8 for Gtk+ 2</property>
+                                        <property name="name">2</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>
+                                        <property name="group">version</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="version_master">
+                                        <property name="label" translatable="yes">Master</property>
+                                        <property name="name">3</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>
+                                        <property name="group">version</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkBox" id="box23">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkRadioButton" id="version_other_radio">
+                                            <property name="label" translatable="yes">Other</property>
+                                            <property name="name">4</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>
+                                            <property name="group">version</property>
+                                            <signal name="toggled" 
handler="toggle_button_set_visible_on_toggle" object="version_other" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkComboBoxText" id="version_other">
+                                            <property name="can_focus">False</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame9">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box27">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label9">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">On what operating 
systems?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkGrid" id="grid2">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="os_linux">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="0" translatable="yes">distribution</item>
+                                          <item id="1" translatable="yes">Arch Linux</item>
+                                          <item id="2" translatable="yes">Debian</item>
+                                          <item id="3" translatable="yes">openSUSE</item>
+                                          <item id="4" translatable="yes">Fedora</item>
+                                          <item id="5" translatable="yes">Gentoo</item>
+                                          <item id="6" translatable="yes">Mandriva</item>
+                                          <item id="7" translatable="yes">Red Hat</item>
+                                          <item id="8" translatable="yes">Turbolinux</item>
+                                          <item id="9" translatable="yes">Ubuntu</item>
+                                          <item id="10" translatable="yes">Xandros</item>
+                                          <item id="11" translatable="yes">Oracle</item>
+                                          <item id="-1" translatable="yes">Other</item>
+                                        </items>
+                                      </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>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="os_bsd">
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="0" translatable="yes">variant</item>
+                                          <item id="1" translatable="yes">FreeBSD</item>
+                                          <item id="2" translatable="yes">OpenBSD</item>
+                                          <item id="3" translatable="yes">NetBSD</item>
+                                          <item id="-1" translatable="yes">Other</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="os_solaris">
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="0" translatable="yes">variant</item>
+                                          <item id="1" translatable="yes">Oracle Solaris</item>
+                                          <item id="2" translatable="yes">OpenSolaris</item>
+                                          <item id="3" translatable="yes">illumos</item>
+                                          <item id="-1" translatable="yes">Other</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">4</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" id="os_other">
+                                        <property name="can_focus">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">5</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="os_windows">
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="0" translatable="yes">version</item>
+                                          <item id="1" translatable="yes">2000</item>
+                                          <item id="2" translatable="yes">XP</item>
+                                          <item id="3" translatable="yes">2003</item>
+                                          <item id="4" translatable="yes">Vista</item>
+                                          <item id="5" translatable="yes">2008</item>
+                                          <item id="6" translatable="yes">7</item>
+                                          <item id="7" translatable="yes">8</item>
+                                          <item id="8" translatable="yes">2012</item>
+                                          <item id="-1" translatable="yes">Other</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkComboBoxText" id="os_osx">
+                                        <property name="can_focus">False</property>
+                                        <property name="active">0</property>
+                                        <items>
+                                          <item id="0" translatable="yes">version</item>
+                                          <item id="1" translatable="yes">Tiger</item>
+                                          <item id="2" translatable="yes">Leopard</item>
+                                          <item id="3" translatable="yes">Snow Leopard</item>
+                                          <item id="4" translatable="yes">Lion</item>
+                                          <item id="5" translatable="yes">Mountain Lion</item>
+                                          <item id="6" translatable="yes">Mavericks</item>
+                                          <item id="-1" translatable="yes">Other</item>
+                                        </items>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">3</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="os">
+                                        <property name="label" translatable="yes">GNU/Linux</property>
+                                        <property name="name">0</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>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_linux" swapped="no"/>
+                                      </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="GtkRadioButton" id="os_bsd_radiobutton">
+                                        <property name="label" translatable="yes">BSD</property>
+                                        <property name="name">1</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>
+                                        <property name="group">os</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_bsd" swapped="no"/>
+                                      </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="GtkRadioButton" id="os_windows_radiobutton">
+                                        <property name="label" translatable="yes">Windows</property>
+                                        <property name="name">2</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>
+                                        <property name="group">os</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_windows" swapped="no"/>
+                                      </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="GtkRadioButton" id="os_osx_radiobutton">
+                                        <property name="label" translatable="yes">Mac OSX</property>
+                                        <property name="name">3</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>
+                                        <property name="group">os</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_osx" swapped="no"/>
+                                      </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="GtkRadioButton" id="os_solaris_radiobutton">
+                                        <property name="label" translatable="yes">Solaris</property>
+                                        <property name="name">4</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>
+                                        <property name="group">os</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_solaris" swapped="no"/>
+                                      </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="GtkRadioButton" id="os_other_radiobutton">
+                                        <property name="label" translatable="yes">Other</property>
+                                        <property name="name">5</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>
+                                        <property name="group">os</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="os_other" swapped="no"/>
+                                      </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>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame10">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box28">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label10">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">How often do you use 
it?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box6">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="halign">start</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq">
+                                        <property name="label" translatable="yes">Every day</property>
+                                        <property name="name">0</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq_few_week_radiobutton">
+                                        <property name="label" translatable="yes">Few days a week</property>
+                                        <property name="name">1</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>
+                                        <property name="group">freq</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq_week_radiobutton">
+                                        <property name="label" translatable="yes">Every week</property>
+                                        <property name="name">2</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>
+                                        <property name="group">freq</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq_few_month_radiobutton">
+                                        <property name="label" translatable="yes">A few times a 
months</property>
+                                        <property name="name">3</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>
+                                        <property name="group">freq</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq_month_radiobutton">
+                                        <property name="label" translatable="yes">Once a month</property>
+                                        <property name="name">4</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>
+                                        <property name="group">freq</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="freq_few_year_radiobutton">
+                                        <property name="label" translatable="yes">A few times a 
year</property>
+                                        <property name="name">5</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>
+                                        <property name="group">freq</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">5</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">6</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame11">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <object class="GtkBox" id="box29">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label11">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">What level of Glade user would 
you say you are?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box5">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">4</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="user_level">
+                                        <property name="label" translatable="yes">Beginner</property>
+                                        <property name="name">0</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="user_intermediate_radiobutton">
+                                        <property name="label" translatable="yes">Intermediate</property>
+                                        <property name="name">1</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>
+                                        <property name="group">user_level</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="user_advanced_radiobutton">
+                                        <property name="label" translatable="yes">Advanced</property>
+                                        <property name="name">2</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>
+                                        <property name="group">user_level</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">7</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame12">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box30">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label13">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Under what kind of license(s) 
do you release the software you used Glade to create?</property>
+                                    <property name="wrap">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkGrid" id="grid3">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="soft_free">
+                                        <property name="label" translatable="yes">Free software</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="soft_open">
+                                        <property name="label" translatable="yes">Open source 
software</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">1</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="soft_commercial">
+                                        <property name="label" translatable="yes">Commercial/Closed 
software</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="soft_none">
+                                        <property name="label" translatable="yes">None - distributed 
internally</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">1</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">8</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame15">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <object class="GtkBox" id="box33">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label23">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">In what field(s) is the 
software you used Glade to create generally used?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkGrid" id="grid4">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkCheckButton" id="field_academic">
+                                        <property name="label" translatable="yes">Academic</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="field_embedded">
+                                        <property name="label" translatable="yes">Embedded 
applications</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">1</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="field_accounting">
+                                        <property name="label" translatable="yes">Accounting</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="field_desktop">
+                                        <property name="label" translatable="yes">Desktop 
applications</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="field_educational">
+                                        <property name="label" translatable="yes">Educational</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>
+                                    <child>
+                                      <object class="GtkCheckButton" id="field_medical">
+                                        <property name="label" translatable="yes">Medical</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">1</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="field_industrial">
+                                        <property name="label" translatable="yes">Industrial 
applications</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">1</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" id="field_scientific">
+                                        <property name="label" translatable="yes">Scientific</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">1</property>
+                                        <property name="top_attach">3</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkBox" id="box24">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="spacing">4</property>
+                                        <child>
+                                          <object class="GtkCheckButton" id="field_other_checkbox">
+                                            <property name="label" translatable="yes">Other</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>
+                                            <signal name="toggled" 
handler="toggle_button_set_visible_on_toggle" object="field_other" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" id="field_other">
+                                            <property name="can_focus">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">4</property>
+                                        <property name="width">2</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">9</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame16">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <object class="GtkBox" id="box34">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label14">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">What aspect of the software 
needs the most improvement?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="shadow_type">in</property>
+                                    <child>
+                                      <object class="GtkTextView" id="improvement">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="accepts_tab">False</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">10</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame17">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box35">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkLabel" id="label15">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">In your opinion what is the 
biggest problem with Glade?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box7">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="halign">start</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem">
+                                        <property name="label" translatable="yes">Lack of 
documentation</property>
+                                        <property name="name">0</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="opacity">0.9882352941176471</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem_support_radiobutton">
+                                        <property name="label" translatable="yes">Lack of professional 
support</property>
+                                        <property name="name">1</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">problem</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem_training_radiobutton">
+                                        <property name="label" translatable="yes">Lack of professional 
training</property>
+                                        <property name="name">2</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">problem</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem_publicity_radiobutton">
+                                        <property name="label" translatable="yes">Lack of 
publicity/exposure</property>
+                                        <property name="name">3</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">problem</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem_binaries_radiobutton">
+                                        <property name="label" translatable="yes">Lack of official binary 
releases for other OS (Win32, OSX)</property>
+                                        <property name="name">4</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">problem</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="problem_other_radiobutton">
+                                        <property name="label" translatable="yes">Other</property>
+                                        <property name="name">5</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="halign">start</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">problem</property>
+                                        <signal name="toggled" handler="toggle_button_set_visible_on_toggle" 
object="problem_other_scrolledwindow" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">5</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkScrolledWindow" id="problem_other_scrolledwindow">
+                                    <property name="can_focus">True</property>
+                                    <property name="shadow_type">in</property>
+                                    <child>
+                                      <object class="GtkTextView" id="problem_other">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="accepts_tab">False</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">11</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame13">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box31">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <property name="spacing">4</property>
+                                <child>
+                                  <object class="GtkLabel" id="label16">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Have you ever encountered a 
bug?</property>
+                                    <property name="angle">0.059999998658895493</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box21">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">4</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="bug_yes">
+                                        <property name="label" translatable="yes">Yes</property>
+                                        <property name="name">1</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>
+                                        <property name="group">bug</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="bug">
+                                        <property name="label" translatable="yes">No</property>
+                                        <property name="name">0</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame14">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkBox" id="box32">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <property name="spacing">4</property>
+                                <child>
+                                  <object class="GtkLabel" id="label17">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">If so, did you file a bug 
report?</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="box19">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">4</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="bugzilla_yes">
+                                        <property name="label" translatable="yes">Yes</property>
+                                        <property name="name">1</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>
+                                        <property name="group">bugzilla</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="bugzilla">
+                                        <property name="label" translatable="yes">No</property>
+                                        <property name="name">0</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="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">13</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="frame18">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <object class="GtkBox" id="box36">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="orientation">vertical</property>
+                                <child>
+                                  <object class="GtkBox" id="box17">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label18">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Have you ever thought 
about contributing?</property>
+                                        <style>
+                                          <class name="survey_question"/>
+                                        </style>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkBox" id="box18">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="spacing">4</property>
+                                        <child>
+                                          <object class="GtkRadioButton" id="contributing_yes">
+                                            <property name="label" translatable="yes">Yes</property>
+                                            <property name="name">1</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>
+                                            <property name="group">contributing</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkRadioButton" id="contributing">
+                                            <property name="label" translatable="yes">No</property>
+                                            <property name="name">0</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>
+                                            <signal name="toggled" 
handler="toggle_button_set_visible_on_toggle" object="why_not_box" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkBox" id="why_not_box">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="orientation">vertical</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label20">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Why not?</property>
+                                        <style>
+                                          <class name="survey_question"/>
+                                        </style>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkScrolledWindow" id="scrolledwindow4">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="shadow_type">in</property>
+                                        <child>
+                                          <object class="GtkTextView" id="contributing_whynot">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="accepts_tab">False</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label_item">
+                              <placeholder/>
+                            </child>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">14</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label26">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Comments:</property>
+                            <style>
+                              <class name="survey_question"/>
+                            </style>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">15</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkTextView" id="comments">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="accepts_tab">False</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">16</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="frame19">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_top">12</property>
+                        <property name="border_width">6</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkBox" id="box8">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="orientation">vertical</property>
+                            <child>
+                              <object class="GtkLabel" id="label28">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Privacy Note:</property>
+                                <property name="wrap">True</property>
+                                <style>
+                                  <class name="textbox_title"/>
+                                </style>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label29">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="halign">center</property>
+                                <property name="valign">start</property>
+                                <property name="hexpand">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">The sole purpose of this survey is 
to better know our user base.
+Your email address will be used to uniquely identify you as a Glade user and send you back a modification 
token in case you want to modify something or add extra comments.
+Only statistics compiled from the whole dataset will be shared publicly.
+Individual data will be stored in a private database and it will not be shared with the public or any other 
third party. </property>
+                                <property name="wrap">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                        <child type="label_item">
+                          <placeholder/>
+                        </child>
+                        <style>
+                          <class name="textbox"/>
+                        </style>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">5</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <style>
+              <class name="survey_page"/>
+            </style>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkBox" id="box9">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="spacing">4</property>
+                <child>
+                  <object class="GtkSpinner" id="net_spinner">
+                    <property name="can_focus">False</property>
+                    <property name="active">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="status_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="xalign">0</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+                <property name="secondary">True</property>
+                <property name="non_homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancel_button">
+                <property name="label" translatable="yes">Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="submit_button">
+                <property name="label" translatable="yes">Submit</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Information will be sent to 
https://people.gnome.org/~jpu</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">cancel_button</action-widget>
+      <action-widget response="-10">submit_button</action-widget>
+    </action-widgets>
+  </template>
+</interface>
diff --git a/src/glade-registration.h b/src/glade-registration.h
new file mode 100644
index 0000000..eb65006
--- /dev/null
+++ b/src/glade-registration.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 Juan Pablo Ugarte.
+ *
+ * This program is free software; you can 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.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *   Juan Pablo Ugarte <juanpablougarte gmail com>
+ */
+
+#ifndef _GLADE_REGISTRATION_H_
+#define _GLADE_REGISTRATION_H_
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GLADE_TYPE_REGISTRATION             (glade_registration_get_type ())
+#define GLADE_REGISTRATION(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_REGISTRATION, 
GladeRegistration))
+#define GLADE_REGISTRATION_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_REGISTRATION, 
GladeRegistrationClass))
+#define GLADE_IS_REGISTRATION(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_REGISTRATION))
+#define GLADE_IS_REGISTRATION_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_REGISTRATION))
+#define GLADE_REGISTRATION_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_REGISTRATION, 
GladeRegistrationClass))
+
+typedef struct _GladeRegistrationClass GladeRegistrationClass;
+typedef struct _GladeRegistration GladeRegistration;
+typedef struct _GladeRegistrationPrivate GladeRegistrationPrivate;
+
+
+struct _GladeRegistrationClass
+{
+  GtkDialogClass parent_class;
+};
+
+struct _GladeRegistration
+{
+  GtkDialog parent_instance;
+
+  GladeRegistrationPrivate *priv;
+};
+
+GType glade_registration_get_type (void) G_GNUC_CONST;
+
+GtkWidget *glade_registration_new (void);
+
+G_END_DECLS
+
+#endif /* _GLADE_REGISTRATION_H_ */
+
diff --git a/src/glade-resources.gresource.xml b/src/glade-resources.gresource.xml
index 24462f3..4447f39 100644
--- a/src/glade-resources.gresource.xml
+++ b/src/glade-resources.gresource.xml
@@ -3,5 +3,7 @@
   <gresource prefix="/org/gnome/glade">
     <file compressed="true" preprocess="xml-stripblanks">glade.glade</file>
     <file compressed="true" preprocess="xml-stripblanks">glade-preferences.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">glade-registration.glade</file>
+    <file compressed="true">glade-registration.css</file>
   </gresource>
 </gresources>
diff --git a/src/glade-window.c b/src/glade-window.c
index 8b93abd..64b4961 100644
--- a/src/glade-window.c
+++ b/src/glade-window.c
@@ -30,6 +30,7 @@
 #include "glade-close-button.h"
 #include "glade-resources.h"
 #include "glade-preferences.h"
+#include "glade-registration.h"
 
 #include <gladeui/glade.h>
 #include <gladeui/glade-popup.h>
@@ -151,6 +152,8 @@ struct _GladeWindowPrivate
   GtkWidget *left_paned;
   GtkWidget *right_paned;
 
+  GtkWidget *registration;      /* Registration and user survey dialog */
+  
   GdkRectangle position;
   ToolDock docks[N_DOCKS];
 };
@@ -2538,6 +2541,18 @@ add_project (GladeWindow *window, GladeProject *project, gboolean for_file)
   gtk_widget_show (GTK_WIDGET (priv->editor));
 }
 
+static void
+on_registration_action_activate (GtkAction   *action,
+                                 GladeWindow *window)
+{
+  GladeWindowPrivate *priv = window->priv;
+
+  if (!priv->registration)
+    priv->registration = glade_registration_new ();
+
+  gtk_window_present (GTK_WINDOW (priv->registration));
+}
+
 void
 glade_window_new_project (GladeWindow *window)
 {
@@ -2700,11 +2715,8 @@ glade_window_dispose (GObject *object)
 {
   GladeWindow *window = GLADE_WINDOW (object);
 
-  if (window->priv->app)
-    {
-      g_object_unref (window->priv->app);
-      window->priv->app = NULL;
-    }
+  g_clear_object (&window->priv->app);
+  g_clear_object (&window->priv->registration);
 
   G_OBJECT_CLASS (glade_window_parent_class)->dispose (object);
 }
@@ -3405,6 +3417,7 @@ glade_window_class_init (GladeWindowClass *klass)
   gtk_widget_class_bind_template_callback (widget_class, on_about_action_activate);
   gtk_widget_class_bind_template_callback (widget_class, on_reference_action_activate);
   gtk_widget_class_bind_template_callback (widget_class, on_preferences_action_activate);
+  gtk_widget_class_bind_template_callback (widget_class, on_registration_action_activate);
 
   gtk_widget_class_bind_template_callback (widget_class, on_open_recent_action_item_activated);
   gtk_widget_class_bind_template_callback (widget_class, on_use_small_icons_action_toggled);
diff --git a/src/glade.glade b/src/glade.glade
index 3f3d8d5..d58d3d3 100644
--- a/src/glade.glade
+++ b/src/glade.glade
@@ -2,7 +2,7 @@
 <!-- Generated with glade 3.16.0 
 
 Glade - A user interface designer for GTK+ and GNOME.
-Copyright (C) 2012 Juan Pablo Ugarte
+Copyright (C) 2012-2014 Juan Pablo Ugarte
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
@@ -424,6 +424,13 @@ Andreas Nilsson &lt;andreas andreasn se&gt;</property>
         <signal name="item-activated" handler="on_open_recent_action_item_activated" swapped="no"/>
       </object>
     </child>
+    <child>
+      <object class="GtkAction" id="registration_action">
+        <property name="label" translatable="yes">Registration &amp; User survey</property>
+        <property name="tooltip" translatable="yes">Help us improve Glade by registering and completing the 
user survey!</property>
+        <signal name="activate" handler="on_registration_action_activate" swapped="no"/>
+      </object>
+    </child>
   </object>
   <template class="GladeWindow" parent="GtkWindow">
     <property name="can_focus">False</property>
@@ -857,6 +864,15 @@ Andreas Nilsson &lt;andreas andreasn se&gt;</property>
                       </object>
                     </child>
                     <child>
+                      <object class="GtkMenuItem" id="registration_menuitem">
+                        <property name="use_action_appearance">True</property>
+                        <property name="related_action">registration_action</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
                       <object class="GtkSeparatorMenuItem" id="separatormenuitem5">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>


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