|
Packit |
1e8aac |
/*
|
|
Packit |
1e8aac |
* Copyright (C) 2014 Juan Pablo Ugarte.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
1e8aac |
* it under the terms of the GNU General Public License as
|
|
Packit |
1e8aac |
* published by the Free Software Foundation; either version 2 of the
|
|
Packit |
1e8aac |
* License, or (at your option) any later version.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
1e8aac |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
1e8aac |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
1e8aac |
* GNU General Public License for more details.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* You should have received a copy of the GNU General Public License
|
|
Packit |
1e8aac |
* along with this program; if not, write to the Free Software
|
|
Packit |
1e8aac |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Authors:
|
|
Packit |
1e8aac |
* Juan Pablo Ugarte <juanpablougarte@gmail.com>
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#include "config.h"
|
|
Packit |
1e8aac |
#include "glade-registration.h"
|
|
Packit |
1e8aac |
#include "glade-http.h"
|
|
Packit |
1e8aac |
#include "glade-logo.h"
|
|
Packit |
1e8aac |
#include <gladeui/glade.h>
|
|
Packit |
1e8aac |
#include <glib/gi18n.h>
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define CONFIG_GROUP "User & Survey"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* translators: Email subject sent to the user after completing the survey */
|
|
Packit |
1e8aac |
#define MAIL_SUBJECT _("Glade User Survey")
|
|
Packit |
1e8aac |
/* translators: Email body sent to the user after completing the survey */
|
|
Packit |
1e8aac |
#define MAIL_BODY _("Thank you for taking Glade Users survey, we appreciate it!\n\nTo validate this email address open the folowing 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")
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* translators: Email subject sent to the user after updating the survey */
|
|
Packit |
1e8aac |
#define UPDATE_MAIL_SUBJECT _("Glade User Survey (update)")
|
|
Packit |
1e8aac |
/* translators: Email body sent to the user after updating the survey */
|
|
Packit |
1e8aac |
#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")
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
struct _GladeRegistrationPrivate
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkWidget *infobar;
|
|
Packit |
1e8aac |
GtkWidget *net_spinner;
|
|
Packit |
1e8aac |
GtkLabel *infobar_label;
|
|
Packit |
1e8aac |
GtkLabel *status_label;
|
|
Packit |
1e8aac |
GladeHTTP *http;
|
|
Packit |
1e8aac |
GladeHTTP *sub_http;
|
|
Packit |
1e8aac |
GCancellable *cancellable;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Form widgets */
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget *name;
|
|
Packit |
1e8aac |
GtkWidget *email;
|
|
Packit |
1e8aac |
GtkWidget *country_id;
|
|
Packit |
1e8aac |
GtkWidget *city;
|
|
Packit |
1e8aac |
GtkWidget *contact_type;
|
|
Packit |
1e8aac |
GtkWidget *contact_name;
|
|
Packit |
1e8aac |
GtkWidget *contact_website;
|
|
Packit |
1e8aac |
GtkWidget *subscribe;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget *update_token_checkbutton;
|
|
Packit |
1e8aac |
GtkWidget *update_token;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget *experience;
|
|
Packit |
1e8aac |
GtkWidget *experience_unit;
|
|
Packit |
1e8aac |
GtkWidget *experience_not_programmer;
|
|
Packit |
1e8aac |
GtkWidget *lang_c;
|
|
Packit |
1e8aac |
GtkWidget *lang_cpp;
|
|
Packit |
1e8aac |
GtkWidget *lang_csharp;
|
|
Packit |
1e8aac |
GtkWidget *lang_java;
|
|
Packit |
1e8aac |
GtkWidget *lang_python;
|
|
Packit |
1e8aac |
GtkWidget *lang_javascript;
|
|
Packit |
1e8aac |
GtkWidget *lang_vala;
|
|
Packit |
1e8aac |
GtkWidget *lang_perl;
|
|
Packit |
1e8aac |
GtkWidget *lang_other;
|
|
Packit |
1e8aac |
GtkWidget *start_using;
|
|
Packit |
1e8aac |
GtkWidget *start_using_unit;
|
|
Packit |
1e8aac |
GtkWidget *version;
|
|
Packit |
1e8aac |
GtkWidget *version_other;
|
|
Packit |
1e8aac |
GtkWidget *os;
|
|
Packit |
1e8aac |
GtkWidget *os_linux;
|
|
Packit |
1e8aac |
GtkWidget *os_bsd;
|
|
Packit |
1e8aac |
GtkWidget *os_windows;
|
|
Packit |
1e8aac |
GtkWidget *os_osx;
|
|
Packit |
1e8aac |
GtkWidget *os_solaris;
|
|
Packit |
1e8aac |
GtkWidget *os_other;
|
|
Packit |
1e8aac |
GtkWidget *freq;
|
|
Packit |
1e8aac |
GtkWidget *user_level;
|
|
Packit |
1e8aac |
GtkWidget *soft_free;
|
|
Packit |
1e8aac |
GtkWidget *soft_open;
|
|
Packit |
1e8aac |
GtkWidget *soft_commercial;
|
|
Packit |
1e8aac |
GtkWidget *soft_none;
|
|
Packit |
1e8aac |
GtkWidget *field_academic;
|
|
Packit |
1e8aac |
GtkWidget *field_accounting;
|
|
Packit |
1e8aac |
GtkWidget *field_desktop;
|
|
Packit |
1e8aac |
GtkWidget *field_educational;
|
|
Packit |
1e8aac |
GtkWidget *field_embedded;
|
|
Packit |
1e8aac |
GtkWidget *field_medical;
|
|
Packit |
1e8aac |
GtkWidget *field_industrial;
|
|
Packit |
1e8aac |
GtkWidget *field_scientific;
|
|
Packit |
1e8aac |
GtkWidget *field_other;
|
|
Packit |
1e8aac |
GtkWidget *improvement;
|
|
Packit |
1e8aac |
GtkWidget *problem;
|
|
Packit |
1e8aac |
GtkWidget *problem_other;
|
|
Packit |
1e8aac |
GtkWidget *bug;
|
|
Packit |
1e8aac |
GtkWidget *bugzilla;
|
|
Packit |
1e8aac |
GtkWidget *contributing;
|
|
Packit |
1e8aac |
GtkWidget *contributing_whynot;
|
|
Packit |
1e8aac |
GtkWidget *comments;
|
|
Packit |
1e8aac |
};
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_DEFINE_TYPE_WITH_PRIVATE (GladeRegistration, glade_registration, GTK_TYPE_DIALOG);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
enum
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
PROP_0,
|
|
Packit |
1e8aac |
PROP_COMPLETED,
|
|
Packit |
1e8aac |
PROP_SKIP_REMINDER
|
|
Packit |
1e8aac |
};
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (GString *string,
|
|
Packit |
1e8aac |
const gchar *name,
|
|
Packit |
1e8aac |
GtkWidget *input)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (string->len)
|
|
Packit |
1e8aac |
g_string_append_c (string, '&';;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_string_append (string, name);
|
|
Packit |
1e8aac |
g_string_append_c (string, '=');
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (GTK_IS_ENTRY (input))
|
|
Packit |
1e8aac |
g_string_append_uri_escaped (string, gtk_entry_get_text (GTK_ENTRY (input)), NULL, FALSE);
|
|
Packit |
1e8aac |
else if (GTK_IS_TEXT_VIEW (input))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (input));
|
|
Packit |
1e8aac |
GtkTextIter start, end;
|
|
Packit |
1e8aac |
gchar *text;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_text_buffer_get_bounds (buffer, &start, &end;;
|
|
Packit |
1e8aac |
text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
|
|
Packit |
1e8aac |
g_string_append_uri_escaped (string, text ? text : "", NULL, FALSE);
|
|
Packit |
1e8aac |
g_free (text);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else if (GTK_IS_COMBO_BOX (input))
|
|
Packit |
1e8aac |
g_string_append_uri_escaped (string, gtk_combo_box_get_active_id (GTK_COMBO_BOX (input)), NULL, FALSE);
|
|
Packit |
1e8aac |
else if (GTK_IS_RADIO_BUTTON (input))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GSList *group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (input));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (; group; group = g_slist_next (group))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (group->data)))
|
|
Packit |
1e8aac |
g_string_append (string, gtk_widget_get_name (group->data));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else if (GTK_IS_TOGGLE_BUTTON (input))
|
|
Packit |
1e8aac |
g_string_append_printf (string, "%d", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (input)) ? 1 : 0);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_show_message (GladeRegistration *registration,
|
|
Packit |
1e8aac |
GtkMessageType type,
|
|
Packit |
1e8aac |
const gchar *format,
|
|
Packit |
1e8aac |
...) G_GNUC_PRINTF (3, 4);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_show_message (GladeRegistration *registration,
|
|
Packit |
1e8aac |
GtkMessageType type,
|
|
Packit |
1e8aac |
const gchar *format,
|
|
Packit |
1e8aac |
...)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = registration->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_info_bar_set_message_type (GTK_INFO_BAR (priv->infobar), type);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (format)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
va_list args;
|
|
Packit |
1e8aac |
gchar *string;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
va_start (args, format);
|
|
Packit |
1e8aac |
string = g_strdup_vprintf (format, args);
|
|
Packit |
1e8aac |
va_end (args);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_label_set_text (priv->infobar_label, string);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_free (string);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
gtk_label_set_text (priv->infobar_label, "");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Only show the infobar if the dialog is visible */
|
|
Packit |
1e8aac |
if (gtk_widget_is_visible (GTK_WIDGET (registration)))
|
|
Packit |
1e8aac |
gtk_widget_show (priv->infobar);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_X11
|
|
Packit |
1e8aac |
#include "gdk/gdkx.h"
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_QUARTZ
|
|
Packit |
1e8aac |
#include "gdk/gdkquartz.h"
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_WIN32
|
|
Packit |
1e8aac |
#include "gdk/gdkwin32.h"
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_WAYLAND
|
|
Packit |
1e8aac |
#include "gdk/gdkwayland.h"
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_BROADWAY
|
|
Packit |
1e8aac |
#include "gdk/gdkbroadway.h"
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static const gchar *
|
|
Packit |
1e8aac |
get_gdk_backend (GtkWidget *widget)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GdkDisplay *display = gtk_widget_get_display (widget);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_X11
|
|
Packit |
1e8aac |
if (GDK_IS_X11_DISPLAY (display))
|
|
Packit |
1e8aac |
return "X11";
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_QUARTZ
|
|
Packit |
1e8aac |
if (GDK_IS_QUARTZ_DISPLAY (display))
|
|
Packit |
1e8aac |
return "Quartz";
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_WIN32
|
|
Packit |
1e8aac |
if (GDK_IS_WIN32_DISPLAY (display))
|
|
Packit |
1e8aac |
return "Win32";
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_WAYLAND
|
|
Packit |
1e8aac |
if (GDK_IS_WAYLAND_DISPLAY (display))
|
|
Packit |
1e8aac |
return "Wayland";
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#ifdef GDK_WINDOWING_BROADWAY
|
|
Packit |
1e8aac |
if (GDK_IS_BROADWAY_DISPLAY (display))
|
|
Packit |
1e8aac |
return "Broadway";
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
#endif
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
return "Unknown";
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_http_post (GladeRegistration *registration,
|
|
Packit |
1e8aac |
GladeHTTP *http,
|
|
Packit |
1e8aac |
GCancellable *cancellable,
|
|
Packit |
1e8aac |
const gchar *url,
|
|
Packit |
1e8aac |
GString *content)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
const gchar *lang = pango_language_to_string (pango_language_get_default ());
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_http_request_send_async (http, cancellable,
|
|
Packit |
1e8aac |
"POST %s HTTP/1.1\r\n"
|
|
Packit |
1e8aac |
"Host: %s\r\n"
|
|
Packit |
1e8aac |
"User-Agent: Glade/"PACKAGE_VERSION" (%s; Gtk+ %d.%d.%d; glib %d.%d.%d; %s)\r\n"
|
|
Packit |
1e8aac |
"Connection: close\r\n"
|
|
Packit |
1e8aac |
"Accept: text/plain\r\n"
|
|
Packit |
1e8aac |
"Accept-Language: %s\r\n"
|
|
Packit |
1e8aac |
"Content-Type: application/x-www-form-urlencoded\r\n"
|
|
Packit |
1e8aac |
"Content-Length: %"G_GSIZE_FORMAT"\r\n"
|
|
Packit |
1e8aac |
"\r\n%s",
|
|
Packit |
1e8aac |
url, /* POST url */
|
|
Packit |
1e8aac |
glade_http_get_host (http), /* Host */
|
|
Packit |
1e8aac |
get_gdk_backend (GTK_WIDGET (registration)), /* User-Agent backend */
|
|
Packit |
1e8aac |
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, /* User-Agent gtk version */
|
|
Packit |
1e8aac |
glib_major_version, glib_minor_version, glib_micro_version,/* User-Agent glib version */
|
|
Packit |
1e8aac |
lang, /* User-Agent language */
|
|
Packit |
1e8aac |
lang, /* Accept-Language */
|
|
Packit |
1e8aac |
content->len, /* Content-length */
|
|
Packit |
1e8aac |
content->str); /* content */
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define append_input_tuple(s,i) string_append_input_key_value_tuple (s, #i, priv->i)
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_http_status (GladeHTTP *http,
|
|
Packit |
1e8aac |
GladeHTTPStatus status,
|
|
Packit |
1e8aac |
GError *error,
|
|
Packit |
1e8aac |
GladeRegistration *registration)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gchar *text = NULL;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
switch (status)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
case GLADE_HTTP_READY:
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case GLADE_HTTP_CONNECTING:
|
|
Packit |
1e8aac |
text = g_strdup_printf (_("Connecting to %s"), glade_http_get_host (http));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case GLADE_HTTP_SENDING:
|
|
Packit |
1e8aac |
text = g_strdup_printf (_("Sending data to %s"), glade_http_get_host (http));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case GLADE_HTTP_WAITING:
|
|
Packit |
1e8aac |
text = g_strdup_printf (_("Waiting for %s"), glade_http_get_host (http));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case GLADE_HTTP_RECEIVING:
|
|
Packit |
1e8aac |
text = g_strdup_printf (_("Receiving data from %s"), glade_http_get_host (http));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case GLADE_HTTP_ERROR:
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
"%s", error->message);
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_label_set_text (registration->priv->status_label, text ? text : "");
|
|
Packit |
1e8aac |
gtk_widget_set_visible (registration->priv->net_spinner, text != NULL);
|
|
Packit |
1e8aac |
g_free (text);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_subscribe_http_request_done (GladeHTTP *http,
|
|
Packit |
1e8aac |
gint code,
|
|
Packit |
1e8aac |
const gchar **headers,
|
|
Packit |
1e8aac |
const gchar **values,
|
|
Packit |
1e8aac |
const gchar *response,
|
|
Packit |
1e8aac |
GladeRegistration *registration)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkDialog *dialog;
|
|
Packit |
1e8aac |
GtkWidget *button;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (code == 200)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
dialog = GTK_DIALOG (gtk_message_dialog_new (GTK_WINDOW (registration),
|
|
Packit |
1e8aac |
GTK_DIALOG_DESTROY_WITH_PARENT,
|
|
Packit |
1e8aac |
GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
|
|
Packit |
1e8aac |
"%s",
|
|
Packit |
1e8aac |
_("Sorry, automatic subscription to Glade Users mailing list failed")));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
button = gtk_link_button_new_with_label ("http://lists.ximian.com/mailman/listinfo/glade-users",
|
|
Packit |
1e8aac |
_("Open Glade Users Website"));
|
|
Packit |
1e8aac |
gtk_widget_show (button);
|
|
Packit |
1e8aac |
gtk_dialog_add_action_widget (dialog, button, GTK_RESPONSE_CANCEL);
|
|
Packit |
1e8aac |
gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (gtk_dialog_get_action_area (dialog)), button, TRUE);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_dialog_run (dialog);
|
|
Packit |
1e8aac |
gtk_widget_destroy (GTK_WIDGET (dialog));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_subscribe_email (GladeRegistration *registration)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = registration->priv;
|
|
Packit |
1e8aac |
GString *post;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!priv->sub_http)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
priv->sub_http = glade_http_new ("lists.ximian.com", 80, FALSE);
|
|
Packit |
1e8aac |
g_signal_connect_object (priv->sub_http, "request-done",
|
|
Packit |
1e8aac |
G_CALLBACK (on_subscribe_http_request_done),
|
|
Packit |
1e8aac |
registration, 0);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
post = g_string_new ("");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "email", priv->email);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "fullname", priv->name);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_registration_http_post (registration, priv->sub_http, NULL,
|
|
Packit |
1e8aac |
"/mailman/subscribe/glade-users",
|
|
Packit |
1e8aac |
post);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_string_free (post, TRUE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define append_input_tuple(s,i) string_append_input_key_value_tuple (s, #i, priv->i)
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_http_request_done (GladeHTTP *http,
|
|
Packit |
1e8aac |
gint code,
|
|
Packit |
1e8aac |
const gchar **headers,
|
|
Packit |
1e8aac |
const gchar **values,
|
|
Packit |
1e8aac |
const gchar *response,
|
|
Packit |
1e8aac |
GladeRegistration *registration)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
switch (code)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
case 100:
|
|
Packit |
1e8aac |
/* Ignore Continue HTTP response */
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
case 200:
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
const gchar *status = NULL, *message = _("Internal server error");
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = registration->priv;
|
|
Packit |
1e8aac |
gint i;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (i = 0; headers[i]; i++)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (g_strcmp0 (headers[i], "X-Glade-Status") == 0)
|
|
Packit |
1e8aac |
status = values[i];
|
|
Packit |
1e8aac |
else if (g_strcmp0 (headers[i], "X-Glade-Message") == 0)
|
|
Packit |
1e8aac |
message = values[i];
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (status == NULL)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
"%s", message);
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "ok") == 0)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_label_set_text (priv->status_label, "");
|
|
Packit |
1e8aac |
gtk_widget_hide (priv->net_spinner);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->subscribe)))
|
|
Packit |
1e8aac |
glade_registration_subscribe_email (registration);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_util_ui_message (GTK_WIDGET (registration), GLADE_UI_INFO, NULL,
|
|
Packit |
1e8aac |
"<big>%s</big>", _("Thank you for taking the time to complete the survey, we appreciate it!"));
|
|
Packit |
1e8aac |
gtk_widget_hide (GTK_WIDGET (registration));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_set (registration, "completed", TRUE, NULL);
|
|
Packit |
1e8aac |
glade_app_config_save ();
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "error_required_field") == 0)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_INFO,
|
|
Packit |
1e8aac |
"%s", _("Name and Email fields are required"));
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "error_email_in_use") == 0)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
"%s", _("Oops! Email address is already in use!\nTo update information you need to provide the token that was sent to your inbox."));
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "error_db_user_info") == 0)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
_("Oops! Error saving user information: %s"), message);
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "error_db_survey_data") == 0)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
_("Oops! Error saving survey data: %s"), message);
|
|
Packit |
1e8aac |
else if (g_strcmp0 (status, "error_db") == 0)
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
_("Oops! Error accessing DB: %s"), message);
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING, "%s", message);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
default:
|
|
Packit |
1e8aac |
glade_registration_show_message (registration, GTK_MESSAGE_WARNING,
|
|
Packit |
1e8aac |
"%s", response ? response : "");
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_clear_cancellable (GladeRegistrationPrivate *priv)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (priv->cancellable)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_cancellable_cancel (priv->cancellable);
|
|
Packit |
1e8aac |
g_clear_object (&priv->cancellable);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_registration_dialog_response (GtkDialog *dialog, gint response_id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = GLADE_REGISTRATION (dialog)->priv;
|
|
Packit |
1e8aac |
GString *post;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_hide (priv->infobar);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (response_id != GTK_RESPONSE_APPLY)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_widget_hide (GTK_WIDGET (dialog));
|
|
Packit |
1e8aac |
glade_registration_clear_cancellable (priv);
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_registration_clear_cancellable (priv);
|
|
Packit |
1e8aac |
priv->cancellable = g_cancellable_new ();
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
post = g_string_new ("");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
append_input_tuple (post, name);
|
|
Packit |
1e8aac |
append_input_tuple (post, email);
|
|
Packit |
1e8aac |
append_input_tuple (post, country_id);
|
|
Packit |
1e8aac |
append_input_tuple (post, city);
|
|
Packit |
1e8aac |
append_input_tuple (post, contact_type);
|
|
Packit |
1e8aac |
append_input_tuple (post, contact_name);
|
|
Packit |
1e8aac |
append_input_tuple (post, contact_website);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
append_input_tuple (post, update_token_checkbutton);
|
|
Packit |
1e8aac |
append_input_tuple (post, update_token);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
append_input_tuple (post, experience);
|
|
Packit |
1e8aac |
append_input_tuple (post, experience_unit);
|
|
Packit |
1e8aac |
append_input_tuple (post, experience_not_programmer);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_c);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_cpp);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_csharp);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_java);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_python);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_javascript);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_vala);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_perl);
|
|
Packit |
1e8aac |
append_input_tuple (post, lang_other);
|
|
Packit |
1e8aac |
append_input_tuple (post, start_using);
|
|
Packit |
1e8aac |
append_input_tuple (post, start_using_unit);
|
|
Packit |
1e8aac |
append_input_tuple (post, version);
|
|
Packit |
1e8aac |
append_input_tuple (post, version_other);
|
|
Packit |
1e8aac |
append_input_tuple (post, os);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "linux", priv->os_linux);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "bsd", priv->os_bsd);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "windows", priv->os_windows);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "osx", priv->os_osx);
|
|
Packit |
1e8aac |
string_append_input_key_value_tuple (post, "solaris", priv->os_solaris);
|
|
Packit |
1e8aac |
append_input_tuple (post, os_other);
|
|
Packit |
1e8aac |
append_input_tuple (post, freq);
|
|
Packit |
1e8aac |
append_input_tuple (post, user_level);
|
|
Packit |
1e8aac |
append_input_tuple (post, soft_free);
|
|
Packit |
1e8aac |
append_input_tuple (post, soft_open);
|
|
Packit |
1e8aac |
append_input_tuple (post, soft_commercial);
|
|
Packit |
1e8aac |
append_input_tuple (post, soft_none);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_academic);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_accounting);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_desktop);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_educational);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_embedded);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_medical);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_industrial);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_scientific);
|
|
Packit |
1e8aac |
append_input_tuple (post, field_other);
|
|
Packit |
1e8aac |
append_input_tuple (post, improvement);
|
|
Packit |
1e8aac |
append_input_tuple (post, problem);
|
|
Packit |
1e8aac |
append_input_tuple (post, problem_other);
|
|
Packit |
1e8aac |
append_input_tuple (post, bug);
|
|
Packit |
1e8aac |
append_input_tuple (post, bugzilla);
|
|
Packit |
1e8aac |
append_input_tuple (post, contributing);
|
|
Packit |
1e8aac |
append_input_tuple (post, contributing_whynot);
|
|
Packit |
1e8aac |
append_input_tuple (post, comments);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_registration_http_post (GLADE_REGISTRATION (dialog),
|
|
Packit |
1e8aac |
priv->http,
|
|
Packit |
1e8aac |
priv->cancellable,
|
|
Packit |
1e8aac |
"/~jpu/glade/registration.php",
|
|
Packit |
1e8aac |
post);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_string_free (post, TRUE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
toggle_button_set_visible_on_toggle (GtkToggleButton *button, GtkWidget *widget)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_widget_set_visible (widget, gtk_toggle_button_get_active (button));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
toggle_button_set_sensitive_on_toggle (GtkToggleButton *button, GtkWidget *widget)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (button));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static gboolean
|
|
Packit |
1e8aac |
on_viewport_draw (GtkWidget *viewport, cairo_t *cr, GladeRegistration *widget)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkStyleContext *context = gtk_widget_get_style_context (viewport);
|
|
Packit |
1e8aac |
GtkAllocation alloc;
|
|
Packit |
1e8aac |
gdouble scale;
|
|
Packit |
1e8aac |
GdkRGBA c;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_style_context_get_color (context, gtk_style_context_get_state (context), &c);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_get_allocation (viewport, &alloc);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
scale = MIN (alloc.width/GLADE_LOGO_WIDTH, alloc.height/GLADE_LOGO_HEIGHT) - .1;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
cairo_save (cr);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
cairo_set_source_rgba (cr, c.red, c.green, c.blue, .04);
|
|
Packit |
1e8aac |
cairo_scale (cr, scale, scale);
|
|
Packit |
1e8aac |
cairo_translate (cr, (alloc.width / scale) - GLADE_LOGO_WIDTH*.95,
|
|
Packit |
1e8aac |
(alloc.height / scale) - GLADE_LOGO_HEIGHT);
|
|
Packit |
1e8aac |
cairo_append_path (cr, &glade_logo_path);
|
|
Packit |
1e8aac |
cairo_fill (cr);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
cairo_restore (cr);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_init (GladeRegistration *registration)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = glade_registration_get_instance_private (registration);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
registration->priv = priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* HTTPS default port is 443 */
|
|
Packit |
1e8aac |
priv->http = glade_http_new ("people.gnome.org", 443, TRUE);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_signal_connect_object (priv->http, "request-done",
|
|
Packit |
1e8aac |
G_CALLBACK (on_http_request_done),
|
|
Packit |
1e8aac |
registration, 0);
|
|
Packit |
1e8aac |
g_signal_connect_object (priv->http, "status",
|
|
Packit |
1e8aac |
G_CALLBACK (on_http_status),
|
|
Packit |
1e8aac |
registration, 0);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_init_template (GTK_WIDGET (registration));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (GTK_IS_COMBO_BOX_TEXT (priv->version_other))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (priv->version_other);
|
|
Packit |
1e8aac |
gchar id[16], text[18];
|
|
Packit |
1e8aac |
gint minor;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (minor = 0; minor <= GLADE_MINOR_VERSION; minor+=2)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
g_snprintf (id, 16, "%d", minor);
|
|
Packit |
1e8aac |
g_snprintf (text, 18, "3.%d", minor);
|
|
Packit |
1e8aac |
gtk_combo_box_text_append (combo, id, text);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_finalize (GObject *object)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeRegistrationPrivate *priv = GLADE_REGISTRATION (object)->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_clear_object (&priv->http);
|
|
Packit |
1e8aac |
g_clear_object (&priv->sub_http);
|
|
Packit |
1e8aac |
g_clear_object (&priv->cancellable);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_OBJECT_CLASS (glade_registration_parent_class)->finalize (object);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GKeyFile *config = glade_app_get_config ();
|
|
Packit |
1e8aac |
g_return_if_fail (GLADE_IS_REGISTRATION (object));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
switch (prop_id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
case PROP_SKIP_REMINDER:
|
|
Packit |
1e8aac |
case PROP_COMPLETED:
|
|
Packit |
1e8aac |
g_key_file_set_boolean (config, CONFIG_GROUP, pspec->name, g_value_get_boolean (value));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
default:
|
|
Packit |
1e8aac |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GKeyFile *config = glade_app_get_config ();
|
|
Packit |
1e8aac |
g_return_if_fail (GLADE_IS_REGISTRATION (object));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
switch (prop_id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
case PROP_SKIP_REMINDER:
|
|
Packit |
1e8aac |
case PROP_COMPLETED:
|
|
Packit |
1e8aac |
g_value_set_boolean (value, g_key_file_get_boolean (config, CONFIG_GROUP, pspec->name, NULL));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
default:
|
|
Packit |
1e8aac |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_registration_class_init (GladeRegistrationClass *klass)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
Packit |
1e8aac |
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
|
Packit |
1e8aac |
GtkCssProvider *css_provider;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/glade/glade-registration.glade");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, infobar);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, net_spinner);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, infobar_label);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, status_label);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, name);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, email);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, country_id);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, city);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_type);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_name);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contact_website);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, subscribe);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, update_token_checkbutton);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, update_token);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience_unit);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, experience_not_programmer);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_c);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_cpp);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_csharp);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_java);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_python);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_javascript);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_vala);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_perl);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, lang_other);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, start_using);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, start_using_unit);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, version);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, version_other);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_linux);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_bsd);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_windows);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_osx);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_solaris);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, os_other);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, freq);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, user_level);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_free);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_open);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_commercial);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, soft_none);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_academic);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_accounting);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_desktop);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_educational);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_embedded);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_medical);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_industrial);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_scientific);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, field_other);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, improvement);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, problem);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, problem_other);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, bug);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, bugzilla);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contributing);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, contributing_whynot);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeRegistration, comments);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_registration_dialog_response);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, toggle_button_set_visible_on_toggle);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, toggle_button_set_sensitive_on_toggle);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_viewport_draw);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
object_class->finalize = glade_registration_finalize;
|
|
Packit |
1e8aac |
object_class->set_property = glade_registration_set_property;
|
|
Packit |
1e8aac |
object_class->get_property = glade_registration_get_property;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_class_install_property (object_class,
|
|
Packit |
1e8aac |
PROP_COMPLETED,
|
|
Packit |
1e8aac |
g_param_spec_boolean ("completed",
|
|
Packit |
1e8aac |
"Completed",
|
|
Packit |
1e8aac |
"Registration was completed successfully",
|
|
Packit |
1e8aac |
FALSE,
|
|
Packit |
1e8aac |
G_PARAM_READWRITE));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_class_install_property (object_class,
|
|
Packit |
1e8aac |
PROP_SKIP_REMINDER,
|
|
Packit |
1e8aac |
g_param_spec_boolean ("skip-reminder",
|
|
Packit |
1e8aac |
"Skip reminder",
|
|
Packit |
1e8aac |
"Skip registration reminder dialog",
|
|
Packit |
1e8aac |
FALSE,
|
|
Packit |
1e8aac |
G_PARAM_READWRITE));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Setup Custom CSS */
|
|
Packit |
1e8aac |
css_provider = gtk_css_provider_new ();
|
|
Packit |
1e8aac |
gtk_css_provider_load_from_resource (css_provider, "/org/gnome/glade/glade-registration.css");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
|
|
Packit |
1e8aac |
GTK_STYLE_PROVIDER (css_provider),
|
|
Packit |
1e8aac |
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
|
Packit |
1e8aac |
g_object_unref (css_provider);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget*
|
|
Packit |
1e8aac |
glade_registration_new (void)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
return GTK_WIDGET (g_object_new (GLADE_TYPE_REGISTRATION, NULL));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|