gtk/gtkpluginpref.c

Wed, 01 Nov 2006 02:13:37 +0000

author
Benjamin Moody
date
Wed, 01 Nov 2006 02:13:37 +0000
changeset 14937
d09c897e41f5
parent 14253
b63ebf84c42b
child 15390
d429e03fc755
permissions
-rw-r--r--

[gaim-migrate @ 17644]
SF Patch #1586467 from Benjamin Moody - floppusmaximus

"Currently if a plugin creates a multi-line, non-HTML
string preference, i.e. a GaimPluginPref with type
GAIM_PLUGIN_PREF_STRING_FORMAT and format-type
GAIM_STRING_FORMAT_TYPE_MULTILINE, the resulting widget
is extremely narrow and impossible to use.

This is because the widget is packed into an hbox
without allowing expansion (expand = fill = FALSE.) If
HTML is enabled, the presence of the format bar forces
the widget to be wide enough to be usable. Disabling
HTML causes the format bar to be removed, so the widget
is set to the minimum allowed size."

committer: Richard Laager <rlaager@pidgin.im>

8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
1 /**
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 9841
diff changeset
2 * @file gtkpluginpref.c GTK+ Plugin preferences
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 9841
diff changeset
3 * @ingroup gtkui
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 9841
diff changeset
4 *
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
5 * gaim
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
6 *
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
9 * source distribution.
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
10 *
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
14 * (at your option) any later version.
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
15 *
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
20 *
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
24 */
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
25 #ifdef HAVE_CONFIG_H
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
26 # include <config.h>
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
27 #endif
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
28
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
29 #include "debug.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
30 #include "internal.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
31 #include "pluginpref.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
32 #include "prefs.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
33
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
34 #include "gtkimhtml.h"
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
35 #include "gtkpluginpref.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
36 #include "gtkprefs.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
37 #include "gtkutils.h"
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
38
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
39 static gboolean
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
40 entry_cb(GtkWidget *entry, gpointer data) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
41 char *pref = data;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
42
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
43 gaim_prefs_set_string(pref, gtk_entry_get_text(GTK_ENTRY(entry)));
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
44
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
45 return FALSE;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
46 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
47
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
48
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
49 static void
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
50 imhtml_cb(GtkTextBuffer *buffer, gpointer data)
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
51 {
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
52 char *pref;
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
53 char *text;
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
54 GtkIMHtml *imhtml = data;
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
55
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
56 pref = g_object_get_data(G_OBJECT(imhtml), "pref-key");
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
57 g_return_if_fail(pref);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
58
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
59 text = gtk_imhtml_get_markup(imhtml);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
60 gaim_prefs_set_string(pref, text);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
61 g_free(text);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
62 }
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
63
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
64 static void
12794
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
65 imhtml_format_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, gpointer data)
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
66 {
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
67 imhtml_cb(gtk_text_view_get_buffer(GTK_TEXT_VIEW(imhtml)), data);
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
68 }
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
69
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
70 static void
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
71 make_string_pref(GtkWidget *parent, GaimPluginPref *pref, GtkSizeGroup *sg) {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
72 GtkWidget *box, *gtk_label, *entry;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
73 const gchar *pref_name;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
74 const gchar *pref_label;
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
75 GaimStringFormatType format;
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
76
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
77 pref_name = gaim_plugin_pref_get_name(pref);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
78 pref_label = gaim_plugin_pref_get_label(pref);
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
79 format = gaim_plugin_pref_get_format_type(pref);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
80
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
81 switch(gaim_plugin_pref_get_type(pref)) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
82 case GAIM_PLUGIN_PREF_CHOICE:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
83 gtk_label = gaim_gtk_prefs_dropdown_from_list(parent, pref_label,
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
84 GAIM_PREF_STRING, pref_name,
10414
6b10b76933e1 [gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
85 gaim_plugin_pref_get_choices(pref));
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
86 gtk_misc_set_alignment(GTK_MISC(gtk_label), 0, 0.5);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
87
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
88 if(sg)
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
89 gtk_size_group_add_widget(sg, gtk_label);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
90
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
91 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
92 case GAIM_PLUGIN_PREF_NONE:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
93 default:
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
94 if (format == GAIM_STRING_FORMAT_TYPE_NONE)
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
95 box = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
96 else
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
97 box = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
98
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
99 gtk_widget_show(box);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
100 gtk_box_pack_start(GTK_BOX(parent), box, FALSE, FALSE, 0);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
101
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
102 gtk_label = gtk_label_new_with_mnemonic(pref_label);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
103 gtk_misc_set_alignment(GTK_MISC(gtk_label), 0, 0.5);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
104 gtk_widget_show(gtk_label);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
105 gtk_box_pack_start(GTK_BOX(box), gtk_label, FALSE, FALSE, 0);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
106
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
107 if(sg)
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
108 gtk_size_group_add_widget(sg, gtk_label);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
109
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
110 if (format == GAIM_STRING_FORMAT_TYPE_NONE)
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
111 {
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
112 entry = gtk_entry_new();
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
113 gtk_entry_set_text(GTK_ENTRY(entry), gaim_prefs_get_string(pref_name));
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
114 gtk_entry_set_max_length(GTK_ENTRY(entry),
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
115 gaim_plugin_pref_get_max_length(pref));
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
116 if (gaim_plugin_pref_get_masked(pref))
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
117 {
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
118 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
119 gtk_entry_set_invisible_char(GTK_ENTRY(entry), GAIM_INVISIBLE_CHAR);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
120 }
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
121 g_signal_connect(G_OBJECT(entry), "changed",
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
122 G_CALLBACK(entry_cb),
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
123 (gpointer)pref_name);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
124 gtk_label_set_mnemonic_widget(GTK_LABEL(gtk_label), entry);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
125 gtk_widget_show(entry);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
126 gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
127 }
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
128 else
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11243
diff changeset
129 {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
130 GtkWidget *hbox;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
131 GtkWidget *spacer;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
132 GtkWidget *imhtml;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
133 GtkWidget *toolbar;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
134 GtkWidget *frame;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
135
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
136 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
137 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
138 gtk_widget_show(hbox);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
139
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
140 spacer = gtk_label_new(" ");
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
141 gtk_box_pack_start(GTK_BOX(hbox), spacer, FALSE, FALSE, 0);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
142 gtk_widget_show(spacer);
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
143
13281
3558cb15ebb9 [gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
144 frame = gaim_gtk_create_imhtml(TRUE, &imhtml, &toolbar, NULL);
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
145 if (!(format & GAIM_STRING_FORMAT_TYPE_HTML))
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
146 gtk_widget_destroy(toolbar);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
147
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
148 gtk_imhtml_append_text(GTK_IMHTML(imhtml), gaim_prefs_get_string(pref_name),
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
149 (format & GAIM_STRING_FORMAT_TYPE_MULTILINE) ? 0 : GTK_IMHTML_NO_NEWLINE);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
150 gtk_label_set_mnemonic_widget(GTK_LABEL(gtk_label), imhtml);
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
151 gtk_widget_show_all(frame);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
152 g_object_set_data(G_OBJECT(imhtml), "pref-key", (gpointer)pref_name);
12712
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
153 g_signal_connect(G_OBJECT(gtk_text_view_get_buffer(GTK_TEXT_VIEW(imhtml))),
21ea46d3dee9 [gaim-migrate @ 15056]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11986
diff changeset
154 "changed", G_CALLBACK(imhtml_cb), imhtml);
12794
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
155 g_signal_connect(G_OBJECT(imhtml),
e4f178fc08b5 [gaim-migrate @ 15141]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12712
diff changeset
156 "format_function_toggle", G_CALLBACK(imhtml_format_cb), imhtml);
14937
d09c897e41f5 [gaim-migrate @ 17644]
Benjamin Moody
parents: 14253
diff changeset
157 gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11243
diff changeset
158 }
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
159
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
160 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
161 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
162 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
163
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
164 static void
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
165 make_int_pref(GtkWidget *parent, GaimPluginPref *pref, GtkSizeGroup *sg) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
166 GtkWidget *gtk_label;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
167 const gchar *pref_name;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
168 const gchar *pref_label;
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
169 gint max, min;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
170
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
171 pref_name = gaim_plugin_pref_get_name(pref);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
172 pref_label = gaim_plugin_pref_get_label(pref);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
173
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
174 switch(gaim_plugin_pref_get_type(pref)) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
175 case GAIM_PLUGIN_PREF_CHOICE:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
176 gtk_label = gaim_gtk_prefs_dropdown_from_list(parent, pref_label,
9529
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
177 GAIM_PREF_INT, pref_name, gaim_plugin_pref_get_choices(pref));
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
178 gtk_misc_set_alignment(GTK_MISC(gtk_label), 0, 0.5);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
179
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
180 if(sg)
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
181 gtk_size_group_add_widget(sg, gtk_label);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
182
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
183 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
184 case GAIM_PLUGIN_PREF_NONE:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
185 default:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
186 gaim_plugin_pref_get_bounds(pref, &min, &max);
10414
6b10b76933e1 [gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents: 10297
diff changeset
187 gaim_gtk_prefs_labeled_spin_button(parent, pref_label,
9529
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
188 pref_name, min, max, sg);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
189 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
190 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
191 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
192
9529
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
193
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
194 static void
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
195 make_info_pref(GtkWidget *parent, GaimPluginPref *pref) {
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
196 GtkWidget *gtk_label = gtk_label_new(gaim_plugin_pref_get_label(pref));
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
197 gtk_misc_set_alignment(GTK_MISC(gtk_label), 0, 0);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
198 gtk_label_set_line_wrap(GTK_LABEL(gtk_label), TRUE);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
199 gtk_box_pack_start(GTK_BOX(parent), gtk_label, FALSE, FALSE, 0);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
200 gtk_widget_show(gtk_label);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
201 }
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
202
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
203
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
204 GtkWidget *
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
205 gaim_gtk_plugin_pref_create_frame(GaimPluginPrefFrame *frame) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
206 GtkWidget *ret, *parent;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
207 GtkSizeGroup *sg;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
208 GList *pp;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
209
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
210 g_return_val_if_fail(frame, NULL);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
211
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
212 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
213
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
214 parent = ret = gtk_vbox_new(FALSE, 16);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 10414
diff changeset
215 gtk_container_set_border_width(GTK_CONTAINER(ret), GAIM_HIG_BORDER);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
216 gtk_widget_show(ret);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
217
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
218 for(pp = gaim_plugin_pref_frame_get_prefs(frame);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
219 pp != NULL;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
220 pp = pp->next)
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
221 {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
222 GaimPluginPref *pref = (GaimPluginPref *)pp->data;
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
223
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
224 const char *name = gaim_plugin_pref_get_name(pref);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 12794
diff changeset
225 const char *label = gaim_plugin_pref_get_label(pref);
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
226
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
227 if(name == NULL) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
228 if(label == NULL)
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
229 continue;
9529
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
230
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
231 if(gaim_plugin_pref_get_type(pref) == GAIM_PLUGIN_PREF_INFO) {
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
232 make_info_pref(parent, pref);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
233 } else {
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
234 parent = gaim_gtk_make_frame(ret, label);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
235 gtk_widget_show(parent);
377b70382202 [gaim-migrate @ 10356]
Christopher O'Brien <siege@pidgin.im>
parents: 8713
diff changeset
236 }
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
237
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
238 continue;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
239 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
240
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
241 switch(gaim_prefs_get_type(name)) {
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
242 case GAIM_PREF_BOOLEAN:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
243 gaim_gtk_prefs_checkbox(label, name, parent);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
244 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
245 case GAIM_PREF_INT:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
246 make_int_pref(parent, pref, sg);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
247 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
248 case GAIM_PREF_STRING:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
249 make_string_pref(parent, pref, sg);
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
250 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
251 default:
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
252 break;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
253 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
254 }
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
255
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
256 return ret;
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents:
diff changeset
257 }

mercurial