Wed, 06 Jun 2007 00:58:02 +0000
merge of 'b15babcb347294c20651eff71ed45f3d0d91867a'
and '246d166626f3f4f5e051a18852b4b838a02c7bcb'
| 8317 | 1 | /* |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10138
diff
changeset
|
2 | * @file gtkimhtmltoolbar.c GTK+ IMHtml Toolbar |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
15931
diff
changeset
|
3 | * @ingroup pidgin |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10138
diff
changeset
|
4 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
5 | * pidgin |
| 8317 | 6 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
7 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 8317 | 8 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 9 | * source distribution. | |
| 10 | * | |
| 11 | * This program is free software; you can redistribute it and/or modify | |
| 12 | * under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | * | |
| 25 | */ | |
| 9791 | 26 | #include "internal.h" |
| 15577 | 27 | #include "pidgin.h" |
| 8317 | 28 | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
29 | #include "imgstore.h" |
| 8317 | 30 | #include "notify.h" |
| 31 | #include "request.h" | |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15847
diff
changeset
|
32 | #include "pidginstock.h" |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
33 | #include "util.h" |
| 8317 | 34 | |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
35 | #include "gtkdialogs.h" |
|
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
36 | #include "gtkimhtmltoolbar.h" |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11314
diff
changeset
|
37 | #include "gtkthemes.h" |
|
9730
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
38 | #include "gtkutils.h" |
|
e59812364b8b
[gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
39 | |
| 10080 | 40 | static GtkHBoxClass *parent_class = NULL; |
| 8317 | 41 | |
|
11275
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
42 | static void toggle_button_set_active_block(GtkToggleButton *button, |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
43 | gboolean is_active, |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
44 | GtkIMHtmlToolbar *toolbar); |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
45 | |
|
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
46 | |
| 8317 | 47 | static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar) |
| 48 | { | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
49 | g_return_if_fail(toolbar != NULL); |
| 8317 | 50 | gtk_imhtml_toggle_bold(GTK_IMHTML(toolbar->imhtml)); |
| 51 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 52 | } | |
| 53 | ||
| 54 | static void | |
| 55 | do_italic(GtkWidget *italic, GtkIMHtmlToolbar *toolbar) | |
| 56 | { | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
57 | g_return_if_fail(toolbar != NULL); |
| 8317 | 58 | gtk_imhtml_toggle_italic(GTK_IMHTML(toolbar->imhtml)); |
| 59 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 60 | } | |
| 61 | ||
| 62 | static void | |
| 63 | do_underline(GtkWidget *underline, GtkIMHtmlToolbar *toolbar) | |
| 64 | { | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
65 | g_return_if_fail(toolbar != NULL); |
| 8317 | 66 | gtk_imhtml_toggle_underline(GTK_IMHTML(toolbar->imhtml)); |
| 67 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 68 | } | |
| 69 | ||
| 70 | static void | |
| 71 | do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar) | |
| 72 | { | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
73 | g_return_if_fail(toolbar != NULL); |
|
17403
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
74 | /* Only shrink the font on activation, not deactivation as well */ |
|
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
75 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smalltb))) |
|
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
76 | gtk_imhtml_font_shrink(GTK_IMHTML(toolbar->imhtml)); |
| 8317 | 77 | gtk_widget_grab_focus(toolbar->imhtml); |
| 78 | } | |
| 79 | ||
| 80 | static void | |
| 81 | do_big(GtkWidget *large, GtkIMHtmlToolbar *toolbar) | |
| 82 | { | |
| 83 | g_return_if_fail(toolbar); | |
|
17403
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
84 | /* Only grow the font on activation, not deactivation as well */ |
|
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
85 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large))) |
|
b0e8707193b5
Only change the size when the imhtmltoolbar button has been activated,
Kevin Stange <kstange@pidgin.im>
parents:
17303
diff
changeset
|
86 | gtk_imhtml_font_grow(GTK_IMHTML(toolbar->imhtml)); |
| 8317 | 87 | gtk_widget_grab_focus(toolbar->imhtml); |
| 88 | } | |
| 89 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
90 | static void |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
91 | destroy_toolbar_font(GtkWidget *widget, GdkEvent *event, |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
92 | GtkIMHtmlToolbar *toolbar) |
| 8317 | 93 | { |
|
10135
760803be53d2
[gaim-migrate @ 11202]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10134
diff
changeset
|
94 | if (widget != NULL) |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
95 | gtk_imhtml_toggle_fontface(GTK_IMHTML(toolbar->imhtml), ""); |
| 8317 | 96 | |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
97 | if (toolbar->font_dialog != NULL) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
98 | { |
| 8317 | 99 | gtk_widget_destroy(toolbar->font_dialog); |
| 100 | toolbar->font_dialog = NULL; | |
| 101 | } | |
| 102 | } | |
| 103 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
104 | static void |
| 10125 | 105 | realize_toolbar_font(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) |
| 106 | { | |
| 107 | GtkFontSelection *sel; | |
| 108 | ||
| 109 | sel = GTK_FONT_SELECTION(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->fontsel); | |
| 110 | gtk_widget_hide_all(gtk_widget_get_parent(sel->size_entry)); | |
| 111 | gtk_widget_show_all(sel->family_list); | |
| 112 | gtk_widget_show(gtk_widget_get_parent(sel->family_list)); | |
| 113 | gtk_widget_show(gtk_widget_get_parent(gtk_widget_get_parent(sel->family_list))); | |
| 114 | } | |
| 115 | ||
| 116 | static void | |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
117 | cancel_toolbar_font(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
118 | { |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
119 | destroy_toolbar_font(widget, NULL, toolbar); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
120 | } |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
121 | |
| 8317 | 122 | static void apply_font(GtkWidget *widget, GtkFontSelection *fontsel) |
| 123 | { | |
| 124 | /* this could be expanded to include font size, weight, etc. | |
| 125 | but for now only works with font face */ | |
| 126 | char *fontname; | |
| 127 | char *space; | |
| 15884 | 128 | GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(fontsel), "purple_toolbar"); |
| 8317 | 129 | |
| 130 | fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(fontsel)); | |
| 131 | ||
| 132 | space = strrchr(fontname, ' '); | |
| 133 | if(space && isdigit(*(space+1))) | |
| 134 | *space = '\0'; | |
| 135 | ||
| 136 | gtk_imhtml_toggle_fontface(GTK_IMHTML(toolbar->imhtml), fontname); | |
| 137 | g_free(fontname); | |
| 138 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
139 | cancel_toolbar_font(NULL, toolbar); |
| 8317 | 140 | } |
| 141 | ||
| 142 | static void | |
| 143 | toggle_font(GtkWidget *font, GtkIMHtmlToolbar *toolbar) | |
| 144 | { | |
| 145 | g_return_if_fail(toolbar); | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
146 | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
147 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font))) { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
148 | char *fontname = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml)); |
| 9025 | 149 | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
150 | if (!toolbar->font_dialog) { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
151 | toolbar->font_dialog = gtk_font_selection_dialog_new(_("Select Font")); |
| 8317 | 152 | |
| 15884 | 153 | g_object_set_data(G_OBJECT(toolbar->font_dialog), "purple_toolbar", toolbar); |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
154 | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
155 | if(fontname) { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
156 | char *fonttif = g_strdup_printf("%s 12", fontname); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
157 | g_free(fontname); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
158 | gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
159 | fonttif); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
160 | g_free(fonttif); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
161 | } else { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
162 | gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
163 | DEFAULT_FONT_FACE); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
164 | } |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
165 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
166 | g_signal_connect(G_OBJECT(toolbar->font_dialog), "delete_event", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
167 | G_CALLBACK(destroy_toolbar_font), toolbar); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
168 | g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->ok_button), "clicked", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
169 | G_CALLBACK(apply_font), toolbar->font_dialog); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
170 | g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->cancel_button), "clicked", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
171 | G_CALLBACK(cancel_toolbar_font), toolbar); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
172 | g_signal_connect_after(G_OBJECT(toolbar->font_dialog), "realize", |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
173 | G_CALLBACK(realize_toolbar_font), toolbar); |
| 9025 | 174 | } |
| 8317 | 175 | gtk_window_present(GTK_WINDOW(toolbar->font_dialog)); |
| 176 | } else { | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
177 | cancel_toolbar_font(font, toolbar); |
| 8317 | 178 | } |
| 179 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 180 | } | |
| 181 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
182 | static void |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
183 | destroy_toolbar_fgcolor(GtkWidget *widget, GdkEvent *event, |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
184 | GtkIMHtmlToolbar *toolbar) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
185 | { |
|
10135
760803be53d2
[gaim-migrate @ 11202]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10134
diff
changeset
|
186 | if (widget != NULL) |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
187 | gtk_imhtml_toggle_forecolor(GTK_IMHTML(toolbar->imhtml), ""); |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
188 | |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
189 | if (toolbar->fgcolor_dialog != NULL) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
190 | { |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
191 | gtk_widget_destroy(toolbar->fgcolor_dialog); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
192 | toolbar->fgcolor_dialog = NULL; |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
193 | } |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
194 | } |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
195 | |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
196 | static void cancel_toolbar_fgcolor(GtkWidget *widget, |
|
8321
477316d4d8a3
[gaim-migrate @ 9045]
Christian Hammond <chipx86@chipx86.com>
parents:
8320
diff
changeset
|
197 | GtkIMHtmlToolbar *toolbar) |
| 8317 | 198 | { |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
199 | destroy_toolbar_fgcolor(widget, NULL, toolbar); |
| 8317 | 200 | } |
| 201 | ||
| 202 | static void do_fgcolor(GtkWidget *widget, GtkColorSelection *colorsel) | |
| 203 | { | |
| 204 | GdkColor text_color; | |
| 15884 | 205 | GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "purple_toolbar"); |
| 8317 | 206 | char *open_tag; |
| 207 | ||
| 208 | open_tag = g_malloc(30); | |
| 209 | gtk_color_selection_get_current_color(colorsel, &text_color); | |
| 210 | g_snprintf(open_tag, 23, "#%02X%02X%02X", | |
| 211 | text_color.red / 256, | |
| 212 | text_color.green / 256, | |
| 213 | text_color.blue / 256); | |
| 214 | gtk_imhtml_toggle_forecolor(GTK_IMHTML(toolbar->imhtml), open_tag); | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
215 | g_free(open_tag); |
| 8317 | 216 | |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
217 | cancel_toolbar_fgcolor(NULL, toolbar); |
| 8317 | 218 | } |
| 219 | ||
| 220 | static void | |
| 221 | toggle_fg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar) | |
| 222 | { | |
| 223 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) { | |
| 224 | GtkWidget *colorsel; | |
| 9025 | 225 | GdkColor fgcolor; |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10297
diff
changeset
|
226 | char *color = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml)); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
227 | |
| 8317 | 228 | if (!toolbar->fgcolor_dialog) { |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
229 | |
| 8317 | 230 | toolbar->fgcolor_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); |
| 231 | colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->colorsel; | |
| 9025 | 232 | if (color) { |
| 233 | gdk_color_parse(color, &fgcolor); | |
| 234 | gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(colorsel), &fgcolor); | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10297
diff
changeset
|
235 | g_free(color); |
| 9025 | 236 | } |
| 237 | ||
| 15884 | 238 | g_object_set_data(G_OBJECT(colorsel), "purple_toolbar", toolbar); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
239 | |
| 8317 | 240 | g_signal_connect(G_OBJECT(toolbar->fgcolor_dialog), "delete_event", |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
241 | G_CALLBACK(destroy_toolbar_fgcolor), toolbar); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
242 | g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->ok_button), "clicked", |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
243 | G_CALLBACK(do_fgcolor), colorsel); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
244 | g_signal_connect(G_OBJECT (GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->cancel_button), "clicked", |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
245 | G_CALLBACK(cancel_toolbar_fgcolor), toolbar); |
| 8317 | 246 | } |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
247 | gtk_window_present(GTK_WINDOW(toolbar->fgcolor_dialog)); |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
248 | } else { |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
249 | cancel_toolbar_fgcolor(color, toolbar); |
| 8317 | 250 | } |
| 251 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 252 | } | |
| 253 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
254 | static void |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
255 | destroy_toolbar_bgcolor(GtkWidget *widget, GdkEvent *event, |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
256 | GtkIMHtmlToolbar *toolbar) |
| 8317 | 257 | { |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
258 | if (widget != NULL) { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
259 | if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, NULL, NULL)) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
260 | gtk_imhtml_toggle_backcolor(GTK_IMHTML(toolbar->imhtml), ""); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
261 | else |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
262 | gtk_imhtml_toggle_background(GTK_IMHTML(toolbar->imhtml), ""); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
263 | } |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
264 | |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
265 | if (toolbar->bgcolor_dialog != NULL) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
266 | { |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
267 | gtk_widget_destroy(toolbar->bgcolor_dialog); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
268 | toolbar->bgcolor_dialog = NULL; |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
269 | } |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
270 | } |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
271 | |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
272 | static void |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
273 | cancel_toolbar_bgcolor(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
274 | { |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
275 | destroy_toolbar_bgcolor(widget, NULL, toolbar); |
| 8317 | 276 | } |
| 277 | ||
| 278 | static void do_bgcolor(GtkWidget *widget, GtkColorSelection *colorsel) | |
| 279 | { | |
| 280 | GdkColor text_color; | |
| 15884 | 281 | GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "purple_toolbar"); |
| 8317 | 282 | char *open_tag; |
| 283 | ||
| 284 | open_tag = g_malloc(30); | |
| 285 | gtk_color_selection_get_current_color(colorsel, &text_color); | |
| 286 | g_snprintf(open_tag, 23, "#%02X%02X%02X", | |
| 287 | text_color.red / 256, | |
| 288 | text_color.green / 256, | |
| 289 | text_color.blue / 256); | |
| 10777 | 290 | if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, NULL, NULL)) |
| 291 | gtk_imhtml_toggle_backcolor(GTK_IMHTML(toolbar->imhtml), open_tag); | |
| 292 | else | |
| 293 | gtk_imhtml_toggle_background(GTK_IMHTML(toolbar->imhtml), open_tag); | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
294 | g_free(open_tag); |
| 8317 | 295 | |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
296 | cancel_toolbar_bgcolor(NULL, toolbar); |
| 8317 | 297 | } |
| 298 | ||
| 299 | static void | |
| 300 | toggle_bg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar) | |
| 301 | { | |
| 302 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) { | |
| 303 | GtkWidget *colorsel; | |
| 9025 | 304 | GdkColor bgcolor; |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10297
diff
changeset
|
305 | char *color = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml)); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
306 | |
| 8317 | 307 | if (!toolbar->bgcolor_dialog) { |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
308 | |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8325
diff
changeset
|
309 | toolbar->bgcolor_dialog = gtk_color_selection_dialog_new(_("Select Background Color")); |
| 8317 | 310 | colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->colorsel; |
| 9025 | 311 | if (color) { |
| 312 | gdk_color_parse(color, &bgcolor); | |
| 313 | gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(colorsel), &bgcolor); | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10297
diff
changeset
|
314 | g_free(color); |
| 9025 | 315 | } |
| 316 | ||
| 15884 | 317 | g_object_set_data(G_OBJECT(colorsel), "purple_toolbar", toolbar); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
318 | |
| 8317 | 319 | g_signal_connect(G_OBJECT(toolbar->bgcolor_dialog), "delete_event", |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
320 | G_CALLBACK(destroy_toolbar_bgcolor), toolbar); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
321 | g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->ok_button), "clicked", |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
322 | G_CALLBACK(do_bgcolor), colorsel); |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
323 | g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->cancel_button), "clicked", |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
324 | G_CALLBACK(cancel_toolbar_bgcolor), toolbar); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
325 | |
| 8317 | 326 | } |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
327 | gtk_window_present(GTK_WINDOW(toolbar->bgcolor_dialog)); |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
328 | } else { |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
329 | cancel_toolbar_bgcolor(color, toolbar); |
| 8317 | 330 | } |
| 331 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 332 | } | |
| 333 | ||
| 334 | static void | |
|
11271
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
335 | clear_formatting_cb(GtkWidget *clear, GtkIMHtmlToolbar *toolbar) |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
336 | { |
|
11275
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
337 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->clear), FALSE, toolbar); |
|
11271
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
338 | gtk_imhtml_clear_formatting(GTK_IMHTML(toolbar->imhtml)); |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
339 | } |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
340 | |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
341 | static void |
| 15884 | 342 | cancel_link_cb(GtkIMHtmlToolbar *toolbar, PurpleRequestFields *fields) |
| 8317 | 343 | { |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
344 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), FALSE); |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
345 | |
| 8317 | 346 | toolbar->link_dialog = NULL; |
| 347 | } | |
| 348 | ||
| 349 | static void | |
| 350 | close_link_dialog(GtkIMHtmlToolbar *toolbar) | |
| 351 | { | |
| 352 | if (toolbar->link_dialog != NULL) | |
| 353 | { | |
| 15884 | 354 | purple_request_close(PURPLE_REQUEST_FIELDS, toolbar->link_dialog); |
| 8317 | 355 | toolbar->link_dialog = NULL; |
| 356 | } | |
| 357 | } | |
| 358 | ||
| 359 | static void | |
| 15884 | 360 | do_insert_link_cb(GtkIMHtmlToolbar *toolbar, PurpleRequestFields *fields) |
| 8317 | 361 | { |
| 362 | const char *url, *description; | |
| 363 | ||
| 15884 | 364 | url = purple_request_fields_get_string(fields, "url"); |
| 9041 | 365 | if (GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC) |
| 15884 | 366 | description = purple_request_fields_get_string(fields, "description"); |
| 9041 | 367 | else |
| 368 | description = NULL; | |
| 8317 | 369 | |
| 370 | if (description == NULL) | |
| 371 | description = url; | |
| 372 | ||
| 8677 | 373 | gtk_imhtml_insert_link(GTK_IMHTML(toolbar->imhtml), |
| 374 | gtk_text_buffer_get_insert(GTK_IMHTML(toolbar->imhtml)->text_buffer), | |
| 375 | url, description); | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
376 | |
| 8317 | 377 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), FALSE); |
| 378 | ||
| 379 | toolbar->link_dialog = NULL; | |
| 380 | } | |
| 381 | ||
| 382 | static void | |
| 383 | insert_link_cb(GtkWidget *w, GtkIMHtmlToolbar *toolbar) | |
| 384 | { | |
| 385 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link))) { | |
| 15884 | 386 | PurpleRequestFields *fields; |
| 387 | PurpleRequestFieldGroup *group; | |
| 388 | PurpleRequestField *field; | |
| 9599 | 389 | GtkTextIter start, end; |
| 9041 | 390 | char *msg; |
| 9599 | 391 | char *desc = NULL; |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
392 | |
| 15884 | 393 | fields = purple_request_fields_new(); |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
394 | |
| 15884 | 395 | group = purple_request_field_group_new(NULL); |
| 396 | purple_request_fields_add_group(fields, group); | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
397 | |
| 15884 | 398 | field = purple_request_field_string_new("url", _("_URL"), NULL, FALSE); |
| 399 | purple_request_field_set_required(field, TRUE); | |
| 400 | purple_request_field_group_add_field(group, field); | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
401 | |
| 9041 | 402 | if(GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC) { |
| 9599 | 403 | if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, &start, &end)) { |
| 404 | desc = gtk_imhtml_get_text(GTK_IMHTML(toolbar->imhtml), &start, &end); | |
| 405 | } | |
| 15884 | 406 | field = purple_request_field_string_new("description", _("_Description"), |
| 9599 | 407 | desc, FALSE); |
| 15884 | 408 | purple_request_field_group_add_field(group, field); |
| 9041 | 409 | msg = g_strdup(_("Please enter the URL and description of the " |
| 410 | "link that you want to insert. The description " | |
| 411 | "is optional.")); | |
| 412 | } else { | |
| 413 | msg = g_strdup(_("Please enter the URL of the " | |
| 414 | "link that you want to insert.")); | |
| 415 | } | |
|
8319
6c18762beceb
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
416 | |
| 8317 | 417 | toolbar->link_dialog = |
| 15884 | 418 | purple_request_fields(toolbar, _("Insert Link"), |
| 8317 | 419 | NULL, |
| 9041 | 420 | msg, |
| 8317 | 421 | fields, |
| 422 | _("_Insert"), G_CALLBACK(do_insert_link_cb), | |
| 423 | _("Cancel"), G_CALLBACK(cancel_link_cb), | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16454
diff
changeset
|
424 | NULL, NULL, NULL, |
| 8317 | 425 | toolbar); |
| 9041 | 426 | g_free(msg); |
| 9599 | 427 | g_free(desc); |
|
8322
9bae68fd2612
[gaim-migrate @ 9046]
Christian Hammond <chipx86@chipx86.com>
parents:
8321
diff
changeset
|
428 | } else { |
| 8317 | 429 | close_link_dialog(toolbar); |
| 430 | } | |
| 431 | gtk_widget_grab_focus(toolbar->imhtml); | |
| 432 | } | |
| 433 | ||
| 434 | ||
| 435 | static void | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
436 | do_insert_image_cb(GtkWidget *widget, int response, GtkIMHtmlToolbar *toolbar) |
| 8317 | 437 | { |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
438 | gchar *filename, *name, *buf; |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
439 | char *filedata; |
| 8317 | 440 | size_t size; |
| 441 | GError *error = NULL; | |
| 442 | int id; | |
| 8962 | 443 | GtkTextIter iter; |
| 444 | GtkTextMark *ins; | |
| 8317 | 445 | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
446 | #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
447 | if (response != GTK_RESPONSE_ACCEPT) { |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
448 | #else /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
449 | if (response != GTK_RESPONSE_OK) { |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
450 | #endif /* FILECHOOSER */ |
| 8317 | 451 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE); |
| 452 | return; | |
| 453 | } | |
| 454 | ||
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
455 | #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
456 | filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
457 | #else /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
458 | filename = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(widget))); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
459 | #endif /* FILECHOOSER */ |
| 8317 | 460 | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
461 | if (filename == NULL) { |
| 8317 | 462 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE); |
| 463 | return; | |
| 464 | } | |
| 465 | ||
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
466 | #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
467 | if (pidgin_check_if_dir(filename, GTK_FILE_SELECTION(widget))) { |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
468 | g_free(filename); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
469 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
470 | return; |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
471 | } |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
472 | #endif /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
473 | |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
474 | /* The following triggers a callback that closes the widget */ |
| 8317 | 475 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE); |
| 476 | ||
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
477 | if (!g_file_get_contents(filename, &filedata, &size, &error)) { |
| 15884 | 478 | purple_notify_error(NULL, NULL, error->message, NULL); |
| 8317 | 479 | |
| 480 | g_error_free(error); | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
481 | g_free(filename); |
| 8317 | 482 | |
| 483 | return; | |
| 484 | } | |
| 485 | ||
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
486 | name = strrchr(filename, G_DIR_SEPARATOR) + 1; |
| 8317 | 487 | |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
488 | id = purple_imgstore_add_with_id(filedata, size, name); |
| 8317 | 489 | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
490 | if (id == 0) { |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
491 | buf = g_strdup_printf(_("Failed to store image: %s\n"), filename); |
| 15884 | 492 | purple_notify_error(NULL, NULL, buf, NULL); |
| 8317 | 493 | |
| 494 | g_free(buf); | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
495 | g_free(filename); |
| 8317 | 496 | |
| 497 | return; | |
| 498 | } | |
| 499 | ||
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
500 | g_free(filename); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
501 | |
| 8962 | 502 | ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml))); |
| 503 | gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)), | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
504 | &iter, ins); |
| 8962 | 505 | gtk_imhtml_insert_image_at_iter(GTK_IMHTML(toolbar->imhtml), id, &iter); |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
506 | purple_imgstore_unref_by_id(id); |
| 8317 | 507 | } |
| 508 | ||
| 509 | ||
| 510 | static void | |
| 511 | insert_image_cb(GtkWidget *save, GtkIMHtmlToolbar *toolbar) | |
| 512 | { | |
| 513 | GtkWidget *window; | |
| 514 | ||
| 515 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image))) { | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
516 | #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
517 | window = gtk_file_chooser_dialog_new(_("Insert Image"), |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
518 | NULL, |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
519 | GTK_FILE_CHOOSER_ACTION_OPEN, |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
520 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
521 | GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
522 | NULL); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
523 | gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_ACCEPT); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
524 | g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(window)), |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
525 | "response", G_CALLBACK(do_insert_image_cb), toolbar); |
|
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
526 | #else /* FILECHOOSER */ |
| 8317 | 527 | window = gtk_file_selection_new(_("Insert Image")); |
| 528 | gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_OK); | |
| 529 | g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)), | |
| 530 | "response", G_CALLBACK(do_insert_image_cb), toolbar); | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
531 | #endif /* FILECHOOSER */ |
| 8317 | 532 | |
| 533 | gtk_widget_show(window); | |
| 534 | toolbar->image_dialog = window; | |
| 535 | } else { | |
| 536 | gtk_widget_destroy(toolbar->image_dialog); | |
| 537 | toolbar->image_dialog = NULL; | |
| 538 | } | |
|
9522
e38381bd8c05
[gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents:
9287
diff
changeset
|
539 | |
| 8317 | 540 | gtk_widget_grab_focus(toolbar->imhtml); |
| 541 | } | |
| 542 | ||
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
543 | |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
544 | static void |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
545 | destroy_smiley_dialog(GtkIMHtmlToolbar *toolbar) |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
546 | { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
547 | if (toolbar->smiley_dialog != NULL) |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
548 | { |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
549 | gtk_widget_destroy(toolbar->smiley_dialog); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
550 | toolbar->smiley_dialog = NULL; |
| 8317 | 551 | } |
| 552 | } | |
| 553 | ||
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
554 | static void |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
555 | close_smiley_dialog(GtkWidget *widget, GdkEvent *event, |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
556 | GtkIMHtmlToolbar *toolbar) |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
557 | { |
|
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
558 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE); |
|
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
559 | } |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
560 | |
| 8317 | 561 | |
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
562 | static void |
|
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
563 | insert_smiley_text(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) |
| 8317 | 564 | { |
| 9027 | 565 | char *smiley_text, *escaped_smiley; |
| 566 | ||
| 567 | smiley_text = g_object_get_data(G_OBJECT(widget), "smiley_text"); | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10504
diff
changeset
|
568 | escaped_smiley = g_markup_escape_text(smiley_text, -1); |
| 8317 | 569 | |
| 8456 | 570 | gtk_imhtml_insert_smiley(GTK_IMHTML(toolbar->imhtml), |
| 571 | GTK_IMHTML(toolbar->imhtml)->protocol_name, | |
| 9027 | 572 | escaped_smiley); |
| 8317 | 573 | |
| 9027 | 574 | g_free(escaped_smiley); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
575 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
576 | close_smiley_dialog(NULL, NULL, toolbar); |
| 8317 | 577 | } |
| 578 | ||
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
579 | /* smiley buttons list */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
580 | struct smiley_button_list { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
581 | int width, height; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
582 | GtkWidget *button; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
583 | struct smiley_button_list *next; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
584 | }; |
| 8317 | 585 | |
|
11862
5d4bc6d54688
[gaim-migrate @ 14153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11849
diff
changeset
|
586 | static struct smiley_button_list * |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
587 | sort_smileys(struct smiley_button_list *ls, GtkIMHtmlToolbar *toolbar, int *width, char *filename, char *face) |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
588 | { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
589 | GtkWidget *image; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
590 | GtkWidget *button; |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
591 | GtkRequisition size; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
592 | struct smiley_button_list *cur; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
593 | struct smiley_button_list *it, *it_last; |
| 8317 | 594 | |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
595 | cur = malloc(sizeof(struct smiley_button_list)); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
596 | it = ls; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
597 | it_last = ls; /* list iterators*/ |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
598 | image = gtk_image_new_from_file(filename); |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
599 | |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
600 | gtk_widget_size_request(image, &size); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
601 | (*width) += size.width; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
602 | |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
603 | button = gtk_button_new(); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
604 | gtk_container_add(GTK_CONTAINER(button), image); |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
605 | |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
606 | g_object_set_data(G_OBJECT(button), "smiley_text", face); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
607 | g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(insert_smiley_text), toolbar); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
608 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
609 | gtk_tooltips_set_tip(toolbar->tooltips, button, face, NULL); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
610 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
611 | /* these look really weird with borders */ |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
612 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
613 | |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
614 | /* set current element to add */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
615 | cur->height = size.height; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
616 | cur->width = size.width; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
617 | cur->button = button; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
618 | cur->next = ls; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
619 | |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
620 | /* check where to insert by height */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
621 | if (ls == NULL) |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
622 | return cur; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
623 | while (it != NULL) { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
624 | it_last = it; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
625 | it = it->next; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
626 | } |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
627 | cur->next = it; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
628 | it_last->next = cur; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
629 | return ls; |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
630 | } |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
631 | |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
632 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
633 | static gboolean |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
634 | smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley) |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
635 | { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
636 | while (list) { |
| 8317 | 637 | GtkIMHtmlSmiley *cur = list->data; |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
638 | if (!strcmp(cur->file, smiley->file)) |
| 8317 | 639 | return FALSE; |
| 640 | list = list->next; | |
| 641 | } | |
| 642 | return TRUE; | |
| 643 | } | |
| 644 | ||
| 645 | ||
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
646 | static void |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
647 | insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar) |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
648 | { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
649 | GtkWidget *dialog; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
650 | GtkWidget *smiley_table = NULL; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
651 | GSList *smileys, *unique_smileys = NULL; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
652 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
653 | if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
654 | destroy_smiley_dialog(toolbar); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
655 | gtk_widget_grab_focus(toolbar->imhtml); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
656 | return; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
657 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
658 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
659 | if (toolbar->sml) |
|
16263
27e0ef0f38e6
Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents:
16254
diff
changeset
|
660 | smileys = pidgin_themes_get_proto_smileys(toolbar->sml); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
661 | else |
|
16263
27e0ef0f38e6
Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents:
16254
diff
changeset
|
662 | smileys = pidgin_themes_get_proto_smileys(NULL); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
663 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
664 | while(smileys) { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
665 | GtkIMHtmlSmiley *smiley = smileys->data; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
666 | if(!smiley->hidden) { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
667 | if(smiley_is_unique(unique_smileys, smiley)) |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
668 | unique_smileys = g_slist_append(unique_smileys, smiley); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
669 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
670 | smileys = smileys->next; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
671 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
672 | |
| 15571 | 673 | PIDGIN_DIALOG(dialog); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
674 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
675 | gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
676 | gtk_window_set_role(GTK_WINDOW(dialog), "smiley_dialog"); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
677 | gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
678 | |
|
15847
da522f9a7743
Don't use g_list_length() and g_slist_length() when all you want to
Mark Doliner <markdoliner@pidgin.im>
parents:
15623
diff
changeset
|
679 | if (unique_smileys != NULL) { |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
680 | struct smiley_button_list *ls, *it, *it_tmp; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
681 | GtkWidget *line; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
682 | int line_width = 0; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
683 | int max_line_width, num_lines; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
684 | int col=0; |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
685 | |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
686 | /* We use hboxes packed in a vbox */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
687 | ls = NULL; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
688 | line = gtk_hbox_new(FALSE, 0); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
689 | line_width = 0; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
690 | max_line_width = 0; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
691 | num_lines = floor(sqrt(g_slist_length(unique_smileys))); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
692 | smiley_table = gtk_vbox_new(FALSE, 0); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
693 | |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
694 | /* create list of smileys sorted by height */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
695 | while (unique_smileys) { |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
696 | GtkIMHtmlSmiley *smiley = unique_smileys->data; |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
697 | if (!smiley->hidden) { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
698 | fflush(stdout); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
699 | ls = sort_smileys(ls, toolbar, &max_line_width, smiley->file, smiley->smile); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
700 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
701 | unique_smileys = unique_smileys->next; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
702 | } |
|
10894
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
703 | /* pack buttons of the list */ |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
704 | max_line_width = max_line_width / num_lines; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
705 | it = ls; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
706 | while (it != NULL) |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
707 | { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
708 | it_tmp = it; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
709 | gtk_box_pack_start(GTK_BOX(line), it->button, TRUE, TRUE, 0); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
710 | gtk_widget_show(it->button); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
711 | line_width += it->width; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
712 | if (line_width >= max_line_width) { |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
713 | gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, TRUE, 0); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
714 | line = gtk_hbox_new(FALSE, 0); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
715 | line_width = 0; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
716 | col = 0; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
717 | } |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
718 | col++; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
719 | it = it->next; |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
720 | free(it_tmp); |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
721 | } |
|
b75b237a1212
[gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents:
10814
diff
changeset
|
722 | gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, TRUE, 0); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
723 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
724 | else { |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
725 | smiley_table = gtk_label_new(_("This theme has no available smileys.")); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
726 | } |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
727 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
728 | gtk_container_add(GTK_CONTAINER(dialog), smiley_table); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
729 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
730 | gtk_widget_show(smiley_table); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
731 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
732 | gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
733 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
734 | /* connect signals */ |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
735 | g_signal_connect(G_OBJECT(dialog), "delete_event", |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
736 | G_CALLBACK(close_smiley_dialog), toolbar); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
737 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
738 | /* show everything */ |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
739 | gtk_window_set_title(GTK_WINDOW(dialog), _("Smile!")); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
740 | gtk_widget_show_all(dialog); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
741 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
742 | toolbar->smiley_dialog = dialog; |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
743 | |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
744 | gtk_widget_grab_focus(toolbar->imhtml); |
|
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
745 | } |
| 8317 | 746 | |
| 8420 | 747 | static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) |
| 748 | { | |
| 749 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD); | |
| 750 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC); | |
| 751 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE); | |
| 752 | ||
| 753 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->larger_size), buttons & GTK_IMHTML_GROW); | |
| 754 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smaller_size), buttons & GTK_IMHTML_SHRINK); | |
| 755 | ||
| 756 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->font), buttons & GTK_IMHTML_FACE); | |
| 757 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->fgcolor), buttons & GTK_IMHTML_FORECOLOR); | |
| 758 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bgcolor), buttons & GTK_IMHTML_BACKCOLOR); | |
| 759 | ||
|
11314
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
760 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->clear), |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
761 | (buttons & GTK_IMHTML_BOLD || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
762 | buttons & GTK_IMHTML_ITALIC || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
763 | buttons & GTK_IMHTML_UNDERLINE || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
764 | buttons & GTK_IMHTML_GROW || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
765 | buttons & GTK_IMHTML_SHRINK || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
766 | buttons & GTK_IMHTML_FACE || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
767 | buttons & GTK_IMHTML_FORECOLOR || |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
768 | buttons & GTK_IMHTML_BACKCOLOR)); |
|
50888518c108
[gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents:
11313
diff
changeset
|
769 | |
| 8420 | 770 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE); |
| 771 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK); | |
| 772 | gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY); | |
| 8481 | 773 | } |
| 8420 | 774 | |
| 8481 | 775 | /* we call this when we want to _set_active the toggle button, it'll |
| 776 | * block the callback thats connected to the button so we don't have to | |
| 777 | * do the double toggling hack | |
| 778 | */ | |
| 779 | static void toggle_button_set_active_block(GtkToggleButton *button, | |
| 780 | gboolean is_active, | |
| 781 | GtkIMHtmlToolbar *toolbar) | |
| 782 | { | |
| 783 | GObject *object; | |
| 784 | g_return_if_fail(toolbar); | |
| 785 | ||
| 786 | object = g_object_ref(button); | |
| 787 | g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, | |
| 788 | 0, 0, NULL, NULL, toolbar); | |
| 789 | gtk_toggle_button_set_active(button, is_active); | |
| 790 | g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, | |
| 791 | 0, 0, NULL, NULL, toolbar); | |
| 792 | g_object_unref(object); | |
| 8420 | 793 | } |
| 794 | ||
| 8516 | 795 | static void update_buttons(GtkIMHtmlToolbar *toolbar) { |
| 8506 | 796 | gboolean bold, italic, underline; |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
797 | char *tmp; |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
798 | char *tmp2; |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
799 | |
| 8516 | 800 | gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), |
| 801 | &bold, &italic, &underline); | |
| 8506 | 802 | |
| 803 | if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) | |
| 804 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, | |
| 805 | toolbar); | |
| 8516 | 806 | |
| 8506 | 807 | if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) |
| 808 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, | |
| 809 | toolbar); | |
| 8516 | 810 | |
| 8506 | 811 | if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) |
| 812 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), | |
| 8677 | 813 | underline, toolbar); |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
814 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
815 | /* These buttons aren't ever "active". */ |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
816 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smaller_size), FALSE); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
817 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->larger_size), FALSE); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
818 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
819 | tmp = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
820 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->font), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
821 | (tmp != NULL), toolbar); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
822 | g_free(tmp); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
823 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
824 | tmp = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
825 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->fgcolor), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
826 | (tmp != NULL), toolbar); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
827 | g_free(tmp); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
828 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
829 | tmp = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
830 | tmp2 = gtk_imhtml_get_current_background(GTK_IMHTML(toolbar->imhtml)); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
831 | toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bgcolor), |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
832 | (tmp != NULL || tmp2 != NULL), toolbar); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
833 | g_free(tmp); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
834 | g_free(tmp2); |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
835 | } |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
836 | |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
837 | static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
838 | { |
|
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
839 | update_buttons(toolbar); |
| 8506 | 840 | } |
| 8481 | 841 | |
| 8516 | 842 | static void update_format_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) { |
| 843 | update_buttons(toolbar); | |
| 844 | } | |
| 8481 | 845 | |
| 8516 | 846 | static void mark_set_cb(GtkTextBuffer *buffer, GtkTextIter *location, |
| 847 | GtkTextMark *mark, GtkIMHtmlToolbar *toolbar) | |
| 848 | { | |
| 849 | if(mark != gtk_text_buffer_get_insert(buffer)) | |
| 850 | return; | |
| 851 | ||
| 852 | update_buttons(toolbar); | |
| 8427 | 853 | } |
| 854 | ||
| 8317 | 855 | enum { |
| 856 | LAST_SIGNAL | |
| 857 | }; | |
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
858 | /* static guint signals [LAST_SIGNAL] = { 0 }; */ |
| 8317 | 859 | |
| 860 | static void | |
| 861 | gtk_imhtmltoolbar_finalize (GObject *object) | |
| 862 | { | |
|
8391
ed3b9c27d002
[gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents:
8380
diff
changeset
|
863 | GtkIMHtmlToolbar *toolbar = GTK_IMHTMLTOOLBAR(object); |
| 8317 | 864 | |
| 8685 | 865 | if (toolbar->image_dialog != NULL) |
| 866 | { | |
| 867 | gtk_widget_destroy(toolbar->image_dialog); | |
| 868 | toolbar->image_dialog = NULL; | |
| 869 | } | |
| 870 | ||
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
871 | destroy_toolbar_font(NULL, NULL, toolbar); |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
872 | destroy_smiley_dialog(toolbar); |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
873 | destroy_toolbar_bgcolor(NULL, NULL, toolbar); |
|
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
874 | destroy_toolbar_fgcolor(NULL, NULL, toolbar); |
|
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
875 | close_link_dialog(toolbar); |
|
12904
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
876 | if (toolbar->imhtml) { |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
877 | g_signal_handlers_disconnect_matched(toolbar->imhtml, |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
878 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
879 | toolbar); |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
880 | g_signal_handlers_disconnect_matched(GTK_IMHTML(toolbar->imhtml)->text_buffer, |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
881 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
882 | toolbar); |
|
f01835b6bcac
[gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12900
diff
changeset
|
883 | } |
| 8784 | 884 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13539
diff
changeset
|
885 | free(toolbar->sml); |
|
8391
ed3b9c27d002
[gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents:
8380
diff
changeset
|
886 | gtk_object_sink(GTK_OBJECT(toolbar->tooltips)); |
| 8317 | 887 | |
|
8391
ed3b9c27d002
[gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents:
8380
diff
changeset
|
888 | G_OBJECT_CLASS(parent_class)->finalize (object); |
| 8317 | 889 | } |
| 890 | ||
|
10814
7e17cb56b019
[gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents:
10777
diff
changeset
|
891 | /* Boring GTK+ stuff */ |
| 8317 | 892 | static void gtk_imhtmltoolbar_class_init (GtkIMHtmlToolbarClass *class) |
| 893 | { | |
| 894 | GtkObjectClass *object_class; | |
| 895 | GObjectClass *gobject_class; | |
| 896 | object_class = (GtkObjectClass*) class; | |
| 897 | gobject_class = (GObjectClass*) class; | |
| 10080 | 898 | parent_class = gtk_type_class(GTK_TYPE_HBOX); |
| 8317 | 899 | gobject_class->finalize = gtk_imhtmltoolbar_finalize; |
| 900 | } | |
| 901 | ||
| 902 | static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar) | |
| 903 | { | |
|
10085
83a9e1d81442
[gaim-migrate @ 11096]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10080
diff
changeset
|
904 | GtkWidget *hbox = GTK_WIDGET(toolbar); |
| 8317 | 905 | GtkWidget *button; |
| 906 | GtkWidget *sep; | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
907 | GtkSizeGroup *sg; |
| 8317 | 908 | |
| 909 | toolbar->imhtml = NULL; | |
| 910 | toolbar->font_dialog = NULL; | |
| 911 | toolbar->fgcolor_dialog = NULL; | |
| 912 | toolbar->bgcolor_dialog = NULL; | |
| 913 | toolbar->link_dialog = NULL; | |
|
10138
b72c5fdc98b3
[gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents:
10135
diff
changeset
|
914 | toolbar->smiley_dialog = NULL; |
| 8317 | 915 | toolbar->image_dialog = NULL; |
| 916 | ||
| 917 | toolbar->tooltips = gtk_tooltips_new(); | |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
918 | |
|
17303
138cbb17e5cd
disapproval of revision '6e8f285962e77199bf88dfc8d2a08386beb02634'
Sean Egan <seanegan@pidgin.im>
parents:
17300
diff
changeset
|
919 | gtk_box_set_spacing(GTK_BOX(toolbar), 3); |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
920 | sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); |
| 8317 | 921 | |
| 922 | /* Bold */ | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
923 | button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
924 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
925 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
926 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Bold"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
927 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
928 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
929 | G_CALLBACK(do_bold), toolbar); |
| 8317 | 930 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
931 | toolbar->bold = button; |
| 8317 | 932 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
933 | /* Italic */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
934 | button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
935 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
936 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
937 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Italic"), NULL); |
| 8317 | 938 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
939 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
940 | G_CALLBACK(do_italic), toolbar); |
| 8317 | 941 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
942 | toolbar->italic = button; |
| 8317 | 943 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
944 | /* Underline */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
945 | button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
946 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
947 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
948 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Underline"), NULL); |
| 8317 | 949 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
950 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
951 | G_CALLBACK(do_underline), toolbar); |
| 8317 | 952 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
953 | toolbar->underline = button; |
| 8317 | 954 | |
| 955 | /* Sep */ | |
| 956 | sep = gtk_vseparator_new(); | |
| 957 | gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
958 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
959 | /* Increase font size */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
960 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_LARGER); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
961 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
962 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
963 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
964 | _("Larger font size"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
965 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
966 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
967 | G_CALLBACK(do_big), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
968 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
969 | toolbar->larger_size = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
970 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
971 | /* Decrease font size */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
972 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
973 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
974 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
975 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
976 | _("Smaller font size"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
977 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
978 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
979 | G_CALLBACK(do_small), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
980 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
981 | toolbar->smaller_size = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
982 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
983 | /* Sep */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
984 | sep = gtk_vseparator_new(); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
985 | gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
986 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
987 | /* Font Face */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
988 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
989 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FONT_FACE); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
990 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
991 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
992 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
993 | _("Font face"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
994 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
995 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
996 | G_CALLBACK(toggle_font), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
997 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
998 | toolbar->font = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
999 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1000 | /* Foreground Color */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1001 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FGCOLOR); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1002 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1003 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1004 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1005 | _("Foreground font color"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1006 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1007 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1008 | G_CALLBACK(toggle_fg_color), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1009 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1010 | toolbar->fgcolor = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1011 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1012 | /* Background Color */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1013 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_BGCOLOR); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1014 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1015 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1016 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1017 | _("Background color"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1018 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1019 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1020 | G_CALLBACK(toggle_bg_color), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1021 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1022 | toolbar->bgcolor = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1023 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1024 | /* Sep */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1025 | sep = gtk_vseparator_new(); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1026 | gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); |
| 8317 | 1027 | |
|
17303
138cbb17e5cd
disapproval of revision '6e8f285962e77199bf88dfc8d2a08386beb02634'
Sean Egan <seanegan@pidgin.im>
parents:
17300
diff
changeset
|
1028 | /* Reset Formatting */ |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1029 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_CLEAR); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1030 | gtk_size_group_add_widget(sg, button); |
|
11271
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1031 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1032 | gtk_tooltips_set_tip(toolbar->tooltips, button, |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1033 | _("Reset formatting"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1034 | |
|
11271
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1035 | g_signal_connect(G_OBJECT(button), "clicked", |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1036 | G_CALLBACK(clear_formatting_cb), toolbar); |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1037 | |
|
11271
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1038 | toolbar->clear = button; |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1039 | |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1040 | /* Sep */ |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1041 | sep = gtk_vseparator_new(); |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1042 | gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); |
|
939be1fdbf7a
[gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents:
11267
diff
changeset
|
1043 | |
| 8317 | 1044 | /* Insert Link */ |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1045 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_LINK); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1046 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1047 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1048 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert link"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1049 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1050 | G_CALLBACK(insert_link_cb), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1051 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1052 | toolbar->link = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1053 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1054 | /* Insert IM Image */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1055 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1056 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1057 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1058 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert image"), NULL); |
| 8317 | 1059 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1060 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1061 | G_CALLBACK(insert_image_cb), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1062 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1063 | toolbar->image = button; |
| 8317 | 1064 | |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1065 | /* Insert Smiley */ |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1066 | button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1067 | gtk_size_group_add_widget(sg, button); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1068 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1069 | gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1070 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1071 | g_signal_connect(G_OBJECT(button), "clicked", |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1072 | G_CALLBACK(insert_smiley_cb), toolbar); |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1073 | |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1074 | toolbar->smiley = button; |
|
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1075 | |
| 8427 | 1076 | toolbar->sml = NULL; |
|
17499
246d166626f3
disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents:
17498
diff
changeset
|
1077 | gtk_widget_show_all(hbox); |
| 8317 | 1078 | } |
| 1079 | ||
| 1080 | GtkWidget *gtk_imhtmltoolbar_new() | |
| 1081 | { | |
| 1082 | return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL)); | |
| 1083 | } | |
| 1084 | ||
| 1085 | GType gtk_imhtmltoolbar_get_type() | |
| 1086 | { | |
| 1087 | static GType imhtmltoolbar_type = 0; | |
| 1088 | ||
| 1089 | if (!imhtmltoolbar_type) { | |
| 1090 | static const GTypeInfo imhtmltoolbar_info = { | |
| 1091 | sizeof(GtkIMHtmlToolbarClass), | |
| 1092 | NULL, | |
| 1093 | NULL, | |
| 1094 | (GClassInitFunc) gtk_imhtmltoolbar_class_init, | |
| 1095 | NULL, | |
| 1096 | NULL, | |
| 1097 | sizeof (GtkIMHtmlToolbar), | |
| 1098 | 0, | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
11862
diff
changeset
|
1099 | (GInstanceInitFunc) gtk_imhtmltoolbar_init, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
11862
diff
changeset
|
1100 | NULL |
| 8317 | 1101 | }; |
| 1102 | ||
| 10080 | 1103 | imhtmltoolbar_type = g_type_register_static(GTK_TYPE_HBOX, |
| 8317 | 1104 | "GtkIMHtmlToolbar", &imhtmltoolbar_info, 0); |
| 1105 | } | |
| 1106 | ||
| 1107 | return imhtmltoolbar_type; | |
| 1108 | } | |
| 1109 | ||
| 1110 | ||
|
8324
3bb4ba19837d
[gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents:
8322
diff
changeset
|
1111 | void gtk_imhtmltoolbar_attach(GtkIMHtmlToolbar *toolbar, GtkWidget *imhtml) |
| 8317 | 1112 | { |
|
8788
a13634443a38
[gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents:
8785
diff
changeset
|
1113 | GtkIMHtmlButtons buttons; |
| 8481 | 1114 | gboolean bold, italic, underline; |
| 1115 | ||
|
8325
bb6ed75fcec2
[gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents:
8324
diff
changeset
|
1116 | g_return_if_fail(toolbar != NULL); |
|
bb6ed75fcec2
[gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents:
8324
diff
changeset
|
1117 | g_return_if_fail(GTK_IS_IMHTMLTOOLBAR(toolbar)); |
|
bb6ed75fcec2
[gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents:
8324
diff
changeset
|
1118 | g_return_if_fail(imhtml != NULL); |
|
bb6ed75fcec2
[gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents:
8324
diff
changeset
|
1119 | g_return_if_fail(GTK_IS_IMHTML(imhtml)); |
|
bb6ed75fcec2
[gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents:
8324
diff
changeset
|
1120 | |
| 8317 | 1121 | toolbar->imhtml = imhtml; |
| 8506 | 1122 | g_signal_connect(G_OBJECT(imhtml), "format_buttons_update", G_CALLBACK(update_buttons_cb), toolbar); |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
1123 | g_signal_connect_after(G_OBJECT(imhtml), "format_function_toggle", G_CALLBACK(toggle_button_cb), toolbar); |
|
11275
cdcc651d7ecd
[gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents:
11271
diff
changeset
|
1124 | g_signal_connect_after(G_OBJECT(imhtml), "format_function_clear", G_CALLBACK(update_format_cb), toolbar); |
| 8506 | 1125 | g_signal_connect(G_OBJECT(imhtml), "format_function_update", G_CALLBACK(update_format_cb), toolbar); |
| 8516 | 1126 | g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", G_CALLBACK(mark_set_cb), toolbar); |
| 8481 | 1127 | |
|
8788
a13634443a38
[gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents:
8785
diff
changeset
|
1128 | buttons = gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml)); |
| 8807 | 1129 | update_buttons_cb(GTK_IMHTML(imhtml), buttons, toolbar); |
|
8788
a13634443a38
[gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents:
8785
diff
changeset
|
1130 | |
| 8516 | 1131 | gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &underline); |
|
10134
ecbf96117857
[gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents:
10125
diff
changeset
|
1132 | |
|
11267
78f1eb5b3d6e
[gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents:
11243
diff
changeset
|
1133 | update_buttons(toolbar); |
| 8317 | 1134 | } |
| 8427 | 1135 | |
| 1136 | void gtk_imhtmltoolbar_associate_smileys(GtkIMHtmlToolbar *toolbar, const char *proto_id) | |
| 1137 | { | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13539
diff
changeset
|
1138 | g_free(toolbar->sml); |
| 8427 | 1139 | toolbar->sml = g_strdup(proto_id); |
| 1140 | } |