summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Sales de Andrade <qulogic@pidgin.im>2018-06-25 02:29:23 -0400
committerElliott Sales de Andrade <qulogic@pidgin.im>2018-06-25 02:29:23 -0400
commitf9ad27dbf4b53cb09910ac7f84e6a22310c634ab (patch)
tree95992b1177ab44d9e7c085d138a97a4dc5ec09b2
parent0fd387e7aea3c95513e567b83907483fbc57883e (diff)
downloadpidgin-f9ad27dbf4b53cb09910ac7f84e6a22310c634ab.tar.gz
prefs: Convert Conversations page to glade.
-rw-r--r--pidgin/gtkprefs.c235
-rw-r--r--pidgin/resources/Prefs/prefs.ui490
2 files changed, 632 insertions, 93 deletions
diff --git a/pidgin/gtkprefs.c b/pidgin/gtkprefs.c
index aa9d363056..fd1be8638b 100644
--- a/pidgin/gtkprefs.c
+++ b/pidgin/gtkprefs.c
@@ -106,6 +106,33 @@ struct _PidginPrefsWindow {
/* Notebook */
GtkWidget *notebook;
+ /* Conversations page */
+ struct {
+ PidginPrefCombo notification_chat;
+ GtkWidget *show_incoming_formatting;
+ struct {
+ GtkWidget *close_immediately;
+ GtkWidget *show_buddy_icons;
+ GtkWidget *animate_buddy_icons;
+ GtkWidget *send_typing;
+ } im;
+ GtkWidget *spellcheck;
+ GtkWidget *use_smooth_scrolling;
+ struct {
+ GtkWidget *blink_im;
+ } win32;
+ GtkWidget *resize_custom_smileys;
+ GtkWidget *custom_smileys_size;
+ GtkWidget *minimum_entry_lines;
+ GtkWidget *sample_box;
+ GtkWidget *sample_webview;
+ /* Win32 specific frame */
+ GtkWidget *font_frame;
+ GtkWidget *use_theme_font;
+ GtkWidget *custom_font_hbox;
+ GtkWidget *custom_font;
+ } conversations;
+
/* Logging page */
struct {
PidginPrefCombo format;
@@ -153,9 +180,6 @@ struct _PidginPrefsWindow {
/* Main dialog */
static PidginPrefsWindow *prefs = NULL;
-/* Conversations page */
-static GtkWidget *sample_webview = NULL;
-
/* Themes page */
static GtkWidget *prefs_sound_themes_combo_box;
static GtkWidget *prefs_blist_themes_combo_box;
@@ -823,8 +847,6 @@ delete_prefs(GtkWidget *asdf, void *gdsa)
keyring_page_cleanup();
- sample_webview = NULL;
-
#ifdef USE_VV
voice_level = NULL;
voice_threshold = NULL;
@@ -1503,7 +1525,7 @@ prefs_set_smiley_theme_cb(GtkComboBox *combo_box, gpointer user_data)
#if 0
/* TODO: update smileys in sample_webview input box. */
- update_smileys_in_webview_input_box(sample_webview);
+ update_smileys_in_webview_input_box(win->conversation.sample_webview);
#endif
g_free(new_theme);
@@ -2063,9 +2085,9 @@ interface_page(void)
return ret;
}
-#ifdef _WIN32
+/* This is also Win32-specific, but must be visible for Glade binding. */
static void
-apply_custom_font(void)
+apply_custom_font(GtkWidget *unused, PidginPrefsWindow *win)
{
PangoFontDescription *desc = NULL;
if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/use_theme_font")) {
@@ -2073,123 +2095,101 @@ apply_custom_font(void)
desc = pango_font_description_from_string(font);
}
- gtk_widget_modify_font(sample_webview, desc);
+ gtk_widget_modify_font(win->conversations.sample_webview, desc);
if (desc)
pango_font_description_free(desc);
}
+
static void
-pidgin_custom_font_set(GtkFontButton *font_button, gpointer nul)
+pidgin_custom_font_set(GtkWidget *font_button, PidginPrefsWindow *win)
{
purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/custom_font",
- gtk_font_button_get_font_name(font_button));
+ gtk_font_chooser_get_font(GTK_FONT_CHOOSER(font_button)));
- apply_custom_font();
+ apply_custom_font(font_button, win);
}
-#endif
-static GtkWidget *
-conv_page(void)
+static void
+bind_conv_page(PidginPrefsWindow *win)
{
- GtkWidget *ret;
- GtkWidget *vbox;
- GtkWidget *iconpref1;
- GtkWidget *iconpref2;
GtkWidget *webview;
GtkWidget *frame;
-#if 0
- GtkWidget *hbox;
- GtkWidget *checkbox;
- GtkWidget *spin_button;
-#endif
-
- ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_CAT_SPACE);
- gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER);
- vbox = pidgin_make_frame(ret, _("Conversations"));
-
- pidgin_prefs_dropdown(vbox, _("Chat notification:"),
- PURPLE_PREF_INT, PIDGIN_PREFS_ROOT "/conversations/notification_chat",
- _("On unseen events"), PIDGIN_UNSEEN_EVENT,
- _("On unseen text"), PIDGIN_UNSEEN_TEXT,
- _("On unseen text and the nick was said"), PIDGIN_UNSEEN_NICK,
- NULL);
-
- pidgin_prefs_checkbox(_("Show _formatting on incoming messages"),
- PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", vbox);
- pidgin_prefs_checkbox(_("Close IMs immediately when the tab is closed"),
- PIDGIN_PREFS_ROOT "/conversations/im/close_immediately", vbox);
-
- iconpref1 = pidgin_prefs_checkbox(_("Show _detailed information"),
- PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", vbox);
- iconpref2 = pidgin_prefs_checkbox(_("Enable buddy ic_on animation"),
- PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons", vbox);
- g_object_bind_property(iconpref1, "active", iconpref2, "sensitive",
+ win->conversations.notification_chat.type = PURPLE_PREF_INT;
+ win->conversations.notification_chat.key = PIDGIN_PREFS_ROOT "/conversations/notification_chat";
+ pidgin_prefs_bind_dropdown(&win->conversations.notification_chat);
+
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting",
+ win->conversations.show_incoming_formatting);
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/im/close_immediately",
+ win->conversations.im.close_immediately);
+
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons",
+ win->conversations.im.show_buddy_icons);
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons",
+ win->conversations.im.animate_buddy_icons);
+ g_object_bind_property(win->conversations.im.show_buddy_icons, "active",
+ win->conversations.im.animate_buddy_icons, "sensitive",
G_BINDING_SYNC_CREATE);
- pidgin_prefs_checkbox(_("_Notify buddies that you are typing to them"),
- "/purple/conversations/im/send_typing", vbox);
- pidgin_prefs_checkbox(_("Highlight _misspelled words"),
- PIDGIN_PREFS_ROOT "/conversations/spellcheck", vbox);
+ pidgin_prefs_bind_checkbox("/purple/conversations/im/send_typing",
+ win->conversations.im.send_typing);
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/spellcheck",
+ win->conversations.spellcheck);
- pidgin_prefs_checkbox(_("Use smooth-scrolling"), PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling", vbox);
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling",
+ win->conversations.use_smooth_scrolling);
#ifdef _WIN32
- pidgin_prefs_checkbox(_("F_lash window when IMs are received"), PIDGIN_PREFS_ROOT "/win32/blink_im", vbox);
+ pidgin_prefs_bind_checkbox(PIDGIN_PREFS_ROOT "/win32/blink_im",
+ win->conversations.win32.blink_im);
+#else
+ gtk_widget_hide(win->conversations.win32.blink_im);
#endif
#if 0
/* TODO: it's not implemented */
- hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE);
-
- checkbox = pidgin_prefs_checkbox(_("Resize incoming custom smileys"),
- PIDGIN_PREFS_ROOT "/conversations/resize_custom_smileys", hbox);
+ pidgin_prefs_bind_checkbox(
+ PIDGIN_PREFS_ROOT "/conversations/resize_custom_smileys",
+ win->conversations.resize_custom_smileys);
- spin_button = pidgin_prefs_labeled_spin_button(hbox,
- _("Maximum size:"),
- PIDGIN_PREFS_ROOT "/conversations/custom_smileys_size",
- 16, 512, NULL);
+ pidgin_prefs_bind_spin_button(
+ PIDGIN_PREFS_ROOT "/conversations/custom_smileys_size",
+ win->conversations.custom_smileys_size);
- g_object_bind_property(checkbox, "active", spin_button, "sensitive",
+ g_object_bind_property(win->conversations.resize_custom_smileys, "active",
+ win->conversations.custom_smileys_size, "sensitive",
G_BINDING_SYNC_CREATE);
-
- pidgin_add_widget_to_vbox(GTK_BOX(vbox), NULL, NULL, hbox, TRUE, NULL);
#endif
- pidgin_prefs_labeled_spin_button(vbox,
- _("Minimum input area height in lines:"),
+ pidgin_prefs_bind_spin_button(
PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines",
- 1, 8, NULL);
+ win->conversations.minimum_entry_lines);
#ifdef _WIN32
{
- GtkWidget *fontpref, *font_button, *hbox;
const char *font_name;
- vbox = pidgin_make_frame(ret, _("Font"));
+ gtk_widget_show(win->conversations.font_frame);
- fontpref = pidgin_prefs_checkbox(_("Use font from _theme"),
- PIDGIN_PREFS_ROOT "/conversations/use_theme_font", vbox);
+ pidgin_prefs_bind_checkbox(
+ PIDGIN_PREFS_ROOT "/conversations/use_theme_font",
+ win->conversations.use_theme_font);
font_name = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/custom_font");
- if ((font_name == NULL) || (*font_name == '\0')) {
- font_button = gtk_font_button_new();
- } else {
- font_button = gtk_font_button_new_with_font(font_name);
+ if (font_name != NULL && *font_name != '\0') {
+ gtk_font_chooser_set_font(
+ GTK_FONT_CHOOSER(win->conversations.custom_font),
+ font_name);
}
- gtk_font_button_set_show_style(GTK_FONT_BUTTON(font_button), TRUE);
- hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Conversation _font:"), NULL, font_button, FALSE, NULL);
- g_object_bind_property(fontpref, "active", hbox, "sensitive",
+ g_object_bind_property(win->conversations.use_theme_font, "active",
+ win->conversations.custom_font_hbox, "sensitive",
G_BINDING_SYNC_CREATE|G_BINDING_INVERT_BOOLEAN);
- g_signal_connect(G_OBJECT(fontpref), "clicked", G_CALLBACK(apply_custom_font), hbox);
- g_signal_connect(G_OBJECT(font_button), "font-set", G_CALLBACK(pidgin_custom_font_set), NULL);
-
}
#endif
- vbox = pidgin_make_frame(ret, _("Default Formatting"));
-
frame = pidgin_create_webview(TRUE, &webview, NULL);
gtk_widget_show(frame);
gtk_widget_set_name(webview, "pidgin_prefs_font_webview");
@@ -2211,7 +2211,7 @@ conv_page(void)
"appear when you use protocols that support "
"formatting."));
- gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(win->conversations.sample_box), frame, TRUE, TRUE, 0);
pidgin_webview_setup_entry(PIDGIN_WEBVIEW(webview),
PURPLE_CONNECTION_FLAG_HTML |
@@ -2221,11 +2221,7 @@ conv_page(void)
G_CALLBACK(formatting_toggle_cb), NULL);
g_signal_connect_after(G_OBJECT(webview), "format-cleared",
G_CALLBACK(formatting_clear_cb), NULL);
- sample_webview = webview;
-
- gtk_widget_show(ret);
-
- return ret;
+ win->conversations.sample_webview = webview;
}
static void
@@ -4037,7 +4033,8 @@ prefs_notebook_init(PidginPrefsWindow *win)
prefs_notebook_add_page(notebook, _("Browser"), browser_page(), notebook_page++);
#endif
- prefs_notebook_add_page(notebook, _("Conversations"), conv_page(), notebook_page++);
+ bind_conv_page(win);
+ notebook_page++;
bind_logging_page(win);
notebook_page++;
bind_network_page(win);
@@ -4069,6 +4066,66 @@ pidgin_prefs_window_class_init(PidginPrefsWindowClass *klass)
widget_class, PidginPrefsWindow, notebook);
gtk_widget_class_bind_template_callback(widget_class, delete_prefs);
+ /* Conversations page */
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.notification_chat.combo);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.show_incoming_formatting);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.im.close_immediately);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.im.show_buddy_icons);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.im.animate_buddy_icons);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.im.send_typing);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.spellcheck);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.use_smooth_scrolling);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.win32.blink_im);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.resize_custom_smileys);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.custom_smileys_size);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.minimum_entry_lines);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.sample_box);
+#ifdef WIN32
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.font_frame);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.use_theme_font);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.custom_font_hbox);
+ gtk_widget_class_bind_template_child(
+ widget_class, PidginPrefsWindow,
+ conversations.custom_font);
+#endif
+ /* Even though Win32-specific, must be bound to avoid Glade warnings. */
+ gtk_widget_class_bind_template_callback(widget_class,
+ apply_custom_font);
+ gtk_widget_class_bind_template_callback(widget_class,
+ pidgin_custom_font_set);
+
/* Logging page */
gtk_widget_class_bind_template_child(
widget_class, PidginPrefsWindow, logging.format.combo);
diff --git a/pidgin/resources/Prefs/prefs.ui b/pidgin/resources/Prefs/prefs.ui
index 16845da8b1..2fc51475d7 100644
--- a/pidgin/resources/Prefs/prefs.ui
+++ b/pidgin/resources/Prefs/prefs.ui
@@ -2,6 +2,42 @@
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
+ <object class="GtkAdjustment" id="conversations.custom_smiley_size.adjustment">
+ <property name="lower">16</property>
+ <property name="upper">512</property>
+ <property name="value">16</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="conversations.minimum_entry_lines.adjustment">
+ <property name="lower">1</property>
+ <property name="upper">8</property>
+ <property name="value">2</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">1</property>
+ </object>
+ <object class="GtkListStore" id="conversations.notification_chat.store">
+ <columns>
+ <!-- column-name text -->
+ <column type="gchararray"/>
+ <!-- column-name value -->
+ <column type="gint"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">On unseen events</col>
+ <col id="1">1</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">On unseen text</col>
+ <col id="1">3</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">On unseen text and the nick was said</col>
+ <col id="1">4</col>
+ </row>
+ </data>
+ </object>
<object class="GtkListStore" id="logging.format.store">
<columns>
<!-- column-name text -->
@@ -114,6 +150,448 @@
<property name="can_focus">True</property>
<property name="tab_pos">left</property>
<child>
+ <object class="GtkBox" id="conversations.page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="margin_right">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkFrame">
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Chat notification:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="conversations.notification_chat.combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">conversations.notification_chat.store</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </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="GtkCheckButton" id="conversations.show_incoming_formatting">
+ <property name="label" translatable="yes">Show _formatting on incoming messages</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">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.im.close_immediately">
+ <property name="label" translatable="yes">Close IMs immediately when the tab is closed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</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="conversations.im.show_buddy_icons">
+ <property name="label" translatable="yes">Show _detailed information</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">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.im.animate_buddy_icons">
+ <property name="label" translatable="yes">Enable buddy ic_on animation</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">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.im.send_typing">
+ <property name="label" translatable="yes">_Notify buddies that you are typing to them</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">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.spellcheck">
+ <property name="label" translatable="yes">Highlight _misspelled words</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">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.use_smooth_scrolling">
+ <property name="label" translatable="yes">Use smooth-scrolling</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="conversations.win32.blink_im">
+ <property name="label" translatable="yes">F_lash window when IMs are received</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">True</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="conversations.resize_custom_smileys">
+ <property name="label" translatable="yes">Resize incoming custom smileys</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</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="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Maximum size:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="conversations.custom_smileys_size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="input_purpose">number</property>
+ <property name="adjustment">conversations.custom_smiley_size.adjustment</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Minimum input area height in lines:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="conversations.minimum_entry_lines">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="input_purpose">digits</property>
+ <property name="adjustment">conversations.minimum_entry_lines.adjustment</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Conversations</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <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="conversations.use_theme_font">
+ <property name="label" translatable="yes">Use font from _theme</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>
+ <signal name="toggled" handler="apply_custom_font" object="PidginPrefsWindow" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="conversations.custom_font_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Conversation _font:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="conversations.custom_font">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="font">Sans 12</property>
+ <property name="preview_text"/>
+ <signal name="font-set" handler="pidgin_custom_font_set" object="PidginPrefsWindow" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Font</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <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">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="conversations.sample_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Default Formatting</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Conversations</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkBox" id="logging.page">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -251,6 +729,9 @@
</packing>
</child>
</object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
</child>
<child type="tab">
<object class="GtkLabel">
@@ -259,6 +740,7 @@
<property name="label" translatable="yes">Logging</property>
</object>
<packing>
+ <property name="position">1</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -751,7 +1233,7 @@
</child>
</object>
<packing>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
<child type="tab">
@@ -761,7 +1243,7 @@
<property name="label" translatable="yes">Network</property>
</object>
<packing>
- <property name="position">1</property>
+ <property name="position">2</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -1079,7 +1561,7 @@
</child>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child type="tab">
@@ -1089,7 +1571,7 @@
<property name="label" translatable="yes">Proxy</property>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
<property name="tab_fill">False</property>
</packing>
</child>