annotate src/gtkimhtmltoolbar.c @ 10418:bed2c96bc1fb

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