[gnome-initial-setup] Split each page into its own UI file
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] Split each page into its own UI file
- Date: Fri, 22 Jun 2012 21:15:27 +0000 (UTC)
commit 2e3ffe596d809e683b22c7225a4012fe9c8b935c
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Fri Jun 22 16:19:53 2012 -0400
Split each page into its own UI file
At the same time, split the accounts part out more, but not completely
yet. This fixes EULAs.
gnome-initial-setup/Makefile.am | 15 +-
gnome-initial-setup/gis-account-page.c | 253 ++++++----
gnome-initial-setup/gis-account-page.ui | 272 +++++++++++
gnome-initial-setup/gis-assistant.c | 91 +----
gnome-initial-setup/gis-goa-page.c | 13 +-
gnome-initial-setup/gis-goa-page.ui | 56 +++
gnome-initial-setup/gis-location-page.c | 13 +-
gnome-initial-setup/gis-location-page.ui | 126 +++++
gnome-initial-setup/gis-network-page.c | 14 +-
gnome-initial-setup/gis-network-page.ui | 125 +++++
gnome-initial-setup/gis-summary-page.c | 10 +-
gnome-initial-setup/gis-summary-page.ui | 109 +++++
gnome-initial-setup/gis-utils.c | 23 +
gnome-initial-setup/gis-utils.h | 1 +
gnome-initial-setup/gis-welcome-page.c | 10 +
gnome-initial-setup/gis-welcome-page.ui | 54 ++
gnome-initial-setup/gnome-initial-setup.c | 46 +--
gnome-initial-setup/gnome-initial-setup.h | 5 +-
gnome-initial-setup/setup.gresource.xml | 6 +
gnome-initial-setup/setup.ui | 746 -----------------------------
20 files changed, 988 insertions(+), 1000 deletions(-)
---
diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am
index 036d41e..231c057 100644
--- a/gnome-initial-setup/Makefile.am
+++ b/gnome-initial-setup/Makefile.am
@@ -24,7 +24,16 @@ timedated.h: $(srcdir)/timedated1-interface.xml
--generate-c-code timedated $<
BUILT_SOURCES += timedated.c timedated.h
-setup_resources.c: setup.gresource.xml setup.ui welcome-image.png
+UI_FILES = \
+ setup.ui \
+ gis-welcome-page.ui \
+ gis-network-page.ui \
+ gis-account-page.ui \
+ gis-location-page.ui \
+ gis-goa-page.ui \
+ gis-summary-page.ui
+
+setup_resources.c: setup.gresource.xml $(UI_FILES) welcome-image.png
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/setup.gresource.xml
BUILT_SOURCES += setup_resources.c
@@ -67,7 +76,7 @@ EXTRA_DIST = \
$(sys_DATA) \
$(included_source_files) \
timedated1-interface.xml \
- setup.ui \
- welcome-image.png \
+ $(UI_FILES) \
setup.gresource.xml \
+ welcome-image.png \
welcome-tour.desktop
diff --git a/gnome-initial-setup/gis-account-page.c b/gnome-initial-setup/gis-account-page.c
index 65b5056..1505443 100644
--- a/gnome-initial-setup/gis-account-page.c
+++ b/gnome-initial-setup/gis-account-page.c
@@ -1,23 +1,48 @@
/* Account page {{{1 */
+#define OBJ(type,name) ((type)gtk_builder_get_object(data->builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
static gboolean skip_account = FALSE;
+typedef struct _AccountData AccountData;
+
+struct _AccountData {
+ SetupData *setup;
+ GtkBuilder *builder;
+
+ ActUserManager *act_client;
+
+ gboolean valid_name;
+ gboolean valid_username;
+ gboolean valid_password;
+ const gchar *password_reason;
+ ActUserPasswordMode password_mode;
+ ActUserAccountType account_type;
+
+ gboolean user_data_unsaved;
+
+ GtkWidget *photo_dialog;
+ GdkPixbuf *avatar_pixbuf;
+ gchar *avatar_filename;
+};
+
static void
-update_account_page_status (SetupData *setup)
+update_account_page_status (AccountData *data)
{
gboolean complete;
- complete = setup->valid_name && setup->valid_username &&
- (setup->valid_password ||
- setup->password_mode == ACT_USER_PASSWORD_MODE_NONE);
+ complete = data->valid_name && data->valid_username &&
+ (data->valid_password ||
+ data->password_mode == ACT_USER_PASSWORD_MODE_NONE);
- gis_assistant_set_page_complete (gis_get_assistant (setup), WID("account-page"), complete);
+ gis_assistant_set_page_complete (gis_get_assistant (data->setup), WID("account-page"), complete);
gtk_widget_set_sensitive (WID("local-account-done-button"), complete);
}
static void
-fullname_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
+fullname_changed (GtkWidget *w, GParamSpec *pspec, AccountData *data)
{
GtkWidget *combo;
GtkWidget *entry;
@@ -32,10 +57,10 @@ fullname_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
gtk_list_store_clear (GTK_LIST_STORE (model));
- setup->valid_name = is_valid_name (name);
- setup->user_data_unsaved = TRUE;
+ data->valid_name = is_valid_name (name);
+ data->user_data_unsaved = TRUE;
- if (!setup->valid_name) {
+ if (!data->valid_name) {
gtk_entry_set_text (GTK_ENTRY (entry), "");
return;
}
@@ -44,11 +69,11 @@ fullname_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
- update_account_page_status (setup);
+ update_account_page_status (data);
}
static void
-username_changed (GtkComboBoxText *combo, SetupData *setup)
+username_changed (GtkComboBoxText *combo, AccountData *data)
{
const gchar *username;
gchar *tip;
@@ -56,8 +81,8 @@ username_changed (GtkComboBoxText *combo, SetupData *setup)
username = gtk_combo_box_text_get_active_text (combo);
- setup->valid_username = is_valid_username (username, &tip);
- setup->user_data_unsaved = TRUE;
+ data->valid_username = is_valid_username (username, &tip);
+ data->user_data_unsaved = TRUE;
entry = gtk_bin_get_child (GTK_BIN (combo));
@@ -69,11 +94,11 @@ username_changed (GtkComboBoxText *combo, SetupData *setup)
clear_entry_validation_error (GTK_ENTRY (entry));
}
- update_account_page_status (setup);
+ update_account_page_status (data);
}
static void
-password_check_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
+password_check_changed (GtkWidget *w, GParamSpec *pspec, AccountData *data)
{
GtkWidget *password_entry;
GtkWidget *confirm_entry;
@@ -82,12 +107,12 @@ password_check_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
need_password = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
if (need_password) {
- setup->password_mode = ACT_USER_PASSWORD_MODE_REGULAR;
- setup->valid_password = FALSE;
+ data->password_mode = ACT_USER_PASSWORD_MODE_REGULAR;
+ data->valid_password = FALSE;
}
else {
- setup->password_mode = ACT_USER_PASSWORD_MODE_NONE;
- setup->valid_password = TRUE;
+ data->password_mode = ACT_USER_PASSWORD_MODE_NONE;
+ data->valid_password = TRUE;
}
password_entry = WID("account-password-entry");
@@ -98,28 +123,28 @@ password_check_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
gtk_widget_set_sensitive (password_entry, need_password);
gtk_widget_set_sensitive (confirm_entry, need_password);
- setup->user_data_unsaved = TRUE;
- update_account_page_status (setup);
+ data->user_data_unsaved = TRUE;
+ update_account_page_status (data);
}
static void
-admin_check_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
+admin_check_changed (GtkWidget *w, GParamSpec *pspec, AccountData *data)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) {
- setup->account_type = ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
+ data->account_type = ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
}
else {
- setup->account_type = ACT_USER_ACCOUNT_TYPE_STANDARD;
+ data->account_type = ACT_USER_ACCOUNT_TYPE_STANDARD;
}
- setup->user_data_unsaved = TRUE;
- update_account_page_status (setup);
+ data->user_data_unsaved = TRUE;
+ update_account_page_status (data);
}
#define MIN_PASSWORD_LEN 6
static void
-update_password_entries (SetupData *setup)
+update_password_entries (AccountData *data)
{
const gchar *password;
const gchar *verify;
@@ -142,41 +167,41 @@ update_password_entries (SetupData *setup)
strength = pw_strength (password, NULL, username, &hint, &long_hint);
if (strength == 0.0) {
- setup->valid_password = FALSE;
- setup->password_reason = long_hint ? long_hint : hint;
+ data->valid_password = FALSE;
+ data->password_reason = long_hint ? long_hint : hint;
}
else if (strcmp (password, verify) != 0) {
- setup->valid_password = FALSE;
- setup->password_reason = _("Passwords do not match");
+ data->valid_password = FALSE;
+ data->password_reason = _("Passwords do not match");
}
else {
- setup->valid_password = TRUE;
+ data->valid_password = TRUE;
}
}
static void
-password_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
+password_changed (GtkWidget *w, GParamSpec *pspec, AccountData *data)
{
- update_password_entries (setup);
+ update_password_entries (data);
- setup->user_data_unsaved = TRUE;
- update_account_page_status (setup);
+ data->user_data_unsaved = TRUE;
+ update_account_page_status (data);
}
static void
-confirm_changed (GtkWidget *w, GParamSpec *pspec, SetupData *setup)
+confirm_changed (GtkWidget *w, GParamSpec *pspec, AccountData *data)
{
clear_entry_validation_error (GTK_ENTRY (w));
- update_password_entries (setup);
+ update_password_entries (data);
- setup->user_data_unsaved = TRUE;
- update_account_page_status (setup);
+ data->user_data_unsaved = TRUE;
+ update_account_page_status (data);
}
static gboolean
confirm_entry_focus_out (GtkWidget *entry,
GdkEventFocus *event,
- SetupData *setup)
+ AccountData *data)
{
const gchar *password;
const gchar *verify;
@@ -189,9 +214,9 @@ confirm_entry_focus_out (GtkWidget *entry,
verify = gtk_entry_get_text (confirm_entry);
if (strlen (password) > 0 && strlen (verify) > 0) {
- if (!setup->valid_password) {
+ if (!data->valid_password) {
set_entry_validation_error (confirm_entry,
- setup->password_reason);
+ data->password_reason);
}
else {
clear_entry_validation_error (confirm_entry);
@@ -202,19 +227,20 @@ confirm_entry_focus_out (GtkWidget *entry,
}
static void
-set_user_avatar (SetupData *setup)
+set_user_avatar (AccountData *data)
{
GFile *file = NULL;
GFileIOStream *io_stream = NULL;
GOutputStream *stream = NULL;
GError *error = NULL;
+ SetupData *setup = data->setup;
- if (setup->avatar_filename != NULL) {
- act_user_set_icon_file (setup->act_user, setup->avatar_filename);
+ if (data->avatar_filename != NULL) {
+ act_user_set_icon_file (setup->act_user, data->avatar_filename);
return;
}
- if (setup->avatar_pixbuf == NULL) {
+ if (data->avatar_pixbuf == NULL) {
return;
}
@@ -223,7 +249,7 @@ set_user_avatar (SetupData *setup)
goto out;
stream = g_io_stream_get_output_stream (G_IO_STREAM (io_stream));
- if (!gdk_pixbuf_save_to_stream (setup->avatar_pixbuf, stream, "png", NULL, &error, NULL))
+ if (!gdk_pixbuf_save_to_stream (data->avatar_pixbuf, stream, "png", NULL, &error, NULL))
goto out;
act_user_set_icon_file (setup->act_user, g_file_get_path (file));
@@ -239,40 +265,41 @@ set_user_avatar (SetupData *setup)
}
static void
-create_user (SetupData *setup)
+create_user (AccountData *data)
{
const gchar *username;
const gchar *fullname;
GError *error;
+ SetupData *setup = data->setup;
username = gtk_combo_box_text_get_active_text (OBJ(GtkComboBoxText*, "account-username-combo"));
fullname = gtk_entry_get_text (OBJ(GtkEntry*, "account-fullname-entry"));
error = NULL;
- setup->act_user = act_user_manager_create_user (setup->act_client, username, fullname, setup->account_type, &error);
+ setup->act_user = act_user_manager_create_user (data->act_client, username, fullname, data->account_type, &error);
if (error != NULL) {
g_warning ("Failed to create user: %s", error->message);
g_error_free (error);
}
- set_user_avatar (setup);
+ set_user_avatar (data);
}
-static void save_account_data (SetupData *setup);
+static void save_account_data (AccountData *data);
-gulong when_loaded;
+static gulong when_loaded;
static void
-save_when_loaded (ActUser *user, GParamSpec *pspec, SetupData *setup)
+save_when_loaded (ActUser *user, GParamSpec *pspec, AccountData *data)
{
g_signal_handler_disconnect (user, when_loaded);
when_loaded = 0;
- save_account_data (setup);
+ save_account_data (data);
}
static void
-clear_account_page (SetupData *setup)
+clear_account_page (AccountData *data)
{
GtkWidget *fullname_entry;
GtkWidget *username_combo;
@@ -289,19 +316,19 @@ clear_account_page (SetupData *setup)
password_entry = WID("account-password-entry");
confirm_entry = WID("account-confirm-entry");
- setup->valid_name = FALSE;
- setup->valid_username = FALSE;
- setup->valid_password = TRUE;
- setup->password_mode = ACT_USER_PASSWORD_MODE_NONE;
- setup->account_type = ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
- setup->user_data_unsaved = FALSE;
+ data->valid_name = FALSE;
+ data->valid_username = FALSE;
+ data->valid_password = TRUE;
+ data->password_mode = ACT_USER_PASSWORD_MODE_NONE;
+ data->account_type = ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR;
+ data->user_data_unsaved = FALSE;
- need_password = setup->password_mode != ACT_USER_PASSWORD_MODE_NONE;
+ need_password = data->password_mode != ACT_USER_PASSWORD_MODE_NONE;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (password_check), need_password);
gtk_widget_set_sensitive (password_entry, need_password);
gtk_widget_set_sensitive (confirm_entry, need_password);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (admin_check), setup->account_type == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (admin_check), data->account_type == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR);
gtk_entry_set_text (GTK_ENTRY (fullname_entry), "");
gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (username_combo))));
@@ -310,37 +337,38 @@ clear_account_page (SetupData *setup)
}
static void
-save_account_data (SetupData *setup)
+save_account_data (AccountData *data)
{
const gchar *realname;
const gchar *username;
const gchar *password;
+ SetupData *setup = data->setup;
- if (!setup->user_data_unsaved) {
+ if (!data->user_data_unsaved) {
return;
}
/* this can happen when going back */
- if (!setup->valid_name ||
- !setup->valid_username ||
- !setup->valid_password) {
+ if (!data->valid_name ||
+ !data->valid_username ||
+ !data->valid_password) {
return;
}
if (setup->act_user == NULL) {
- create_user (setup);
+ create_user (data);
}
if (setup->act_user == NULL) {
g_warning ("User creation failed");
- clear_account_page (setup);
+ clear_account_page (data);
return;
}
if (!act_user_is_loaded (setup->act_user)) {
if (when_loaded == 0)
when_loaded = g_signal_connect (setup->act_user, "notify::is-loaded",
- G_CALLBACK (save_when_loaded), setup);
+ G_CALLBACK (save_when_loaded), data);
return;
}
@@ -350,23 +378,23 @@ save_account_data (SetupData *setup)
act_user_set_real_name (setup->act_user, realname);
act_user_set_user_name (setup->act_user, username);
- act_user_set_account_type (setup->act_user, setup->account_type);
- if (setup->password_mode == ACT_USER_PASSWORD_MODE_REGULAR) {
+ act_user_set_account_type (setup->act_user, data->account_type);
+ if (data->password_mode == ACT_USER_PASSWORD_MODE_REGULAR) {
act_user_set_password (setup->act_user, password, NULL);
}
else {
- act_user_set_password_mode (setup->act_user, setup->password_mode);
+ act_user_set_password_mode (setup->act_user, data->password_mode);
}
gnome_keyring_create_sync ("Default", password ? password : "");
gnome_keyring_set_default_keyring_sync ("Default");
- setup->user_data_unsaved = FALSE;
+ data->user_data_unsaved = FALSE;
}
static void
show_local_account_dialog (GtkWidget *button,
- SetupData *setup)
+ AccountData *data)
{
GtkWidget *dialog;
@@ -376,54 +404,54 @@ show_local_account_dialog (GtkWidget *button,
}
static void
-hide_local_account_dialog (GtkButton *button, gpointer data)
+hide_local_account_dialog (GtkButton *button, gpointer user_data)
{
- SetupData *setup = data;
+ AccountData *data = user_data;
GtkWidget *dialog;
dialog = WID("local-account-dialog");
gtk_widget_hide (dialog);
- clear_account_page (setup);
+ clear_account_page (data);
}
static void
-create_local_account (GtkButton *button, gpointer data)
+create_local_account (GtkButton *button, gpointer user_data)
{
- SetupData *setup = data;
+ AccountData *data = user_data;
gtk_widget_hide (WID("local-account-dialog"));
}
static void
avatar_callback (GdkPixbuf *pixbuf,
const gchar *filename,
- gpointer data)
+ gpointer user_data)
{
- SetupData *setup = data;
+ AccountData *data = user_data;
GtkWidget *image;
GdkPixbuf *tmp;
- g_clear_object (&setup->avatar_pixbuf);
- g_free (setup->avatar_filename);
- setup->avatar_filename = NULL;
+ g_clear_object (&data->avatar_pixbuf);
+ g_free (data->avatar_filename);
+ data->avatar_filename = NULL;
image = WID("local-account-avatar-image");
if (pixbuf) {
- setup->avatar_pixbuf = g_object_ref (pixbuf);
+ data->avatar_pixbuf = g_object_ref (pixbuf);
tmp = gdk_pixbuf_scale_simple (pixbuf, 64, 64, GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf (GTK_IMAGE (image), tmp);
g_object_unref (tmp);
}
else if (filename) {
- setup->avatar_filename = g_strdup (filename);
+ data->avatar_filename = g_strdup (filename);
tmp = gdk_pixbuf_new_from_file_at_size (filename, 64, 64, NULL);
gtk_image_set_from_pixbuf (GTK_IMAGE (image), tmp);
g_object_unref (tmp);
}
else {
gtk_image_set_from_icon_name (GTK_IMAGE (image), "avatar-default",
- GTK_ICON_SIZE_DIALOG);
+ GTK_ICON_SIZE_DIALOG);
}
}
@@ -439,12 +467,19 @@ prepare_account_page (SetupData *setup)
GtkWidget *local_account_cancel_button;
GtkWidget *local_account_done_button;
GtkWidget *local_account_avatar_button;
+ AccountData *data = g_slice_new (AccountData);
+ GisAssistant *assistant = gis_get_assistant (setup);
+ data->builder = gis_builder ("gis-account-page");
+ data->setup = setup;
if (!skip_account)
gtk_widget_show (WID("account-page"));
g_signal_connect (WID("account-new-local"), "clicked",
- G_CALLBACK (show_local_account_dialog), setup);
+ G_CALLBACK (show_local_account_dialog), data);
+
+ gtk_window_set_transient_for (OBJ(GtkWindow*,"local-account-dialog"),
+ gis_get_main_window(setup));
fullname_entry = WID("account-fullname-entry");
username_combo = WID("account-username-combo");
@@ -455,31 +490,37 @@ prepare_account_page (SetupData *setup)
local_account_cancel_button = WID("local-account-cancel-button");
local_account_done_button = WID("local-account-done-button");
local_account_avatar_button = WID("local-account-avatar-button");
- setup->photo_dialog = (GtkWidget *)um_photo_dialog_new (local_account_avatar_button,
- avatar_callback,
- setup);
+ data->photo_dialog = (GtkWidget *)um_photo_dialog_new (local_account_avatar_button,
+ avatar_callback,
+ data);
g_signal_connect (fullname_entry, "notify::text",
- G_CALLBACK (fullname_changed), setup);
+ G_CALLBACK (fullname_changed), data);
g_signal_connect (username_combo, "changed",
- G_CALLBACK (username_changed), setup);
+ G_CALLBACK (username_changed), data);
g_signal_connect (password_check, "notify::active",
- G_CALLBACK (password_check_changed), setup);
+ G_CALLBACK (password_check_changed), data);
g_signal_connect (admin_check, "notify::active",
- G_CALLBACK (admin_check_changed), setup);
+ G_CALLBACK (admin_check_changed), data);
g_signal_connect (password_entry, "notify::text",
- G_CALLBACK (password_changed), setup);
+ G_CALLBACK (password_changed), data);
g_signal_connect (confirm_entry, "notify::text",
- G_CALLBACK (confirm_changed), setup);
+ G_CALLBACK (confirm_changed), data);
g_signal_connect_after (confirm_entry, "focus-out-event",
- G_CALLBACK (confirm_entry_focus_out), setup);
+ G_CALLBACK (confirm_entry_focus_out), data);
g_signal_connect (local_account_cancel_button, "clicked",
- G_CALLBACK (hide_local_account_dialog), setup);
+ G_CALLBACK (hide_local_account_dialog), data);
g_signal_connect (local_account_done_button, "clicked",
- G_CALLBACK (create_local_account), setup);
+ G_CALLBACK (create_local_account), data);
- setup->act_client = act_user_manager_get_default ();
+ data->act_client = act_user_manager_get_default ();
- clear_account_page (setup);
- update_account_page_status (setup);
+ clear_account_page (data);
+ update_account_page_status (data);
+
+ gis_assistant_add_page (assistant, WID ("account-page"));
+ gis_assistant_set_page_complete (assistant, WID ("account-page"), TRUE);
}
+
+#undef OBJ
+#undef WID
diff --git a/gnome-initial-setup/gis-account-page.ui b/gnome-initial-setup/gis-account-page.ui
new file mode 100644
index 0000000..db5fc9a
--- /dev/null
+++ b/gnome-initial-setup/gis-account-page.ui
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkListStore" id="account-username-model">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkDialog" id="local-account-dialog">
+ <property name="title"></property>
+ <property name="modal">True</property>
+ <property name="resizable">False</property>
+ <child internal-child="action_area">
+ <object class="GtkBox" id="local-account-action-area">
+ <child>
+ <object class="GtkButton" id="local-account-cancel-button">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="local-account-done-button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes">_Done</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="local-account-content-area">
+ <property name="margin">12</property>
+ <child>
+ <object class="GtkGrid" id="local-account-grid">
+ <property name="visible">True</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">12</property>
+ <property name="margin-bottom">18</property>
+ <child>
+ <object class="GtkToggleButton" id="local-account-avatar-button">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImage" id="local-account-avatar-image">
+ <property name="visible">True</property>
+ <property name="icon-name">avatar-default</property>
+ <property name="pixel-size">64</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="width">1</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="account-fullname-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Full Name</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">account-fullname-entry</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="account-fullname-entry">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="account-username-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Username</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">account-username-combo</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="account-username-combo">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="has_entry">True</property>
+ <property name="entry_text_column">0</property>
+ <property name="model">account-username-model</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkCheckButton" id="account-password-check">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Require a password to use this account</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="account-password-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Password</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">account-password-entry</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="account-password-entry">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="visibility">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="account-confirm-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Confirm Password</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">account-confirm-entry</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="account-confirm-entry">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="visibility">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkCheckButton" id="account-admin-check">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Act as administrator of this computer</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">local-account-cancel-button</action-widget>
+ <action-widget response="-5">local-account-done-button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkGrid" id="account-page">
+ <property name="name">account-page</property>
+ <property name="visible">False</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="account-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Choose How to Log In</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="account-buttons">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="account-new-local">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Create a Local Account</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="account-enterprise-login">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Use an Enterprise Login</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index a04e88d..d89455a 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -31,27 +31,11 @@
#include "gis-assistant.h"
#include "cc-notebook.h"
-static void
-gis_assistant_buildable_add_child (GtkBuildable *buildable,
- GtkBuilder *builder,
- GObject *child,
- const gchar *type);
-
-static void
-gis_assistant_buildable_init (GtkBuildableIface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (GisAssistant, gis_assistant, GTK_TYPE_BOX,
- G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
- gis_assistant_buildable_init))
+G_DEFINE_TYPE (GisAssistant, gis_assistant, GTK_TYPE_BOX)
#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GIS_TYPE_ASSISTANT, GisAssistantPrivate))
enum {
- CHILD_PROP_0,
- CHILD_PROP_PAGE_COMPLETE,
-};
-
-enum {
PREPARE,
LAST_SIGNAL,
};
@@ -257,56 +241,14 @@ gis_assistant_finalize (GObject *gobject)
}
static void
-gis_assistant_get_child_property (GtkContainer *container,
- GtkWidget *child,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GisAssistant *assistant = GIS_ASSISTANT (container);
-
- switch (property_id) {
- case CHILD_PROP_PAGE_COMPLETE:
- g_value_set_boolean (value,
- gis_assistant_get_page_complete (assistant, child));
- break;
- default:
- GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
- break;
- }
-}
-
-static void
-gis_assistant_set_child_property (GtkContainer *container,
- GtkWidget *child,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GisAssistant *assistant = GIS_ASSISTANT (container);
-
- switch (property_id) {
- case CHILD_PROP_PAGE_COMPLETE:
- gis_assistant_set_page_complete (assistant, child, g_value_get_boolean (value));
- break;
- default:
- GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
- break;
- }
-}
-
-static void
gis_assistant_class_init (GisAssistantClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
g_type_class_add_private (klass, sizeof (GisAssistantPrivate));
gobject_class->finalize = gis_assistant_finalize;
- container_class->get_child_property = gis_assistant_get_child_property;
- container_class->set_child_property = gis_assistant_set_child_property;
klass->prepare = gis_assistant_prepare;
/**
@@ -328,35 +270,4 @@ gis_assistant_class_init (GisAssistantClass *klass)
NULL, NULL,
g_cclosure_marshal_VOID__OBJECT,
G_TYPE_NONE, 1, GTK_TYPE_WIDGET);
-
- /**
- * GisAssistant:complete:
- *
- * Setting the "complete" child property to %TRUE marks a page as
- * complete (i.e.: all the required fields are filled out). GTK+ uses
- * this information to control the sensitivity of the navigation buttons.
- */
- gtk_container_class_install_child_property (container_class,
- CHILD_PROP_PAGE_COMPLETE,
- g_param_spec_boolean ("complete",
- "Page complete",
- "Whether all required fields on the page have been filled out",
- FALSE,
- G_PARAM_READWRITE));
-}
-
-static void
-gis_assistant_buildable_add_child (GtkBuildable *buildable,
- GtkBuilder *builder,
- GObject *child,
- const gchar *type)
-{
- GisAssistant *assistant = GIS_ASSISTANT (buildable);
- gis_assistant_add_page (assistant, GTK_WIDGET (child));
-}
-
-static void
-gis_assistant_buildable_init (GtkBuildableIface *iface)
-{
- iface->add_child = gis_assistant_buildable_add_child;
}
diff --git a/gnome-initial-setup/gis-goa-page.c b/gnome-initial-setup/gis-goa-page.c
index 86bdc8c..fd8ed54 100644
--- a/gnome-initial-setup/gis-goa-page.c
+++ b/gnome-initial-setup/gis-goa-page.c
@@ -15,10 +15,14 @@
#include <glib/gi18n.h>
#include <gio/gio.h>
+#define OBJ(type,name) ((type)gtk_builder_get_object(data->builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
typedef struct _GoaData GoaData;
struct _GoaData {
SetupData *setup;
+ GtkBuilder *builder;
/* online data */
GoaClient *goa_client;
};
@@ -159,7 +163,6 @@ add_account_to_list (GoaData *data, GoaObject *object)
GoaAccount *account;
GIcon *icon;
gchar *markup;
- SetupData *setup = data->setup;
account = goa_object_peek_account (object);
@@ -207,7 +210,6 @@ remove_account_from_list (GoaData *data, GoaObject *object)
GtkWidget *child;
GoaAccount *account;
const gchar *account_id, *id;
- SetupData *setup = data->setup;
account = goa_object_peek_account (object);
@@ -273,9 +275,11 @@ gis_prepare_online_page (SetupData *setup)
GtkWidget *button;
GError *error = NULL;
GoaData *data = g_slice_new (GoaData);
+ GisAssistant *assistant = gis_get_assistant (setup);
data->setup = setup;
-
+ data->builder = gis_builder ("gis-goa-page");
data->goa_client = goa_client_new_sync (NULL, &error);
+
if (data->goa_client == NULL)
{
g_error ("Failed to get a GoaClient: %s", error->message);
@@ -293,4 +297,7 @@ gis_prepare_online_page (SetupData *setup)
G_CALLBACK (goa_account_added), data);
g_signal_connect (data->goa_client, "account-removed",
G_CALLBACK (goa_account_removed), data);
+
+ gis_assistant_add_page (assistant, WID ("goa-page"));
+ gis_assistant_set_page_complete (assistant, WID ("goa-page"), TRUE);
}
diff --git a/gnome-initial-setup/gis-goa-page.ui b/gnome-initial-setup/gis-goa-page.ui
new file mode 100644
index 0000000..d3ca58a
--- /dev/null
+++ b/gnome-initial-setup/gis-goa-page.ui
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkGrid" id="goa-page">
+ <property name="name">online-page</property>
+ <property name="visible">True</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="online-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Link other accounts</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="online-accounts-list">
+ <property name="orientation">vertical</property>
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="online-add-button">
+ <property name="visible">True</property>
+ <property name="label">_Add Account</property>
+ <property name="use_underline">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-top">24</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gis-location-page.c b/gnome-initial-setup/gis-location-page.c
index 57b9b59..cdb614d 100644
--- a/gnome-initial-setup/gis-location-page.c
+++ b/gnome-initial-setup/gis-location-page.c
@@ -22,10 +22,13 @@
#define DEFAULT_TZ "Europe/London"
+#define OBJ(type,name) ((type)gtk_builder_get_object(data->builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
typedef struct _LocationData LocationData;
struct _LocationData {
- SetupData *setup;
+ GtkBuilder *builder;
/* location data */
CcTimezoneMap *map;
@@ -69,7 +72,6 @@ queue_set_timezone (LocationData *data)
static void
update_timezone (LocationData *data)
{
- SetupData *setup = data->setup;
GString *str;
gchar *location;
gchar *timezone;
@@ -120,7 +122,6 @@ static void
set_location_from_gweather_location (LocationData *data,
GWeatherLocation *gloc)
{
- SetupData *setup = data->setup;
GWeatherTimezone *zone = gweather_location_get_timezone (gloc);
gchar *city = gweather_location_get_city_name (gloc);
@@ -241,7 +242,8 @@ gis_prepare_location_page (SetupData *setup)
GError *error;
const gchar *timezone;
LocationData *data = g_slice_new (LocationData);
- data->setup = setup;
+ GisAssistant *assistant = gis_get_assistant (setup);
+ data->builder = gis_builder ("gis-location-page");;
frame = WID("location-map-frame");
@@ -301,4 +303,7 @@ gis_prepare_location_page (SetupData *setup)
#else
gtk_widget_hide (WID ("location-auto-button"));
#endif
+
+ gis_assistant_add_page (assistant, WID ("location-page"));
+ gis_assistant_set_page_complete (assistant, WID ("location-page"), TRUE);
}
diff --git a/gnome-initial-setup/gis-location-page.ui b/gnome-initial-setup/gis-location-page.ui
new file mode 100644
index 0000000..d86e527
--- /dev/null
+++ b/gnome-initial-setup/gis-location-page.ui
@@ -0,0 +1,126 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkGrid" id="location-page">
+ <property name="name">location-page</property>
+ <property name="visible">True</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel" id="location-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Choose Your Location</property>
+ <property name="halign">center</property>
+ <property name="hexpand">False</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="location-auto-button">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Determine your location automatically</property>
+ <property name="use_underline">True</property>
+ <property name="halign">start</property>
+ <property name="margin-right">24</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="location-map-frame">
+ <property name="visible">True</property>
+ <property name="halign">fill</property>
+ <property name="valign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="location-info-grid">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="row-spacing">12</property>
+ <property name="column-spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="location-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Location</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="current-location-label">
+ <property name="visible">True</property>
+ <property name="label">Boston, MA</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="timezone-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Time Zone</property>
+ <property name="halign">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="current-timezone-label">
+ <property name="visible">True</property>
+ <property name="label">America / New York</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gis-network-page.c b/gnome-initial-setup/gis-network-page.c
index c42a5fb..abdac82 100644
--- a/gnome-initial-setup/gis-network-page.c
+++ b/gnome-initial-setup/gis-network-page.c
@@ -22,8 +22,11 @@
typedef struct _NetworkData NetworkData;
+#define OBJ(type,name) ((type)gtk_builder_get_object(data->builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
struct _NetworkData {
- SetupData *setup;
+ GtkBuilder *builder;
/* network data */
NMClient *nm_client;
@@ -262,7 +265,6 @@ select_and_scroll_to_ap (NetworkData *data, NMAccessPoint *ap)
gchar *ssid_target;
const GByteArray *ssid;
const gchar *ssid_text;
- SetupData *setup = data->setup;
model = (GtkTreeModel *)data->ap_list;
@@ -311,7 +313,6 @@ refresh_without_device (NetworkData *data)
GtkWidget *label;
GtkWidget *spinner;
GtkWidget *swin;
- SetupData *setup = data->setup;
swin = WID("network-scrolledwindow");
label = WID("no-network-label");
@@ -341,7 +342,6 @@ refresh_wireless_list (NetworkData *data)
GtkWidget *label;
GtkWidget *spinner;
GtkWidget *swin;
- SetupData *setup = data->setup;
data->refreshing = TRUE;
@@ -630,7 +630,8 @@ gis_prepare_network_page (SetupData *setup)
DBusGConnection *bus;
GError *error;
NetworkData *data = g_slice_new0 (NetworkData);
- data->setup = setup;
+ GisAssistant *assistant = gis_get_assistant (setup);
+ data->builder = gis_builder ("gis-network-page");
col = OBJ(GtkTreeViewColumn*, "network-list-column");
@@ -735,5 +736,8 @@ gis_prepare_network_page (SetupData *setup)
refresh_wireless_list (data);
+ gis_assistant_add_page (assistant, WID ("network-page"));
+ gis_assistant_set_page_complete (assistant, WID ("network-page"), TRUE);
+
out: ;
}
diff --git a/gnome-initial-setup/gis-network-page.ui b/gnome-initial-setup/gis-network-page.ui
new file mode 100644
index 0000000..0dc2c99
--- /dev/null
+++ b/gnome-initial-setup/gis-network-page.ui
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkListStore" id="liststore-wireless">
+ <columns>
+ <column type="gchararray"/> <!-- column-name id -->
+ <column type="gchararray"/> <!-- column-name title -->
+ <column type="gchararray"/> <!-- column-name sortable -->
+ <column type="guint"/> <!-- column-name strength -->
+ <column type="guint"/> <!-- column-name mode -->
+ <column type="guint"/> <!-- column-name security -->
+ <column type="gboolean"/> <!-- column-name activating -->
+ <column type="gboolean"/> <!-- column-name active -->
+ <column type="guint"/> <!-- column-name pulse -->
+ </columns>
+ </object>
+ <object class="GtkGrid" id="network-page">
+ <property name="name">network-page</property>
+ <property name="visible">True</property>
+ <property name="margin-left">48</property>
+ <property name="margin-right">48</property>
+ <property name="margin-bottom">48</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="network-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Wireless Networks</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="network-scrolledwindow">
+ <property name="visible">True</property>
+ <property name="margin-top">0</property>
+ <property name="margin-bottom">32</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="vscrollbar-policy">automatic</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView" id="network-list">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="halign">fill</property>
+ <property name="valign">fill</property>
+ <property name="model">liststore-wireless</property>
+ <property name="headers-visible">False</property>
+ <property name="search-column">2</property>
+ <property name="enable-grid-lines">horizontal</property>
+ <property name="show-expanders">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="network-list-selection">
+ <property name="mode">single</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="network-list-column"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="no-network-grid">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkSpinner" id="no-network-spinner">
+ <property name="visible">True</property>
+ <property name="active">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="margin-left">6</property>
+ <property name="margin-right">6</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="no-network-label">
+ <property name="visible">True</property>
+ <property name="label">No text</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gis-summary-page.c b/gnome-initial-setup/gis-summary-page.c
index 3673aac..38870bf 100644
--- a/gnome-initial-setup/gis-summary-page.c
+++ b/gnome-initial-setup/gis-summary-page.c
@@ -3,13 +3,14 @@
#include "config.h"
#include "gis-summary-page.h"
-#include "gis-utils.h"
-
#include <glib/gi18n.h>
#include <gio/gio.h>
#include <gdm-greeter-client.h>
+#define OBJ(type,name) ((type)gtk_builder_get_object(builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
static GdmGreeterClient *
connect_to_slave (void)
{
@@ -98,6 +99,8 @@ gis_prepare_summary_page (SetupData *setup)
GtkWidget *button;
GKeyFile *overrides = gis_get_overrides (setup);
gchar *s;
+ GisAssistant *assistant = gis_get_assistant (setup);
+ GtkBuilder *builder = gis_builder ("gis-summary-page");
s = g_key_file_get_locale_string (overrides,
"Summary", "summary-title",
@@ -148,4 +151,7 @@ gis_prepare_summary_page (SetupData *setup)
button = WID("summary-tour-button");
g_signal_connect (button, "clicked",
G_CALLBACK (tour_cb), setup);
+
+ gis_assistant_add_page (assistant, WID ("summary-page"));
+ gis_assistant_set_page_complete (assistant, WID ("summary-page"), TRUE);
}
diff --git a/gnome-initial-setup/gis-summary-page.ui b/gnome-initial-setup/gis-summary-page.ui
new file mode 100644
index 0000000..6a9b0f5
--- /dev/null
+++ b/gnome-initial-setup/gis-summary-page.ui
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkSizeGroup" id="summary-sizegroup">
+ <widgets>
+ <widget name="summary-start-button"/>
+ <widget name="summary-tour-button"/>
+ </widgets>
+ </object>
+ <object class="GtkGrid" id="summary-page">
+ <property name="name">summary-page</property>
+ <property name="visible">True</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="summary-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Enjoy GNOME!</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary-details">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Your new account is ready to use.</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary-details2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">You may change any of these options at any time in the System Settings.</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="summary-start-button">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="label" translatable="yes">_Start using GNOME 3</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="vexpand">True</property>
+ <property name="margin">18</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="summary-tour-details">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">New to GNOME 3 and need help finding your way around?</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="summary-tour-button">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="label" translatable="yes">_Take a Tour</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin">18</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gis-utils.c b/gnome-initial-setup/gis-utils.c
index a95e198..c36ffd6 100644
--- a/gnome-initial-setup/gis-utils.c
+++ b/gnome-initial-setup/gis-utils.c
@@ -1,9 +1,12 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#include "config.h"
#include "gis-utils.h"
#include <string.h>
+#include <stdlib.h>
+
void
gis_copy_account_file (ActUser *act_user,
const gchar *relative_path)
@@ -81,3 +84,23 @@ out:
g_free (to);
g_free (from);
}
+
+GtkBuilder *
+gis_builder (gchar *resource)
+{
+ GtkBuilder *builder;
+ gchar *resource_path = g_strdup_printf ("/ui/%s.ui", resource);
+ GError *error = NULL;
+
+ builder = gtk_builder_new ();
+ gtk_builder_add_from_resource (builder, resource_path, &error);
+
+ g_free (resource_path);
+
+ if (error != NULL) {
+ g_printerr ("%s", error->message);
+ exit (1);
+ }
+
+ return builder;
+}
diff --git a/gnome-initial-setup/gis-utils.h b/gnome-initial-setup/gis-utils.h
index 089db71..6cfb1ce 100644
--- a/gnome-initial-setup/gis-utils.h
+++ b/gnome-initial-setup/gis-utils.h
@@ -11,6 +11,7 @@ G_BEGIN_DECLS
void gis_copy_account_file (ActUser *act_user,
const gchar *relative_path);
+GtkBuilder * gis_builder (gchar *resource);
G_END_DECLS
diff --git a/gnome-initial-setup/gis-welcome-page.c b/gnome-initial-setup/gis-welcome-page.c
index 50b6f13..96a7737 100644
--- a/gnome-initial-setup/gis-welcome-page.c
+++ b/gnome-initial-setup/gis-welcome-page.c
@@ -10,11 +10,16 @@
#include <gtk/gtk.h>
+#define OBJ(type,name) ((type)gtk_builder_get_object(builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
void
gis_prepare_welcome_page (SetupData *setup)
{
gchar *s;
GKeyFile *overrides = gis_get_overrides (setup);
+ GisAssistant *assistant = gis_get_assistant (setup);
+ GtkBuilder *builder = gis_builder ("gis-welcome-page");
s = g_key_file_get_locale_string (overrides,
"Welcome", "welcome-image",
@@ -40,4 +45,9 @@ gis_prepare_welcome_page (SetupData *setup)
g_free (s);
g_key_file_unref (overrides);
+
+ gis_assistant_add_page (assistant, WID ("welcome-page"));
+ gis_assistant_set_page_complete (assistant, WID ("welcome-page"), TRUE);
+
+ g_object_unref (builder);
}
diff --git a/gnome-initial-setup/gis-welcome-page.ui b/gnome-initial-setup/gis-welcome-page.ui
new file mode 100644
index 0000000..35b561a
--- /dev/null
+++ b/gnome-initial-setup/gis-welcome-page.ui
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkGrid" id="welcome-page">
+ <property name="name">welcome-page</property>
+ <property name="visible">True</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="welcome-title">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Welcome to GNOME 3</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="welcome-image">
+ <property name="visible">True</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="pixbuf">resource:///image/welcome-image.png</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="welcome-subtitle">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Let's set up some essentials.</property>
+ <property name="halign">center</property>
+ <property name="margin-top">18</property>
+ <property name="margin-bottom">18</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 7324842..dd9fe89 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -35,33 +35,19 @@
/* Setup data {{{1 */
struct _SetupData {
- GtkBuilder *builder;
- GtkWindow *main_window;
+ GtkWindow *main_window;
+ GKeyFile *overrides;
+ GtkBuilder *builder;
+ GisAssistant *assistant;
- GKeyFile *overrides;
-
- GisAssistant *assistant;
-
- /* account data */
- ActUserManager *act_client;
- ActUser *act_user;
-
- gboolean valid_name;
- gboolean valid_username;
- gboolean valid_password;
- const gchar *password_reason;
- ActUserPasswordMode password_mode;
- ActUserAccountType account_type;
-
- gboolean user_data_unsaved;
-
- GtkWidget *photo_dialog;
- GdkPixbuf *avatar_pixbuf;
- gchar *avatar_filename;
+ ActUser *act_user;
};
#include "gis-account-page.c"
+#define OBJ(type,name) ((type)gtk_builder_get_object(setup->builder,(name)))
+#define WID(name) OBJ(GtkWidget*,name)
+
static void
copy_account_data (SetupData *setup)
{
@@ -83,8 +69,6 @@ prepare_cb (GisAssistant *assi, GtkWidget *page, SetupData *setup)
{
g_debug ("Preparing page %s", gtk_widget_get_name (page));
- save_account_data (setup);
-
if (page == WID("welcome-page")) {
gtk_window_set_title (setup->main_window, _("Welcome"));
}
@@ -139,12 +123,6 @@ gis_get_overrides (SetupData *setup)
return g_key_file_ref (setup->overrides);
}
-GtkBuilder *
-gis_get_builder (SetupData *setup)
-{
- return setup->builder;
-}
-
GtkWindow *
gis_get_main_window (SetupData *setup)
{
@@ -201,13 +179,7 @@ main (int argc, char *argv[])
/* Make sure GisAssistant is initialized. */
g_debug ("Registering: %s\n", g_type_name (gis_assistant_get_type ()));
- setup->builder = gtk_builder_new ();
- gtk_builder_add_from_resource (setup->builder, "/ui/setup.ui", &error);
-
- if (error != NULL) {
- g_printerr ("%s", error->message);
- exit (1);
- }
+ setup->builder = gis_builder ("setup");
setup->overrides = g_key_file_new ();
filename = g_build_filename (UIDIR, "overrides.ini", NULL);
diff --git a/gnome-initial-setup/gnome-initial-setup.h b/gnome-initial-setup/gnome-initial-setup.h
index 9f3640f..c3b7a58 100644
--- a/gnome-initial-setup/gnome-initial-setup.h
+++ b/gnome-initial-setup/gnome-initial-setup.h
@@ -6,6 +6,7 @@
#include <gtk/gtk.h>
#include "gis-assistant.h"
+#include "gis-utils.h"
#include <act/act-user-manager.h>
@@ -13,15 +14,11 @@ G_BEGIN_DECLS
typedef struct _SetupData SetupData;
-GtkBuilder *gis_get_builder (SetupData *setup);
GtkWindow *gis_get_main_window (SetupData *setup);
GKeyFile *gis_get_overrides (SetupData *setup);
GisAssistant * gis_get_assistant (SetupData *setup);
ActUser * gis_get_act_user (SetupData *setup);
-#define OBJ(type,name) ((type)gtk_builder_get_object(gis_get_builder(setup),(name)))
-#define WID(name) OBJ(GtkWidget*,name)
-
G_END_DECLS
#endif /* __GNOME_INITIAL_SETUP_H__ */
diff --git a/gnome-initial-setup/setup.gresource.xml b/gnome-initial-setup/setup.gresource.xml
index ee890a8..466a6f1 100644
--- a/gnome-initial-setup/setup.gresource.xml
+++ b/gnome-initial-setup/setup.gresource.xml
@@ -5,6 +5,12 @@
</gresource>
<gresource prefix="/ui">
<file preprocess="xml-stripblanks">setup.ui</file>
+ <file preprocess="xml-stripblanks">gis-welcome-page.ui</file>
+ <file preprocess="xml-stripblanks">gis-network-page.ui</file>
+ <file preprocess="xml-stripblanks">gis-account-page.ui</file>
+ <file preprocess="xml-stripblanks">gis-location-page.ui</file>
+ <file preprocess="xml-stripblanks">gis-goa-page.ui</file>
+ <file preprocess="xml-stripblanks">gis-summary-page.ui</file>
</gresource>
</gresources>
diff --git a/gnome-initial-setup/setup.ui b/gnome-initial-setup/setup.ui
index d16ef15..b277d3d 100644
--- a/gnome-initial-setup/setup.ui
+++ b/gnome-initial-setup/setup.ui
@@ -1,246 +1,6 @@
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="3.0"/>
- <object class="GtkListStore" id="liststore-wireless">
- <columns>
- <column type="gchararray"/> <!-- column-name id -->
- <column type="gchararray"/> <!-- column-name title -->
- <column type="gchararray"/> <!-- column-name sortable -->
- <column type="guint"/> <!-- column-name strength -->
- <column type="guint"/> <!-- column-name mode -->
- <column type="guint"/> <!-- column-name security -->
- <column type="gboolean"/> <!-- column-name activating -->
- <column type="gboolean"/> <!-- column-name active -->
- <column type="guint"/> <!-- column-name pulse -->
- </columns>
- </object>
- <object class="GtkListStore" id="account-username-model">
- <columns>
- <column type="gchararray"/>
- </columns>
- </object>
- <object class="GtkDialog" id="local-account-dialog">
- <property name="title"></property>
- <property name="transient-for">main-window</property>
- <property name="modal">True</property>
- <property name="resizable">False</property>
- <child internal-child="action_area">
- <object class="GtkBox" id="local-account-action-area">
- <child>
- <object class="GtkButton" id="local-account-cancel-button">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Cancel</property>
- <property name="use-underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="local-account-done-button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="label" translatable="yes">_Done</property>
- <property name="use-underline">True</property>
- </object>
- </child>
- </object>
- </child>
- <child internal-child="vbox">
- <object class="GtkBox" id="local-account-content-area">
- <property name="margin">12</property>
- <child>
- <object class="GtkGrid" id="local-account-grid">
- <property name="visible">True</property>
- <property name="row-spacing">6</property>
- <property name="column-spacing">12</property>
- <property name="margin-bottom">18</property>
- <child>
- <object class="GtkToggleButton" id="local-account-avatar-button">
- <property name="visible">True</property>
- <child>
- <object class="GtkImage" id="local-account-avatar-image">
- <property name="visible">True</property>
- <property name="icon-name">avatar-default</property>
- <property name="pixel-size">64</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left-attach">2</property>
- <property name="top-attach">1</property>
- <property name="width">1</property>
- <property name="height">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="account-fullname-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Full Name</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">account-fullname-entry</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="account-fullname-entry">
- <property name="visible">True</property>
- <property name="halign">start</property>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkLabel" id="account-username-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Username</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">account-username-combo</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="account-username-combo">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="has_entry">True</property>
- <property name="entry_text_column">0</property>
- <property name="model">account-username-model</property>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkCheckButton" id="account-password-check">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Require a password to use this account</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">3</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkLabel" id="account-password-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Password</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">account-password-entry</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="account-password-entry">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="visibility">False</property>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkLabel" id="account-confirm-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Confirm Password</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">account-confirm-entry</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="account-confirm-entry">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="visibility">False</property>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkCheckButton" id="account-admin-check">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Act as administrator of this computer</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="left-attach">0</property>
- <property name="top-attach">6</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-6">local-account-cancel-button</action-widget>
- <action-widget response="-5">local-account-done-button</action-widget>
- </action-widgets>
- </object>
- <object class="GtkSizeGroup" id="summary-sizegroup">
- <widgets>
- <widget name="summary-start-button"/>
- <widget name="summary-tour-button"/>
- </widgets>
- </object>
<object class="GtkWindow" id="main-window">
<!-- interface-naming-policy toplevel-contextual -->
<property name="border-width">12</property>
@@ -253,512 +13,6 @@
<child>
<object class="GisAssistant" id="assistant">
<property name="visible">True</property>
- <child>
- <object class="GtkGrid" id="welcome-page">
- <property name="name">welcome-page</property>
- <property name="visible">True</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="welcome-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Welcome to GNOME 3</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="welcome-image">
- <property name="visible">True</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="pixbuf">resource:///image/welcome-image.png</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="welcome-subtitle">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Let's set up some essentials.</property>
- <property name="halign">center</property>
- <property name="margin-top">18</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="complete">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="network-page">
- <property name="name">network-page</property>
- <property name="visible">True</property>
- <property name="margin-left">48</property>
- <property name="margin-right">48</property>
- <property name="margin-bottom">48</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="network-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Wireless Networks</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="network-scrolledwindow">
- <property name="visible">True</property>
- <property name="margin-top">0</property>
- <property name="margin-bottom">32</property>
- <property name="hscrollbar-policy">never</property>
- <property name="vscrollbar-policy">automatic</property>
- <property name="shadow-type">in</property>
- <child>
- <object class="GtkTreeView" id="network-list">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="vexpand">True</property>
- <property name="halign">fill</property>
- <property name="valign">fill</property>
- <property name="model">liststore-wireless</property>
- <property name="headers-visible">False</property>
- <property name="search-column">2</property>
- <property name="enable-grid-lines">horizontal</property>
- <property name="show-expanders">False</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="network-list-selection">
- <property name="mode">single</property>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="network-list-column"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="no-network-grid">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <child>
- <object class="GtkSpinner" id="no-network-spinner">
- <property name="visible">True</property>
- <property name="active">True</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- <property name="margin-left">6</property>
- <property name="margin-right">6</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="no-network-label">
- <property name="visible">True</property>
- <property name="label">No text</property>
- <property name="halign">center</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="complete">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="account-page">
- <property name="name">account-page</property>
- <property name="visible">False</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="account-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Choose How to Log In</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButtonBox" id="account-buttons">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkButton" id="account-new-local">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Create a Local Account</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="account-enterprise-login">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Use an Enterprise Login</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkGrid" id="location-page">
- <property name="name">location-page</property>
- <property name="visible">True</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="hexpand">True</property>
- <child>
- <object class="GtkLabel" id="location-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Choose Your Location</property>
- <property name="halign">center</property>
- <property name="hexpand">False</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="location-auto-button">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Determine your location automatically</property>
- <property name="use_underline">True</property>
- <property name="halign">start</property>
- <property name="margin-right">24</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="location-map-frame">
- <property name="visible">True</property>
- <property name="halign">fill</property>
- <property name="valign">fill</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="margin-top">12</property>
- <property name="margin-bottom">12</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="location-info-grid">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="row-spacing">12</property>
- <property name="column-spacing">6</property>
- <child>
- <object class="GtkLabel" id="location-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Location</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="current-location-label">
- <property name="visible">True</property>
- <property name="label">Boston, MA</property>
- <property name="halign">start</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="timezone-label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Time Zone</property>
- <property name="halign">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="current-timezone-label">
- <property name="visible">True</property>
- <property name="label">America / New York</property>
- <property name="halign">start</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="complete">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="online-page">
- <property name="name">online-page</property>
- <property name="visible">True</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="online-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Link other accounts</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="online-accounts-list">
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="online-add-button">
- <property name="visible">True</property>
- <property name="label">_Add Account</property>
- <property name="use_underline">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="margin-top">24</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="complete">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="summary-page">
- <property name="name">summary-page</property>
- <property name="visible">True</property>
- <property name="halign">center</property>
- <child>
- <object class="GtkLabel" id="summary-title">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Enjoy GNOME!</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin-bottom">18</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- <attribute name="scale" value="1.2"/>
- </attributes>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="summary-details">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Your new account is ready to use.</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="summary-details2">
- <property name="visible">True</property>
- <property name="label" translatable="yes">You may change any of these options at any time in the System Settings.</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="summary-start-button">
- <property name="visible">True</property>
- <property name="use-underline">True</property>
- <property name="label" translatable="yes">_Start using GNOME 3</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="vexpand">True</property>
- <property name="margin">18</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="summary-tour-details">
- <property name="visible">True</property>
- <property name="label" translatable="yes">New to GNOME 3 and need help finding your way around?</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="summary-tour-button">
- <property name="visible">True</property>
- <property name="use-underline">True</property>
- <property name="label" translatable="yes">_Take a Tour</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="margin">18</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="complete">True</property>
- </packing>
- </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]