src/gtkimhtmltoolbar.c

Sat, 18 Sep 2004 23:17:38 +0000

author
Dave West <kat@users.sourceforge.net>
date
Sat, 18 Sep 2004 23:17:38 +0000
changeset 10040
b74aeb350fc5
parent 9971
8291bafb0025
child 10080
d562573fff16
permissions
-rw-r--r--

[gaim-migrate @ 10999]
" Post all three of these to the sf patch tracker as
three separate patches and assign the buddy list
changes and oscar changes to me, and the
gaim_status_is_online() changes to Luke. And in the
one assigned to Luke, ask him if he could pretty please
with sugar on top check through it quickly and
commit it if it looks sensible?

--KingAnt

This adds gaim_status_is_online so that we can check
statuses as well as presences for online status. It
also changes gaim_presence_is_online to use the new
function." --Dave West

committer: Luke Schierer <lschiere@pidgin.im>

8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * GtkIMHtmlToolbar
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
6 * source distribution.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
23 #include "internal.h"
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
24 #include "gtkgaim.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
26 #include "imgstore.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27 #include "notify.h"
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
28 #include "request.h"
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29 #include "stock.h"
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
30 #include "util.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
31
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
32 #include "gtkdialogs.h"
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
33 #include "gtkimhtmltoolbar.h"
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
34 #include "gtkutils.h"
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
35
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 static GtkVBoxClass *parent_class = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39 {
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
40 GObject *object;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
41
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 g_return_if_fail(toolbar);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
43
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
44 /* block the format_function_toggle handler */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
45 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
46 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
47 NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48 gtk_imhtml_toggle_bold(GTK_IMHTML(toolbar->imhtml));
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
49 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
50 NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
51 g_object_unref(object);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
52
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57 do_italic(GtkWidget *italic, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58 {
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
59 GObject *object;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
60
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61 g_return_if_fail(toolbar);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
62
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
63 /* block the format_function_toggle handler */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
64 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
65 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
66 NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 gtk_imhtml_toggle_italic(GTK_IMHTML(toolbar->imhtml));
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
68 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
69 NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
70 g_object_unref(object);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
71
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
74
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76 do_underline(GtkWidget *underline, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
77 {
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
78 GObject *object;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
79
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 g_return_if_fail(toolbar);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
81
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
82 /* block the format_function_toggle handler */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
83 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
84 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
85 NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 gtk_imhtml_toggle_underline(GTK_IMHTML(toolbar->imhtml));
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
87 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
88 NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
89 g_object_unref(object);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
90
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 g_return_if_fail(toolbar);
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8359
diff changeset
98 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->smaller_size)))
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8359
diff changeset
99 gtk_imhtml_font_shrink(GTK_IMHTML(toolbar->imhtml));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smaller_size), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105 do_big(GtkWidget *large, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 g_return_if_fail(toolbar);
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8359
diff changeset
108 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->larger_size)))
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8359
diff changeset
109 gtk_imhtml_font_grow(GTK_IMHTML(toolbar->imhtml));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->larger_size), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
114 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
115 destroy_toolbar_font(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
116 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
118 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->font), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
119
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
120 if (toolbar->font_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
121 {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122 gtk_widget_destroy(toolbar->font_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 toolbar->font_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
127 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
128 cancel_toolbar_font(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
129 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
130 destroy_toolbar_font(widget, NULL, toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
131 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
132
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 static void apply_font(GtkWidget *widget, GtkFontSelection *fontsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
134 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
135 /* this could be expanded to include font size, weight, etc.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 but for now only works with font face */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 char *fontname;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 char *space;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(fontsel), "gaim_toolbar");
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(fontsel));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143 space = strrchr(fontname, ' ');
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144 if(space && isdigit(*(space+1)))
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
145 *space = '\0';
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
147 gtk_imhtml_toggle_fontface(GTK_IMHTML(toolbar->imhtml), fontname);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149 g_free(fontname);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
150
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
151 cancel_toolbar_font(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
152 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
153
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
155 toggle_font(GtkWidget *font, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
156 {
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
157 const char *fontname;
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
158
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 g_return_if_fail(toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
160
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
161 fontname = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml));
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
162
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 if (!toolbar->font_dialog) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164 toolbar->font_dialog = gtk_font_selection_dialog_new(_("Select Font"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166 g_object_set_data(G_OBJECT(toolbar->font_dialog), "gaim_toolbar", toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
167
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
168 if(fontname) {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
169 char fonttif[128];
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
170 g_snprintf(fonttif, sizeof(fonttif), "%s 12", fontname);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
171 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog),
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
172 fonttif);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
173 } else {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
174 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog),
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
175 DEFAULT_FONT_FACE);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
176 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
177
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 g_signal_connect(G_OBJECT(toolbar->font_dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
179 G_CALLBACK(destroy_toolbar_font), toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
180 g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->ok_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
181 G_CALLBACK(apply_font), toolbar->font_dialog);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
182 g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->cancel_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
183 G_CALLBACK(cancel_toolbar_font), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
184
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
185 gtk_window_present(GTK_WINDOW(toolbar->font_dialog));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
186 } else {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
187 cancel_toolbar_font(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
188 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
189 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
191
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
192 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
193 destroy_toolbar_fgcolor(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
194 GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
195 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
196 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->fgcolor), FALSE);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
197
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
198 if (toolbar->fgcolor_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
199 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
200 gtk_widget_destroy(toolbar->fgcolor_dialog);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
201 toolbar->fgcolor_dialog = NULL;
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
202 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
203 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
204
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
205 static void cancel_toolbar_fgcolor(GtkWidget *widget,
8321
477316d4d8a3 [gaim-migrate @ 9045]
Christian Hammond <chipx86@chipx86.com>
parents: 8320
diff changeset
206 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207 {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
208 destroy_toolbar_fgcolor(widget, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
210
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
211 static void do_fgcolor(GtkWidget *widget, GtkColorSelection *colorsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
212 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213 GdkColor text_color;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
214 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "gaim_toolbar");
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 char *open_tag;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
217 open_tag = g_malloc(30);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 gtk_color_selection_get_current_color(colorsel, &text_color);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 g_snprintf(open_tag, 23, "#%02X%02X%02X",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 text_color.red / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221 text_color.green / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222 text_color.blue / 256);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223 gtk_imhtml_toggle_forecolor(GTK_IMHTML(toolbar->imhtml), open_tag);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 g_free(open_tag);
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
226 cancel_toolbar_fgcolor(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230 toggle_fg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
233 GtkWidget *colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
234 GdkColor fgcolor;
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
235 const char *color = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml));
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
236
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 if (!toolbar->fgcolor_dialog) {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
238
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
239 toolbar->fgcolor_dialog = gtk_color_selection_dialog_new(_("Select Text Color"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
240 colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
241 if (color) {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
242 gdk_color_parse(color, &fgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
243 gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(colorsel), &fgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
244 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
245
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246 g_object_set_data(G_OBJECT(colorsel), "gaim_toolbar", toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
247
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 g_signal_connect(G_OBJECT(toolbar->fgcolor_dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
249 G_CALLBACK(destroy_toolbar_fgcolor), toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
250 g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->ok_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
251 G_CALLBACK(do_fgcolor), colorsel);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
252 g_signal_connect(G_OBJECT (GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->cancel_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
253 G_CALLBACK(cancel_toolbar_fgcolor), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
254
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
256 gtk_window_present(GTK_WINDOW(toolbar->fgcolor_dialog));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257 } else if (toolbar->fgcolor_dialog != NULL) {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
258 cancel_toolbar_fgcolor(color, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259 } else {
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
260 /* gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>"); */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
262 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
263 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
264
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
265 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
266 destroy_toolbar_bgcolor(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
267 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->bgcolor), FALSE);
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
270
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
271 if (toolbar->bgcolor_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
272 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
273 gtk_widget_destroy(toolbar->bgcolor_dialog);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
274 toolbar->bgcolor_dialog = NULL;
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
275 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
276 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
277
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
278 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
279 cancel_toolbar_bgcolor(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
280 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
281 destroy_toolbar_bgcolor(widget, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
284 static void do_bgcolor(GtkWidget *widget, GtkColorSelection *colorsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
285 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
286 GdkColor text_color;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "gaim_toolbar");
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 char *open_tag;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
290 open_tag = g_malloc(30);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
291 gtk_color_selection_get_current_color(colorsel, &text_color);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292 g_snprintf(open_tag, 23, "#%02X%02X%02X",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293 text_color.red / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
294 text_color.green / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 text_color.blue / 256);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 gtk_imhtml_toggle_backcolor(GTK_IMHTML(toolbar->imhtml), open_tag);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298 g_free(open_tag);
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
299 cancel_toolbar_bgcolor(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
303 toggle_bg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
305 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
306 GtkWidget *colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
307 GdkColor bgcolor;
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
308 const char *color = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml));
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
309
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310 if (!toolbar->bgcolor_dialog) {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
311
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8325
diff changeset
312 toolbar->bgcolor_dialog = gtk_color_selection_dialog_new(_("Select Background Color"));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
314 if (color) {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
315 gdk_color_parse(color, &bgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
316 gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(colorsel), &bgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
317 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
318
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
319 g_object_set_data(G_OBJECT(colorsel), "gaim_toolbar", toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
320
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
321 g_signal_connect(G_OBJECT(toolbar->bgcolor_dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
322 G_CALLBACK(destroy_toolbar_bgcolor), toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
323 g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->ok_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
324 G_CALLBACK(do_bgcolor), colorsel);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
325 g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->cancel_button), "clicked",
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
326 G_CALLBACK(cancel_toolbar_bgcolor), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
327
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
329 gtk_window_present(GTK_WINDOW(toolbar->bgcolor_dialog));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330 } else if (toolbar->bgcolor_dialog != NULL) {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
331 cancel_toolbar_bgcolor(color, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 } else {
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
333 /* gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>"); */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
339 cancel_link_cb(GtkIMHtmlToolbar *toolbar, GaimRequestFields *fields)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
340 {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
341 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), FALSE);
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
342
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
343 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
344 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
345
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
346 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
347 close_link_dialog(GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
348 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
349 if (toolbar->link_dialog != NULL)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
350 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
351 gaim_request_close(GAIM_REQUEST_FIELDS, toolbar->link_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
352 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
353 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
354 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
355
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
356 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
357 do_insert_link_cb(GtkIMHtmlToolbar *toolbar, GaimRequestFields *fields)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
358 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359 const char *url, *description;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
360
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
361 url = gaim_request_fields_get_string(fields, "url");
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
362 if (GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC)
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
363 description = gaim_request_fields_get_string(fields, "description");
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
364 else
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
365 description = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
366
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
367 if (description == NULL)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
368 description = url;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
369
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
370 gtk_imhtml_insert_link(GTK_IMHTML(toolbar->imhtml),
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
371 gtk_text_buffer_get_insert(GTK_IMHTML(toolbar->imhtml)->text_buffer),
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
372 url, description);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
373
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
376 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
377 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
378
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
379 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
380 insert_link_cb(GtkWidget *w, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
381 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
382 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link))) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
383 GaimRequestFields *fields;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
384 GaimRequestFieldGroup *group;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
385 GaimRequestField *field;
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
386 GtkTextIter start, end;
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
387 char *msg;
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
388 char *desc = NULL;
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
389
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
390 fields = gaim_request_fields_new();
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
391
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
392 group = gaim_request_field_group_new(NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
393 gaim_request_fields_add_group(fields, group);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
394
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
395 field = gaim_request_field_string_new("url", _("_URL"), NULL, FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
396 gaim_request_field_set_required(field, TRUE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
397 gaim_request_field_group_add_field(group, field);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
398
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
399 if(GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC) {
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
400 if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, &start, &end)) {
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
401 desc = gtk_imhtml_get_text(GTK_IMHTML(toolbar->imhtml), &start, &end);
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
402 }
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
403 field = gaim_request_field_string_new("description", _("_Description"),
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
404 desc, FALSE);
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
405 gaim_request_field_group_add_field(group, field);
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
406 msg = g_strdup(_("Please enter the URL and description of the "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
407 "link that you want to insert. The description "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
408 "is optional."));
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
409 } else {
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
410 msg = g_strdup(_("Please enter the URL of the "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
411 "link that you want to insert."));
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
412 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
413
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
414 toolbar->link_dialog =
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
415 gaim_request_fields(toolbar, _("Insert Link"),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
416 NULL,
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
417 msg,
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
418 fields,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
419 _("_Insert"), G_CALLBACK(do_insert_link_cb),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
420 _("Cancel"), G_CALLBACK(cancel_link_cb),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
421 toolbar);
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
422 g_free(msg);
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
423 g_free(desc);
8322
9bae68fd2612 [gaim-migrate @ 9046]
Christian Hammond <chipx86@chipx86.com>
parents: 8321
diff changeset
424 } else {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
425 close_link_dialog(toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
426 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
427 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
428 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
429
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
430
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
431 static void
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
432 do_insert_image_cb(GtkWidget *widget, int response, GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
433 {
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
434 gchar *filename, *name, *buf;
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
435 char *filedata;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
436 size_t size;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
437 GError *error = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
438 int id;
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
439 GtkTextIter iter;
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
440 GtkTextMark *ins;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
441
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
442 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
443 if (response != GTK_RESPONSE_ACCEPT) {
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
444 #else /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
445 if (response != GTK_RESPONSE_OK) {
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
446 #endif /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
447 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
448 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
449 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
450
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
451 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
452 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
453 #else /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
454 filename = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(widget)));
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
455 #endif /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
456
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
457 if (filename == NULL) {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
458 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
459 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
460 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
461
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
462 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
463 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(widget))) {
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
464 g_free(filename);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
465 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
466 return;
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
467 }
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
468 #endif /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
469
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
470 /* The following triggers a callback that closes the widget */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
471 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
472
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
473 if (!g_file_get_contents(filename, &filedata, &size, &error)) {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
474 gaim_notify_error(NULL, NULL, error->message, NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
475
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
476 g_error_free(error);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
477 g_free(filename);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
478
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
479 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
480 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
481
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
482 name = strrchr(filename, G_DIR_SEPARATOR) + 1;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
483
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
484 id = gaim_imgstore_add(filedata, size, name);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
485 g_free(filedata);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
486
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
487 if (id == 0) {
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
488 buf = g_strdup_printf(_("Failed to store image: %s\n"), filename);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
489 gaim_notify_error(NULL, NULL, buf, NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
490
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
491 g_free(buf);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
492 g_free(filename);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
493
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
494 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
495 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
496
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
497 g_free(filename);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
498
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
499 ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)));
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
500 gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)),
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
501 &iter, ins);
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
502 gtk_imhtml_insert_image_at_iter(GTK_IMHTML(toolbar->imhtml), id, &iter);
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
503 gaim_imgstore_unref(id);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
504 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
505
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
506
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
507 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
508 insert_image_cb(GtkWidget *save, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
509 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
510 GtkWidget *window;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
511
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
512 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image))) {
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
513 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
514 window = gtk_file_chooser_dialog_new(_("Insert Image"),
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
515 NULL,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
516 GTK_FILE_CHOOSER_ACTION_OPEN,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
517 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
518 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
519 NULL);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
520 gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_ACCEPT);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
521 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(window)),
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
522 "response", G_CALLBACK(do_insert_image_cb), toolbar);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
523 #else /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
524 window = gtk_file_selection_new(_("Insert Image"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
525 gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_OK);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
526 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
527 "response", G_CALLBACK(do_insert_image_cb), toolbar);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
528 #endif /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
529
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
530 gtk_widget_show(window);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
531 toolbar->image_dialog = window;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
532 } else {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
533 gtk_widget_destroy(toolbar->image_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
534 toolbar->image_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
535 }
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
536
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
537 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
538 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
539
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
540
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
541 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
542 close_smiley_dialog(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
543 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
544 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
545 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
546
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
547 if (toolbar->smiley_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
548 {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
549 gtk_widget_destroy(toolbar->smiley_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
550 toolbar->smiley_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
551 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
552 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
553
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
554
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
555 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
556 insert_smiley_text(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
557 {
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
558 char *smiley_text, *escaped_smiley;
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
559
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
560 smiley_text = g_object_get_data(G_OBJECT(widget), "smiley_text");
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
561 escaped_smiley = gaim_escape_html(smiley_text);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
562
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8447
diff changeset
563 gtk_imhtml_insert_smiley(GTK_IMHTML(toolbar->imhtml),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8447
diff changeset
564 GTK_IMHTML(toolbar->imhtml)->protocol_name,
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
565 escaped_smiley);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
566
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
567 g_free(escaped_smiley);
8320
271cbcaa6aa3 [gaim-migrate @ 9044]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
568 close_smiley_dialog(NULL, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
569 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
570
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
571
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
572 static void add_smiley(GtkIMHtmlToolbar *toolbar, GtkWidget *table, int row, int col, char *filename, char *face)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
573 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
574 GtkWidget *image;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
575 GtkWidget *button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
576
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
577 image = gtk_image_new_from_file(filename);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
578 button = gtk_button_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
579 gtk_container_add(GTK_CONTAINER(button), image);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
580 g_object_set_data(G_OBJECT(button), "smiley_text", face);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
581 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(insert_smiley_text), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
582
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
583 gtk_tooltips_set_tip(toolbar->tooltips, button, face, NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
584
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
585 gtk_table_attach_defaults(GTK_TABLE(table), button, col, col+1, row, row+1);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
586
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
587 /* these look really weird with borders */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
588 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
589
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
590 gtk_widget_show(button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
591 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
592
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
593
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
594 static gboolean smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
595 while(list) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
596 GtkIMHtmlSmiley *cur = list->data;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
597 if(!strcmp(cur->file, smiley->file))
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
598 return FALSE;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
599 list = list->next;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
600 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
601 return TRUE;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
602 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
603
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
604
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
605 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
606 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
607 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
608 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
609
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
610 GtkWidget *dialog;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
611 GtkWidget *smiley_table = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
612 GSList *smileys, *unique_smileys = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
613 int width;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
614 int row = 0, col = 0;
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
615
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
616 if (toolbar->smiley_dialog) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
617 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
618 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
619 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
620
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
621 if (toolbar->sml)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
622 smileys = get_proto_smileys(toolbar->sml);
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
623 else
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9863
diff changeset
624 smileys = get_proto_smileys(NULL);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
625
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
626 while(smileys) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
627 GtkIMHtmlSmiley *smiley = smileys->data;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
628 if(!smiley->hidden) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
629 if(smiley_is_unique(unique_smileys, smiley))
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
630 unique_smileys = g_slist_append(unique_smileys, smiley);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
631 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
632 smileys = smileys->next;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
633 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
634
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
635 GAIM_DIALOG(dialog);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
636
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
637 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
638 gtk_window_set_role(GTK_WINDOW(dialog), "smiley_dialog");
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
639 gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
640
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
641 if(g_slist_length(unique_smileys)) {
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
642
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
643 width = floor(sqrt(g_slist_length(unique_smileys)));
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
644
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
645 smiley_table = gtk_table_new(width, width, TRUE);
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
646
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
647 /* pack buttons */
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
648
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
649 while(unique_smileys) {
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
650 GtkIMHtmlSmiley *smiley = unique_smileys->data;
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
651 if(!smiley->hidden) {
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
652 add_smiley(toolbar, smiley_table, row, col, smiley->file, smiley->smile);
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
653 if(++col >= width) {
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
654 col = 0;
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
655 row++;
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
656 }
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
657 }
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
658 unique_smileys = unique_smileys->next;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
659 }
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
660 }
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
661 else {
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8807
diff changeset
662 smiley_table = gtk_label_new(_("This theme has no available smileys."));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
663 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
664
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
665 gtk_container_add(GTK_CONTAINER(dialog), smiley_table);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
666
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
667 gtk_widget_show(smiley_table);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
668
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
669 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
670
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
671 /* connect signals */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
672 g_object_set_data(G_OBJECT(dialog), "dialog_type", "smiley dialog");
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
673 g_signal_connect(G_OBJECT(dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
674 G_CALLBACK(close_smiley_dialog), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
675
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
676 /* show everything */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
677 gtk_window_set_title(GTK_WINDOW(dialog), _("Smile!"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
678 gtk_widget_show_all(dialog);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
679
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
680 toolbar->smiley_dialog = dialog;
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
681
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
682 } else if (toolbar->smiley_dialog) {
8320
271cbcaa6aa3 [gaim-migrate @ 9044]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
683 close_smiley_dialog(smiley, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
684 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
685 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
686 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
687
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
688 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
689 {
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
690 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
691 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
692 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
693
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
694 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->larger_size), buttons & GTK_IMHTML_GROW);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
695 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smaller_size), buttons & GTK_IMHTML_SHRINK);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
696
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
697 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->font), buttons & GTK_IMHTML_FACE);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
698 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->fgcolor), buttons & GTK_IMHTML_FORECOLOR);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
699 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bgcolor), buttons & GTK_IMHTML_BACKCOLOR);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
700
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
701 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
702 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
703 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
704 }
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
705
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
706 /* we call this when we want to _set_active the toggle button, it'll
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
707 * block the callback thats connected to the button so we don't have to
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
708 * do the double toggling hack
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
709 */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
710 static void toggle_button_set_active_block(GtkToggleButton *button,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
711 gboolean is_active,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
712 GtkIMHtmlToolbar *toolbar)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
713 {
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
714 GObject *object;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
715 g_return_if_fail(toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
716
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
717 object = g_object_ref(button);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
718 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
719 0, 0, NULL, NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
720 gtk_toggle_button_set_active(button, is_active);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
721 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
722 0, 0, NULL, NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
723 g_object_unref(object);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
724 }
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
725
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
726 static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
727 {
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
728 if (buttons & GTK_IMHTML_BOLD)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
729 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
730 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
731 toolbar);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
732
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
733 if (buttons & GTK_IMHTML_ITALIC)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
734 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
735 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
736 toolbar);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
737
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
738 if (buttons & GTK_IMHTML_UNDERLINE)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
739 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
740 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
741 toolbar);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
742 }
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
743
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
744 static void reset_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
745 {
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
746 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)))
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
747 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), FALSE,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
748 toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
749
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
750 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)))
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
751 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
752 FALSE, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
753
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
754 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)))
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
755 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
756 FALSE, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
757 }
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
758
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
759 static void update_buttons(GtkIMHtmlToolbar *toolbar) {
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
760 gboolean bold, italic, underline;
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
761
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
762 bold = italic = underline = FALSE;
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
763 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml),
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
764 &bold, &italic, &underline);
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
765
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
766 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
767 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold,
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
768 toolbar);
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
769
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
770 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
771 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic,
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
772 toolbar);
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
773
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
774 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
775 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
776 underline, toolbar);
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
777 }
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
778
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
779 static void update_format_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) {
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
780 update_buttons(toolbar);
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
781 }
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
782
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
783 static void mark_set_cb(GtkTextBuffer *buffer, GtkTextIter *location,
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
784 GtkTextMark *mark, GtkIMHtmlToolbar *toolbar)
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
785 {
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
786 if(mark != gtk_text_buffer_get_insert(buffer))
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
787 return;
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
788
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
789 update_buttons(toolbar);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
790 }
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
791
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
792 enum {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
793 LAST_SIGNAL
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
794 };
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
795 /* static guint signals [LAST_SIGNAL] = { 0 }; */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
796
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
797 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
798 gtk_imhtmltoolbar_finalize (GObject *object)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
799 {
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
800 GtkIMHtmlToolbar *toolbar = GTK_IMHTMLTOOLBAR(object);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
801
8685
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
802 if (toolbar->image_dialog != NULL)
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
803 {
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
804 gtk_widget_destroy(toolbar->image_dialog);
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
805 toolbar->image_dialog = NULL;
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
806 }
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
807
8785
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
808 if (toolbar->font_dialog != NULL)
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
809 {
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
810 gtk_widget_destroy(toolbar->font_dialog);
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
811 toolbar->font_dialog = NULL;
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
812 }
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
813
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
814 if (toolbar->smiley_dialog != NULL)
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
815 {
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
816 gtk_widget_destroy(toolbar->smiley_dialog);
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
817 toolbar->smiley_dialog = NULL;
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
818 }
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
819
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
820 if (toolbar->bgcolor_dialog != NULL)
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
821 {
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
822 gtk_widget_destroy(toolbar->bgcolor_dialog);
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
823 toolbar->bgcolor_dialog = NULL;
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
824 }
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
825
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
826 if (toolbar->fgcolor_dialog != NULL)
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
827 {
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
828 gtk_widget_destroy(toolbar->fgcolor_dialog);
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
829 toolbar->fgcolor_dialog = NULL;
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
830 }
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
831
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
832 if (toolbar->link_dialog != NULL)
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
833 {
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
834 gaim_request_close(GAIM_REQUEST_FIELDS, toolbar->link_dialog);
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
835 toolbar->link_dialog = NULL;
3794cb4e9e04 [gaim-migrate @ 9547]
Christian Hammond <chipx86@chipx86.com>
parents: 8784
diff changeset
836 }
8784
71c51aa52be4 [gaim-migrate @ 9546]
Kevin Stange <kstange@pidgin.im>
parents: 8756
diff changeset
837
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
838 if (toolbar->sml)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
839 free(toolbar->sml);
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
840 gtk_object_sink(GTK_OBJECT(toolbar->tooltips));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
841
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
842 G_OBJECT_CLASS(parent_class)->finalize (object);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
843 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
844
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
845 /* Boring GTK stuff */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
846 static void gtk_imhtmltoolbar_class_init (GtkIMHtmlToolbarClass *class)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
847 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
848 GtkObjectClass *object_class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
849 GObjectClass *gobject_class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
850 object_class = (GtkObjectClass*) class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
851 gobject_class = (GObjectClass*) class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
852 parent_class = gtk_type_class(GTK_TYPE_VBOX);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
853 /* signals[URL_CLICKED] = g_signal_new(url_clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
854 G_TYPE_FROM_CLASS(gobject_class),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
855 G_SIGNAL_RUN_FIRST,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
856 G_STRUCT_OFFSET(GtkIMHtmlClass, url_clicked),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
857 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
858 0,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
859 g_cclosure_marshal_VOID__POINTER,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
860 G_TYPE_NONE, 1,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
861 G_TYPE_POINTER);*/
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
862 gobject_class->finalize = gtk_imhtmltoolbar_finalize;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
863 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
864
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
865 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
866 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
867 GtkWidget *hbox;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
868 GtkWidget *button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
869 GtkWidget *sep;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
870 GtkSizeGroup *sg;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
871
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
872 toolbar->imhtml = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
873 toolbar->font_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
874 toolbar->fgcolor_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
875 toolbar->bgcolor_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
876 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
877 toolbar->smiley_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
878 toolbar->image_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
879
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
880 toolbar->tooltips = gtk_tooltips_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
881
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
882 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
883
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
884 sep = gtk_hseparator_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
885 gtk_box_pack_start(GTK_BOX(toolbar), sep, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
886 gtk_widget_show(sep);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
887
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
888 hbox = gtk_hbox_new(FALSE, 6);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
889 gtk_box_pack_start(GTK_BOX(toolbar), hbox, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
890
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
891 /* Bold */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
892 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
893 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
894 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
895 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Bold"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
896
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
897 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
898 G_CALLBACK(do_bold), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
899
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
900 toolbar->bold = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
901
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
902 /* Italic */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
903 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
904 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
905 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
906 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Italic"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
907
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
908 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
909 G_CALLBACK(do_italic), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
910
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
911 toolbar->italic = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
912
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
913 /* Underline */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
914 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
915 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
916 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
917 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Underline"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
918
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
919 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
920 G_CALLBACK(do_underline), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
921
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
922 toolbar->underline = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
923
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
924 /* Sep */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
925 sep = gtk_vseparator_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
926 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
927
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
928 /* Increase font size */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
929 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_BIGGER);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
930 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
931 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
932 gtk_tooltips_set_tip(toolbar->tooltips, button,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
933 _("Larger font size"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
934
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
935 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
936 G_CALLBACK(do_big), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
937
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
938 toolbar->larger_size = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
939
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
940 /* Decrease font size */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
941 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
942 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
943 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
944 gtk_tooltips_set_tip(toolbar->tooltips, button,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
945 _("Smaller font size"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
946
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
947 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
948 G_CALLBACK(do_small), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
949
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
950 toolbar->smaller_size = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
951
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
952 /* Sep */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
953 sep = gtk_vseparator_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
954 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
955
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
956 /* Font Face */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
957
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
958 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_SELECT_FONT);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
959 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
960 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
961 gtk_tooltips_set_tip(toolbar->tooltips, button,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
962 _("Font Face"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
963
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
964 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
965 G_CALLBACK(toggle_font), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
966
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
967 toolbar->font = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
968
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
969 /* Foreground Color */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
970 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_FGCOLOR);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
971 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
972 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
973 gtk_tooltips_set_tip(toolbar->tooltips, button,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
974 _("Foreground font color"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
975
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
976 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
977 G_CALLBACK(toggle_fg_color), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
978
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
979 toolbar->fgcolor = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
980
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
981 /* Background Color */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
982 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_BGCOLOR);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
983 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
984 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
985 gtk_tooltips_set_tip(toolbar->tooltips, button,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
986 _("Background color"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
987
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
988 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
989 G_CALLBACK(toggle_bg_color), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
990
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
991 toolbar->bgcolor = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
992
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
993 /* Sep */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
994 sep = gtk_vseparator_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
995 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
996
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
997 /* Insert Link */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
998 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
999 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1000 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1001 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert link"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1002 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1003 G_CALLBACK(insert_link_cb), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
1004
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1005 toolbar->link = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1006
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1007 /* Insert IM Image */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1008 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1009 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1010 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1011 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert image"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1012
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1013 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1014 G_CALLBACK(insert_image_cb), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1015
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1016 toolbar->image = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1017
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1018 /* Insert Smiley */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1019 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1020 gtk_size_group_add_widget(sg, button);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1021 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1022 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1023
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1024 g_signal_connect(G_OBJECT(button), "clicked",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1025 G_CALLBACK(insert_smiley_cb), toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1026
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1027 toolbar->smiley = button;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1028
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1029
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1030 sep = gtk_hseparator_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1031 gtk_box_pack_start(GTK_BOX(toolbar), sep, FALSE, FALSE, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1032 gtk_widget_show(sep);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1033 toolbar->sml = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1034 gtk_widget_show_all(hbox);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1035 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1036
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1037 GtkWidget *gtk_imhtmltoolbar_new()
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1038 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1039 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1040 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1041
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1042 GType gtk_imhtmltoolbar_get_type()
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1043 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1044 static GType imhtmltoolbar_type = 0;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1045
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1046 if (!imhtmltoolbar_type) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1047 static const GTypeInfo imhtmltoolbar_info = {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1048 sizeof(GtkIMHtmlToolbarClass),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1049 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1050 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1051 (GClassInitFunc) gtk_imhtmltoolbar_class_init,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1052 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1053 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1054 sizeof (GtkIMHtmlToolbar),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1055 0,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1056 (GInstanceInitFunc) gtk_imhtmltoolbar_init
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1057 };
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1058
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
1059 imhtmltoolbar_type = g_type_register_static(GTK_TYPE_VBOX,
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1060 "GtkIMHtmlToolbar", &imhtmltoolbar_info, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1061 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1062
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1063 return imhtmltoolbar_type;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1064 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1065
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1066
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
1067 void gtk_imhtmltoolbar_attach(GtkIMHtmlToolbar *toolbar, GtkWidget *imhtml)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1068 {
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1069 GtkIMHtmlButtons buttons;
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1070 gboolean bold, italic, underline;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1071
8325
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1072 g_return_if_fail(toolbar != NULL);
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1073 g_return_if_fail(GTK_IS_IMHTMLTOOLBAR(toolbar));
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1074 g_return_if_fail(imhtml != NULL);
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1075 g_return_if_fail(GTK_IS_IMHTML(imhtml));
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1076
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1077 toolbar->imhtml = imhtml;
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
1078 g_signal_connect(G_OBJECT(imhtml), "format_buttons_update", G_CALLBACK(update_buttons_cb), toolbar);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
1079 g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", G_CALLBACK(toggle_button_cb), toolbar);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1080 g_signal_connect(G_OBJECT(imhtml), "format_function_clear", G_CALLBACK(reset_buttons_cb), toolbar);
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
1081 g_signal_connect(G_OBJECT(imhtml), "format_function_update", G_CALLBACK(update_format_cb), toolbar);
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1082 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", G_CALLBACK(mark_set_cb), toolbar);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1083
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1084 buttons = gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml));
8807
128d3dae0196 [gaim-migrate @ 9569]
Jon Oberheide
parents: 8788
diff changeset
1085 update_buttons_cb(GTK_IMHTML(imhtml), buttons, toolbar);
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1086
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1087 bold = italic = underline = FALSE;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1088
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1089 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &underline);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1090
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1091 if(bold)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1092 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1093 toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1094
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1095 if(italic)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1096 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1097 toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1098
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1099 if(underline)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1100 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1101 underline, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1102 }
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1103
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1104 void gtk_imhtmltoolbar_associate_smileys(GtkIMHtmlToolbar *toolbar, const char *proto_id)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1105 {
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1106 if (toolbar->sml)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1107 g_free(toolbar->sml);
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1108
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1109 toolbar->sml = g_strdup(proto_id);
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1110 }

mercurial