summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-07-10 18:01:37 -0300
committerAlberto Fanjul <albertofanjul@gmail.com>2020-07-11 03:07:09 +0200
commit000316e277a9615afff3f7bc84ac7b02eccd6c74 (patch)
treed12de0a758f9a90dac8732cc0c26d5aa624eaaf0
parent0443c073cd27225b6a2f93b2afc0809704ec011f (diff)
downloadglade-wip/alban/rework-survey-3-36.tar.gz
GladeRegistration: rework surveywip/alban/rework-survey-3-36
- Implement survey using new backend at surveys.gnome.org - Save state in config file and do not alow to send a new survey if it was already completed. - Move buttons to headerbar. - Update mailing list link and fix automatic subscription. Fix issue #433 "Survey and registration"
-rw-r--r--src/glade-registration.c781
-rw-r--r--src/glade-registration.css5
-rw-r--r--src/glade-registration.glade3915
-rw-r--r--src/meson.build1
4 files changed, 2528 insertions, 2174 deletions
diff --git a/src/glade-registration.c b/src/glade-registration.c
index 29fac50c..400f8c91 100644
--- a/src/glade-registration.c
+++ b/src/glade-registration.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014 Juan Pablo Ugarte.
+ * Copyright (C) 2014, 2020 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
@@ -26,27 +26,32 @@
#include <gladeui/glade.h>
#include <glib/gi18n.h>
-#define CONFIG_GROUP "User & Survey"
-
-/* translators: Email subject sent to the user after completing the survey */
-#define MAIL_SUBJECT _("Glade User Survey")
-/* translators: Email body sent to the user after completing the survey */
-#define MAIL_BODY _("Thank you for taking Glade Users survey, we appreciate it!\n\nTo validate this email address open the following link\n\nhttps://people.gnome.org/~jpu/glade/registration.php?email=$email&validation_token=$new_validation_token\n\nIn case you want to change or update the survey, your current update token is:\n$new_token\n\nCheers\n\n The Glade team\n")
-
-/* translators: Email subject sent to the user after updating the survey */
-#define UPDATE_MAIL_SUBJECT _("Glade User Survey (update)")
-/* translators: Email body sent to the user after updating the survey */
-#define UPDATE_MAIL_BODY _("Thank you for updating your Glade Users survey data, we appreciate it!\n\nIn case you want to change something again, your current update token is:\n$new_token\n\nCheers\n\n The Glade team\n")
+#define USER_SURVEY_CONFIG_GROUP "User & Survey"
+#define SURVEY_DATA_CONFIG_GROUP "Survey Data"
struct _GladeRegistrationPrivate
{
+ GKeyFile *config;
+ gchar *user_agent;
+
GtkWidget *infobar;
+ GtkWidget *statusbar;
GtkWidget *net_spinner;
GtkLabel *infobar_label;
GtkLabel *status_label;
+ GtkWidget *submit_button;
+ GtkContainer *user_survey_box;
+
GladeHTTP *http;
GladeHTTP *sub_http;
GCancellable *cancellable;
+ GCancellable *sub_cancellable;
+
+ /* HTML Form parsing */
+ GHashTable *hidden_inputs;
+ gboolean form_loaded;
+ GHashTable *sub_hidden_inputs;
+ gboolean sub_form_loaded;
/* Form widgets */
@@ -59,9 +64,6 @@ struct _GladeRegistrationPrivate
GtkWidget *contact_website;
GtkWidget *subscribe;
- GtkWidget *update_token_checkbutton;
- GtkWidget *update_token;
-
GtkWidget *experience;
GtkWidget *experience_unit;
GtkWidget *experience_not_programmer;
@@ -73,6 +75,7 @@ struct _GladeRegistrationPrivate
GtkWidget *lang_javascript;
GtkWidget *lang_vala;
GtkWidget *lang_perl;
+ GtkWidget *lang_rust;
GtkWidget *lang_other;
GtkWidget *start_using;
GtkWidget *start_using_unit;
@@ -120,6 +123,12 @@ enum
};
static void
+glade_registration_parse_response_form (GladeRegistration *registration,
+ const gchar *response,
+ const gchar *form_action,
+ GHashTable *data);
+
+static void
string_append_input_key_value_tuple (GString *string,
const gchar *name,
GtkWidget *input)
@@ -155,8 +164,16 @@ string_append_input_key_value_tuple (GString *string,
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);
+ else if (GTK_IS_TOGGLE_BUTTON (input) &&
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (input)))
+ g_string_append_c (string, 'Y');
+}
+
+static void
+append_hidden_inputs (gpointer key, gpointer value, gpointer user_data)
+{
+ GString *str = user_data;
+ g_string_append_printf (str, "&%s=%s", (gchar *)key, (gchar *)value);
}
static void
@@ -177,19 +194,17 @@ glade_registration_show_message (GladeRegistration *registration,
if (format)
{
+ g_autofree gchar *string;
va_list args;
- gchar *string;
va_start (args, format);
string = g_strdup_vprintf (format, args);
va_end (args);
- gtk_label_set_text (priv->infobar_label, string);
-
- g_free (string);
+ gtk_label_set_markup (priv->infobar_label, string);
}
else
- gtk_label_set_text (priv->infobar_label, "");
+ gtk_label_set_markup (priv->infobar_label, "");
/* Only show the infobar if the dialog is visible */
if (gtk_widget_is_visible (GTK_WIDGET (registration)))
@@ -265,30 +280,51 @@ glade_registration_http_post (GladeRegistration *registration,
GString *content)
{
const gchar *lang = pango_language_to_string (pango_language_get_default ());
+ g_autofree gchar *cookies = glade_http_get_cookies (http);
glade_http_request_send_async (http, cancellable,
"POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
- "User-Agent: Glade/"PACKAGE_VERSION" (%s; Gtk+ %d.%d.%d; glib %d.%d.%d; %s)\r\n"
+ "User-Agent: %s\r\n"
"Connection: close\r\n"
- "Accept: text/plain\r\n"
+ "Accept: text/html\r\n"
"Accept-Language: %s\r\n"
+ "Cookie: %s\r\n"
+ "Origin: https://%s\r\n"
+ "Referer: https://%s%s\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: %"G_GSIZE_FORMAT"\r\n"
"\r\n%s",
- url, /* POST url */
- glade_http_get_host (http), /* Host */
- get_gdk_backend (GTK_WIDGET (registration)), /* User-Agent backend */
- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, /* User-Agent gtk version */
- glib_major_version, glib_minor_version, glib_micro_version,/* User-Agent glib version */
- lang, /* User-Agent language */
- lang, /* Accept-Language */
- content->len, /* Content-length */
- content->str); /* content */
+ url, /* POST url */
+ glade_http_get_host (http), /* Host */
+ registration->priv->user_agent, /* User-Agent */
+ lang, /* Accept-Language */
+ cookies, /* Cookie */
+ glade_http_get_host (http), /* Origin */
+ glade_http_get_host (http), /* Referer */
+ url, /* Referer */
+ content->len, /* Content-length */
+ content->str); /* content */
}
-
-#define append_input_tuple(s,i) string_append_input_key_value_tuple (s, #i, priv->i)
+static void
+glade_registration_http_get (GladeRegistration *registration,
+ GladeHTTP *http,
+ GCancellable *cancellable,
+ const gchar *url)
+{
+ glade_http_request_send_async (http, cancellable,
+ "GET %s HTTP/1.1\r\n"
+ "Host: %s\r\n"
+ "User-Agent: %s\r\n"
+ "Connection: close\r\n"
+ "Accept: text/html\r\n"
+ "Content-Length: 0\r\n"
+ "\r\n",
+ url, /* POST url */
+ glade_http_get_host (http), /* Host */
+ registration->priv->user_agent); /* User-Agent */
+}
static void
on_http_status (GladeHTTP *http,
@@ -296,7 +332,7 @@ on_http_status (GladeHTTP *http,
GError *error,
GladeRegistration *registration)
{
- gchar *text = NULL;
+ g_autofree gchar *text = NULL;
switch (status)
{
@@ -322,73 +358,181 @@ on_http_status (GladeHTTP *http,
gtk_label_set_text (registration->priv->status_label, text ? text : "");
gtk_widget_set_visible (registration->priv->net_spinner, text != NULL);
- g_free (text);
+ gtk_widget_set_visible (registration->priv->statusbar, text != NULL);
}
+static void
+glade_registration_subscribe_email (GladeRegistration *registration)
+{
+ GladeRegistrationPrivate *priv = registration->priv;
+ g_autoptr(GString) post = g_string_new ("");
-static void
+ string_append_input_key_value_tuple (post, "email", priv->email);
+ string_append_input_key_value_tuple (post, "fullname", priv->name);
+
+ /* Append magic token */
+ g_hash_table_foreach (priv->sub_hidden_inputs, append_hidden_inputs, post);
+
+ glade_registration_http_post (registration, priv->sub_http, NULL,
+ "/mailman/subscribe/glade-users-list",
+ post);
+}
+
+static void
on_subscribe_http_request_done (GladeHTTP *http,
gint code,
- const gchar **headers,
- const gchar **values,
const gchar *response,
GladeRegistration *registration)
{
- GtkDialog *dialog;
- GtkWidget *button;
-
- if (code == 200)
- return;
+ GladeRegistrationPrivate *priv = registration->priv;
- dialog = GTK_DIALOG (gtk_message_dialog_new (GTK_WINDOW (registration),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
- "%s",
- _("Sorry, automatic subscription to Glade Users mailing list failed")));
-
- button = gtk_link_button_new_with_label ("http://lists.ximian.com/mailman/listinfo/glade-users",
- _("Open Glade Users Website"));
- gtk_widget_show (button);
- gtk_dialog_add_action_widget (dialog, button, GTK_RESPONSE_CANCEL);
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (gtk_dialog_get_action_area (dialog)), button, TRUE);
+ switch (code)
+ {
+ case 100:
+ /* Ignore Continue HTTP response */
+ break;
+ case 200:
+ {
+ if (!priv->sub_form_loaded)
+ {
+ /* Get magic token from html form */
+ glade_registration_parse_response_form (registration,
+ response,
+ "subscribe/glade-users-list",
+ priv->sub_hidden_inputs);
+ priv->sub_form_loaded = TRUE;
+
+ /* Now that we have the magic token we can make the actual POST */
+ glade_registration_subscribe_email (registration);
+ }
+ else
+ glade_registration_show_message (registration, GTK_MESSAGE_INFO, "%s",
+ _("Your subscription to the users list has been received!\nCheck you email!"));
+ }
+ break;
+ default:
+ {
+#define SUBSCRIPTION_FAILED "Sorry, automatic subscription to Glade Users mailing list failed.\n\
+<a href=\"https://mail.gnome.org/mailman/listinfo/glade-users-list\">Open Glade Users Website</a>"
- gtk_dialog_run (dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
+ "%s\nHTTP response %d",
+ _(SUBSCRIPTION_FAILED),
+ code);
+ }
+ break;
+ }
}
static void
-glade_registration_subscribe_email (GladeRegistration *registration)
+glade_registration_clear (GladeRegistrationPrivate *priv)
{
- GladeRegistrationPrivate *priv = registration->priv;
- GString *post;
-
- if (!priv->sub_http)
- {
- priv->sub_http = glade_http_new ("lists.ximian.com", 80, FALSE);
- g_signal_connect_object (priv->sub_http, "request-done",
- G_CALLBACK (on_subscribe_http_request_done),
- registration, 0);
- }
+ g_clear_object (&priv->cancellable);
+ g_clear_object (&priv->sub_cancellable);
- post = g_string_new ("");
+ priv->cancellable = g_cancellable_new ();
+ priv->sub_cancellable = g_cancellable_new ();
- string_append_input_key_value_tuple (post, "email", priv->email);
- string_append_input_key_value_tuple (post, "fullname", priv->name);
+ gtk_widget_hide (priv->infobar);
+ g_hash_table_remove_all (priv->hidden_inputs);
+ g_hash_table_remove_all (priv->sub_hidden_inputs);
+ priv->form_loaded = FALSE;
+ priv->sub_form_loaded = FALSE;
+}
- glade_registration_http_post (registration, priv->sub_http, NULL,
- "/mailman/subscribe/glade-users",
- post);
+#define ADD_USER_INPUT(p,q,i) string_append_input_key_value_tuple (p, "311811X51X"q, priv->i)
+#define ADD_SURVEY_INPUT(p,q,i) string_append_input_key_value_tuple (p, "311811X57X"q, priv->i)
- g_string_free (post, TRUE);
+static void
+glade_registration_submit_survey (GladeRegistration *registration)
+{
+ GladeRegistrationPrivate *priv = registration->priv;
+ g_autoptr(GString) post;
+
+ post = g_string_new ("move=movesubmit&ajax=off&311811X51X843=");
+
+ /* User Agent */
+ g_string_append_uri_escaped (post, priv->user_agent, NULL, FALSE);
+
+ /* User info */
+ ADD_USER_INPUT (post, "849", name);
+ ADD_USER_INPUT (post, "852", email);
+ ADD_USER_INPUT (post, "1074", country_id);
+ ADD_USER_INPUT (post, "858", city);
+ ADD_USER_INPUT (post, "861", contact_type);
+ ADD_USER_INPUT (post, "864", contact_name);
+ ADD_USER_INPUT (post, "867", contact_website);
+
+ /* Survey data */
+ ADD_SURVEY_INPUT (post, "873", experience);
+ ADD_SURVEY_INPUT (post, "879", experience_unit);
+ ADD_SURVEY_INPUT (post, "882", experience_not_programmer);
+ ADD_SURVEY_INPUT (post, "885c", lang_c);
+ ADD_SURVEY_INPUT (post, "885cpp", lang_cpp);
+ ADD_SURVEY_INPUT (post, "885csharp", lang_csharp);
+ ADD_SURVEY_INPUT (post, "885java", lang_java);
+ ADD_SURVEY_INPUT (post, "885python", lang_python);
+ ADD_SURVEY_INPUT (post, "885javascript", lang_javascript);
+ ADD_SURVEY_INPUT (post, "885vala", lang_vala);
+ ADD_SURVEY_INPUT (post, "885perl", lang_perl);
+ ADD_SURVEY_INPUT (post, "885rust", lang_rust);
+ ADD_SURVEY_INPUT (post, "885other", lang_other);
+ ADD_SURVEY_INPUT (post, "915", start_using);
+ ADD_SURVEY_INPUT (post, "918", start_using_unit);
+ ADD_SURVEY_INPUT (post, "921", version);
+ ADD_SURVEY_INPUT (post, "924", version_other);
+ ADD_SURVEY_INPUT (post, "927", os);
+
+ ADD_SURVEY_INPUT (post, "930", os_linux);
+ ADD_SURVEY_INPUT (post, "933", os_bsd);
+ ADD_SURVEY_INPUT (post, "936", os_windows);
+ ADD_SURVEY_INPUT (post, "939", os_osx);
+ ADD_SURVEY_INPUT (post, "942", os_solaris);
+
+ ADD_SURVEY_INPUT (post, "945", os_other);
+
+ ADD_SURVEY_INPUT (post, "948", freq);
+ ADD_SURVEY_INPUT (post, "951", user_level);
+
+ ADD_SURVEY_INPUT (post, "954free", soft_free);
+ ADD_SURVEY_INPUT (post, "954open", soft_open);
+ ADD_SURVEY_INPUT (post, "954commercial", soft_commercial);
+ ADD_SURVEY_INPUT (post, "954none", soft_none);
+
+ ADD_SURVEY_INPUT (post, "969academic", field_academic);
+ ADD_SURVEY_INPUT (post, "969accounting", field_accounting);
+ ADD_SURVEY_INPUT (post, "969desktop", field_desktop);
+ ADD_SURVEY_INPUT (post, "969educational", field_educational);
+ ADD_SURVEY_INPUT (post, "969embedded", field_embedded);
+ ADD_SURVEY_INPUT (post, "969medical", field_medical);
+ ADD_SURVEY_INPUT (post, "969industrial", field_industrial);
+ ADD_SURVEY_INPUT (post, "969scientific", field_scientific);
+
+ ADD_SURVEY_INPUT (post, "1134", field_other);
+
+ ADD_SURVEY_INPUT (post, "999", improvement);
+ ADD_SURVEY_INPUT (post, "1002", problem);
+ ADD_SURVEY_INPUT (post, "1140", problem_other);
+ ADD_SURVEY_INPUT (post, "1005", bug);
+
+ ADD_SURVEY_INPUT (post, "1008", bugzilla);
+ ADD_SURVEY_INPUT (post, "1011", contributing);
+ ADD_SURVEY_INPUT (post, "1014", contributing_whynot);
+ ADD_SURVEY_INPUT (post, "1017", comments);
+
+ /* Append hidden inputs */
+ g_hash_table_foreach (priv->hidden_inputs, append_hidden_inputs, post);
+
+ glade_registration_http_post (GLADE_REGISTRATION (registration),
+ priv->http,
+ priv->cancellable,
+ "/index.php/311811",
+ post);
}
-#define append_input_tuple(s,i) string_append_input_key_value_tuple (s, #i, priv->i)
-
-static void
+static void
on_http_request_done (GladeHTTP *http,
gint code,
- const gchar **headers,
- const gchar **values,
const gchar *response,
GladeRegistration *registration)
{
@@ -399,157 +543,235 @@ on_http_request_done (GladeHTTP *http,
break;
case 200:
{
- const gchar *status = NULL, *message = _("Internal server error");
GladeRegistrationPrivate *priv = registration->priv;
- gint i;
- for (i = 0; headers[i]; i++)
+ if (!priv->form_loaded)
{
- 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];
+ glade_registration_parse_response_form (registration,
+ response,
+ "311811",
+ priv->hidden_inputs);
+ priv->form_loaded = TRUE;
+
+ /* Now that we have the magic token we can make the actual POST */
+ glade_registration_submit_survey (registration);
+ return;
}
- if (status == NULL)
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- "%s", message);
- else if (g_strcmp0 (status, "ok") == 0)
+ if (g_strstr_len (response, -1, "GLADE_USER_REGISTRATION_SURVEY_OK") != NULL)
{
gtk_label_set_text (priv->status_label, "");
- gtk_widget_hide (priv->net_spinner);
+ gtk_widget_hide (priv->statusbar);
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->subscribe)))
- glade_registration_subscribe_email (registration);
+ g_object_set (registration, "completed", TRUE, NULL);
+ glade_app_config_save ();
glade_util_ui_message (GTK_WIDGET (registration), GLADE_UI_INFO, NULL,
"<big>%s</big>", _("Thank you for taking the time to complete the survey, we appreciate it!"));
gtk_widget_hide (GTK_WIDGET (registration));
-
- g_object_set (registration, "completed", TRUE, NULL);
- glade_app_config_save ();
}
- else if (g_strcmp0 (status, "error_required_field") == 0)
- glade_registration_show_message (registration, GTK_MESSAGE_INFO,
- "%s", _("Name and Email fields are required"));
- else if (g_strcmp0 (status, "error_email_in_use") == 0)
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- "%s", _("Oops! Email address is already in use!\nTo update information you need to provide the token that was sent to your inbox."));
- else if (g_strcmp0 (status, "error_db_user_info") == 0)
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- _("Oops! Error saving user information: %s"), message);
- else if (g_strcmp0 (status, "error_db_survey_data") == 0)
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- _("Oops! Error saving survey data: %s"), message);
- else if (g_strcmp0 (status, "error_db") == 0)
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- _("Oops! Error accessing DB: %s"), message);
else
- glade_registration_show_message (registration, GTK_MESSAGE_WARNING, "%s", message);
+ glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
+ "Internal server error");
}
break;
default:
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
- "%s", response ? response : "");
+ "Got HTTP response %d", code);
break;
}
}
-static void
-glade_registration_clear_cancellable (GladeRegistrationPrivate *priv)
+static inline void
+survey_data_set_string (GKeyFile *config, const gchar *id, const gchar *value)
{
- if (priv->cancellable)
+ if (value)
+ g_key_file_set_string (config, SURVEY_DATA_CONFIG_GROUP, id, value);
+}
+
+void
+glade_registration_save_state_foreach (GtkWidget *widget, gpointer data)
+{
+ GladeRegistration *registration = GLADE_REGISTRATION (data);
+ const gchar *id = gtk_buildable_get_name (GTK_BUILDABLE (widget));
+
+ if (id)
{
- g_cancellable_cancel (priv->cancellable);
- g_clear_object (&priv->cancellable);
+ GKeyFile *config = registration->priv->config;
+
+ if (GTK_IS_ENTRY (widget))
+ survey_data_set_string (config, id, gtk_entry_get_text (GTK_ENTRY (widget)));
+ else if (GTK_IS_TEXT_VIEW (widget))
+ {
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+ GtkTextIter start, end;
+ g_autofree gchar *text;
+
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+ survey_data_set_string (config, id, text);
+ }
+ else if (GTK_IS_COMBO_BOX (widget))
+ survey_data_set_string (config, id, gtk_combo_box_get_active_id (GTK_COMBO_BOX (widget)));
+ else if (GTK_IS_TOGGLE_BUTTON (widget))
+ g_key_file_set_boolean (config, SURVEY_DATA_CONFIG_GROUP, id,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
}
+
+ /* Recurse all containers */
+ if (GTK_IS_CONTAINER (widget))
+ gtk_container_foreach (GTK_CONTAINER (widget),
+ glade_registration_save_state_foreach,
+ data);
}
-static void
+void
+glade_registration_load_state_foreach (GtkWidget *widget, gpointer data)
+{
+ GladeRegistration *registration = GLADE_REGISTRATION (data);
+ const gchar *id = gtk_buildable_get_name (GTK_BUILDABLE (widget));
+
+ if (id)
+ {
+ GKeyFile *config = registration->priv->config;
+
+ if (GTK_IS_SPIN_BUTTON (widget))
+ {
+ gint val = g_key_file_get_integer (config, SURVEY_DATA_CONFIG_GROUP, id, NULL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), val);
+ }
+ else if (GTK_IS_ENTRY (widget))
+ {
+ g_autofree gchar *val = NULL;
+ val = g_key_file_get_string (config, SURVEY_DATA_CONFIG_GROUP, id, NULL);
+ gtk_entry_set_text (GTK_ENTRY (widget), val ? val : "");
+ }
+ else if (GTK_IS_TEXT_VIEW (widget))
+ {
+ g_autofree gchar *val = NULL;
+
+ val = g_key_file_get_string (config, SURVEY_DATA_CONFIG_GROUP, id, NULL);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+
+ gtk_text_buffer_set_text (buffer, val ? val : "", -1);
+ }
+ else if (GTK_IS_COMBO_BOX (widget)){
+ g_autofree gchar *val = NULL;
+
+ val = g_key_file_get_string (config, SURVEY_DATA_CONFIG_GROUP, id, NULL);
+ gtk_combo_box_set_active_id (GTK_COMBO_BOX (widget), val ? val : "");
+ }
+ else if (GTK_IS_TOGGLE_BUTTON (widget)){
+ gboolean val = g_key_file_get_boolean (config, SURVEY_DATA_CONFIG_GROUP, id, NULL);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), val);
+ }
+ }
+
+ /* Recurse all containers */
+ if (GTK_IS_CONTAINER (widget))
+ gtk_container_foreach (GTK_CONTAINER (widget),
+ glade_registration_load_state_foreach,
+ data);
+}
+
+static gboolean
+entry_is_empty (GtkWidget *entry)
+{
+ const gchar *text = gtk_entry_get_text (GTK_ENTRY (entry));
+ g_autofree gchar *str = NULL;
+
+ if (!text || *text == '\0')
+ return TRUE;
+
+ str = g_strstrip (g_strdup (text));
+
+ return (!str || *str == '\0');
+}
+
+static gboolean
+glade_registration_verify (GtkWidget *entry)
+{
+ GtkStyleContext *ctx = gtk_widget_get_style_context (entry);
+
+ gtk_style_context_remove_class (ctx, "error");
+
+ if (entry_is_empty (entry))
+ {
+ gtk_style_context_add_class (ctx, "error");
+ gtk_widget_grab_focus (entry);
+ return TRUE;
+ }
+
+ if (gtk_entry_get_input_purpose (GTK_ENTRY (entry)) == GTK_INPUT_PURPOSE_EMAIL)
+ {
+ const char *text = gtk_entry_get_text (GTK_ENTRY (entry));
+ g_auto(GStrv) email = NULL;
+
+ /* Check if this looks like an email */
+ if (g_strstr_len (text, -1, " ") ||
+ g_strstr_len (text, -1, "\t") ||
+ g_strstr_len (text, -1, "\n") ||
+ !(email = g_strsplit (text, "@", 2)) ||
+ g_strv_length (email) != 2 ||
+ *email[0] == '\0'|| *email[1] == '\0')
+ {
+ gtk_style_context_add_class (ctx, "error");
+ gtk_widget_grab_focus (entry);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+glade_registration_verify_entry (GtkEntry *entry, GladeRegistration *registration)
+{
+ glade_registration_verify (GTK_WIDGET (entry));
+}
+
+static void
on_registration_dialog_response (GtkDialog *dialog, gint response_id)
{
- GladeRegistrationPrivate *priv = GLADE_REGISTRATION (dialog)->priv;
- GString *post;
+ GladeRegistration *registration = GLADE_REGISTRATION (dialog);
+ GladeRegistrationPrivate *priv = registration->priv;
gtk_widget_hide (priv->infobar);
-
- if (response_id != GTK_RESPONSE_APPLY)
+
+ /* Save state */
+ gtk_container_foreach (priv->user_survey_box,
+ glade_registration_save_state_foreach,
+ registration);
+ glade_app_config_save ();
+
+ if (response_id != GTK_RESPONSE_OK)
{
gtk_widget_hide (GTK_WIDGET (dialog));
- glade_registration_clear_cancellable (priv);
+ glade_registration_clear (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, update_token_checkbutton);
- append_input_tuple (post, update_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_registration_http_post (GLADE_REGISTRATION (dialog),
- priv->http,
- priv->cancellable,
- "/~jpu/glade/registration.php",
- post);
-
- g_string_free (post, TRUE);
+
+ if (glade_registration_verify (priv->name) ||
+ glade_registration_verify (priv->email) ||
+ g_key_file_get_boolean (priv->config, USER_SURVEY_CONFIG_GROUP, "completed", NULL))
+ return;
+
+ /* Init state */
+ glade_registration_clear (priv);
+
+
+ /* Get survey form */
+ glade_registration_http_get (registration,
+ priv->http,
+ priv->cancellable,
+ "/index.php/311811");
+
+ /* Get mailman form */
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->subscribe)))
+ glade_registration_http_get (registration,
+ priv->sub_http,
+ priv->sub_cancellable,
+ "/mailman/listinfo/glade-users-list");
}
static void
@@ -593,14 +815,45 @@ on_viewport_draw (GtkWidget *viewport, cairo_t *cr, GladeRegistration *widget)
}
static void
+glade_registration_update_state (GladeRegistration *registration)
+{
+ GladeRegistrationPrivate *priv = glade_registration_get_instance_private (registration);
+
+ if (g_key_file_get_boolean (priv->config, USER_SURVEY_CONFIG_GROUP, "completed", NULL))
+ {
+ GtkWidget *headerbar = gtk_dialog_get_header_bar (GTK_DIALOG (registration));
+
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->user_survey_box), FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->submit_button), FALSE);
+
+ if (headerbar)
+ gtk_header_bar_set_subtitle(GTK_HEADER_BAR (headerbar),
+ _("Completed and submitted!"));
+ }
+}
+
+static void
glade_registration_init (GladeRegistration *registration)
{
GladeRegistrationPrivate *priv = glade_registration_get_instance_private (registration);
registration->priv = priv;
+ priv->config = glade_app_get_config ();
+
+ /* Create user agent */
+ priv->user_agent =
+ g_strdup_printf ("Glade/"PACKAGE_VERSION" (%s; Gtk+ %d.%d.%d; glib %d.%d.%d; %s)",
+ glade_window_get_gdk_backend (), /* Gdk backend */
+ GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, /* Gtk version */
+ glib_major_version, glib_minor_version, glib_micro_version,/* Glib version */
+ pango_language_to_string (pango_language_get_default ()));
+
+ priv->hidden_inputs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ priv->sub_hidden_inputs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
/* HTTPS default port is 443 */
- priv->http = glade_http_new ("people.gnome.org", 443, TRUE);
+ priv->http = glade_http_new ("surveys.gnome.org", 443, TRUE);
g_signal_connect_object (priv->http, "request-done",
G_CALLBACK (on_http_request_done),
@@ -609,8 +862,14 @@ glade_registration_init (GladeRegistration *registration)
G_CALLBACK (on_http_status),
registration, 0);
+ priv->sub_http = glade_http_new ("mail.gnome.org", 443, TRUE);
+ g_signal_connect_object (priv->sub_http, "request-done",
+ G_CALLBACK (on_subscribe_http_request_done),
+ registration, 0);
+
gtk_widget_init_template (GTK_WIDGET (registration));
+ /* Generate Glade versions */
if (GTK_IS_COMBO_BOX_TEXT (priv->version_other))
{
GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (priv->version_other);
@@ -621,11 +880,24 @@ glade_registration_init (GladeRegistration *registration)
{
g_snprintf (id, 16, "%d", minor);
g_snprintf (text, 18, "3.%d", minor);
- gtk_combo_box_text_append (combo, id, text);
+ gtk_combo_box_text_prepend (combo, id, text);
+
+ /* Skip non released version 24-34 */
+ if (minor == 22)
+ minor = 34;
}
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
}
+
+ /* Load survey state */
+ gtk_container_foreach (priv->user_survey_box,
+ glade_registration_load_state_foreach,
+ registration);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (registration), GTK_RESPONSE_OK);
+
+ glade_registration_update_state (registration);
}
static void
@@ -633,9 +905,13 @@ glade_registration_finalize (GObject *object)
{
GladeRegistrationPrivate *priv = GLADE_REGISTRATION (object)->priv;
+ g_clear_pointer (&priv->user_agent, g_free);
g_clear_object (&priv->http);
g_clear_object (&priv->sub_http);
g_clear_object (&priv->cancellable);
+ g_clear_object (&priv->sub_cancellable);
+ g_hash_table_destroy (priv->hidden_inputs);
+ g_hash_table_destroy (priv->sub_hidden_inputs);
G_OBJECT_CLASS (glade_registration_parent_class)->finalize (object);
}
@@ -643,14 +919,22 @@ glade_registration_finalize (GObject *object)
static void
glade_registration_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{
- GKeyFile *config = glade_app_get_config ();
+ GladeRegistrationPrivate *priv;
+
g_return_if_fail (GLADE_IS_REGISTRATION (object));
+ priv = GLADE_REGISTRATION (object)->priv;
+
switch (prop_id)
{
case PROP_SKIP_REMINDER:
+ g_key_file_set_boolean (priv->config, USER_SURVEY_CONFIG_GROUP,
+ pspec->name, g_value_get_boolean (value));
+ break;
case PROP_COMPLETED:
- g_key_file_set_boolean (config, CONFIG_GROUP, pspec->name, g_value_get_boolean (value));
+ g_key_file_set_boolean (priv->config, USER_SURVEY_CONFIG_GROUP,
+ pspec->name, g_value_get_boolean (value));
+ glade_registration_update_state (GLADE_REGISTRATION (object));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -661,14 +945,17 @@ glade_registration_set_property (GObject *object, guint prop_id, const GValue *v
static void
glade_registration_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
- GKeyFile *config = glade_app_get_config ();
+ GladeRegistrationPrivate *priv;
+
g_return_if_fail (GLADE_IS_REGISTRATION (object));
+ priv = GLADE_REGISTRATION (object)->priv;
+
switch (prop_id)
{
case PROP_SKIP_REMINDER:
case PROP_COMPLETED:
- g_value_set_boolean (value, g_key_file_get_boolean (config, CONFIG_GROUP, pspec->name, NULL));
+ g_value_set_boolean (value, g_key_file_get_boolean (priv->config, USER_SURVEY_CONFIG_GROUP, pspec->name, NULL));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -686,9 +973,12 @@ glade_registration_class_init (GladeRegistrationClass *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, statusbar);
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, submit_button);
+ gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, user_survey_box);
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, name);
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, email);
@@ -698,8 +988,6 @@ glade_registration_class_init (GladeRegistrationClass *klass)
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, update_token_checkbutton);
- gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, update_token);
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience);
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience_unit);
@@ -712,6 +1000,7 @@ glade_registration_class_init (GladeRegistrationClass *klass)
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_rust);
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);
@@ -748,6 +1037,7 @@ glade_registration_class_init (GladeRegistrationClass *klass)
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, glade_registration_verify_entry);
gtk_widget_class_bind_template_callback (widget_class, on_registration_dialog_response);
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);
@@ -786,6 +1076,85 @@ glade_registration_class_init (GladeRegistrationClass *klass)
GtkWidget*
glade_registration_new (void)
{
- return GTK_WIDGET (g_object_new (GLADE_TYPE_REGISTRATION, NULL));
+ return GTK_WIDGET (g_object_new (GLADE_TYPE_REGISTRATION,
+ "use-header-bar", TRUE,
+ NULL));
+}
+
+/* HTML Form parsing utils */
+#include <libxml/HTMLparser.h>
+
+typedef struct {
+ const gchar *form_action;
+ GHashTable *inputs;
+
+ gboolean in_form;
+} ParseData;
+
+static void
+start_element (ParseData *data, const gchar *name, const gchar **atts)
+{
+ gboolean is_hidden = FALSE;
+ const gchar *input_name = NULL, *input_value = NULL;
+ gint i;
+
+ if (g_strcmp0 (name, "form") == 0)
+ {
+ for (i = 0; atts[i]; i++)
+ if (g_strcmp0 (atts[i], "action") == 0 &&
+ g_strstr_len (atts[i+1], -1, data->form_action))
+ data->in_form = TRUE;
+
+ return;
+ }
+
+ /* Ignore elements outside of the form */
+ if (!data->in_form)
+ return;
+
+ if (g_strcmp0 (name, "input"))
+ return;
+
+ for (i = 0; atts[i]; i += 2)
+ {
+ gint val = i + 1;
+
+ if (!g_strcmp0 (atts[i], "type") && !g_strcmp0 (atts[val], "hidden"))
+ is_hidden = TRUE;
+
+ if (!g_strcmp0 (atts[i], "name"))
+ input_name = atts[val];
+
+ if (!g_strcmp0 (atts[i], "value"))
+ input_value = atts[val];
+ }
+
+ if (is_hidden && input_name && input_value)
+ g_hash_table_insert (data->inputs,
+ g_uri_escape_string (input_name, NULL, FALSE),
+ g_uri_escape_string (input_value, NULL, FALSE));
+}
+
+static void
+end_element (ParseData *data, const gchar *name)
+{
+ if (g_strcmp0 (name, "form") == 0)
+ data->in_form = FALSE;
+}
+
+static void
+glade_registration_parse_response_form (GladeRegistration *registration,
+ const gchar *response,
+ const gchar *form_action,
+ GHashTable *inputs)
+{
+ ParseData data = { .form_action = form_action, .inputs = inputs };
+ htmlSAXHandler sax = { NULL, };
+
+ sax.startElement = (startElementSAXFunc) start_element;
+ sax.endElement = (endElementSAXFunc) end_element;
+
+ /* Parse response and collect hidden inputs in the hash table */
+ xmlFreeDoc (htmlSAXParseDoc ((guchar *)response, NULL, &sax, &data));
}
diff --git a/src/glade-registration.css b/src/glade-registration.css
index 0e2baf81..c3aedbb9 100644
--- a/src/glade-registration.css
+++ b/src/glade-registration.css
@@ -72,3 +72,8 @@
text-shadow: 1px 1px @theme_bg_color;
}
+#glade-registration box.statusbar {
+ border-top-right-radius: 1ex;
+ background: @theme_bg_color;
+}
+
diff --git a/src/glade-registration.glade b/src/glade-registration.glade
index e51c7563..27324347 100644
--- a/src/glade-registration.glade
+++ b/src/glade-registration.glade
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.2
+<!-- Generated with glade 3.37.0
Glade - A user interface designer for GTK+ and GNOME
-Copyright (C) 2014 Juan Pablo Ugarte
+Copyright (C) 2014-2020 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
@@ -22,7 +22,7 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
-->
<interface domain="glade">
- <requires lib="gtk+" version="3.10"/>
+ <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path glade-registration.css -->
<!-- interface-license-type gplv2 -->
<!-- interface-name Glade -->
@@ -31,78 +31,40 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
<!-- 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>
+ <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>
+ <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="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>
+ <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="delete-event" handler="gtk_true" swapped="no"/>
<signal name="response" handler="on_registration_dialog_response" swapped="no"/>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="name">glade-registration</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<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>
+ <property name="can-focus">False</property>
+ <property name="layout-style">end</property>
<child>
<object class="GtkButton" id="cancel_button">
- <property name="label" translatable="yes">Cancel</property>
+ <property name="label" translatable="yes">_Close</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="use-underline">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -114,10 +76,11 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
<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>
- <property name="use_underline">True</property>
+ <property name="can-focus">True</property>
+ <property name="can-default">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Information will be sent to https://survey.gnome.org</property>
+ <property name="use-underline">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -129,23 +92,23 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="pack_type">end</property>
+ <property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkInfoBar" id="infobar">
- <property name="app_paintable">True</property>
- <property name="can_focus">False</property>
+ <property name="app-paintable">True</property>
+ <property name="can-focus">False</property>
<property name="vexpand">False</property>
- <property name="show_close_button">True</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="can-focus">False</property>
<property name="spacing">6</property>
- <property name="layout_style">end</property>
+ <property name="layout-style">end</property>
<child>
<placeholder/>
</child>
@@ -161,13 +124,16 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
</child>
<child internal-child="content_area">
<object class="GtkBox" id="infobar-content_area1">
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</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>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">start</property>
+ <property name="use-markup">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -190,473 +156,34 @@ Author: Juan Pablo Ugarte <juanpablougarte@gmail.com>
</packing>
</child>
<child>
- <object class="GtkScrolledWindow" id="scrolledwindow">
+ <object class="GtkOverlay">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">never</property>
- <property name="min_content_height">480</property>
+ <property name="can-focus">False</property>
<child>
- <object class="GtkViewport" id="viewport">
+ <object class="GtkScrolledWindow" id="scrolledwindow">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="draw" handler="on_viewport_draw" swapped="no"/>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="min-content-height">480</property>
<child>
- <object class="GtkBox" id="box16">
+ <object class="GtkViewport" id="viewport">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">User Information</property>
- <property name="xalign">0</property>
- <style>
- <class name="title"/>
- </style>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <property name="can-focus">False</property>
+ <signal name="draw" handler="on_viewport_draw" swapped="no"/>
<child>
- <object class="GtkBox" id="box12">
+ <object class="GtkBox" id="user_survey_box">
<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_right">12</property>
- <property name="margin_end">12</property>
- <property name="hexpand">False</property>
- <property name="vexpand">False</property>
- <property name="spacing">4</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">8</property>
<child>
- <object class="GtkGrid" id="grid1">
+ <object class="GtkLabel" id="label24">
<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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Name:</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Email:</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Country:</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label19">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">City:</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label27">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Website</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</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>
- </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>
- </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>
- </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>
- </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" translatable="yes">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</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>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">User Information</property>
+ <property name="xalign">0</property>
<style>
- <class name="info-box"/>
+ <class name="title"/>
</style>
</object>
<packing>
@@ -666,399 +193,445 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box2">
+ <object class="GtkBox" id="user_box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
+ <property name="can-focus">False</property>
<property name="valign">start</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="label" translatable="yes">We care about privacy!</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">8</property>
- <property name="xalign">0</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="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>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <style>
- <class name="textbox"/>
- </style>
- </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>
- <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="update_token_checkbutton">
- <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="update_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="update_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="GtkLabel" id="label12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Glade User Survey</property>
- <property name="xalign">0</property>
- <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="question_box">
- <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="margin_end">12</property>
- <property name="margin_bottom">4</property>
- <property name="orientation">vertical</property>
- <property name="spacing">8</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="label" translatable="yes">How long have you been programming?</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="hexpand">False</property>
+ <property name="vexpand">False</property>
+ <property name="spacing">4</property>
<child>
- <object class="GtkBox" id="box3">
+ <object class="GtkGrid" id="grid1">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
<child>
- <object class="GtkSpinButton" id="experience">
+ <object class="GtkEntry" id="name">
<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>
+ <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>
+ <property name="input-purpose">name</property>
+ <signal name="activate" handler="glade_registration_verify_entry" swapped="no"/>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
- <object class="GtkComboBoxText" id="experience_unit">
+ <object class="GtkLabel" id="label2">
<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>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Name:</property>
+ <property name="xalign">1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="experience_not_programmer">
- <property name="label" translatable="yes">I am not a programmer</property>
+ <object class="GtkLabel" id="label3">
<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="can-focus">False</property>
+ <property name="label" translatable="yes">Email:</property>
+ <property name="xalign">1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">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="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="label" translatable="yes">Which programming languages do you prefer?</property>
- <property name="xalign">0</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>
+ <object class="GtkEntry" id="email">
<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="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Tokens are processed manually in batches.
+Please be patient.</property>
+ <property name="placeholder-text" translatable="yes">&lt;Required to send back registration token&gt;</property>
+ <property name="input-purpose">email</property>
+ <signal name="activate" handler="glade_registration_verify_entry" swapped="no"/>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_cpp">
- <property name="label" translatable="yes">C++</property>
+ <object class="GtkLabel" id="label4">
<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="can-focus">False</property>
+ <property name="label" translatable="yes">Country:</property>
+ <property name="xalign">1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_csharp">
- <property name="label" translatable="yes">C#</property>
+ <object class="GtkLabel" id="label19">
<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="can-focus">False</property>
+ <property name="label" translatable="yes">City:</property>
+ <property name="xalign">1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_java">
- <property name="label" translatable="yes">Java</property>
+ <object class="GtkComboBoxText" id="contact_type">
<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="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="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_python">
- <property name="label" translatable="yes">Python</property>
+ <object class="GtkLabel" id="label27">
<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="can-focus">False</property>
+ <property name="label" translatable="yes">Website</property>
+ <property name="xalign">1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_javascript">
- <property name="label" translatable="yes">JavaScript</property>
+ <object class="GtkEntry" id="city">
<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="can-focus">True</property>
+ <property name="width-chars">16</property>
+ <property name="input-purpose">name</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_vala">
- <property name="label" translatable="yes">Vala</property>
+ <object class="GtkEntry" id="contact_name">
<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="can-focus">True</property>
+ <property name="input-purpose">name</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">6</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_perl">
- <property name="label" translatable="yes">Perl</property>
+ <object class="GtkEntry" id="contact_website">
<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="can-focus">True</property>
+ <property name="input-purpose">url</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">7</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="lang_other">
- <property name="label" translatable="yes">Other</property>
+ <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="xalign">0</property>
- <property name="draw_indicator">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="halign">start</property>
+ <property name="draw-indicator">True</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">8</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</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">1</property>
- </packing>
- </child>
- <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="label" translatable="yes">When did you start using Glade?</property>
- <property name="xalign">0</property>
+ <child>
+ <object class="GtkComboBoxText" id="country_id">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="active">0</property>
+ <items>
+ <item id="other" translatable="yes">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</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>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="info-box"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
@@ -1067,17 +640,23 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box4">
+ <object class="GtkBox" id="box2">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkSpinButton" id="start_using">
+ <object class="GtkLabel" id="label6">
<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>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">We care about privacy!</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">8</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="textbox-title"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
@@ -1086,33 +665,25 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkComboBoxText" id="start_using_unit">
+ <object class="GtkLabel" id="label25">
<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>
+ <property name="can-focus">False</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>
+ <property name="xalign">0</property>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</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>
+ <style>
+ <class name="textbox"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
@@ -1124,44 +695,45 @@ You will be sent email requesting confirmation!</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Glade User Survey</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="title"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box26">
+ <object class="GtkBox" id="survey_box">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">False</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-bottom">4</property>
<property name="orientation">vertical</property>
+ <property name="spacing">8</property>
<child>
- <object class="GtkLabel" id="label22">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Which version do you normally use?</property>
- <property name="xalign">0</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">
+ <object class="GtkBox" id="box1">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
+ <property name="can-focus">False</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>
+ <object class="GtkLabel" id="label5">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">How long have you been programming?</property>
<property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1170,71 +742,17 @@ You will be sent email requesting confirmation!</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>
+ <object class="GtkBox" id="box3">
<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>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
<child>
- <object class="GtkRadioButton" id="version_other_radio">
- <property name="label" translatable="yes">Other</property>
- <property name="name">4</property>
+ <object class="GtkSpinButton" id="experience">
<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"/>
+ <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>
@@ -1243,8 +761,14 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkComboBoxText" id="version_other">
- <property name="can_focus">False</property>
+ <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>
@@ -1252,284 +776,213 @@ You will be sent email requesting confirmation!</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="halign">start</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">4</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">3</property>
- </packing>
- </child>
- <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="label" translatable="yes">On what operating systems?</property>
- <property name="xalign">0</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">
+ <object class="GtkBox" id="box22">
<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="18" translatable="yes">Alpine</item>
- <item id="1" translatable="yes">Arch Linux</item>
- <item id="28" translatable="yes">Ataraxia Linux</item>
- <item id="15" translatable="yes">CentOS</item>
- <item id="13" translatable="yes">Chrome OS</item>
- <item id="23" translatable="yes">Clear Linux</item>
- <item id="2" translatable="yes">Debian</item>
- <item id="21" translatable="yes">elementary OS</item>
- <item id="12" translatable="yes">Endless OS</item>
- <item id="4" translatable="yes">Fedora</item>
- <item id="5" translatable="yes">Gentoo</item>
- <item id="16" translatable="yes">Kubuntu</item>
- <item id="14" translatable="yes">Linux Mint</item>
- <item id="19" translatable="yes">Mageia</item>
- <item id="6" translatable="yes">Mandriva</item>
- <item id="25" translatable="yes">Nix OS</item>
- <item id="3" translatable="yes">openSUSE</item>
- <item id="11" translatable="yes">Oracle</item>
- <item id="20" translatable="yes">Pop!_OS</item>
- <item id="26" translatable="yes">PureOS</item>
- <item id="22" translatable="yes">Raspbian</item>
- <item id="7" translatable="yes">Red Hat</item>
- <item id="17" translatable="yes">Solus</item>
- <item id="27" translatable="yes">SulinOS</item>
- <item id="8" translatable="yes">Turbolinux</item>
- <item id="9" translatable="yes">Ubuntu</item>
- <item id="24" translatable="yes">Void Linux</item>
- <item id="10" translatable="yes">Xandros</item>
- <item id="-1" translatable="yes">Other</item>
- </items>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</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>
- </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>
- </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>
- </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="9" translatable="yes">10</item>
- <item id="7" translatable="yes">8</item>
- <item id="6" translatable="yes">7</item>
- <item id="4" translatable="yes">Vista</item>
- <item id="8" translatable="yes">2012</item>
- <item id="5" translatable="yes">2008</item>
- <item id="3" translatable="yes">2003</item>
- <item id="2" translatable="yes">XP</item>
- <item id="1" translatable="yes">2000</item>
- <item id="-1" translatable="yes">Other</item>
- </items>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</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="12" translatable="yes">Catalina</item>
- <item id="11" translatable="yes">Mojave</item>
- <item id="10" translatable="yes">High Sierra</item>
- <item id="9" translatable="yes">Sierra</item>
- <item id="8" translatable="yes">El Capitan</item>
- <item id="7" translatable="yes">Yosemite</item>
- <item id="6" translatable="yes">Mavericks</item>
- <item id="5" translatable="yes">Mountain Lion</item>
- <item id="4" translatable="yes">Lion</item>
- <item id="3" translatable="yes">Snow Leopard</item>
- <item id="2" translatable="yes">Leopard</item>
- <item id="1" translatable="yes">Tiger</item>
- <item id="-1" translatable="yes">Other</item>
- </items>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</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>
- </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>
- </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>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="os_osx_radiobutton">
- <property name="label" translatable="yes">Mac OS X</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>
- </packing>
- </child>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkRadioButton" id="os_solaris_radiobutton">
- <property name="label" translatable="yes">Solaris</property>
- <property name="name">4</property>
+ <object class="GtkLabel" id="label7">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Which programming languages do you prefer?</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="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="os_other_radiobutton">
- <property name="label" translatable="yes">Other</property>
- <property name="name">5</property>
+ <object class="GtkBox" id="box13">
<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"/>
+ <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="halign">start</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="halign">start</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="halign">start</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="halign">start</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="halign">start</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="halign">start</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="halign">start</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="halign">start</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_rust">
+ <property name="label" translatable="yes">Rust</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="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">8</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
@@ -1539,47 +992,17 @@ You will be sent email requesting confirmation!</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>
- <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="label" translatable="yes">How often do you use it?</property>
- <property name="xalign">0</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">
+ <object class="GtkBox" id="box25">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
+ <property name="can-focus">False</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>
+ <object class="GtkLabel" id="label8">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">When did you start using Glade?</property>
<property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1588,15 +1011,52 @@ You will be sent email requesting confirmation!</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>
+ <object class="GtkBox" id="box4">
<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>
+ <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>
@@ -1604,121 +1064,170 @@ You will be sent email requesting confirmation!</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="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="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 month</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>
+ <object class="GtkLabel" id="label22">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Which version do you normally use?</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>
+ <property name="position">0</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>
+ <object class="GtkBox" id="box10">
<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>
+ <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="halign">start</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="halign">start</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="halign">start</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="halign">start</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="halign">start</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">5</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">5</property>
- </packing>
- </child>
- <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="label" translatable="yes">What level of Glade user would you say you are?</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">3</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box5">
+ <object class="GtkBox" id="box27">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkRadioButton" id="user_level">
- <property name="label" translatable="yes">Beginner</property>
- <property name="name">0</property>
+ <object class="GtkLabel" id="label9">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">On what operating systems?</property>
<property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1727,15 +1236,247 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="user_intermediate_radiobutton">
- <property name="label" translatable="yes">Intermediate</property>
- <property name="name">1</property>
+ <object class="GtkGrid" id="grid2">
<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>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</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="18" translatable="yes">Alpine</item>
+ <item id="1" translatable="yes">Arch Linux</item>
+ <item id="28" translatable="yes">Ataraxia Linux</item>
+ <item id="15" translatable="yes">CentOS</item>
+ <item id="13" translatable="yes">Chrome OS</item>
+ <item id="23" translatable="yes">Clear Linux</item>
+ <item id="2" translatable="yes">Debian</item>
+ <item id="21" translatable="yes">elementary OS</item>
+ <item id="12" translatable="yes">Endless OS</item>
+ <item id="4" translatable="yes">Fedora</item>
+ <item id="5" translatable="yes">Gentoo</item>
+ <item id="16" translatable="yes">Kubuntu</item>
+ <item id="14" translatable="yes">Linux Mint</item>
+ <item id="19" translatable="yes">Mageia</item>
+ <item id="6" translatable="yes">Mandriva</item>
+ <item id="25" translatable="yes">Nix OS</item>
+ <item id="3" translatable="yes">openSUSE</item>
+ <item id="11" translatable="yes">Oracle</item>
+ <item id="20" translatable="yes">Pop!_OS</item>
+ <item id="26" translatable="yes">PureOS</item>
+ <item id="22" translatable="yes">Raspbian</item>
+ <item id="7" translatable="yes">Red Hat</item>
+ <item id="17" translatable="yes">Solus</item>
+ <item id="27" translatable="yes">SulinOS</item>
+ <item id="8" translatable="yes">Turbolinux</item>
+ <item id="9" translatable="yes">Ubuntu</item>
+ <item id="24" translatable="yes">Void Linux</item>
+ <item id="10" translatable="yes">Xandros</item>
+ <item id="-1" translatable="yes">Other</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</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>
+ </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>
+ </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>
+ </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="9" translatable="yes">10</item>
+ <item id="7" translatable="yes">8</item>
+ <item id="6" translatable="yes">7</item>
+ <item id="4" translatable="yes">Vista</item>
+ <item id="8" translatable="yes">2012</item>
+ <item id="5" translatable="yes">2008</item>
+ <item id="3" translatable="yes">2003</item>
+ <item id="2" translatable="yes">XP</item>
+ <item id="1" translatable="yes">2000</item>
+ <item id="-1" translatable="yes">Other</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</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="12" translatable="yes">Catalina</item>
+ <item id="11" translatable="yes">Mojave</item>
+ <item id="10" translatable="yes">High Sierra</item>
+ <item id="9" translatable="yes">Sierra</item>
+ <item id="8" translatable="yes">El Capitan</item>
+ <item id="7" translatable="yes">Yosemite</item>
+ <item id="6" translatable="yes">Mavericks</item>
+ <item id="5" translatable="yes">Mountain Lion</item>
+ <item id="4" translatable="yes">Lion</item>
+ <item id="3" translatable="yes">Snow Leopard</item>
+ <item id="2" translatable="yes">Leopard</item>
+ <item id="1" translatable="yes">Tiger</item>
+ <item id="-1" translatable="yes">Other</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</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="halign">start</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>
+ </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="halign">start</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>
+ </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="halign">start</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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="os_osx_radiobutton">
+ <property name="label" translatable="yes">Mac OS X</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="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>
+ </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="halign">start</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>
+ </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="halign">start</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>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -1743,278 +1484,186 @@ You will be sent email requesting confirmation!</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>
+ <property name="position">4</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">6</property>
- </packing>
- </child>
- <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">
+ <object class="GtkBox" id="box28">
<property name="visible">True</property>
- <property name="can_focus">False</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>
- <property name="xalign">0</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>
- </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>
- </packing>
- </child>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkCheckButton" id="soft_commercial">
- <property name="label" translatable="yes">Commercial/Closed software</property>
+ <object class="GtkLabel" id="label10">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">How often do you use it?</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="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="soft_none">
- <property name="label" translatable="yes">None - distributed internally</property>
+ <object class="GtkBox" id="box6">
<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="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="halign">start</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="halign">start</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="halign">start</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 month</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="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="halign">start</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="halign">start</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="left_attach">1</property>
- <property name="top_attach">1</property>
+ <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">7</property>
- </packing>
- </child>
- <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="label" translatable="yes">In what field(s) is the software you used Glade to create generally used?</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">5</property>
</packing>
</child>
<child>
- <object class="GtkGrid" id="grid4">
+ <object class="GtkBox" id="box29">
<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>
- </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>
- </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>
- </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>
- </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>
- </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>
- </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>
- </packing>
- </child>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkCheckButton" id="field_scientific">
- <property name="label" translatable="yes">Scientific</property>
+ <object class="GtkLabel" id="label11">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">What level of Glade user would you say you are?</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="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box24">
+ <object class="GtkBox" id="box5">
<property name="visible">True</property>
- <property name="can_focus">False</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>
+ <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="draw_indicator">True</property>
- <signal name="toggled" handler="toggle_button_set_visible_on_toggle" object="field_other" swapped="no"/>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2023,8 +1672,15 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkEntry" id="field_other">
- <property name="can_focus">True</property>
+ <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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">user_level</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2032,108 +1688,49 @@ You will be sent email requesting confirmation!</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="halign">start</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="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">2</property>
+ <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="position">6</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">8</property>
- </packing>
- </child>
- <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">
+ <object class="GtkBox" id="box30">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">What aspect of the software needs the most improvement?</property>
- <property name="xalign">0</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>
- <property name="min_content_height">64</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>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">9</property>
- </packing>
- </child>
- <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="label" translatable="yes">In your opinion what is the biggest problem with Glade?</property>
- <property name="xalign">0</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="can-focus">False</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>
+ <object class="GtkLabel" id="label13">
<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="can-focus">False</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>
<property name="xalign">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2142,16 +1739,65 @@ You will be sent email requesting confirmation!</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>
+ <object class="GtkGrid" id="grid3">
<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>
+ <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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -2159,147 +1805,255 @@ You will be sent email requesting confirmation!</property>
<property name="position">1</property>
</packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <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="GtkRadioButton" id="problem_training_radiobutton">
- <property name="label" translatable="yes">Lack of professional training</property>
- <property name="name">2</property>
+ <object class="GtkLabel" id="label23">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">In what field(s) is the software you used Glade to create generally used?</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>
+ <property name="position">0</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>
+ <object class="GtkGrid" id="grid4">
<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>
+ <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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</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="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</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="halign">start</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>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">3</property>
+ <property name="position">1</property>
</packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <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="GtkRadioButton" id="problem_binaries_radiobutton">
- <property name="label" translatable="yes">Lack of official binary releases for other OS (Windows, Mac OS X)</property>
- <property name="name">4</property>
+ <object class="GtkLabel" id="label14">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="halign">start</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">What aspect of the software needs the most improvement?</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>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="problem_other_radiobutton">
- <property name="label" translatable="yes">Other</property>
- <property name="name">5</property>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
<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"/>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="min-content-height">64</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">5</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="position">9</property>
</packing>
</child>
<child>
- <object class="GtkScrolledWindow" id="problem_other_scrolledwindow">
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <property name="min_content_height">64</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>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">10</property>
- </packing>
- </child>
- <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">
+ <object class="GtkBox" id="box35">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Have you ever encountered a bug?</property>
- <property name="angle">0.059999998658895493</property>
- <property name="xalign">0</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>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkRadioButton" id="bug_yes">
- <property name="label" translatable="yes">Yes</property>
- <property name="name">1</property>
+ <object class="GtkLabel" id="label15">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">In your opinion what is the biggest problem with Glade?</property>
<property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">bug</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2308,15 +2062,115 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="bug">
- <property name="label" translatable="yes">No</property>
- <property name="name">0</property>
+ <object class="GtkBox" id="box7">
<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>
+ <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="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="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="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="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 (Windows, Mac OS X)</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="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="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>
@@ -2324,54 +2178,44 @@ You will be sent email requesting confirmation!</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>
+ <property name="min-content-height">64</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>
<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">11</property>
- </packing>
- </child>
- <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="label" translatable="yes">If so, did you file a bug report?</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">10</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box19">
+ <object class="GtkBox" id="box31">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</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>
+ <object class="GtkLabel" id="label16">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Have you ever encountered a bug?</property>
<property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">bugzilla</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2380,15 +2224,44 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="bugzilla">
- <property name="label" translatable="yes">No</property>
- <property name="name">0</property>
+ <object class="GtkBox" id="box21">
<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>
+ <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">Y</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="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">N</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="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>
@@ -2400,35 +2273,21 @@ You will be sent email requesting confirmation!</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">11</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">12</property>
- </packing>
- </child>
- <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">
+ <object class="GtkBox" id="box32">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
+ <property name="spacing">4</property>
<child>
- <object class="GtkLabel" id="label18">
+ <object class="GtkLabel" id="label17">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Have you ever thought about contributing?</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">If so, did you file a bug report?</property>
<property name="xalign">0</property>
- <style>
- <class name="survey_question"/>
- </style>
</object>
<packing>
<property name="expand">False</property>
@@ -2437,20 +2296,20 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="box18">
+ <object class="GtkBox" id="box19">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
- <object class="GtkRadioButton" id="contributing_yes">
+ <object class="GtkRadioButton" id="bugzilla_yes">
<property name="label" translatable="yes">Yes</property>
- <property name="name">1</property>
+ <property name="name">Y</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>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">bugzilla</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2459,16 +2318,15 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="contributing">
+ <object class="GtkRadioButton" id="bugzilla">
<property name="label" translatable="yes">No</property>
- <property name="name">0</property>
+ <property name="name">N</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="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</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"/>
+ <property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -2487,23 +2345,82 @@ You will be sent email requesting confirmation!</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">12</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="why_not_box">
+ <object class="GtkBox" id="box36">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="label20">
+ <object class="GtkBox" id="box17">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Why not?</property>
- <property name="xalign">0</property>
- <style>
- <class name="survey_question"/>
- </style>
+ <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="label" translatable="yes">Have you ever thought about contributing?</property>
+ <property name="xalign">0</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">Y</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="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">N</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="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>
@@ -2512,17 +2429,45 @@ You will be sent email requesting confirmation!</property>
</packing>
</child>
<child>
- <object class="GtkScrolledWindow" id="scrolledwindow4">
+ <object class="GtkBox" id="why_not_box">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <property name="min_content_height">64</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkTextView" id="contributing_whynot">
+ <object class="GtkLabel" id="label20">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="accepts_tab">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Why not?</property>
+ <property name="xalign">0</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>
+ <property name="min-content-height">64</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>
@@ -2535,124 +2480,158 @@ You will be sent email requesting confirmation!</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">13</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">13</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Comments:</property>
- <property name="xalign">0</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>
- <property name="min_content_height">64</property>
<child>
- <object class="GtkTextView" id="comments">
+ <object class="GtkLabel" id="label26">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="accepts_tab">False</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Comments:</property>
+ <property name="xalign">0</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>
+ <property name="min-content-height">64</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">16</property>
- </packing>
- </child>
- <style>
- <class name="questions"/>
- </style>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <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="label" translatable="yes">Privacy Note:</property>
- <property name="wrap">True</property>
- <property name="xalign">0</property>
<style>
- <class name="textbox-title"/>
+ <class name="questions"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">4</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label29">
+ <object class="GtkBox" id="box8">
<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="label" translatable="yes">The sole purpose of this survey is to better know our user base.
+ <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="label" translatable="yes">Privacy Note:</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</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="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>
- <property name="xalign">0</property>
+ <property name="wrap">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>
+ <style>
+ <class name="textbox"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">5</property>
</packing>
</child>
<style>
- <class name="textbox"/>
+ <class name="main-box"/>
</style>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
</child>
- <style>
- <class name="main-box"/>
- </style>
</object>
</child>
+ <style>
+ <class name="survey_page"/>
+ </style>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkBox" id="statusbar">
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">end</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="halign">start</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <style>
+ <class name="statusbar"/>
+ </style>
</object>
</child>
- <style>
- <class name="survey_page"/>
- </style>
</object>
<packing>
<property name="expand">True</property>
@@ -2664,7 +2643,7 @@ Individual data will be stored in a private database and it will not be shared w
</child>
<action-widgets>
<action-widget response="-6">cancel_button</action-widget>
- <action-widget response="-10">submit_button</action-widget>
+ <action-widget response="-5">submit_button</action-widget>
</action-widgets>
</template>
</interface>
diff --git a/src/meson.build b/src/meson.build
index 0e4679aa..f1f80bc4 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -29,6 +29,7 @@ sources += gnome.compile_resources(
deps = [
gmodule_export_dep,
libgladeui_dep,
+ libxml_dep,
]
ldflags = []