pidgin/gtkimhtmltoolbar.c

Wed, 22 Oct 2008 14:40:04 +0000

author
SHiNE CsyFeK <csyfek@gmail.com>
date
Wed, 22 Oct 2008 14:40:04 +0000
branch
openq
changeset 24343
9c695a1f475b
parent 24275
37fca4e63b69
child 24457
adbbdb0532b0
child 25888
d0fdd378a635
child 26142
20ed0b892829
permissions
-rw-r--r--

2008.09.28 - ccpaging <ccpaging(at)gmail.com>
* The source is only for debug, not for user:
1. Implement new QQ protocol 2007/2008, include login and change status
2. Check 2005's login reply packet, get last 3 login time.
3. Server's notice and news is displayed in self buddy (The new buddy
created in buddy list).
4. The notice messages when adding/removing QQ Qun's buddy displayed
in char conversation. They are displayed as purple notify windows in the past.
5. The notice messages when adding/removing buddy displayed in self
buddy's conversation. They are displayed as purple notify windows in the past.
6. Client version can be selected in account option. Now only qq2005 is
working, other new version is only for debug.

8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
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
20330
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 20328
diff changeset
4 */
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 20328
diff changeset
5
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 20328
diff changeset
6 /* pidgin
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * source distribution.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * under the terms of the GNU General Public License as published by
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19761
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 *
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9730
diff changeset
27 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
28 #include "pidgin.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
30 #include "imgstore.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
31 #include "notify.h"
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
32 #include "prefs.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
33 #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
34 #include "pidginstock.h"
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
35 #include "util.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
37 #include "gtkdialogs.h"
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
38 #include "gtkimhtmltoolbar.h"
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
39 #include "gtksmiley.h"
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11314
diff changeset
40 #include "gtkthemes.h"
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
41 #include "gtkutils.h"
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
42
17394
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
43 #include <gdk/gdkkeysyms.h>
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
44
10080
d562573fff16 [gaim-migrate @ 11062]
Sean Egan <seanegan@pidgin.im>
parents: 9971
diff changeset
45 static GtkHBoxClass *parent_class = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46
11275
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
47 static void toggle_button_set_active_block(GtkToggleButton *button,
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
48 gboolean is_active,
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
49 GtkIMHtmlToolbar *toolbar);
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
50
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
51
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52 static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
54 g_return_if_fail(toolbar != NULL);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55 gtk_imhtml_toggle_bold(GTK_IMHTML(toolbar->imhtml));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60 do_italic(GtkWidget *italic, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61 {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
62 g_return_if_fail(toolbar != NULL);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 gtk_imhtml_toggle_italic(GTK_IMHTML(toolbar->imhtml));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 do_underline(GtkWidget *underline, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69 {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
70 g_return_if_fail(toolbar != NULL);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
71 gtk_imhtml_toggle_underline(GTK_IMHTML(toolbar->imhtml));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
74
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 static void
19647
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
76 do_strikethrough(GtkWidget *strikethrough, GtkIMHtmlToolbar *toolbar)
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
77 {
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
78 g_return_if_fail(toolbar != NULL);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
79 gtk_imhtml_toggle_strike(GTK_IMHTML(toolbar->imhtml));
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
80 gtk_widget_grab_focus(toolbar->imhtml);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
81 }
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
82
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
83 static void
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
86 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
87 /* 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
88 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
89 gtk_imhtml_font_shrink(GTK_IMHTML(toolbar->imhtml));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 do_big(GtkWidget *large, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96 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
97 /* 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
98 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
99 gtk_imhtml_font_grow(GTK_IMHTML(toolbar->imhtml));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
103 static gboolean
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
104 destroy_toolbar_font(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
105 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 {
10135
760803be53d2 [gaim-migrate @ 11202]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10134
diff changeset
107 if (widget != NULL)
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
108 gtk_imhtml_toggle_fontface(GTK_IMHTML(toolbar->imhtml), "");
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
110 if (toolbar->font_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
111 {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 gtk_widget_destroy(toolbar->font_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113 toolbar->font_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114 }
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
115 return FALSE;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
116 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
118 static void
10125
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
119 realize_toolbar_font(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
120 {
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
121 GtkFontSelection *sel;
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
122
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
123 sel = GTK_FONT_SELECTION(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog)->fontsel);
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
124 gtk_widget_hide_all(gtk_widget_get_parent(sel->size_entry));
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
125 gtk_widget_show_all(sel->family_list);
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
126 gtk_widget_show(gtk_widget_get_parent(sel->family_list));
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
127 gtk_widget_show(gtk_widget_get_parent(gtk_widget_get_parent(sel->family_list)));
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
128 }
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
129
dc406c15aceb [gaim-migrate @ 11162]
Tim Ringenbach <marv@pidgin.im>
parents: 10085
diff changeset
130 static void
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
131 cancel_toolbar_font(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
132 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
133 destroy_toolbar_font(widget, NULL, toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
134 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
135
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 static void apply_font(GtkWidget *widget, GtkFontSelection *fontsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 /* this could be expanded to include font size, weight, etc.
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139 but for now only works with font face */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 char *fontname;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 char *space;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
142 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(fontsel), "purple_toolbar");
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144 fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(fontsel));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
145
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 space = strrchr(fontname, ' ');
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
147 if(space && isdigit(*(space+1)))
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148 *space = '\0';
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
150 gtk_imhtml_toggle_fontface(GTK_IMHTML(toolbar->imhtml), fontname);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
151 g_free(fontname);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
152
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
153 cancel_toolbar_font(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
155
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
156 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
157 toggle_font(GtkWidget *font, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
158 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 g_return_if_fail(toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
160
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
161 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font))) {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
162 char *fontname = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml));
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
163
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
164 if (!toolbar->font_dialog) {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
165 toolbar->font_dialog = gtk_font_selection_dialog_new(_("Select Font"));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
167 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
168
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
169 if(fontname) {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
170 char *fonttif = g_strdup_printf("%s 12", fontname);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
171 g_free(fontname);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
172 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
173 fonttif);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
174 g_free(fonttif);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
175 } else {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
176 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
177 DEFAULT_FONT_FACE);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
178 }
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
179
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
180 g_signal_connect(G_OBJECT(toolbar->font_dialog), "delete_event",
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
181 G_CALLBACK(destroy_toolbar_font), toolbar);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
182 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
183 G_CALLBACK(apply_font), toolbar->font_dialog);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
184 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
185 G_CALLBACK(cancel_toolbar_font), toolbar);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
186 g_signal_connect_after(G_OBJECT(toolbar->font_dialog), "realize",
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
187 G_CALLBACK(realize_toolbar_font), toolbar);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
188 }
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
189 gtk_window_present(GTK_WINDOW(toolbar->font_dialog));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 } else {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
191 cancel_toolbar_font(font, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
192 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
193 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
195
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
196 static gboolean
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
197 destroy_toolbar_fgcolor(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
198 GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
199 {
10135
760803be53d2 [gaim-migrate @ 11202]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10134
diff changeset
200 if (widget != NULL)
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
201 gtk_imhtml_toggle_forecolor(GTK_IMHTML(toolbar->imhtml), "");
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
202
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
203 if (toolbar->fgcolor_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
204 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
205 gtk_widget_destroy(toolbar->fgcolor_dialog);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
206 toolbar->fgcolor_dialog = NULL;
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
207 }
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
208 return FALSE;
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
209 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
210
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
211 static void cancel_toolbar_fgcolor(GtkWidget *widget,
8321
477316d4d8a3 [gaim-migrate @ 9045]
Christian Hammond <chipx86@chipx86.com>
parents: 8320
diff changeset
212 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213 {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
214 destroy_toolbar_fgcolor(widget, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
217 static void do_fgcolor(GtkWidget *widget, GtkColorSelection *colorsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 GdkColor text_color;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
220 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "purple_toolbar");
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221 char *open_tag;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223 open_tag = g_malloc(30);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224 gtk_color_selection_get_current_color(colorsel, &text_color);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 g_snprintf(open_tag, 23, "#%02X%02X%02X",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 text_color.red / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 text_color.green / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 text_color.blue / 256);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 gtk_imhtml_toggle_forecolor(GTK_IMHTML(toolbar->imhtml), open_tag);
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
230 g_free(open_tag);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
232 cancel_toolbar_fgcolor(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
233 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
235 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236 toggle_fg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
239 GtkWidget *colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
240 GdkColor fgcolor;
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
241 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
242
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
243 if (!toolbar->fgcolor_dialog) {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
244
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
245 toolbar->fgcolor_dialog = gtk_color_selection_dialog_new(_("Select Text Color"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246 colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->fgcolor_dialog)->colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
247 if (color) {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
248 gdk_color_parse(color, &fgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
249 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
250 g_free(color);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
251 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
252
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
253 g_object_set_data(G_OBJECT(colorsel), "purple_toolbar", toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
254
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 g_signal_connect(G_OBJECT(toolbar->fgcolor_dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
256 G_CALLBACK(destroy_toolbar_fgcolor), toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
257 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
258 G_CALLBACK(do_fgcolor), colorsel);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
259 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
260 G_CALLBACK(cancel_toolbar_fgcolor), toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
262 gtk_window_present(GTK_WINDOW(toolbar->fgcolor_dialog));
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
263 } else {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
264 cancel_toolbar_fgcolor(color, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
265 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
266 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
269 static gboolean
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
270 destroy_toolbar_bgcolor(GtkWidget *widget, GdkEvent *event,
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
271 GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
272 {
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
273 if (widget != NULL) {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
274 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
275 gtk_imhtml_toggle_backcolor(GTK_IMHTML(toolbar->imhtml), "");
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
276 else
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
277 gtk_imhtml_toggle_background(GTK_IMHTML(toolbar->imhtml), "");
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
278 }
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
279
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
280 if (toolbar->bgcolor_dialog != NULL)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
281 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
282 gtk_widget_destroy(toolbar->bgcolor_dialog);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
283 toolbar->bgcolor_dialog = NULL;
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
284 }
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
285 return FALSE;
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
286 }
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
287
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
288 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
289 cancel_toolbar_bgcolor(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
290 {
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
291 destroy_toolbar_bgcolor(widget, NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
294 static void do_bgcolor(GtkWidget *widget, GtkColorSelection *colorsel)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 GdkColor text_color;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
297 GtkIMHtmlToolbar *toolbar = g_object_get_data(G_OBJECT(colorsel), "purple_toolbar");
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298 char *open_tag;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 open_tag = g_malloc(30);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301 gtk_color_selection_get_current_color(colorsel, &text_color);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302 g_snprintf(open_tag, 23, "#%02X%02X%02X",
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
303 text_color.red / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 text_color.green / 256,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
305 text_color.blue / 256);
10777
5a9df3199615 [gaim-migrate @ 12392]
Sean Egan <seanegan@pidgin.im>
parents: 10732
diff changeset
306 if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, NULL, NULL))
5a9df3199615 [gaim-migrate @ 12392]
Sean Egan <seanegan@pidgin.im>
parents: 10732
diff changeset
307 gtk_imhtml_toggle_backcolor(GTK_IMHTML(toolbar->imhtml), open_tag);
5a9df3199615 [gaim-migrate @ 12392]
Sean Egan <seanegan@pidgin.im>
parents: 10732
diff changeset
308 else
5a9df3199615 [gaim-migrate @ 12392]
Sean Egan <seanegan@pidgin.im>
parents: 10732
diff changeset
309 gtk_imhtml_toggle_background(GTK_IMHTML(toolbar->imhtml), open_tag);
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
310 g_free(open_tag);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
311
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
312 cancel_toolbar_bgcolor(NULL, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
314
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
315 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 toggle_bg_color(GtkWidget *color, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
317 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
319 GtkWidget *colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
320 GdkColor bgcolor;
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10297
diff changeset
321 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
322
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323 if (!toolbar->bgcolor_dialog) {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
324
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8325
diff changeset
325 toolbar->bgcolor_dialog = gtk_color_selection_dialog_new(_("Select Background Color"));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 colorsel = GTK_COLOR_SELECTION_DIALOG(toolbar->bgcolor_dialog)->colorsel;
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
327 if (color) {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
328 gdk_color_parse(color, &bgcolor);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
329 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
330 g_free(color);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
331 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
332
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
333 g_object_set_data(G_OBJECT(colorsel), "purple_toolbar", toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
334
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 g_signal_connect(G_OBJECT(toolbar->bgcolor_dialog), "delete_event",
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
336 G_CALLBACK(destroy_toolbar_bgcolor), toolbar);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
337 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
338 G_CALLBACK(do_bgcolor), colorsel);
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
339 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
340 G_CALLBACK(cancel_toolbar_bgcolor), toolbar);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
341
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
342 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
343 gtk_window_present(GTK_WINDOW(toolbar->bgcolor_dialog));
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
344 } else {
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
345 cancel_toolbar_bgcolor(color, toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
346 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
347 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
348 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
349
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
350 static void
11271
939be1fdbf7a [gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents: 11267
diff changeset
351 clear_formatting_cb(GtkWidget *clear, GtkIMHtmlToolbar *toolbar)
939be1fdbf7a [gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents: 11267
diff changeset
352 {
11275
cdcc651d7ecd [gaim-migrate @ 13461]
Richard Laager <rlaager@pidgin.im>
parents: 11271
diff changeset
353 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
354 gtk_imhtml_clear_formatting(GTK_IMHTML(toolbar->imhtml));
939be1fdbf7a [gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents: 11267
diff changeset
355 }
939be1fdbf7a [gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents: 11267
diff changeset
356
939be1fdbf7a [gaim-migrate @ 13454]
Richard Laager <rlaager@pidgin.im>
parents: 11267
diff changeset
357 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
358 cancel_link_cb(GtkIMHtmlToolbar *toolbar, PurpleRequestFields *fields)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359 {
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
360 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
361
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
362 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
363 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
364
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
365 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
366 close_link_dialog(GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
367 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
368 if (toolbar->link_dialog != NULL)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
369 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
370 purple_request_close(PURPLE_REQUEST_FIELDS, toolbar->link_dialog);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
371 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
372 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
373 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
376 do_insert_link_cb(GtkIMHtmlToolbar *toolbar, PurpleRequestFields *fields)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
377 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
378 const char *url, *description;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
379
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
380 url = purple_request_fields_get_string(fields, "url");
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
381 if (GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
382 description = purple_request_fields_get_string(fields, "description");
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
383 else
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
384 description = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
385
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
386 if (description == NULL)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
387 description = url;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
388
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
389 gtk_imhtml_insert_link(GTK_IMHTML(toolbar->imhtml),
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
390 gtk_text_buffer_get_insert(GTK_IMHTML(toolbar->imhtml)->text_buffer),
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
391 url, description);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
392
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
393 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
394
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
395 toolbar->link_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
396 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
397
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
398 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
399 insert_link_cb(GtkWidget *w, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
400 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
401 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
402 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
403 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
404 PurpleRequestField *field;
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
405 GtkTextIter start, end;
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
406 char *msg;
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
407 char *desc = NULL;
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
408
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
409 fields = purple_request_fields_new();
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
410
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
411 group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
412 purple_request_fields_add_group(fields, group);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
413
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
414 field = purple_request_field_string_new("url", _("_URL"), NULL, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
415 purple_request_field_set_required(field, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
416 purple_request_field_group_add_field(group, field);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
417
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
418 if(GTK_IMHTML(toolbar->imhtml)->format_functions & GTK_IMHTML_LINKDESC) {
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
419 if (gtk_text_buffer_get_selection_bounds(GTK_IMHTML(toolbar->imhtml)->text_buffer, &start, &end)) {
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
420 desc = gtk_imhtml_get_text(GTK_IMHTML(toolbar->imhtml), &start, &end);
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
421 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
422 field = purple_request_field_string_new("description", _("_Description"),
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
423 desc, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
424 purple_request_field_group_add_field(group, field);
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
425 msg = g_strdup(_("Please enter the URL and description of the "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
426 "link that you want to insert. The description "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
427 "is optional."));
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
428 } else {
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
429 msg = g_strdup(_("Please enter the URL of the "
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
430 "link that you want to insert."));
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
431 }
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
432
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
433 toolbar->link_dialog =
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
434 purple_request_fields(toolbar, _("Insert Link"),
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
435 NULL,
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
436 msg,
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
437 fields,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
438 _("_Insert"), G_CALLBACK(do_insert_link_cb),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
439 _("Cancel"), G_CALLBACK(cancel_link_cb),
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
440 NULL, NULL, NULL,
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
441 toolbar);
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9027
diff changeset
442 g_free(msg);
9599
1089c73e0586 [gaim-migrate @ 10442]
Tim Ringenbach <marv@pidgin.im>
parents: 9522
diff changeset
443 g_free(desc);
8322
9bae68fd2612 [gaim-migrate @ 9046]
Christian Hammond <chipx86@chipx86.com>
parents: 8321
diff changeset
444 } else {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
445 close_link_dialog(toolbar);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
446 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
447 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
448 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
449
19647
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
450 static void insert_hr_cb(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
451 {
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
452 GtkTextIter iter;
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
453 GtkTextMark *ins;
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
454 GtkIMHtmlScalable *hr;
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
455
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
456 ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)));
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
457 gtk_text_buffer_get_iter_at_mark(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)), &iter, ins);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
458 hr = gtk_imhtml_hr_new();
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
459 gtk_imhtml_hr_add_to(hr, GTK_IMHTML(toolbar->imhtml), &iter);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
460 }
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
461
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
462 static void
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
463 do_insert_image_cb(GtkWidget *widget, int response, GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
464 {
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
465 gchar *filename, *name, *buf;
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
466 char *filedata;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
467 size_t size;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
468 GError *error = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
469 int id;
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
470 GtkTextIter iter;
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
471 GtkTextMark *ins;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
472
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
473 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21954
diff changeset
474 if (response != GTK_RESPONSE_ACCEPT)
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
475 #else /* FILECHOOSER */
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21954
diff changeset
476 if (response != GTK_RESPONSE_OK)
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
477 #endif /* FILECHOOSER */
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21954
diff changeset
478 {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
479 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
480 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
481 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
482
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
483 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
484 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget));
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
485 #else /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
486 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
487 #endif /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
488
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
489 if (filename == NULL) {
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
490 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
491 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
492 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
493
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
494 #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
495 if (pidgin_check_if_dir(filename, GTK_FILE_SELECTION(widget))) {
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
496 g_free(filename);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
497 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
498 return;
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
499 }
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
500 #endif /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
501
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
502 /* The following triggers a callback that closes the widget */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
503 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
504
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
505 if (!g_file_get_contents(filename, &filedata, &size, &error)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
506 purple_notify_error(NULL, NULL, error->message, NULL);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
507
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
508 g_error_free(error);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
509 g_free(filename);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
510
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
511 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
512 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
513
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
514 name = strrchr(filename, G_DIR_SEPARATOR) + 1;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
515
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16263
diff changeset
516 id = purple_imgstore_add_with_id(filedata, size, name);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
517
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
518 if (id == 0) {
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
519 buf = g_strdup_printf(_("Failed to store image: %s\n"), filename);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
520 purple_notify_error(NULL, NULL, buf, NULL);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
521
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
522 g_free(buf);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
523 g_free(filename);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
524
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
525 return;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
526 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
527
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
528 g_free(filename);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
529
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
530 ins = gtk_text_buffer_get_insert(gtk_text_view_get_buffer(GTK_TEXT_VIEW(toolbar->imhtml)));
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
531 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
532 &iter, ins);
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8892
diff changeset
533 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
534 purple_imgstore_unref_by_id(id);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
535 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
536
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
537
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
538 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
539 insert_image_cb(GtkWidget *save, GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
540 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
541 GtkWidget *window;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
542
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
543 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
544 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
545 window = gtk_file_chooser_dialog_new(_("Insert Image"),
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
546 NULL,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
547 GTK_FILE_CHOOSER_ACTION_OPEN,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
548 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
549 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
550 NULL);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
551 gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_ACCEPT);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
552 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(window)),
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
553 "response", G_CALLBACK(do_insert_image_cb), toolbar);
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
554 #else /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
555 window = gtk_file_selection_new(_("Insert Image"));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
556 gtk_dialog_set_default_response(GTK_DIALOG(window), GTK_RESPONSE_OK);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
557 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
558 "response", G_CALLBACK(do_insert_image_cb), toolbar);
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
559 #endif /* FILECHOOSER */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
560
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
561 gtk_widget_show(window);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
562 toolbar->image_dialog = window;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
563 } else {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
564 gtk_widget_destroy(toolbar->image_dialog);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
565 toolbar->image_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
566 }
9522
e38381bd8c05 [gaim-migrate @ 10349]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
567
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
568 gtk_widget_grab_focus(toolbar->imhtml);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
569 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
570
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
571
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
572 static void
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
573 destroy_smiley_dialog(GtkIMHtmlToolbar *toolbar)
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
574 {
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
575 if (toolbar->smiley_dialog != NULL)
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
576 {
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
577 gtk_widget_destroy(toolbar->smiley_dialog);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
578 toolbar->smiley_dialog = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
579 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
580 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
581
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
582 static gboolean
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
583 close_smiley_dialog(GtkIMHtmlToolbar *toolbar)
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
584 {
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
585 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE);
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21985
diff changeset
586 return FALSE;
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
587 }
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
588
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
589
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
590 static void
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
591 insert_smiley_text(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
592 {
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
593 char *smiley_text, *escaped_smiley;
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
594
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
595 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
596 escaped_smiley = g_markup_escape_text(smiley_text, -1);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
597
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8447
diff changeset
598 gtk_imhtml_insert_smiley(GTK_IMHTML(toolbar->imhtml),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8447
diff changeset
599 GTK_IMHTML(toolbar->imhtml)->protocol_name,
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
600 escaped_smiley);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
601
9027
d4e9c928e913 [gaim-migrate @ 9803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
602 g_free(escaped_smiley);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
603
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
604 close_smiley_dialog(toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
605 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
606
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
607 /* smiley buttons list */
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
608 struct smiley_button_list {
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
609 int width, height;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
610 GtkWidget *button;
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
611 const GtkIMHtmlSmiley *smiley;
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
612 struct smiley_button_list *next;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
613 };
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
614
11862
5d4bc6d54688 [gaim-migrate @ 14153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11849
diff changeset
615 static struct smiley_button_list *
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
616 sort_smileys(struct smiley_button_list *ls, GtkIMHtmlToolbar *toolbar,
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
617 int *width, const GtkIMHtmlSmiley *smiley)
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
618 {
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
619 GtkWidget *image;
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
620 GtkWidget *button;
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
621 GtkRequisition size;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
622 struct smiley_button_list *cur;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
623 struct smiley_button_list *it, *it_last;
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
624 const gchar *filename = smiley->file;
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
625 gchar *face = smiley->smile;
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
626 PurpleSmiley *psmiley = NULL;
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
627 gboolean supports_custom = (gtk_imhtml_get_format_functions(GTK_IMHTML(toolbar->imhtml)) & GTK_IMHTML_CUSTOM_SMILEY);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
628
23003
aaab954eed6b Plug a small memory leak in the smiley dialog, and use g_new0/g_free
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
629 cur = g_new0(struct smiley_button_list, 1);
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
630 it = ls;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
631 it_last = ls; /* list iterators*/
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
632 image = gtk_image_new_from_file(filename);
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
633
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
634 gtk_widget_size_request(image, &size);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
635
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
636 if (size.width > 24 &&
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
637 smiley->flags & GTK_IMHTML_SMILEY_CUSTOM) { /* This is a custom smiley, let's scale it */
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
638 GdkPixbuf *pixbuf = NULL;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
639 GtkImageType type;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
640
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
641 type = gtk_image_get_storage_type(GTK_IMAGE(image));
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
642
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
643 if (type == GTK_IMAGE_PIXBUF) {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
644 pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image));
23009
0bac25fdc9aa Unref some gdkpixbufs to plug some memory leaks. References #1187.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23008
diff changeset
645 } else if (type == GTK_IMAGE_ANIMATION) {
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
646 GdkPixbufAnimation *animation;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
647
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
648 animation = gtk_image_get_animation(GTK_IMAGE(image));
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
649
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
650 pixbuf = gdk_pixbuf_animation_get_static_image(animation);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
651 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
652
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
653 if (pixbuf != NULL) {
23009
0bac25fdc9aa Unref some gdkpixbufs to plug some memory leaks. References #1187.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23008
diff changeset
654 GdkPixbuf *resized;
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
655 resized = gdk_pixbuf_scale_simple(pixbuf, 24, 24,
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
656 GDK_INTERP_HYPER);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
657
23011
33ff8a373a92 A leak fix from malu. Thanks!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23010
diff changeset
658 gtk_image_set_from_pixbuf(GTK_IMAGE(image), resized); /* This unrefs pixbuf */
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
659 gtk_widget_size_request(image, &size);
23009
0bac25fdc9aa Unref some gdkpixbufs to plug some memory leaks. References #1187.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23008
diff changeset
660 g_object_unref(G_OBJECT(resized));
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
661 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
662 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
663
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
664 (*width) += size.width;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
665
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
666 button = gtk_button_new();
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
667 gtk_container_add(GTK_CONTAINER(button), image);
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
668
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
669 g_object_set_data(G_OBJECT(button), "smiley_text", face);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
670 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
671
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
672 gtk_tooltips_set_tip(toolbar->tooltips, button, face, NULL);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
673
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
674 /* these look really weird with borders */
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
675 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
676
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
677 psmiley = purple_smileys_find_by_shortcut(smiley->smile);
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
678 /* If this is a "non-custom" smiley, check to see if its shortcut is
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
679 "shadowed" by any custom smiley. This can only happen if the connection
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
680 is custom smiley-enabled */
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
681 if (supports_custom && psmiley && !(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) {
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
682 gchar tip[128];
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
683 g_snprintf(tip, sizeof(tip),
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
684 _("This smiley is disabled because a custom smiley exists for this shortcut:\n %s"),
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
685 face);
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
686 gtk_tooltips_set_tip(toolbar->tooltips, button, tip, NULL);
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
687 gtk_widget_set_sensitive(button, FALSE);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
688 } else if (psmiley) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
689 /* Remove the button if the smiley is destroyed */
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
690 g_signal_connect_object(G_OBJECT(psmiley), "destroy", G_CALLBACK(gtk_widget_destroy),
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
691 button, G_CONNECT_SWAPPED);
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
692 }
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
693
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
694 /* set current element to add */
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
695 cur->height = size.height;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
696 cur->width = size.width;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
697 cur->button = button;
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
698 cur->smiley = smiley;
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
699 cur->next = ls;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
700
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
701 /* check where to insert by height */
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
702 if (ls == NULL)
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
703 return cur;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
704 while (it != NULL) {
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
705 it_last = it;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
706 it = it->next;
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 cur->next = it;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
709 it_last->next = cur;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
710 return ls;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
711 }
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
712
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
713 static gboolean
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
714 smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley)
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
715 {
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
716 while (list) {
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
717 GtkIMHtmlSmiley *cur = (GtkIMHtmlSmiley *) list->data;
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
718 if (!strcmp(cur->file, smiley->file))
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
719 return FALSE;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
720 list = list->next;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
721 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
722 return TRUE;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
723 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
724
17394
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
725 static gboolean
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
726 smiley_dialog_input_cb(GtkWidget *dialog, GdkEvent *event, GtkIMHtmlToolbar *toolbar)
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
727 {
18546
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
728 if ((event->type == GDK_KEY_PRESS && event->key.keyval == GDK_Escape) ||
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
729 (event->type == GDK_BUTTON_PRESS && event->button.button == 1))
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
730 {
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
731 close_smiley_dialog(toolbar);
18546
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
732 return TRUE;
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
733 }
17394
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
734
18546
3515b5b454e9 Rework the logic to be (IMHO) easy to read.
Richard Laager <rlaager@pidgin.im>
parents: 18545
diff changeset
735 return FALSE;
17394
ebe5e0e583da Close smiley dialog on GDK_Escape or button 1 press.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17303
diff changeset
736 }
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
737
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
738 static void
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
739 add_smiley_list(GtkWidget *container, struct smiley_button_list *list,
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
740 int max_width, gboolean custom)
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
741 {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
742 GtkWidget *line;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
743 int line_width = 0;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
744
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
745 if (!list)
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
746 return;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
747
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
748 line = gtk_hbox_new(FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
749 gtk_box_pack_start(GTK_BOX(container), line, FALSE, FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
750 for (; list; list = list->next) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
751 if (custom != !!(list->smiley->flags & GTK_IMHTML_SMILEY_CUSTOM))
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
752 continue;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
753 gtk_box_pack_start(GTK_BOX(line), list->button, FALSE, FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
754 gtk_widget_show(list->button);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
755 line_width += list->width;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
756 if (line_width >= max_width) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
757 if (list->next) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
758 line = gtk_hbox_new(FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
759 gtk_box_pack_start(GTK_BOX(container), line, FALSE, FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
760 }
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
761 line_width = 0;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
762 }
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
763 }
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
764 }
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
765
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
766 static void
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
767 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
768 {
23296
7f870792ce29 Put the 'manage' button outside the scrolling area.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23289
diff changeset
769 GtkWidget *dialog, *vbox;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
770 GtkWidget *smiley_table = NULL;
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
771 GSList *smileys, *unique_smileys = NULL;
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
772 const GSList *custom_smileys = NULL;
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
773 gboolean supports_custom = FALSE;
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
774 GtkRequisition req;
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
775 GtkWidget *scrolled, *viewport;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
776
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
777 if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) {
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
778 destroy_smiley_dialog(toolbar);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
779 gtk_widget_grab_focus(toolbar->imhtml);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
780 return;
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
781 }
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
782
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
783 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
784 smileys = pidgin_themes_get_proto_smileys(toolbar->sml);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
785 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
786 smileys = pidgin_themes_get_proto_smileys(NULL);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
787
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
788 /* Note: prepend smileys to list to avoid O(n^2) overhead when there is
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
789 a large number of smileys... need to revers the list after for the dialog
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
790 work... */
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
791 while(smileys) {
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
792 GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) smileys->data;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
793 if(!smiley->hidden) {
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
794 if(smiley_is_unique(unique_smileys, smiley)) {
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
795 unique_smileys = g_slist_prepend(unique_smileys, smiley);
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
796 }
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
797 }
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
798 smileys = smileys->next;
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
799 }
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
800 supports_custom = (gtk_imhtml_get_format_functions(GTK_IMHTML(toolbar->imhtml)) & GTK_IMHTML_CUSTOM_SMILEY);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
801 if (toolbar->imhtml && supports_custom) {
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
802 const GSList *iterator = NULL;
23010
6230fac29cee Show the custom smileys only on accounts that support it. References
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23009
diff changeset
803 custom_smileys = pidgin_smileys_get_all();
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
804
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
805 for (iterator = custom_smileys ; iterator ;
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
806 iterator = g_slist_next(iterator)) {
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
807 GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) iterator->data;
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
808 unique_smileys = g_slist_prepend(unique_smileys, smiley);
23010
6230fac29cee Show the custom smileys only on accounts that support it. References
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23009
diff changeset
809 }
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
810 }
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
811
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
812 /* we need to reverse the list to get the smileys in the correct order */
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
813 unique_smileys = g_slist_reverse(unique_smileys);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
814
22099
8e70e3ba6096 Modified patch from Gabriel (Sylar?) Schulof to deprecate PIDGIN_DIALOG. Closes #4535. (PS: I am aware of --author).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
815 dialog = pidgin_create_dialog(_("Smile!"), 0, "smiley_dialog", FALSE);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
816 gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
23296
7f870792ce29 Put the 'manage' button outside the scrolling area.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23289
diff changeset
817 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, 0);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
818
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
819 if (unique_smileys != NULL) {
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
820 struct smiley_button_list *ls;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
821 int max_line_width, num_lines, button_width = 0;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
822
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
823 /* We use hboxes packed in a vbox */
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
824 ls = NULL;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
825 max_line_width = 0;
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
826 num_lines = floor(sqrt(g_slist_length(unique_smileys)));
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
827 smiley_table = gtk_vbox_new(FALSE, 0);
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
828
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
829 if (supports_custom) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
830 GtkWidget *manage = gtk_button_new_with_mnemonic(_("_Manage custom smileys"));
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
831 GtkRequisition req;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
832 g_signal_connect(G_OBJECT(manage), "clicked",
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
833 G_CALLBACK(pidgin_smiley_manager_show), NULL);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
834 g_signal_connect_swapped(G_OBJECT(manage), "clicked",
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
835 G_CALLBACK(gtk_widget_destroy), dialog);
23296
7f870792ce29 Put the 'manage' button outside the scrolling area.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23289
diff changeset
836 gtk_box_pack_end(GTK_BOX(vbox), manage, FALSE, TRUE, 0);
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
837 gtk_widget_size_request(manage, &req);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
838 button_width = req.width;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
839 }
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
840
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
841 /* create list of smileys sorted by height */
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
842 while (unique_smileys) {
23014
d406337e359a Patch from malu (mlundblad) to disable a regular smiley in the smiley
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23011
diff changeset
843 GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) unique_smileys->data;
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
844 if (!smiley->hidden) {
23484
8ee3e86bfdca Do not disable default smileys with dupliate shortcuts if custom smileys
Marcus Lundblad <malu@pidgin.im>
parents: 23368
diff changeset
845 ls = sort_smileys(ls, toolbar, &max_line_width, smiley);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
846 }
23003
aaab954eed6b Plug a small memory leak in the smiley dialog, and use g_new0/g_free
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22218
diff changeset
847 unique_smileys = g_slist_delete_link(unique_smileys, unique_smileys);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
848 }
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
849 /* The window will be at least as wide as the 'Manage ..' button */
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
850 max_line_width = MAX(button_width, max_line_width / num_lines);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
851
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
852 /* pack buttons of the list */
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
853 add_smiley_list(smiley_table, ls, max_line_width, FALSE);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
854 if (supports_custom) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
855 gtk_box_pack_start(GTK_BOX(smiley_table), gtk_hseparator_new(), TRUE, FALSE, 0);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
856 add_smiley_list(smiley_table, ls, max_line_width, TRUE);
10894
b75b237a1212 [gaim-migrate @ 12608]
Benjamin Canou <bookeldor@gmail.com>
parents: 10814
diff changeset
857 }
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
858 while (ls) {
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
859 struct smiley_button_list *tmp = ls->next;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
860 g_free(ls);
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
861 ls = tmp;
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
862 }
18547
cb6e8c0a08ca Rework the smiley dialog close logic: Escape will always close the window.
Richard Laager <rlaager@pidgin.im>
parents: 18546
diff changeset
863
cb6e8c0a08ca Rework the smiley dialog close logic: Escape will always close the window.
Richard Laager <rlaager@pidgin.im>
parents: 18546
diff changeset
864 gtk_widget_add_events(dialog, GDK_KEY_PRESS_MASK);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
865 }
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
866 else {
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
867 smiley_table = gtk_label_new(_("This theme has no available smileys."));
18547
cb6e8c0a08ca Rework the smiley dialog close logic: Escape will always close the window.
Richard Laager <rlaager@pidgin.im>
parents: 18546
diff changeset
868 gtk_widget_add_events(dialog, GDK_KEY_PRESS_MASK | GDK_BUTTON_PRESS_MASK);
cb6e8c0a08ca Rework the smiley dialog close logic: Escape will always close the window.
Richard Laager <rlaager@pidgin.im>
parents: 18546
diff changeset
869 g_signal_connect(G_OBJECT(dialog), "button-press-event", (GCallback)smiley_dialog_input_cb, toolbar);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
870 }
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
871
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
872 scrolled = gtk_scrolled_window_new (NULL, NULL);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
873 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_NONE);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
874 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled),
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
875 GTK_POLICY_NEVER, GTK_POLICY_NEVER);
23296
7f870792ce29 Put the 'manage' button outside the scrolling area.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23289
diff changeset
876 gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
877 gtk_widget_show(scrolled);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
878
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
879 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), smiley_table);
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
880 gtk_widget_show(smiley_table);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
881
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
882 viewport = gtk_widget_get_parent(smiley_table);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
883 gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
884
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
885 /* connect signals */
23016
6cdca784716b Separate the custom smileys from the regular smileys, and add a 'Manage'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23015
diff changeset
886 g_signal_connect_swapped(G_OBJECT(dialog), "destroy", G_CALLBACK(close_smiley_dialog), toolbar);
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
887 g_signal_connect(G_OBJECT(dialog), "key-press-event", G_CALLBACK(smiley_dialog_input_cb), toolbar);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
888
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
889 gtk_window_set_transient_for(GTK_WINDOW(dialog),
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
890 GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(toolbar))));
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
891
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
892 /* show everything */
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
893 gtk_widget_show_all(dialog);
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
894
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
895 gtk_widget_size_request(viewport, &req);
23296
7f870792ce29 Put the 'manage' button outside the scrolling area.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23289
diff changeset
896 gtk_widget_set_size_request(scrolled, MIN(300, req.width), MIN(290, req.height));
23019
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
897
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
898 /* The window has to be made resizable, and the scrollbars in the scrolled window
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
899 * enabled only after setting the desired size of the window. If we do either of
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
900 * these tasks before now, GTK+ miscalculates the required size, and erronously
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
901 * makes one or both scrollbars visible (sometimes).
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
902 * I too think this hack is gross. But I couldn't find a better way -- sadrul */
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
903 gtk_window_set_resizable(GTK_WINDOW(dialog), TRUE);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
904 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled),
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
905 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
427ce09896f8 Patch from Giulio 'Twain28' Pascali to make the smiley window scrollable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23016
diff changeset
906
20719
ce876ae5fb7d Prevent the smiley window appearing outside of the working area on win32. Fixes #3261.
Daniel Atallah <datallah@pidgin.im>
parents: 20387
diff changeset
907 #ifdef _WIN32
ce876ae5fb7d Prevent the smiley window appearing outside of the working area on win32. Fixes #3261.
Daniel Atallah <datallah@pidgin.im>
parents: 20387
diff changeset
908 winpidgin_ensure_onscreen(dialog);
ce876ae5fb7d Prevent the smiley window appearing outside of the working area on win32. Fixes #3261.
Daniel Atallah <datallah@pidgin.im>
parents: 20387
diff changeset
909 #endif
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
910
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
911 toolbar->smiley_dialog = dialog;
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
912
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
913 gtk_widget_grab_focus(toolbar->imhtml);
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
914 }
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
915
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
916 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
917 {
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
918 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
919 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
920 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE);
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
921 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->strikethrough), buttons & GTK_IMHTML_STRIKE);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
922
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
923 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->larger_size), buttons & GTK_IMHTML_GROW);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
924 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smaller_size), buttons & GTK_IMHTML_SHRINK);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
925
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
926 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->font), buttons & GTK_IMHTML_FACE);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
927 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->fgcolor), buttons & GTK_IMHTML_FORECOLOR);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
928 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bgcolor), buttons & GTK_IMHTML_BACKCOLOR);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
929
11314
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
930 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->clear),
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
931 (buttons & GTK_IMHTML_BOLD ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
932 buttons & GTK_IMHTML_ITALIC ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
933 buttons & GTK_IMHTML_UNDERLINE ||
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
934 buttons & GTK_IMHTML_STRIKE ||
11314
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
935 buttons & GTK_IMHTML_GROW ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
936 buttons & GTK_IMHTML_SHRINK ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
937 buttons & GTK_IMHTML_FACE ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
938 buttons & GTK_IMHTML_FORECOLOR ||
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
939 buttons & GTK_IMHTML_BACKCOLOR));
50888518c108 [gaim-migrate @ 13516]
Luke Schierer <lschiere@pidgin.im>
parents: 11313
diff changeset
940
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
941 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
942 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK);
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
943 gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
944 }
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
945
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
946 /* we call this when we want to _set_active the toggle button, it'll
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
947 * block the callback thats connected to the button so we don't have to
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
948 * do the double toggling hack
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
949 */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
950 static void toggle_button_set_active_block(GtkToggleButton *button,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
951 gboolean is_active,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
952 GtkIMHtmlToolbar *toolbar)
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
953 {
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
954 GObject *object;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
955 g_return_if_fail(toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
956
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
957 object = g_object_ref(button);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
958 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
959 0, 0, NULL, NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
960 gtk_toggle_button_set_active(button, is_active);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
961 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA,
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
962 0, 0, NULL, NULL, toolbar);
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
963 g_object_unref(object);
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
964 }
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8391
diff changeset
965
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
966 static void update_buttons(GtkIMHtmlToolbar *toolbar)
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
967 {
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
968 gboolean bold, italic, underline, strike;
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
969 char *tmp;
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
970 char *tmp2;
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
971 GtkLabel *label = g_object_get_data(G_OBJECT(toolbar), "font_label");
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
972
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
973 gtk_label_set_label(label, _("_Font"));
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
974
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
975 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml),
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
976 &bold, &italic, &underline);
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
977 strike = GTK_IMHTML(toolbar->imhtml)->edit.strike;
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
978
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
979 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
980 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold,
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
981 toolbar);
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
982 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
983 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic,
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
984 toolbar);
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
985 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline)
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
986 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8516
diff changeset
987 underline, toolbar);
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
988 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->strikethrough)) != strike)
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
989 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->strikethrough),
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
990 strike, toolbar);
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
991
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
992 /* These buttons aren't ever "active". */
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
993 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
994 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
995
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
996 if (bold) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
997 gchar *markup = g_strdup_printf("<b>%s</b>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
998 gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
999 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1000 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1001 }
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1002 if (italic) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1003 gchar *markup = g_strdup_printf("<i>%s</i>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1004 gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1005 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1006 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1007 }
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1008 if (underline) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1009 gchar *markup = g_strdup_printf("<u>%s</u>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1010 gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1011 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1012 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1013 }
19719
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1014 if (strike) {
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1015 gchar *markup = g_strdup_printf("<s>%s</s>",
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1016 gtk_label_get_label(label));
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1017 gtk_label_set_markup_with_mnemonic(label, markup);
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1018 g_free(markup);
446e97aca498 Update the strikethrough state and the buttons as appropriate. Fixes #2884.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19647
diff changeset
1019 }
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1020
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1021 tmp = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml));
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1022 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->font),
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1023 (tmp != NULL), toolbar);
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1024 if (tmp != NULL) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1025 gchar *markup = g_strdup_printf("<span font_desc=\"%s\">%s</span>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1026 tmp, gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1027 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1028 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1029 }
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1030 g_free(tmp);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1031
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1032 tmp = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml));
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1033 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->fgcolor),
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1034 (tmp != NULL), toolbar);
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1035 if (tmp != NULL) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1036 gchar *markup = g_strdup_printf("<span foreground=\"%s\">%s</span>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1037 tmp, gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1038 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1039 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1040 }
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1041 g_free(tmp);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1042
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1043 tmp = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml));
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1044 tmp2 = gtk_imhtml_get_current_background(GTK_IMHTML(toolbar->imhtml));
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1045 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bgcolor),
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1046 (tmp != NULL || tmp2 != NULL), toolbar);
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1047 if (tmp != NULL) {
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1048 gchar *markup = g_strdup_printf("<span background=\"%s\">%s</span>",
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1049 tmp, gtk_label_get_label(label));
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1050 gtk_label_set_markup_with_mnemonic(label, markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1051 g_free(markup);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1052 }
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1053 g_free(tmp);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1054 g_free(tmp2);
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1055 }
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1056
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1057 static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1058 {
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1059 update_buttons(toolbar);
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
1060 }
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1061
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1062 static void update_format_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) {
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1063 update_buttons(toolbar);
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1064 }
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1065
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1066 static void mark_set_cb(GtkTextBuffer *buffer, GtkTextIter *location,
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1067 GtkTextMark *mark, GtkIMHtmlToolbar *toolbar)
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1068 {
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1069 if(mark != gtk_text_buffer_get_insert(buffer))
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1070 return;
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1071
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1072 update_buttons(toolbar);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1073 }
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1074
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1075
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1076 /* This comes from gtkmenutoolbutton.c from gtk+
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1077 * Copyright (C) 2003 Ricardo Fernandez Pascual
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1078 * Copyright (C) 2004 Paolo Borelli
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1079 */
17523
d26a1a21ea72 Fix a compile error and kill a bucket full of compile warnings
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17498
diff changeset
1080 static void
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1081 menu_position_func (GtkMenu *menu,
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1082 int *x,
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1083 int *y,
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1084 gboolean *push_in,
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1085 gpointer data)
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1086 {
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1087 GtkWidget *widget = GTK_WIDGET(data);
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1088 GtkRequisition menu_req;
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1089 gint ythickness = widget->style->ythickness;
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1090 int savy;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1091
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1092 gtk_widget_size_request(GTK_WIDGET (menu), &menu_req);
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1093 gdk_window_get_origin(widget->window, x, y);
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1094 *x += widget->allocation.x;
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1095 *y += widget->allocation.y + widget->allocation.height;
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1096 savy = *y;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1097
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1098 pidgin_menu_position_func_helper(menu, x, y, push_in, data);
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1099
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1100 if (savy > *y + ythickness + 1)
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18185
diff changeset
1101 *y -= widget->allocation.height;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1102 }
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1103
19213
e273393f4b75 The hotkeys should popup the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19199
diff changeset
1104 static void pidgin_menu_clicked(GtkWidget *button, GtkMenu *menu)
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1105 {
19104
35cd69038e67 show toolbar menu on button press, rather than button release. Fixes #2352
Sean Egan <seanegan@pidgin.im>
parents: 19089
diff changeset
1106 gtk_widget_show_all(GTK_WIDGET(menu));
35cd69038e67 show toolbar menu on button press, rather than button release. Fixes #2352
Sean Egan <seanegan@pidgin.im>
parents: 19089
diff changeset
1107 gtk_menu_popup(menu, NULL, NULL, menu_position_func, button, 0, gtk_get_current_event_time());
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1108 }
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1109
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1110 static void pidgin_menu_deactivate(GtkWidget *menu, GtkToggleButton *button)
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1111 {
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1112 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1113 }
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1114
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1115 enum {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1116 LAST_SIGNAL
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1117 };
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1118 /* static guint signals [LAST_SIGNAL] = { 0 }; */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1119
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1120 static void
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1121 gtk_imhtmltoolbar_finalize (GObject *object)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1122 {
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
1123 GtkIMHtmlToolbar *toolbar = GTK_IMHTMLTOOLBAR(object);
19073
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1124 GtkWidget *menu;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1125
8685
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1126 if (toolbar->image_dialog != NULL)
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1127 {
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1128 gtk_widget_destroy(toolbar->image_dialog);
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1129 toolbar->image_dialog = NULL;
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1130 }
aea52455a3ba [gaim-migrate @ 9438]
Kevin Stange <kstange@pidgin.im>
parents: 8677
diff changeset
1131
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
1132 destroy_toolbar_font(NULL, NULL, toolbar);
23368
76fd0254bae3 Prevent a crash when the imhtmltoolbar is disposed and the smiley dialog is open.
Daniel Atallah <datallah@pidgin.im>
parents: 23296
diff changeset
1133 if (toolbar->smiley_dialog != NULL) {
76fd0254bae3 Prevent a crash when the imhtmltoolbar is disposed and the smiley dialog is open.
Daniel Atallah <datallah@pidgin.im>
parents: 23296
diff changeset
1134 g_signal_handlers_disconnect_by_func(G_OBJECT(toolbar->smiley_dialog), close_smiley_dialog, toolbar);
76fd0254bae3 Prevent a crash when the imhtmltoolbar is disposed and the smiley dialog is open.
Daniel Atallah <datallah@pidgin.im>
parents: 23296
diff changeset
1135 destroy_smiley_dialog(toolbar);
76fd0254bae3 Prevent a crash when the imhtmltoolbar is disposed and the smiley dialog is open.
Daniel Atallah <datallah@pidgin.im>
parents: 23296
diff changeset
1136 }
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
1137 destroy_toolbar_bgcolor(NULL, NULL, toolbar);
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
1138 destroy_toolbar_fgcolor(NULL, NULL, toolbar);
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
1139 close_link_dialog(toolbar);
12904
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1140 if (toolbar->imhtml) {
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1141 g_signal_handlers_disconnect_matched(toolbar->imhtml,
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1142 G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL,
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1143 toolbar);
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1144 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
1145 G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL,
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1146 toolbar);
f01835b6bcac [gaim-migrate @ 15257]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12900
diff changeset
1147 }
8784
71c51aa52be4 [gaim-migrate @ 9546]
Kevin Stange <kstange@pidgin.im>
parents: 8756
diff changeset
1148
24275
37fca4e63b69 Use the correct free() function.
Daniel Atallah <datallah@pidgin.im>
parents: 23532
diff changeset
1149 g_free(toolbar->sml);
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
1150 gtk_object_sink(GTK_OBJECT(toolbar->tooltips));
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1151
19073
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1152 menu = g_object_get_data(object, "font_menu");
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1153 if (menu)
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1154 gtk_widget_destroy(menu);
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1155 menu = g_object_get_data(object, "insert_menu");
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1156 if (menu)
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1157 gtk_widget_destroy(menu);
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1158
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1159 purple_prefs_disconnect_by_handle(object);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1160
8391
ed3b9c27d002 [gaim-migrate @ 9120]
Mark Doliner <markdoliner@pidgin.im>
parents: 8380
diff changeset
1161 G_OBJECT_CLASS(parent_class)->finalize (object);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1162 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1163
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1164 static void
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1165 switch_toolbar_view(GtkWidget *item, GtkIMHtmlToolbar *toolbar)
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1166 {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1167 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/toolbar/wide",
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1168 !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/toolbar/wide"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1169 }
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1170
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1171 static gboolean
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1172 gtk_imhtmltoolbar_popup_menu(GtkWidget *widget, GdkEventButton *event, GtkIMHtmlToolbar *toolbar)
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1173 {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1174 GtkWidget *menu;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1175 GtkWidget *item;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1176 gboolean wide;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1177
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1178 if (event->button != 3)
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1179 return FALSE;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1180
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1181 wide = GTK_WIDGET_VISIBLE(toolbar->bold);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1182
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1183 menu = gtk_menu_new();
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1184 item = gtk_menu_item_new_with_mnemonic(wide ? _("Group Items") : _("Ungroup Items"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1185 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(switch_toolbar_view), toolbar);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1186 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1187 gtk_widget_show(item);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1188
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1189 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, pidgin_menu_position_func_helper,
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1190 widget, event->button, event->time);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1191 return TRUE;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1192 }
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1193
10814
7e17cb56b019 [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10777
diff changeset
1194 /* Boring GTK+ stuff */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1195 static void gtk_imhtmltoolbar_class_init (GtkIMHtmlToolbarClass *class)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1196 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1197 GtkObjectClass *object_class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1198 GObjectClass *gobject_class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1199 object_class = (GtkObjectClass*) class;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1200 gobject_class = (GObjectClass*) class;
10080
d562573fff16 [gaim-migrate @ 11062]
Sean Egan <seanegan@pidgin.im>
parents: 9971
diff changeset
1201 parent_class = gtk_type_class(GTK_TYPE_HBOX);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1202 gobject_class->finalize = gtk_imhtmltoolbar_finalize;
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1203
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1204 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/toolbar");
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1205 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", FALSE);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1206 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1207
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1208 static void gtk_imhtmltoolbar_create_old_buttons(GtkIMHtmlToolbar *toolbar)
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1209 {
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1210 GtkWidget *hbox;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1211 GtkWidget *button;
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1212 struct {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1213 char *stock;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1214 gpointer callback;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1215 GtkWidget **button;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1216 const char *tooltip;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1217 } buttons[] = {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1218 {GTK_STOCK_BOLD, G_CALLBACK(do_bold), &toolbar->bold, _("Bold")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1219 {GTK_STOCK_ITALIC, do_italic, &toolbar->italic, _("Italic")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1220 {GTK_STOCK_UNDERLINE, do_underline, &toolbar->underline, _("Underline")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1221 {GTK_STOCK_STRIKETHROUGH, do_strikethrough, &toolbar->strikethrough, _("Strikethrough")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1222 {"", NULL, NULL, NULL},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1223 {PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, do_big, &toolbar->larger_size, _("Increase Font Size")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1224 {PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, do_small, &toolbar->smaller_size, _("Decrease Font Size")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1225 {"", NULL, NULL, NULL},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1226 {PIDGIN_STOCK_TOOLBAR_FONT_FACE, toggle_font, &toolbar->font, _("Font Face")},
21954
ffb38ad2e4d6 Patch from DHowett to fix the transposition of background and forebround colors
Sean Egan <seanegan@pidgin.im>
parents: 21888
diff changeset
1227 {PIDGIN_STOCK_TOOLBAR_BGCOLOR, toggle_bg_color, &toolbar->bgcolor, _("Background Color")},
ffb38ad2e4d6 Patch from DHowett to fix the transposition of background and forebround colors
Sean Egan <seanegan@pidgin.im>
parents: 21888
diff changeset
1228 {PIDGIN_STOCK_TOOLBAR_FGCOLOR, toggle_fg_color, &toolbar->fgcolor, _("Foreground Color")},
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1229 {"", NULL, NULL, NULL},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1230 {PIDGIN_STOCK_CLEAR, clear_formatting_cb, &toolbar->clear, _("Reset Formatting")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1231 {"", NULL, NULL, NULL},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1232 {PIDGIN_STOCK_TOOLBAR_INSERT_LINK, insert_link_cb, &toolbar->link, _("Insert Link")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1233 {PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, insert_image_cb, &toolbar->image, _("Insert IM Image")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1234 {PIDGIN_STOCK_TOOLBAR_SMILEY, insert_smiley_cb, &toolbar->smiley, _("Insert Smiley")},
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1235 {NULL, NULL, NULL, NULL}
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1236 };
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1237 int iter;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1238
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1239 hbox = gtk_hbox_new(FALSE, 0);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1240
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1241 for (iter = 0; buttons[iter].stock; iter++) {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1242 if (buttons[iter].stock[0]) {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1243 button = pidgin_pixbuf_toolbar_button_from_stock(buttons[iter].stock);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1244 g_signal_connect(G_OBJECT(button), "clicked",
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1245 G_CALLBACK(buttons[iter].callback), toolbar);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1246 *(buttons[iter].button) = button;
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1247 gtk_tooltips_set_tip(toolbar->tooltips, button, buttons[iter].tooltip, NULL);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1248 } else
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1249 button = gtk_vseparator_new();
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1250 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1251 }
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1252
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1253 gtk_box_pack_start(GTK_BOX(toolbar), hbox, FALSE, FALSE, 0);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1254 g_object_set_data(G_OBJECT(toolbar), "wide-view", hbox);
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1255 }
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1256
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1257 static void
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1258 button_sensitiveness_changed(GtkWidget *button, gpointer dontcare, GtkWidget *item)
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1259 {
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1260 gtk_widget_set_sensitive(item, GTK_WIDGET_IS_SENSITIVE(button));
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1261 }
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1262
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1263 static void
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1264 update_menuitem(GtkToggleButton *button, GtkCheckMenuItem *item)
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1265 {
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1266 g_signal_handlers_block_by_func(G_OBJECT(item), G_CALLBACK(gtk_button_clicked), button);
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1267 gtk_check_menu_item_set_active(item, gtk_toggle_button_get_active(button));
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1268 g_signal_handlers_unblock_by_func(G_OBJECT(item), G_CALLBACK(gtk_button_clicked), button);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1269 }
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1270
19199
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1271 static void
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1272 enable_markup(GtkWidget *widget, gpointer null)
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1273 {
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1274 if (GTK_IS_LABEL(widget))
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1275 g_object_set(G_OBJECT(widget), "use-markup", TRUE, NULL);
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1276 }
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1277
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1278 static void
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1279 imhtmltoolbar_view_pref_changed(const char *name, PurplePrefType type,
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1280 gconstpointer value, gpointer toolbar)
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1281 {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1282 if (value) {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1283 gtk_widget_hide_all(g_object_get_data(G_OBJECT(toolbar), "lean-view"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1284 gtk_widget_show_all(g_object_get_data(G_OBJECT(toolbar), "wide-view"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1285 } else {
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1286 gtk_widget_hide_all(g_object_get_data(G_OBJECT(toolbar), "wide-view"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1287 gtk_widget_show_all(g_object_get_data(G_OBJECT(toolbar), "lean-view"));
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1288 }
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1289 }
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1290
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1291 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar)
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1292 {
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1293 GtkWidget *hbox = GTK_WIDGET(toolbar), *event = gtk_event_box_new();
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1294 GtkWidget *bbox, *box = gtk_hbox_new(FALSE, 0);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1295 GtkWidget *image;
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1296 GtkWidget *label;
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1297 GtkWidget *insert_button;
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1298 GtkWidget *font_button;
20328
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1299 GtkWidget *smiley_button;
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1300 GtkWidget *font_menu;
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1301 GtkWidget *insert_menu;
18240
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1302 GtkWidget *menuitem;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1303 GtkWidget *sep;
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1304 int i;
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1305 struct {
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1306 const char *label;
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1307 GtkWidget **button;
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1308 gboolean check;
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1309 } buttons[] = {
19199
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1310 {_("<b>_Bold</b>"), &toolbar->bold, TRUE},
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1311 {_("<i>_Italic</i>"), &toolbar->italic, TRUE},
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1312 {_("<u>_Underline</u>"), &toolbar->underline, TRUE},
19647
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1313 {_("<span strikethrough='true'>Strikethrough</span>"), &toolbar->strikethrough, TRUE},
19199
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1314 {_("<span size='larger'>_Larger</span>"), &toolbar->larger_size, TRUE},
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1315 #if 0
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1316 {_("_Normal"), &toolbar->normal_size, TRUE},
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1317 #endif
19199
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1318 {_("<span size='smaller'>_Smaller</span>"), &toolbar->smaller_size, TRUE},
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1319 /* If we want to show the formatting for the following items, we would
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1320 * need to update them when formatting changes. The above items don't need
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1321 * no updating nor nothin' */
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1322 {_("_Font face"), &toolbar->font, TRUE},
19083
14edbc247c42 I thought I fixed this already...
Kevin Stange <kstange@pidgin.im>
parents: 19076
diff changeset
1323 {_("Foreground _color"), &toolbar->fgcolor, TRUE},
19084
15f91e441bfb Another mnemonic conflict
Kevin Stange <kstange@pidgin.im>
parents: 19083
diff changeset
1324 {_("Bac_kground color"), &toolbar->bgcolor, TRUE},
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1325 {_("_Reset formatting"), &toolbar->clear, FALSE},
19088
8eb73fcef3ad Get rid of two minor compile warnings:
Mark Doliner <markdoliner@pidgin.im>
parents: 19076
diff changeset
1326 {NULL, NULL, FALSE}
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1327 };
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1328
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1329 toolbar->imhtml = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1330 toolbar->font_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1331 toolbar->fgcolor_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1332 toolbar->bgcolor_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1333 toolbar->link_dialog = NULL;
10138
b72c5fdc98b3 [gaim-migrate @ 11208]
Mark Doliner <markdoliner@pidgin.im>
parents: 10135
diff changeset
1334 toolbar->smiley_dialog = NULL;
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1335 toolbar->image_dialog = NULL;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1336
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1337 toolbar->tooltips = gtk_tooltips_new();
10134
ecbf96117857 [gaim-migrate @ 11198]
Nathan Fredrickson <nathan@silverorange.com>
parents: 10125
diff changeset
1338
17303
138cbb17e5cd disapproval of revision '6e8f285962e77199bf88dfc8d2a08386beb02634'
Sean Egan <seanegan@pidgin.im>
parents: 17300
diff changeset
1339 gtk_box_set_spacing(GTK_BOX(toolbar), 3);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1340
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1341 gtk_imhtmltoolbar_create_old_buttons(toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1342
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1343 /* Fonts */
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1344 font_button = gtk_toggle_button_new();
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1345 gtk_button_set_relief(GTK_BUTTON(font_button), GTK_RELIEF_NONE);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1346 bbox = gtk_hbox_new(FALSE, 3);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1347 gtk_container_add(GTK_CONTAINER(font_button), bbox);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1348 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1349 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1350 label = gtk_label_new_with_mnemonic(_("_Font"));
19068
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1351 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
4effc374e407 Show current outgoing conversation formatting on the font label on
Ka-Hing Cheung <khc@pidgin.im>
parents: 19061
diff changeset
1352 g_object_set_data(G_OBJECT(hbox), "font_label", label);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1353 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1354 gtk_box_pack_start(GTK_BOX(box), font_button, FALSE, FALSE, 0);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1355 gtk_widget_show_all(font_button);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1356
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1357 font_menu = gtk_menu_new();
19073
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1358 g_object_set_data(G_OBJECT(toolbar), "font_menu", font_menu);
17879
3e3f85138f1a merge of '87854ccfae544467c988edbac854c1ae2018eed4'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17620 17594
diff changeset
1359
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1360 for (i = 0; buttons[i].label; i++) {
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1361 GtkWidget *old = *buttons[i].button;
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1362 if (buttons[i].check) {
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1363 menuitem = gtk_check_menu_item_new_with_mnemonic(buttons[i].label);
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1364 g_signal_connect_after(G_OBJECT(old), "toggled",
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1365 G_CALLBACK(update_menuitem), menuitem);
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1366 } else {
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1367 menuitem = gtk_menu_item_new_with_mnemonic(buttons[i].label);
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1368 }
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1369 g_signal_connect_swapped(G_OBJECT(menuitem), "activate",
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1370 G_CALLBACK(gtk_button_clicked), old);
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1371 gtk_menu_shell_append(GTK_MENU_SHELL(font_menu), menuitem);
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1372 g_signal_connect(G_OBJECT(old), "notify::sensitive",
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1373 G_CALLBACK(button_sensitiveness_changed), menuitem);
19199
f06d090eedab Show formatting in the font dropdown menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19104
diff changeset
1374 gtk_container_foreach(GTK_CONTAINER(menuitem), (GtkCallback)enable_markup, NULL);
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1375 }
19076
84216ea8ddbf Move 'Reset formatting' to Font dropdown
Sean Egan <seanegan@pidgin.im>
parents: 19073
diff changeset
1376
19213
e273393f4b75 The hotkeys should popup the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19199
diff changeset
1377 g_signal_connect_swapped(G_OBJECT(font_button), "button-press-event", G_CALLBACK(gtk_widget_activate), font_button);
e273393f4b75 The hotkeys should popup the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19199
diff changeset
1378 g_signal_connect(G_OBJECT(font_button), "activate", G_CALLBACK(pidgin_menu_clicked), font_menu);
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1379 g_signal_connect(G_OBJECT(font_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), font_button);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1380
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1381 /* Sep */
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1382 sep = gtk_vseparator_new();
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1383 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1384 gtk_widget_show_all(sep);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1385
17594
837c8e6dbef7 Fix some stuff of bugs in the new toolbar.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17523
diff changeset
1386 /* Insert */
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1387 insert_button = gtk_toggle_button_new();
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1388 gtk_button_set_relief(GTK_BUTTON(insert_button), GTK_RELIEF_NONE);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1389 bbox = gtk_hbox_new(FALSE, 3);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1390 gtk_container_add(GTK_CONTAINER(insert_button), bbox);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1391 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1392 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1393 label = gtk_label_new_with_mnemonic(_("_Insert"));
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1394 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1395 gtk_box_pack_start(GTK_BOX(box), insert_button, FALSE, FALSE, 0);
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1396 gtk_widget_show_all(insert_button);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1397
17498
9e21b4e8a98d Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
Sean Egan <seanegan@pidgin.im>
parents: 17403
diff changeset
1398 insert_menu = gtk_menu_new();
19073
e2da82ea455b Clean up the font and insert menus when the imhtmltoolbar is disposed of. This fixes a leak (and the crash in #2385). Fixes #2385.
Daniel Atallah <datallah@pidgin.im>
parents: 19068
diff changeset
1399 g_object_set_data(G_OBJECT(toolbar), "insert_menu", insert_menu);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1400
18240
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1401 menuitem = gtk_menu_item_new_with_mnemonic(_("_Image"));
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1402 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->image);
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1403 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1404 g_signal_connect(G_OBJECT(toolbar->image), "notify::sensitive",
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1405 G_CALLBACK(button_sensitiveness_changed), menuitem);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1406
18240
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1407 menuitem = gtk_menu_item_new_with_mnemonic(_("_Link"));
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1408 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->link);
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1409 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1410 g_signal_connect(G_OBJECT(toolbar->link), "notify::sensitive",
0a7d2fde749b Fix setting the sensitivity of the toolbar items in a number of places
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18238
diff changeset
1411 G_CALLBACK(button_sensitiveness_changed), menuitem);
17499
246d166626f3 disapproval of revision '9e21b4e8a98d7acd373a16a8b5d9c42ccc0f4a3d'
Sean Egan <seanegan@pidgin.im>
parents: 17498
diff changeset
1412
19647
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1413 menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule"));
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1414 g_signal_connect(G_OBJECT(menuitem), "activate" , G_CALLBACK(insert_hr_cb), toolbar);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1415 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1416 toolbar->insert_hr = menuitem;
5d8cf24e5ce9 Add horizontal rules and strikethroughs to the toolbar
Sean Egan <seanegan@pidgin.im>
parents: 19213
diff changeset
1417
19213
e273393f4b75 The hotkeys should popup the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19199
diff changeset
1418 g_signal_connect_swapped(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(gtk_widget_activate), insert_button);
e273393f4b75 The hotkeys should popup the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19199
diff changeset
1419 g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu);
17523
d26a1a21ea72 Fix a compile error and kill a bucket full of compile warnings
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17498
diff changeset
1420 g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1421 toolbar->sml = NULL;
20328
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1422
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1423 /* Sep */
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1424 sep = gtk_vseparator_new();
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1425 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1426 gtk_widget_show_all(sep);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1427
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1428 /* Smiley */
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1429 smiley_button = gtk_button_new();
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1430 gtk_button_set_relief(GTK_BUTTON(smiley_button), GTK_RELIEF_NONE);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1431 bbox = gtk_hbox_new(FALSE, 3);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1432 gtk_container_add(GTK_CONTAINER(smiley_button), bbox);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1433 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1434 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
20387
9e612e1fbc03 Exclaim
Sean Egan <seanegan@pidgin.im>
parents: 20330
diff changeset
1435 label = gtk_label_new_with_mnemonic(_("_Smile!"));
20328
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1436 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1437 gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1438 g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
ebb754aae698 special case smileys in the toolbar. Fixes #2668 I'll need a new icon from Hylke
Sean Egan <seanegan@pidgin.im>
parents: 20075
diff changeset
1439 gtk_widget_show_all(smiley_button);
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1440
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1441 gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1442 g_object_set_data(G_OBJECT(hbox), "lean-view", box);
22218
32ffd628be85 Show the grouped items initially. This fixes the issues with the size of the entry box in the conversation windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22099
diff changeset
1443 gtk_widget_show(box);
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1444
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1445 purple_prefs_connect_callback(toolbar, PIDGIN_PREFS_ROOT "/conversations/toolbar/wide",
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1446 imhtmltoolbar_view_pref_changed, toolbar);
21888
c59f2fb04c7c Show either the grouped xor the ungrouped items.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21764
diff changeset
1447 g_signal_connect_data(G_OBJECT(toolbar), "realize",
c59f2fb04c7c Show either the grouped xor the ungrouped items.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21764
diff changeset
1448 G_CALLBACK(purple_prefs_trigger_callback), PIDGIN_PREFS_ROOT "/conversations/toolbar/wide",
c59f2fb04c7c Show either the grouped xor the ungrouped items.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21764
diff changeset
1449 NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1450
19978
3761c1b17eb9 Fix from fmoo so that the imhtml toolbar appears right on the MS-Windows theme (and probably other themes too).
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
1451 #if GTK_CHECK_VERSION(2,4,0)
3761c1b17eb9 Fix from fmoo so that the imhtml toolbar appears right on the MS-Windows theme (and probably other themes too).
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
1452 gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), FALSE);
3761c1b17eb9 Fix from fmoo so that the imhtml toolbar appears right on the MS-Windows theme (and probably other themes too).
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
1453 #endif
3761c1b17eb9 Fix from fmoo so that the imhtml toolbar appears right on the MS-Windows theme (and probably other themes too).
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
1454
19761
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1455 gtk_widget_add_events(event, GDK_BUTTON_PRESS_MASK);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1456 gtk_box_pack_start(GTK_BOX(hbox), event, TRUE, TRUE, 0);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1457 g_signal_connect(G_OBJECT(event), "button-press-event", G_CALLBACK(gtk_imhtmltoolbar_popup_menu), toolbar);
a9f07315cf37 Add a 'Group Items'/'Ungroup Items' context menu for the toolbar in the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19719
diff changeset
1458 gtk_widget_show(event);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1459 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1460
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1461 GtkWidget *gtk_imhtmltoolbar_new()
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1462 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1463 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL));
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1464 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1465
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1466 GType gtk_imhtmltoolbar_get_type()
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1467 {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1468 static GType imhtmltoolbar_type = 0;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1469
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1470 if (!imhtmltoolbar_type) {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1471 static const GTypeInfo imhtmltoolbar_info = {
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1472 sizeof(GtkIMHtmlToolbarClass),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1473 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1474 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1475 (GClassInitFunc) gtk_imhtmltoolbar_class_init,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1476 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1477 NULL,
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1478 sizeof (GtkIMHtmlToolbar),
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1479 0,
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 11862
diff changeset
1480 (GInstanceInitFunc) gtk_imhtmltoolbar_init,
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 11862
diff changeset
1481 NULL
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1482 };
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1483
10080
d562573fff16 [gaim-migrate @ 11062]
Sean Egan <seanegan@pidgin.im>
parents: 9971
diff changeset
1484 imhtmltoolbar_type = g_type_register_static(GTK_TYPE_HBOX,
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1485 "GtkIMHtmlToolbar", &imhtmltoolbar_info, 0);
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1486 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1487
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1488 return imhtmltoolbar_type;
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1489 }
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1490
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1491
8324
3bb4ba19837d [gaim-migrate @ 9048]
Christian Hammond <chipx86@chipx86.com>
parents: 8322
diff changeset
1492 void gtk_imhtmltoolbar_attach(GtkIMHtmlToolbar *toolbar, GtkWidget *imhtml)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1493 {
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1494 GtkIMHtmlButtons buttons;
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1495 gboolean bold, italic, underline;
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1496
8325
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1497 g_return_if_fail(toolbar != NULL);
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1498 g_return_if_fail(GTK_IS_IMHTMLTOOLBAR(toolbar));
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1499 g_return_if_fail(imhtml != NULL);
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1500 g_return_if_fail(GTK_IS_IMHTML(imhtml));
bb6ed75fcec2 [gaim-migrate @ 9049]
Christian Hammond <chipx86@chipx86.com>
parents: 8324
diff changeset
1501
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1502 toolbar->imhtml = imhtml;
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
1503 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
1504 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
1505 g_signal_connect_after(G_OBJECT(imhtml), "format_function_clear", G_CALLBACK(update_format_cb), toolbar);
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8481
diff changeset
1506 g_signal_connect(G_OBJECT(imhtml), "format_function_update", G_CALLBACK(update_format_cb), toolbar);
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1507 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", G_CALLBACK(mark_set_cb), toolbar);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8456
diff changeset
1508
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1509 buttons = gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml));
8807
128d3dae0196 [gaim-migrate @ 9569]
Jon Oberheide
parents: 8788
diff changeset
1510 update_buttons_cb(GTK_IMHTML(imhtml), buttons, toolbar);
8788
a13634443a38 [gaim-migrate @ 9550]
Mark Doliner <markdoliner@pidgin.im>
parents: 8785
diff changeset
1511
8516
a29b503cdfa0 [gaim-migrate @ 9254]
Gary Kramlich <grim@pidgin.im>
parents: 8506
diff changeset
1512 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
1513
11267
78f1eb5b3d6e [gaim-migrate @ 13449]
Richard Laager <rlaager@pidgin.im>
parents: 11243
diff changeset
1514 update_buttons(toolbar);
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1515 }
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1516
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1517 void gtk_imhtmltoolbar_associate_smileys(GtkIMHtmlToolbar *toolbar, const char *proto_id)
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1518 {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13539
diff changeset
1519 g_free(toolbar->sml);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1520 toolbar->sml = g_strdup(proto_id);
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8420
diff changeset
1521 }

mercurial