[empathy] Preferences: Show chat theme preview



commit 74c8015453317b0084bdac8a22e6974e2af0865d
Author: Xavier Claessens <xclaesse gmail com>
Date:   Tue May 3 16:21:54 2011 +0200

    Preferences: Show chat theme preview
    
    Fixes bug #541438

 src/empathy-preferences.c  |  250 ++++++---
 src/empathy-preferences.ui | 1427 ++++++++++++++++++++++++--------------------
 2 files changed, 965 insertions(+), 712 deletions(-)
---
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index 813637d..52bc3de 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -48,6 +48,9 @@
 
 #include "empathy-preferences.h"
 
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include <libempathy/empathy-debug.h>
+
 G_DEFINE_TYPE (EmpathyPreferences, empathy_preferences, GTK_TYPE_DIALOG);
 
 #define GET_PRIV(self) ((EmpathyPreferencesPriv *)((EmpathyPreferences *) self)->priv)
@@ -57,7 +60,6 @@ struct _EmpathyPreferencesPriv {
 
 	GtkWidget *checkbutton_show_smileys;
 	GtkWidget *checkbutton_show_contacts_in_rooms;
-	GtkWidget *combobox_chat_theme;
 	GtkWidget *checkbutton_separate_chat_windows;
 	GtkWidget *checkbutton_events_notif_area;
 	GtkWidget *checkbutton_autoconnect;
@@ -81,6 +83,12 @@ struct _EmpathyPreferencesPriv {
 	GtkWidget *checkbutton_location_resource_cell;
 	GtkWidget *checkbutton_location_resource_gps;
 
+	GtkWidget *vbox_chat_theme;
+	GtkWidget *combobox_chat_theme;
+	GtkWidget *sw_chat_theme_preview;
+	EmpathyChatView *chat_theme_preview;
+	EmpathyThemeManager *theme_manager;
+
 	GSettings *gsettings;
 	GSettings *gsettings_chat;
 	GSettings *gsettings_loc;
@@ -115,11 +123,11 @@ enum {
 };
 
 enum {
-	COL_COMBO_IS_ADIUM,
-	COL_COMBO_VISIBLE_NAME,
-	COL_COMBO_NAME,
-	COL_COMBO_PATH,
-	COL_COMBO_COUNT
+	COL_THEME_VISIBLE_NAME,
+	COL_THEME_NAME,
+	COL_THEME_IS_ADIUM,
+	COL_THEME_ADIUM_PATH,
+	COL_THEME_COUNT
 };
 
 enum {
@@ -646,6 +654,124 @@ preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
 }
 
 static void
+preferences_preview_theme_append_message (EmpathyChatView *view,
+					  EmpathyContact *sender,
+					  EmpathyContact *receiver,
+					  const gchar *text)
+{
+	EmpathyMessage *message;
+
+	message = g_object_new (EMPATHY_TYPE_MESSAGE,
+		"sender", sender,
+		"receiver", receiver,
+		"body", text,
+		NULL);
+
+	empathy_chat_view_append_message (view, message);
+	g_object_unref (message);
+}
+
+static void
+preferences_preview_theme_changed_cb (EmpathyThemeManager *manager,
+				      EmpathyPreferences  *preferences)
+{
+	EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
+	TpDBusDaemon *dbus;
+	TpAccount *account;
+	EmpathyContact *juliet;
+	EmpathyContact *romeo;
+
+	DEBUG ("Theme changed, update preview widget");
+
+	if (priv->chat_theme_preview != NULL) {
+		gtk_widget_destroy (GTK_WIDGET (priv->chat_theme_preview));
+	}
+	priv->chat_theme_preview = empathy_theme_manager_create_view (manager);
+	gtk_container_add (GTK_CONTAINER (priv->sw_chat_theme_preview),
+			   GTK_WIDGET (priv->chat_theme_preview));
+	gtk_widget_show (GTK_WIDGET (priv->chat_theme_preview));
+
+	/* FIXME: It is ugly to add a fake conversation like that.
+	 * Would be cool if we could request a TplLogManager for a fake
+	 * conversation */
+	dbus = tp_dbus_daemon_dup (NULL);
+	account = tp_account_new (dbus,
+		TP_ACCOUNT_OBJECT_PATH_BASE "cm/jabber/account", NULL);
+	juliet = g_object_new (EMPATHY_TYPE_CONTACT,
+		"account", account,
+		"id", "juliet",
+		/* translators: Contact name for the chat theme preview */
+		"alias", _("Juliet"),
+		"is-user", FALSE,
+		NULL);
+	romeo = g_object_new (EMPATHY_TYPE_CONTACT,
+		"account", account,
+		"id", "romeo",
+		/* translators: Contact name for the chat theme preview */
+		"alias", _("Romeo"),
+		"is-user", TRUE,
+		NULL);
+
+	preferences_preview_theme_append_message (priv->chat_theme_preview,
+		/* translators: Quote from Romeo & Julier, for chat theme preview */
+		juliet, romeo, _("O Romeo, Romeo, wherefore art thou Romeo?"));
+	preferences_preview_theme_append_message (priv->chat_theme_preview,
+		/* translators: Quote from Romeo & Julier, for chat theme preview */
+		juliet, romeo, _("Deny thy father and refuse thy name;"));
+	preferences_preview_theme_append_message (priv->chat_theme_preview,
+		/* translators: Quote from Romeo & Julier, for chat theme preview */
+		juliet, romeo, _("Or if thou wilt not, be but sworn my love"));
+	preferences_preview_theme_append_message (priv->chat_theme_preview,
+		/* translators: Quote from Romeo & Julier, for chat theme preview */
+		juliet, romeo, _("And I'll no longer be a Capulet."));
+	preferences_preview_theme_append_message (priv->chat_theme_preview,
+		/* translators: Quote from Romeo & Julier, for chat theme preview */
+		romeo, juliet, _("Shall I hear more, or shall I speak at this?"));
+
+	/* translators: Quote from Romeo & Julier, for chat theme preview */
+	empathy_chat_view_append_event (priv->chat_theme_preview, _("Juliet has disconnected"));
+
+	g_object_unref (juliet);
+	g_object_unref (romeo);
+	g_object_unref (account);
+	g_object_unref (dbus);
+}
+
+static void
+preferences_theme_changed_cb (GtkComboBox        *combo,
+			      EmpathyPreferences *preferences)
+{
+	EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
+	GtkTreeIter   iter;
+
+	if (gtk_combo_box_get_active_iter (combo, &iter)) {
+		GtkTreeModel *model;
+		gboolean      is_adium;
+		gchar        *name;
+		gchar        *path;
+
+		model = gtk_combo_box_get_model (combo);
+		gtk_tree_model_get (model, &iter,
+				    COL_THEME_IS_ADIUM, &is_adium,
+				    COL_THEME_NAME, &name,
+				    COL_THEME_ADIUM_PATH, &path,
+				    -1);
+
+		g_settings_set_string (priv->gsettings_chat,
+				       EMPATHY_PREFS_CHAT_THEME,
+				       name);
+		if (is_adium) {
+			g_settings_set_string (priv->gsettings_chat,
+					       EMPATHY_PREFS_CHAT_ADIUM_PATH,
+					       path);
+		}
+
+		g_free (name);
+		g_free (path);
+	}
+}
+
+static void
 preferences_theme_notify_cb (GSettings   *gsettings,
 			     const gchar *key,
 			     gpointer     user_data)
@@ -658,38 +784,34 @@ preferences_theme_notify_cb (GSettings   *gsettings,
 	GtkTreeModel       *model;
 	GtkTreeIter         iter;
 	gboolean            found = FALSE;
+	gboolean            ok;
 
 	conf_name = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_THEME);
 	conf_path = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_ADIUM_PATH);
 
 	combo = GTK_COMBO_BOX (priv->combobox_chat_theme);
 	model = gtk_combo_box_get_model (combo);
-	if (gtk_tree_model_get_iter_first (model, &iter)) {
+	for (ok = gtk_tree_model_get_iter_first (model, &iter);
+	     ok && !found;
+	     ok = gtk_tree_model_iter_next (model, &iter)) {
 		gboolean is_adium;
 		gchar *name;
 		gchar *path;
 
-		do {
-			gtk_tree_model_get (model, &iter,
-					    COL_COMBO_IS_ADIUM, &is_adium,
-					    COL_COMBO_NAME, &name,
-					    COL_COMBO_PATH, &path,
-					    -1);
-
-			if (!tp_strdiff (name, conf_name)) {
-				if (tp_strdiff (name, "adium") ||
-				    !tp_strdiff (path, conf_path)) {
-					found = TRUE;
-					gtk_combo_box_set_active_iter (combo, &iter);
-					g_free (name);
-					g_free (path);
-					break;
-				}
-			}
-
-			g_free (name);
-			g_free (path);
-		} while (gtk_tree_model_iter_next (model, &iter));
+		gtk_tree_model_get (model, &iter,
+				    COL_THEME_IS_ADIUM, &is_adium,
+				    COL_THEME_NAME, &name,
+				    COL_THEME_ADIUM_PATH, &path,
+				    -1);
+
+		if (!tp_strdiff (name, conf_name) &&
+		    (!is_adium || !tp_strdiff (path, conf_path))) {
+			found = TRUE;
+			gtk_combo_box_set_active_iter (combo, &iter);
+		}
+
+		g_free (name);
+		g_free (path);
 	}
 
 	/* Fallback to the first one. */
@@ -704,38 +826,6 @@ preferences_theme_notify_cb (GSettings   *gsettings,
 }
 
 static void
-preferences_theme_changed_cb (GtkComboBox        *combo,
-			      EmpathyPreferences *preferences)
-{
-	EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
-	GtkTreeModel *model;
-	GtkTreeIter   iter;
-	gboolean      is_adium;
-	gchar        *name;
-	gchar        *path;
-
-	if (gtk_combo_box_get_active_iter (combo, &iter)) {
-		model = gtk_combo_box_get_model (combo);
-
-		gtk_tree_model_get (model, &iter,
-				    COL_COMBO_IS_ADIUM, &is_adium,
-				    COL_COMBO_NAME, &name,
-				    COL_COMBO_PATH, &path,
-				    -1);
-
-		g_settings_set_string (priv->gsettings_chat,
-				       EMPATHY_PREFS_CHAT_THEME,
-				       name);
-		if (is_adium == TRUE)
-			g_settings_set_string (priv->gsettings_chat,
-					       EMPATHY_PREFS_CHAT_ADIUM_PATH,
-					       path);
-		g_free (name);
-		g_free (path);
-	}
-}
-
-static void
 preferences_themes_setup (EmpathyPreferences *preferences)
 {
 	EmpathyPreferencesPriv *priv = GET_PRIV (preferences);
@@ -751,22 +841,21 @@ preferences_themes_setup (EmpathyPreferences *preferences)
 	cell_layout = GTK_CELL_LAYOUT (combo);
 
 	/* Create the model */
-	store = gtk_list_store_new (COL_COMBO_COUNT,
-				    G_TYPE_BOOLEAN, /* Is an Adium theme */
-				    G_TYPE_STRING,  /* Display name */
-				    G_TYPE_STRING,  /* Theme name */
-				    G_TYPE_STRING); /* Theme path */
+	store = gtk_list_store_new (COL_THEME_COUNT,
+				    G_TYPE_STRING,      /* Display name */
+				    G_TYPE_STRING,      /* Theme name */
+				    G_TYPE_BOOLEAN,     /* Is an Adium theme */
+				    G_TYPE_STRING);     /* Adium theme path */
 	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
-		COL_COMBO_VISIBLE_NAME, GTK_SORT_ASCENDING);
+		COL_THEME_VISIBLE_NAME, GTK_SORT_ASCENDING);
 
 	/* Fill the model */
 	themes = empathy_theme_manager_get_themes ();
 	for (i = 0; themes[i]; i += 2) {
 		gtk_list_store_insert_with_values (store, NULL, -1,
-			COL_COMBO_IS_ADIUM, FALSE,
-			COL_COMBO_VISIBLE_NAME, _(themes[i + 1]),
-			COL_COMBO_NAME, themes[i],
-			COL_COMBO_PATH, NULL,
+			COL_THEME_VISIBLE_NAME, _(themes[i + 1]),
+			COL_THEME_NAME, themes[i],
+			COL_THEME_IS_ADIUM, FALSE,
 			-1);
 	}
 
@@ -782,10 +871,10 @@ preferences_themes_setup (EmpathyPreferences *preferences)
 
 		if (name != NULL && path != NULL) {
 			gtk_list_store_insert_with_values (store, NULL, -1,
-				COL_COMBO_IS_ADIUM, TRUE,
-				COL_COMBO_VISIBLE_NAME, name,
-				COL_COMBO_NAME, "adium",
-				COL_COMBO_PATH, path,
+				COL_THEME_VISIBLE_NAME, name,
+				COL_THEME_NAME, "adium",
+				COL_THEME_IS_ADIUM, TRUE,
+				COL_THEME_ADIUM_PATH, path,
 				-1);
 		}
 		g_hash_table_unref (info);
@@ -796,7 +885,7 @@ preferences_themes_setup (EmpathyPreferences *preferences)
 	renderer = gtk_cell_renderer_text_new ();
 	gtk_cell_layout_pack_start (cell_layout, renderer, TRUE);
 	gtk_cell_layout_set_attributes (cell_layout, renderer,
-		"text", COL_COMBO_VISIBLE_NAME, NULL);
+		"text", COL_THEME_VISIBLE_NAME, NULL);
 
 	gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
 	g_object_unref (store);
@@ -832,6 +921,8 @@ empathy_preferences_finalize (GObject *self)
 {
 	EmpathyPreferencesPriv *priv = GET_PRIV (self);
 
+	g_object_unref (priv->theme_manager);
+
 	g_object_unref (priv->gsettings);
 	g_object_unref (priv->gsettings_chat);
 	g_object_unref (priv->gsettings_loc);
@@ -883,7 +974,9 @@ empathy_preferences_init (EmpathyPreferences *preferences)
 		"notebook", &priv->notebook,
 		"checkbutton_show_smileys", &priv->checkbutton_show_smileys,
 		"checkbutton_show_contacts_in_rooms", &priv->checkbutton_show_contacts_in_rooms,
+		"vbox_chat_theme", &priv->vbox_chat_theme,
 		"combobox_chat_theme", &priv->combobox_chat_theme,
+		"sw_chat_theme_preview", &priv->sw_chat_theme_preview,
 		"checkbutton_separate_chat_windows", &priv->checkbutton_separate_chat_windows,
 		"checkbutton_events_notif_area", &priv->checkbutton_events_notif_area,
 		"checkbutton_autoconnect", &priv->checkbutton_autoconnect,
@@ -918,6 +1011,13 @@ empathy_preferences_init (EmpathyPreferences *preferences)
 	priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
 	priv->gsettings_logger = g_settings_new (EMPATHY_PREFS_LOGGER_SCHEMA);
 
+	/* Create chat theme preview, and track changes */
+	priv->theme_manager = empathy_theme_manager_dup_singleton ();
+	tp_g_signal_connect_object (priv->theme_manager, "theme-changed",
+			  G_CALLBACK (preferences_preview_theme_changed_cb),
+			  preferences, 0);
+	preferences_preview_theme_changed_cb (priv->theme_manager, preferences);
+
 	preferences_themes_setup (preferences);
 
 	preferences_setup_widgets (preferences);
diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
index 4acc6f3..6bc17b7 100644
--- a/src/empathy-preferences.ui
+++ b/src/empathy-preferences.ui
@@ -1,308 +1,606 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
-          <object class="GtkNotebook" id="notebook">
+  <object class="GtkNotebook" id="notebook">
+    <property name="visible">True</property>
+    <property name="can_focus">True</property>
+    <property name="border_width">5</property>
+    <child>
+      <object class="GtkBox" id="vbox197">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">18</property>
+        <child>
+          <object class="GtkFrame" id="frame3">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="border_width">5</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkBox" id="vbox197">
+              <object class="GtkAlignment" id="alignment11">
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="spacing">18</property>
-                <property name="orientation">vertical</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkFrame" id="frame3">
+                  <object class="GtkBox" id="vbox199">
                     <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment11">
+                      <object class="GtkCheckButton" id="checkbutton_show_smileys">
+                        <property name="label" translatable="yes">Show _smileys as images</property>
                         <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkBox" id="vbox199">
-                            <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_show_smileys">
-                                <property name="label" translatable="yes">Show _smileys as images</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms">
-                                <property name="label" translatable="yes">Show contact _list in rooms</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label611">
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms">
+                        <property name="label" translatable="yes">Show contact _list in rooms</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Appearance</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
+                      </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label611">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Appearance</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment12">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkFrame" id="frame4">
+                  <object class="GtkBox" id="vbox218">
                     <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment12">
+                      <object class="GtkCheckButton" id="checkbutton_separate_chat_windows">
+                        <property name="label" translatable="yes">_Open new chats in separate windows</property>
                         <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkBox" id="vbox218">
-                            <property name="orientation">vertical</property>
-                            <property name="visible">True</property>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_separate_chat_windows">
-                                <property name="label" translatable="yes">_Open new chats in separate windows</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                           <child>
-                              <object class="GtkCheckButton" id="checkbutton_events_notif_area">
-                                <property name="label" translatable="yes">Display incoming events in the notification area</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_autoconnect">
-                                <property name="label" translatable="yes">_Automatically connect on startup</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_logging">
-                                <property name="label" translatable="yes">Log conversations</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label612">
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton_events_notif_area">
+                        <property name="label" translatable="yes">Display incoming events in the notification area</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton_autoconnect">
+                        <property name="label" translatable="yes">_Automatically connect on startup</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton_logging">
+                        <property name="label" translatable="yes">Log conversations</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Behavior</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
                     </child>
                   </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label612">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Behavior</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label602">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">General</property>
+      </object>
+      <packing>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="vbox2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkCheckButton" id="checkbutton_notifications_enabled">
+            <property name="label" translatable="yes">_Enable bubble notifications</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="use_underline">True</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="alignment1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="left_padding">12</property>
+            <child>
+              <object class="GtkBox" id="vbox3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_notifications_disabled_away">
+                    <property name="label" translatable="yes">Disable notifications when _away or busy</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_notifications_focus">
+                    <property name="label" translatable="yes">Enable notifications when the _chat is not focused</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_notifications_contact_signin">
+                    <property name="label" translatable="yes">Enable notifications when a contact comes online</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="checkbutton_notifications_contact_signout">
+                    <property name="label" translatable="yes">Enable notifications when a contact goes offline</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </object>
             </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label602">
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Notifications</property>
+      </object>
+      <packing>
+        <property name="position">1</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="outer_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">18</property>
+        <child>
+          <object class="GtkBox" id="vbox219">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkCheckButton" id="checkbutton_sounds_enabled">
+                <property name="label" translatable="yes">_Enable sound notifications</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">General</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
               </object>
               <packing>
-                <property name="tab_fill">False</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkBox" id="vbox2">
+              <object class="GtkAlignment" id="alignment32">
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="spacing">6</property>
-                <property name="orientation">vertical</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkCheckButton" id="checkbutton_notifications_enabled">
-                    <property name="label" translatable="yes">_Enable bubble notifications</property>
+                  <object class="GtkCheckButton" id="checkbutton_sounds_disabled_away">
+                    <property name="label" translatable="yes">Disable sounds when _away or busy</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="use_underline">True</property>
                     <property name="draw_indicator">True</property>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="vbox221">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label645">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Play sound for events</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment33">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow19">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="treeview_sounds">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="headers_visible">False</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="treeview-selection1"/>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">2</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label607">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Sounds</property>
+      </object>
+      <packing>
+        <property name="position">2</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">18</property>
+        <child>
+          <object class="GtkCheckButton" id="checkbutton_location_publish">
+            <property name="label" translatable="yes">_Publish location to my contacts</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="use_underline">True</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkAlignment" id="alignment1">
+                  <object class="GtkBox" id="vbox4">
                     <property name="visible">True</property>
-                    <property name="left_padding">12</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">6</property>
                     <child>
-                      <object class="GtkBox" id="vbox3">
+                      <object class="GtkBox" id="hbox1">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="spacing">6</property>
-                        <property name="orientation">vertical</property>
                         <child>
-                          <object class="GtkCheckButton" id="checkbutton_notifications_disabled_away">
-                            <property name="label" translatable="yes">Disable notifications when _away or busy</property>
+                          <object class="GtkImage" id="image1">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="yalign">0</property>
+                            <property name="stock">gtk-dialog-info</property>
                           </object>
                           <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="checkbutton_notifications_focus">
-                            <property name="label" translatable="yes">Enable notifications when the _chat is not focused</property>
+                          <object class="GtkLabel" id="label6">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Reduced location accuracy means that nothing more precise than your city, state and country will be published.  GPS coordinates will be accurate to 1 decimal place.</property>
+                            <property name="wrap">True</property>
+                            <attributes>
+                              <attribute name="scale" value="0.80000000000000004"/>
+                            </attributes>
                           </object>
                           <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                        <child>
-                          <object class="GtkCheckButton" id="checkbutton_notifications_contact_signin">
-                            <property name="label" translatable="yes">Enable notifications when a contact comes online</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
-                            <property name="draw_indicator">True</property>
-                          </object>
-                          <packing>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkCheckButton" id="checkbutton_notifications_contact_signout">
-                            <property name="label" translatable="yes">Enable notifications when a contact goes offline</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
-                            <property name="draw_indicator">True</property>
-                          </object>
-                          <packing>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="checkbutton_location_reduce_accuracy">
+                        <property name="label" translatable="yes" comments="To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.">_Reduce location accuracy</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
             </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label1">
+            <child type="label">
+              <object class="GtkLabel" id="label3">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Notifications</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Privacy</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
               </object>
-              <packing>
-                <property name="position">1</property>
-                <property name="tab_fill">False</property>
-              </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkBox" id="outer_vbox">
+              <object class="GtkAlignment" id="alignment4">
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="spacing">18</property>
-                <property name="orientation">vertical</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkBox" id="vbox219">
+                  <object class="GtkBox" id="vbox5">
                     <property name="visible">True</property>
-                    <property name="spacing">6</property>
+                    <property name="can_focus">False</property>
                     <property name="orientation">vertical</property>
                     <child>
-                      <object class="GtkCheckButton" id="checkbutton_sounds_enabled">
-                        <property name="label" translatable="yes">_Enable sound notifications</property>
+                      <object class="GtkCheckButton" id="checkbutton_location_resource_gps">
+                        <property name="label" translatable="yes">_GPS</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                       </object>
@@ -313,500 +611,355 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkAlignment" id="alignment32">
+                      <object class="GtkCheckButton" id="checkbutton_location_resource_cell">
+                        <property name="label" translatable="yes">_Cellphone</property>
                         <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkCheckButton" id="checkbutton_sounds_disabled_away">
-                            <property name="label" translatable="yes">Disable sounds when _away or busy</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
-                            <property name="draw_indicator">True</property>
-                          </object>
-                        </child>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
                       <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkBox" id="vbox221">
-                    <property name="visible">True</property>
-                    <property name="spacing">6</property>
-                    <property name="orientation">vertical</property>
                     <child>
-                      <object class="GtkLabel" id="label645">
+                      <object class="GtkCheckButton" id="checkbutton_location_resource_network">
+                        <property name="label" translatable="yes">_Network (IP, Wi-Fi)</property>
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Play sound for events</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
                         <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment33">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkScrolledWindow" id="scrolledwindow19">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">automatic</property>
-                            <property name="vscrollbar_policy">automatic</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkTreeView" id="treeview_sounds">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="headers_visible">False</property>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">1</property>
-                        <property name="expand">True</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="position">2</property>
-              </packing>
             </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label607">
+            <child type="label">
+              <object class="GtkLabel" id="label5">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Sounds</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Location sources:</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
               </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">3</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Location</property>
+      </object>
+      <packing>
+        <property name="position">3</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="vbox168">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">18</property>
+        <child>
+          <object class="GtkFrame" id="frame7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkBox" id="vbox1">
+              <object class="GtkAlignment" id="alignment15">
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="orientation">vertical</property>
-                <property name="spacing">18</property>
-                <child>
-                  <object class="GtkCheckButton" id="checkbutton_location_publish">
-                    <property name="label" translatable="yes">_Publish location to my contacts</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkFrame" id="frame1">
+                  <object class="GtkBox" id="vbox201">
                     <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">6</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment2">
+                      <object class="GtkScrolledWindow" id="scrolledwindow18">
                         <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
+                        <property name="can_focus">False</property>
+                        <property name="shadow_type">in</property>
                         <child>
-                          <object class="GtkBox" id="vbox4">
+                          <object class="GtkTreeView" id="treeview_spell_checker">
                             <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <object class="GtkBox" id="hbox1">
-                                <property name="visible">True</property>
-                                <property name="spacing">6</property>
-                                <property name="orientation">horizontal</property>
-                                <child>
-                                  <object class="GtkImage" id="image1">
-                                    <property name="visible">True</property>
-                                    <property name="yalign">0</property>
-                                    <property name="stock">gtk-dialog-info</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label6">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="wrap">True</property>
-                                    <property name="label" translatable="yes">Reduced location accuracy means that nothing more precise than your city, state and country will be published.  GPS coordinates will be accurate to 1 decimal place.</property>
-                                    <attributes>
-                                      <attribute name="scale" value="0.8"/>
-                                    </attributes>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_location_reduce_accuracy">
-                                <property name="label" translatable="yes" comments="To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.">_Reduce location accuracy</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
+                            <property name="can_focus">True</property>
+                            <property name="headers_visible">False</property>
+                            <child internal-child="selection">
+                              <object class="GtkTreeSelection" id="treeview-selection2"/>
                             </child>
                           </object>
                         </child>
                       </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Privacy</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame5">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment4">
+                      <object class="GtkBox" id="hbox155">
                         <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">6</property>
                         <child>
-                          <object class="GtkBox" id="vbox5">
+                          <object class="GtkImage" id="image422">
                             <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_location_resource_gps">
-                                <property name="label" translatable="yes">_GPS</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_location_resource_cell">
-                                <property name="label" translatable="yes">_Cellphone</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_location_resource_network">
-                                <property name="label" translatable="yes">_Network (IP, Wi-Fi)</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
+                            <property name="can_focus">False</property>
+                            <property name="yalign">0</property>
+                            <property name="stock">gtk-dialog-info</property>
                           </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label616">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">The list of languages reflects only the languages for which you have a dictionary installed.</property>
+                            <property name="wrap">True</property>
+                            <attributes>
+                              <attribute name="scale" value="0.80000000000000004"/>
+                            </attributes>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label5">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Location sources:</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
-                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">2</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="position">3</property>
-              </packing>
             </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label2">
+            <child type="label">
+              <object class="GtkLabel" id="label615">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Location</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Enable spell checking for languages:</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
               </object>
-              <packing>
-                <property name="position">3</property>
-                <property name="tab_fill">False</property>
-              </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="position">4</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label567">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Spell Checking</property>
+      </object>
+      <packing>
+        <property name="position">4</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="vbox206">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">12</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">18</property>
+        <child>
+          <object class="GtkFrame" id="frame11">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkBox" id="vbox168">
+              <object class="GtkAlignment" id="alignment19">
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="spacing">18</property>
-                <property name="orientation">vertical</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">6</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkFrame" id="frame7">
+                  <object class="GtkBox" id="vbox_chat_theme">
                     <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">6</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment15">
+                      <object class="GtkBox" id="hbox139">
                         <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">12</property>
                         <child>
-                          <object class="GtkBox" id="vbox201">
+                          <object class="GtkLabel" id="label586">
                             <property name="visible">True</property>
-                            <property name="spacing">6</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkScrolledWindow" id="scrolledwindow18">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="hscrollbar_policy">automatic</property>
-                                <property name="vscrollbar_policy">automatic</property>
-                                <property name="shadow_type">in</property>
-                                <child>
-                                  <object class="GtkTreeView" id="treeview_spell_checker">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="headers_visible">False</property>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">0</property>
-                                <property name="expand">True</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkBox" id="hbox155">
-                                <property name="visible">True</property>
-                                <property name="spacing">6</property>
-                                <property name="orientation">horizontal</property>
-                                <child>
-                                  <object class="GtkImage" id="image422">
-                                    <property name="visible">True</property>
-                                    <property name="yalign">0</property>
-                                    <property name="stock">gtk-dialog-info</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label616">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="wrap">True</property>
-                                    <property name="label" translatable="yes">The list of languages reflects only the languages for which you have a dictionary installed.</property>
-                                    <attributes>
-                                      <attribute name="scale" value="0.8"/>
-                                    </attributes>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Chat Th_eme:</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">combobox_chat_theme</property>
                           </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="combobox_chat_theme">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label615">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Enable spell checking for languages:</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="position">4</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label567">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Spell Checking</property>
-              </object>
-              <packing>
-                <property name="position">4</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkBox" id="vbox206">
-                <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="spacing">18</property>
-                <property name="orientation">vertical</property>
-                <child>
-                  <object class="GtkFrame" id="frame11">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment19">
-                        <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
+                      <object class="GtkBox" id="hbox_chat_theme_variant">
+                        <property name="visible">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">12</property>
                         <child>
-                          <object class="GtkBox" id="vbox207">
+                          <object class="GtkLabel" id="label4">
                             <property name="visible">True</property>
-                            <property name="spacing">6</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkBox" id="hbox139">
-                                <property name="visible">True</property>
-                                <property name="spacing">12</property>
-                                <property name="orientation">horizontal</property>
-                                <child>
-                                  <object class="GtkLabel" id="label586">
-                                    <property name="visible">True</property>
-                                    <property name="label" translatable="yes">Chat Th_eme:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="mnemonic_widget">combobox_chat_theme</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="combobox_chat_theme">
-                                    <property name="visible">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Theme Variant:</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">combobox_chat_theme_variant</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="combobox_chat_theme_variant">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                           </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
                     </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label626">
+                    <child>
+                      <object class="GtkScrolledWindow" id="sw_chat_theme_preview">
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Appearance</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
+                        <property name="can_focus">True</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="position">5</property>
-              </packing>
             </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label624">
+            <child type="label">
+              <object class="GtkLabel" id="label626">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Themes</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Appearance</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
               </object>
-              <packing>
-                <property name="position">5</property>
-                <property name="tab_fill">False</property>
-              </packing>
             </child>
           </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="position">5</property>
+      </packing>
+    </child>
+    <child type="tab">
+      <object class="GtkLabel" id="label624">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">Themes</property>
+      </object>
+      <packing>
+        <property name="position">5</property>
+        <property name="tab_fill">False</property>
+      </packing>
+    </child>
+  </object>
 </interface>



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