src/gtkconv.c

Fri, 19 Mar 2004 17:34:33 +0000

author
Kevin Stange <kstange@pidgin.im>
date
Fri, 19 Mar 2004 17:34:33 +0000
changeset 8473
8acf91aaffac
parent 8458
c9f4c15dc278
child 8481
7a9eb76e8eee
permissions
-rw-r--r--

[gaim-migrate @ 9206]
" You can once again show how evil you are by typing >:)
and getting it to render in spite of escaped HTML.

This patch changes around the parsing code to catch
smileys before eating just any HTML entity we bump into
on the street. We try to catch entities at the
beginning of smileys first, and if we're sure they're
not smileys, then we eat them for breakfast. The patch
also deals with eating any subsequent entities that may
appear in any smileys (like :-&) so we don't end up
with trailing leftovers. This patch description is
making me hungry.

FYI, I know this gtkimhtml is supposed to be not gaim
dependent, but both the gaim_* functions that were
preexisting and newly used in gtkimhtml code are all
non-gaim dependent utility functions from util.c, so I felt
their use was justified and acceptable." --Kevin Stange

committer: Luke Schierer <lschiere@pidgin.im>

5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1 /**
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2 * @file gtkconv.h GTK+ Conversation API
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
3 * @ingroup gtkui
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
5 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
7 * source distribution.
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
8 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * (at your option) any later version.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * GNU General Public License for more details.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
24 #include "gtkinternal.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
25
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 #ifndef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
27 # include <X11/Xlib.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
28 #endif
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
29
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 #ifdef USE_GTKSPELL
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
31 # include <gtkspell/gtkspell.h>
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
32 # ifdef _WIN32
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
33 # include "wspell.h"
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
34 # endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #endif
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
36
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h>
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
38 #include <locale.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
39
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
40 #include "debug.h"
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
41 #include "imgstore.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
42 #include "log.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
43 #include "multi.h"
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
44 #include "notify.h"
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
45 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
46 #include "prpl.h"
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
47 #include "request.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
48 #include "sound.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
49 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
50
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
51 #include "dnd-hints.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
52 #include "gtkblist.h"
5717
2f3a377de638 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
53 #include "gtkconv.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
54 #include "gtkimhtml.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
55 #include "gtkimhtmltoolbar.h"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
56 #include "gtklog.h"
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
57 #include "gtkpounce.h"
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
58 #include "gtkprivacy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
59 #include "gtkutils.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60 #include "stock.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61
5717
2f3a377de638 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
62 #include "ui.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
63
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
64 /* XXX */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
65 #include "gaim.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
67 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
68
7990
0aff6a730e7f [gaim-migrate @ 8667]
Nathan Walp <nwalp@pidgin.im>
parents: 7988
diff changeset
69 #define SEND_COLOR "#16569E"
7855
272c6a3311d1 [gaim-migrate @ 8509]
Sean Egan <seanegan@pidgin.im>
parents: 7854
diff changeset
70 #define RECV_COLOR "#A82F2F"
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
71
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 static char nick_colors[][8] = {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#ba55d3", /* Medium Orchid */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#ee82ee", /* Violet */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#c715b4", /* Medium Violet Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#ff69b4", /* Hot Pink */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#ff6347", /* Tomato */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#fa8c00", /* Dark Orange */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#fa8072", /* Salmon */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#b22222", /* Fire Brick */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#f4a460", /* Sandy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#cd5c5c", /* Indian Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#bc8f8f", /* Rosy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#f0e68c", /* Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#bdb76b", /* Dark Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#228b22", /* Forest Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#9acd32", /* Yellow Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 "#32cd32", /* Lime Green */
7755
a08288ab4e5f [gaim-migrate @ 8400]
Mark Doliner <markdoliner@pidgin.im>
parents: 7751
diff changeset
89 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#2e8b57", /* Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#8fbc8f", /* Dark Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#66cdaa", /* Medium Aquamarine */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#5f9ea0", /* Cadet Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 "#48d1cc", /* Medium Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 "#00ced1", /* Dark Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 "#4682b4", /* Stell Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 "#00bfff", /* Deep Sky Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 "#1690ff", /* Dodger Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 "#4169ff", /* Royal Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 "#6a5acd", /* Slate Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 "#6495ed", /* Cornflower Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 "#708090", /* Slate gray */
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
103 "#2f4f4f", /* Dark Slate Gray */
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
104 "#ff8c00", /* Dark Orange */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 };
6291
ac476ede1f3a [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
106
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109 #define SCALE(x) \
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 ((gdk_pixbuf_animation_get_width(x) <= 48 && \
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
113 typedef struct
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 GtkWidget *window;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 GtkWidget *entry;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 GtkWidget *message;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
120 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
121
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
122 } InviteBuddyInfo;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 static GtkWidget *invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
126 /* Prototypes. <-- because Paco-Paco hates this comment. */
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
127 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
128 static GList *generate_invite_user_names(GaimConnection *gc);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
129 static void add_chat_buddy_common(GaimConversation *conv,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 const char *name, int pos);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
131 static void tab_complete(GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
132 static void update_typing_icon(GaimConversation *conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
133 static gboolean update_send_as_selection(GaimConvWindow *win);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
134 static char *item_factory_translate_func (const char *path, gpointer func_data);
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
135 static void save_convo(GtkWidget *save, GaimConversation *c);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138 * Callbacks
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 static void
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
141 do_save_convo(GtkWidget *wid)
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
142 {
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
143 GaimConversation *conv;
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
144 const char *filename;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
145 FILE *fp;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
146
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
147 conv = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
148 "gaim_conversation");
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
149
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
150 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
151
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
152 if (!((gaim_conversation_get_type(conv) != GAIM_CONV_CHAT &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
153 g_list_find(gaim_get_ims(), conv)) ||
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
154 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
155 g_list_find(gaim_get_chats(), conv))))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
156 filename = NULL;
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
157
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
158 gtk_widget_destroy(wid);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
159
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
160 if (filename == NULL)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
161 return;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
162
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
163 if ((fp = fopen(filename, "w+")) == NULL)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
164 return;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
165
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
166 fprintf(fp, "%s", conv->history->str);
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
167
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
168 fclose(fp);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
169 }
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
170
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
171 static void
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
172 do_check_save_convo(GObject *obj, GtkWidget *wid)
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
173 {
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
174 const char *filename;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
175
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
176 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
177
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
178 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid)))
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
179 return;
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
180
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
181 if (g_file_test(filename, G_FILE_TEST_EXISTS))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
182 {
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
183 gaim_request_yes_no(NULL, NULL, _("That file already exists"),
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
184 _("Would you like to overwrite it?"), 1, wid,
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
185 G_CALLBACK(do_save_convo), NULL);
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
186 }
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
187 else
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
188 do_save_convo(wid);
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
189 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6460
diff changeset
190
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
195 GaimConvWindow *win = (GaimConvWindow *)d;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
196
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
197 gaim_conv_window_destroy(win);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
198
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
199 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 close_conv_cb(GtkWidget *w, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
205 GaimConversation *conv = (GaimConversation *)d;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207 gaim_conversation_destroy(conv);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
208
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
209 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
212 /* Courtesy of Galeon! */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
213 static void
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
214 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
215 {
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
216 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
217 gtk_widget_set_state(widget, GTK_STATE_NORMAL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
218 }
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
219
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
220 static void
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
221 default_formatize(GaimConversation *conv)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
222 {
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
223 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
224 GaimConnection *gc = gaim_conversation_get_gc(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
225
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
226 if (gc && gc->flags & GAIM_CONNECTION_HTML)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
227 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
228 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"))
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
229 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
230
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
231 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"))
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
232 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
233
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
234 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"))
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
235 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
236
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
237 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") ||
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
238 c->has_font)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
239 {
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
240 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
241 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
242
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
243 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
244 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
245 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
246 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"));
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
247 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
248
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
249 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
250 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
251 char *color = g_strdup_printf("#%02x%02x%02x",
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
252 c->fg_color.red / 256,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
253 c->fg_color.green / 256,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
254 c->fg_color.blue / 256);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
255 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
256 g_free(color);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
257 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
258
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
259 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
260 gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
261 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
262 char *color = g_strdup_printf("#%02x%02x%02x",
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
263 c->bg_color.red / 256,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
264 c->bg_color.green / 256,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
265 c->bg_color.blue / 256);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
266 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
267 g_free(color);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
268 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
269 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
270 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
271
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
273 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
275 GaimGtkConversation *gtkconv;
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
276 char *buf, *clean;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 gtkconv = GAIM_GTK_CONVERSATION(conv);
8329
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
279
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8439
diff changeset
280 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
281 clean = gaim_markup_strip_html(buf);
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
282
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
285 if (strlen(clean) == 0) {
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
286 g_free(clean);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
287 g_free(buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
292 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
293 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
294 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295
5629
b4e5e815b5f4 [gaim-migrate @ 6036]
Nathan Walp <nwalp@pidgin.im>
parents: 5582
diff changeset
296 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
297 gaim_conv_window_hide(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
298
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 g_free(buf);
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
300 g_free(clean);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
302 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
303 default_formatize(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 static void
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
307 add_remove_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
309 GaimAccount *account;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
312 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
313 name = gaim_conversation_get_name(conv);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
314
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
315 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
316 GaimBuddy *b;
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
317
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
318 b = gaim_find_buddy(account, name);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
319 if (b != NULL)
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
320 show_confirm_del(b);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
321 else if (account != NULL && gaim_account_is_connected(account))
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
322 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
323 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
324 GaimChat *c;
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
325
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
326 c = gaim_blist_find_chat(account, name);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
327 if (c != NULL)
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
328 show_confirm_del_blist_chat(c);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
329 else if (account != NULL && gaim_account_is_connected(account))
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
330 gaim_blist_request_add_chat(account, NULL, NULL);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
331 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
332
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
333 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
335
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
336 static void chat_do_info(GaimConversation *conv, const char *who)
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
337 {
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
338 GaimPluginProtocolInfo *prpl_info = NULL;
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
339 GaimConnection *gc;
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
340
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
341 if ((gc = gaim_conversation_get_gc(conv))) {
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
342 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
343
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
344 /*
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
345 * If there are special needs for getting info on users in
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
346 * buddy chat "rooms"...
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
347 */
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
348 if (prpl_info->get_cb_info != NULL)
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
349 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
350 prpl_info->get_cb_info(gc,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
351 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
352 }
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
353 else
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
354 prpl_info->get_info(gc, who);
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
355 }
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
356 }
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
357
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
358
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
360 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
362 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
366 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
367 serv_get_info(gaim_conversation_get_gc(conv),
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
368 gaim_conversation_get_name(conv));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
369
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
370 gtk_widget_grab_focus(gtkconv->entry);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
371 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
372 /* Get info of the person currently selected in the GtkTreeView */
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
373 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376 GtkTreeSelection *sel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
377 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
381 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
389 chat_do_info(conv, name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
394 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 show_warn_dialog(gaim_conversation_get_gc(conv),
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
397 gaim_conversation_get_name(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
398
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
399 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
401
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
402 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
403 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
404 {
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
405 GaimAccount *account;
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
406
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
407 account = gaim_conversation_get_account(conv);
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
408
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
409 if (account != NULL && gaim_account_is_connected(account))
6399
36eb1f7411fa [gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents: 6398
diff changeset
410 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
411
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
413 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
416 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 const char *buddy, *message;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
419 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423 if (resp == GTK_RESPONSE_OK) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
424 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 message = gtk_entry_get_text(GTK_ENTRY(info->message));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
427 if (!g_ascii_strcasecmp(buddy, "")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
430 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 serv_chat_invite(gaim_conversation_get_gc(info->conv),
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
434 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 message, buddy);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 gtk_widget_destroy(invite_dialog);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439 invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
443
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
444 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
445 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
447 InviteBuddyInfo *info = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 if (invite_dialog == NULL) {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
450 GaimConnection *gc;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
451 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
452 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
455 GtkWidget *table;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456 GtkWidget *img;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
457
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
458 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
459 GTK_ICON_SIZE_DIALOG);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
461 info = g_new0(InviteBuddyInfo, 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
462 info->conv = conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465 win = gaim_conversation_get_window(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468 /* Create the new dialog. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469 invite_dialog = gtk_dialog_new_with_buttons(
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
470 _("Invite Buddy Into Chat Room"),
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
471 GTK_WINDOW(gtkwin->window), 0,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
472 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
473 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
474
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 GTK_RESPONSE_OK);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
478 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
479 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 /* Setup the outside spacing. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482 vbox = GTK_DIALOG(invite_dialog)->vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
483
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 gtk_box_set_spacing(GTK_BOX(vbox), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
485 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
487 /* Setup the inner hbox and put the dialog's icon in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
488 hbox = gtk_hbox_new(FALSE, 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 gtk_container_add(GTK_CONTAINER(vbox), hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493 /* Setup the right vbox. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494 vbox = gtk_vbox_new(FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
495 gtk_container_add(GTK_CONTAINER(hbox), vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
496
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
497 /* Put our happy label in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
498 label = gtk_label_new(_("Please enter the name of the user you wish "
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
499 "to invite, along with an optional invite "
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500 "message."));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
501 gtk_widget_set_size_request(label, 350, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
502 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
503 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
504 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
505
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506 /* hbox for the table, and to give it some spacing on the left. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
507 hbox = gtk_hbox_new(FALSE, 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 gtk_container_add(GTK_CONTAINER(vbox), hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510 /* Setup the table we're going to use to lay stuff out. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
511 table = gtk_table_new(2, 2, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
515 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
517 /* Now the Buddy label */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
520 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
521 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
522
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523 /* Now the Buddy drop-down entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524 info->entry = gtk_combo_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
526 gtk_entry_set_activates_default(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532 /* Fill in the names. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
533 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
534 generate_invite_user_names(gc));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 /* Now the label for "Message" */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544 /* And finally, the Message entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 info->message = gtk_entry_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551 /* Connect the signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 g_signal_connect(G_OBJECT(invite_dialog), "response",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553 G_CALLBACK(do_invite), info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
554 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
555
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
556 gtk_widget_show_all(invite_dialog);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
557
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
558 if (info != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
560 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
561
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
562 static void
7748
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
563 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget)
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
564 {
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
565 show_im_dialog();
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
566 }
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
567
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
568 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
569 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
570 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
571 GaimConvWindow *win = (GaimConvWindow *)data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
572
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
573 save_convo(NULL, gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
574 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
575
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
576 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
577 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
578 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
579 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
580 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
581
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
582 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
583
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
584 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
585 gaim_conversation_get_account(conv));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
586 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
587
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
588 struct _search {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
589 GaimGtkConversation *gtkconv;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
590 GtkWidget *entry;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
591 };
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
592
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
593 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s)
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
594 {
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
595 switch (resp) {
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
596 case GTK_RESPONSE_OK:
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
597 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
598 gtk_entry_get_text(GTK_ENTRY(s->entry)));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
599 break;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
600
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
601 case GTK_RESPONSE_DELETE_EVENT:
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
602 case GTK_RESPONSE_CLOSE:
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
603 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml));
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
604 gtk_widget_destroy(s->gtkconv->dialogs.search);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
605 s->gtkconv->dialogs.search = NULL;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
606 g_free(s);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
607 break;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
608 }
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
609 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
610
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
611 static void
7751
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7748
diff changeset
612 menu_find_cb(gpointer data, guint action, GtkWidget *widget)
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
613 {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
614 GaimConvWindow *win = (GaimConvWindow *)data;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
615 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
616 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
617 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
618 GtkWidget *hbox;
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
619 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
620 GTK_ICON_SIZE_DIALOG);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
621 GtkWidget *label;
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
622 struct _search *s;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
623
7798
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
624 if (gtkconv->dialogs.search) {
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
625 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search));
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
626 return;
7798
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
627 }
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
628
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
629 s = g_malloc(sizeof(struct _search));
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
630 s->gtkconv = gtkconv;
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
631
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
632 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"),
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
633 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
634 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
635 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
636 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
637 GTK_RESPONSE_OK);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
638 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
639 G_CALLBACK(do_search_cb), s);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
640
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
641 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
642 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
643 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
644 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
645 gtk_container_set_border_width(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
646 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
647
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
648 hbox = gtk_hbox_new(FALSE, 12);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
649 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
650 hbox);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
651 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
652
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
653 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
654 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
655 GTK_RESPONSE_OK, FALSE);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
656
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
657 label = gtk_label_new(NULL);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
658 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:"));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
659 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
660
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
661 s->entry = gtk_entry_new();
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
662 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
663 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
664 g_signal_connect(G_OBJECT(s->entry), "changed",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
665 G_CALLBACK(gaim_gtk_set_sensitive_if_input),
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
666 gtkconv->dialogs.search);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
667 gtk_box_pack_start(GTK_BOX(hbox), s->entry, FALSE, FALSE, 0);
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
668
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
669 gtk_widget_show_all(gtkconv->dialogs.search);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
670 gtk_widget_grab_focus(s->entry);
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
671 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
672
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
673 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
674 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
675 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
676 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
677 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
678
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
679 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
680
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
681 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
682 gaim_conversation_get_name(conv), NULL);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
683 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
684
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
685 #if 0
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
686 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
687 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
688 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
689 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
690 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
691 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
692
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
693 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
694 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
695
7927
04c40b1716d0 [gaim-migrate @ 8598]
Mark Doliner <markdoliner@pidgin.im>
parents: 7906
diff changeset
696 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link),
04c40b1716d0 [gaim-migrate @ 8598]
Mark Doliner <markdoliner@pidgin.im>
parents: 7906
diff changeset
697 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link)));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
698 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
699
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
700 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
701 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
702 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
703 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
704 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
705
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
706 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
707
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
708 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
709 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image)));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
710 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
711 #endif
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
712
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
713 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
714 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
715 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
716 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
717 GaimConversation *conv;
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
718 GaimAccount *account;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
719 const char *name;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
720
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
721 conv = gaim_conv_window_get_active_conversation(win);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
722 account = gaim_conversation_get_account(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
723 name = gaim_conversation_get_name(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
724
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
725 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
726 GaimBuddy *b;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
727
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
728 b = gaim_find_buddy(account, name);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
729 if (b != NULL)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
730 alias_dialog_bud(b);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
731 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
732 GaimChat *c;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
733
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
734 c = gaim_blist_find_chat(account, name);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
735 if (c != NULL)
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
736 alias_dialog_blist_chat(c);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
737 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
738 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
739
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
740 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
741 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
742 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
743 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
744 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
745
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
746 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
747
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
748 info_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
749 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
750
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
751 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
752 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
753 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
754 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
755 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
756
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
757 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
758
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
759 invite_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
760 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
761
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
762 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
763 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
764 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
765 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
766 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
767
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
768 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
769
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
770 warn_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
771 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
772
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
773 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
774 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
775 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
776 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
777 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
778
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
779 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
780
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
781 block_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
782 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
783
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
784 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
785 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
786 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
787 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
788 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
789
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
790 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
791
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
792 add_remove_cb(NULL, conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
793 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
794
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
795 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
796 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
797 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
798 GaimConvWindow *win = (GaimConvWindow *)data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
799
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
800 close_conv_cb(NULL, gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
801 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
802
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
803 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
804 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
805 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
806 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
807 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
808
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
809 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
810
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
811 if (conv == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
812 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
813
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
814 gaim_conversation_set_logging(conv,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
817
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
819 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
820 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
821 GaimConvWindow *win = (GaimConvWindow *)data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
822 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
823 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
824
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
825 conv = gaim_conv_window_get_active_conversation(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
826
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
827 if (conv == NULL)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
828 return;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
829
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
830 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
831
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
832 gtkconv->show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
833 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
834
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
835 if (gtkconv->show_formatting_toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
836 gtk_widget_show(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
837 else
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
838 gtk_widget_hide(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
839 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
840
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
841 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
842 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
843 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
844 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
845 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
846 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
847
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
848 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
849
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
850 if (!conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
851 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
852
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
853 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
854
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
855 gtkconv->make_sound =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
856 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
857 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
858
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
859 static void
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
860 chat_do_im(GaimConversation *conv, const char *who)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
861 {
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
862 GaimPluginProtocolInfo *prpl_info = NULL;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
863 char *real_who;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
864 GaimConversation *conv2;
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
865 GaimAccount *account;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
866
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
867 account = gaim_conversation_get_account(conv);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
868
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
869 if(account && account->gc)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
870 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
871
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
872 if(prpl_info && prpl_info->get_cb_real_name)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
873 real_who = prpl_info->get_cb_real_name(account->gc,
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
874 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
875 else
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
876 real_who = g_strdup(who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
877
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
878 if(!real_who)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
879 return;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
880
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
881 conv2 = gaim_find_conversation_with_account(real_who, account);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
882
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
883 if (conv2 != NULL)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
884 gaim_conv_window_show(gaim_conversation_get_window(conv2));
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
885 else
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
886 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
887
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
888 g_free(real_who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
889 }
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
890
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
891
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
892 static void
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
893 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
894 {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
895 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
896 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
897 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
898 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
899 GtkTreeSelection *sel;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
900 const char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
901
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
902 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
903 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
904
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
905 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
906 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
907
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
908 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
909 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
910 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
911 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
912
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
913 chat_do_im(conv, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
914 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
915
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
916 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
917 ignore_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
918 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
919 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
920 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
921 GaimConvChat *chat;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
922 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
923 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
924 GtkTreeSelection *sel;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
925 const char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
926 int pos;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
927
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
928 chat = GAIM_CONV_CHAT(conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
929 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
930 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
931
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
932 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
933 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
934
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
935 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
936 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
937 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
938 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
939 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
940 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
942 pos = g_list_index(gaim_conv_chat_get_users(chat), name);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
943
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
944 if (gaim_conv_chat_is_user_ignored(chat, name))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
945 gaim_conv_chat_unignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
946 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
947 gaim_conv_chat_ignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
948
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
949 add_chat_buddy_common(conv, name, pos);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
950 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
951
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
952 static void
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
953 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
954 {
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
955 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
956
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
957 chat_do_im(conv, who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
958 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
959
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
960 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
961 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
962 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
963 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
964
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
965 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
966
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
967 chat_do_info(conv, who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
968 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
969
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
970 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
971 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
972 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
974 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
975 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
976
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
977 gc = gaim_conversation_get_gc(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
978 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
979
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
980 if (gc != NULL) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
981 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
983 /*
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
984 * May want to expand this to work similarly to menu_info_cb?
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
987 if (prpl_info->get_cb_away != NULL)
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
988 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
989 prpl_info->get_cb_away(gc,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
990 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
991 }
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
992 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
993 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
994
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
995 static void
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
996 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
997 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
998 GaimAccount *account;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
999 GaimBuddy *b;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1000 char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1001
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1002 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1003 name = g_object_get_data(G_OBJECT(w), "user_data");
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1004 b = gaim_find_buddy(account, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1005
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1006 if (b != NULL)
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5966
diff changeset
1007 show_confirm_del(b);
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1008 else if (account != NULL && gaim_account_is_connected(account))
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1009 gaim_blist_request_add_buddy(account, name, NULL, NULL);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1010
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1011 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1012 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1014 static GtkWidget *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1015 create_chat_menu(GaimConversation *conv, gchar *who,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1016 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1017 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1018 static GtkWidget *menu = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1019 GtkWidget *button;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1020
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1021 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1022 * If a menu already exists, destroy it before creating a new one,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1023 * thus freeing-up the memory it occupied.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1024 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1025 if (menu)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1026 gtk_widget_destroy(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1027
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1028 menu = gtk_menu_new();
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1029
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1030 button = gtk_menu_item_new_with_label(_("IM"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1031 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1032 G_CALLBACK(menu_chat_im_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1033 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1034 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1035 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1036
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1037 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1038 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1039 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1040 button = gtk_menu_item_new_with_label(_("Ignore"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1041
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1042 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1043 G_CALLBACK(ignore_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1044 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1045 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1046 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1047
8170
f034b2951a24 [gaim-migrate @ 8883]
Gary Kramlich <grim@pidgin.im>
parents: 8159
diff changeset
1048 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1049 button = gtk_menu_item_new_with_label(_("Info"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1050 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1051 G_CALLBACK(menu_chat_info_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1052 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1053 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1054 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1055 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1056
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1057 if (gc && prpl_info->get_cb_away) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1058 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1059 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1060 G_CALLBACK(menu_chat_get_away_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1061 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1062 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1063 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1064 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1065
8170
f034b2951a24 [gaim-migrate @ 8883]
Gary Kramlich <grim@pidgin.im>
parents: 8159
diff changeset
1066 /* XXX: jabber can only add buddies from here in certain circumstances */
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1067 /* Added by Jonas <jonas@birme.se> */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1068 if (gc) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1069 if (gaim_find_buddy(gc->account, who))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1070 button = gtk_menu_item_new_with_label(_("Remove"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1071 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1072 button = gtk_menu_item_new_with_label(_("Add"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1073
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1074 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1075 G_CALLBACK(menu_chat_add_remove_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1076
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1077 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1078 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1079 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1080 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1081 /* End Jonas */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1082
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1083 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1084 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1085
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1086
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1087 static gint
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1088 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1089 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1090 GaimGtkConversation *gtkconv;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1091 GaimPluginProtocolInfo *prpl_info = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1092 GaimGtkChatPane *gtkchat;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1093 GaimConnection *gc;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1094 GaimAccount *account;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1095 GtkTreeSelection *sel;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1096 GtkTreeIter iter;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1097 GtkTreeModel *model;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1098 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1099 gchar *who;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1100
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1101 gtkconv = GAIM_GTK_CONVERSATION(conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1102 gtkchat = gtkconv->u.chat;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1103 account = gaim_conversation_get_account(conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1104 gc = account->gc;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1105
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1106 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1107
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1108 if (gc != NULL)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1109 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1110
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1111 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1112 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1113 return FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1114
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1115 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1116 menu = create_chat_menu (conv, who, prpl_info, gc);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1117 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1118 gaim_gtk_treeview_popup_menu_position_func, widget,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1119 0, GDK_CURRENT_TIME);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1120
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1121 return TRUE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1122 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1123
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1124
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1125 static gint
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1126 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1127 GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1128 {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1129 GaimGtkConversation *gtkconv;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1130 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1131 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1132 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1133 GaimAccount *account;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1134 GtkTreePath *path;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1135 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1136 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1137 GtkTreeViewColumn *column;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1138 gchar *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1139 int x, y;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1140
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1141 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1142 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1143 account = gaim_conversation_get_account(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1144 gc = account->gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1145
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1146 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1147
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1148 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1149 event->x, event->y, &path, &column, &x, &y);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1150
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1151 if (path == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1152 return FALSE;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1153
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1154 if (gc != NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1155 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1156
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1157 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1158 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1159
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1160 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1161 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1162
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1163 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1164 chat_do_im(conv, who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1165 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1166 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1167 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1168 event->button, event->time);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1169 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1170
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1171 return TRUE;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1172 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1173
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1174 static void
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1175 move_to_next_unread_tab(GaimConversation *conv)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1176 {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1177 GaimConversation *next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1178 GaimConvWindow *win;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1179 GList *l;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1180 int index, i;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1181
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1182 win = gaim_conversation_get_window(conv);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1183 index = gaim_conversation_get_index(conv);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1184
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1185 /* First check the tabs after this position. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1186 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1187 l != NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1188 l = l->next) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1189
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1190 next_conv = (GaimConversation *)l->data;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1191
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1192 if (gaim_conversation_get_unseen(next_conv) > 0)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1193 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1194
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1195 next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1196 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1197
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1198 if (next_conv == NULL) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1199
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1200 /* Now check before this position. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1201 for (l = gaim_conv_window_get_conversations(win), i = 0;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1202 l != NULL && i < index;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1203 l = l->next) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1204
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1205 next_conv = (GaimConversation *)l->data;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1206
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1207 if (gaim_conversation_get_unseen(next_conv) > 0)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1208 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1209
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1210 next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1211 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1212
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1213 if (next_conv == NULL) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1214 /* Okay, just grab the next conversation tab. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1215 if (index == gaim_conv_window_get_conversation_count(win) - 1)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1216 next_conv = gaim_conv_window_get_conversation_at(win, 0);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1217 else
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1218 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1219 next_conv = gaim_conv_window_get_conversation_at(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1220 index + 1);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1221 }
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1222 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1223 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1224
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1225 if (next_conv != NULL && next_conv != conv) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1226 gaim_conv_window_switch_conversation(win,
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1227 gaim_conversation_get_index(next_conv));
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1228 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1229 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1230
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1231 static gboolean
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1232 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1233 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1234 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1235 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1236 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1237 GaimGtkWindow *gtkwin;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1238 int numconvs;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1239 int curconv;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1240
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1241 conv = (GaimConversation *)data;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1242 gtkconv = GAIM_GTK_CONVERSATION(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1243 win = gaim_conversation_get_window(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1244 gtkwin = GAIM_GTK_WINDOW(win);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1245 numconvs = gaim_conv_window_get_conversation_count(win);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1246 curconv = gaim_conversation_get_index(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1247
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1248 /* If CTRL was held down... */
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1249 if (event->state & GDK_CONTROL_MASK) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1250 switch (event->keyval) {
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1251 case GDK_Return:
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1252 case GDK_KP_Enter:
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1253 if (gaim_prefs_get_bool(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1254 "/gaim/gtk/conversations/ctrl_enter_sends"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1255 {
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1256 send_cb(NULL, conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1257
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1258 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1259 }
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1260 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1261
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1262 case GDK_Up:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1263 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1264 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1265
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1266 if (!conv->send_history->prev) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1267 GtkTextIter start, end;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1268
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1269 if (conv->send_history->data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1270 g_free(conv->send_history->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1271
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1272 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1273 &start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1274 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1275
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1276 conv->send_history->data =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1277 gtk_text_buffer_get_text(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1278 &start, &end, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1279 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1280
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1281 if (conv->send_history->next &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1282 conv->send_history->next->data) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1283
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1284 conv->send_history = conv->send_history->next;
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
1285 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1286 gtk_imhtml_append_text_with_images(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1287 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1288 0, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1289 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1290
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1291 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1292 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1293
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1294 case GDK_Down:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1295 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1296 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1297
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1298 if (conv->send_history->prev &&
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1299 conv->send_history->prev->data) {
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1300
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1301 conv->send_history = conv->send_history->prev;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1302 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1303 gtk_imhtml_append_text_with_images(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1304 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1305 0, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1306 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1307
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1308 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1309 break;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1310
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1311 case GDK_Page_Down:
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1312 case ']':
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1313 gaim_conv_window_switch_conversation(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1314 (curconv + 1) % numconvs);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1315
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1316 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1317 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1318
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1319 case GDK_Page_Up:
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1320 case '[':
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1321 gaim_conv_window_switch_conversation(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1322 (curconv + numconvs - 1) % numconvs);
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1323
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1324 return TRUE;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1325 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1326
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1327 case GDK_Tab:
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1328 move_to_next_unread_tab(conv);
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1329
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1330 return TRUE;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1331 break;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1332
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1333 case 'l':
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1334 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1335 g_string_free(conv->history, TRUE);
8229
1c8ea1eaee6a [gaim-migrate @ 8952]
Etan Reisner <deryni@pidgin.im>
parents: 8228
diff changeset
1336 conv->history = NULL;
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1337
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1338 return TRUE;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1339 break;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1340
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1341 case 'z':
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1342 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1343
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1344 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1345 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1346
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1347 } /* End of switch */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1348
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1349 #if 0
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1350 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1351 switch (event->keyval) {
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1352
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
1353
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1354 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1355 } /* End of switch */
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1356
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1357 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1358 char buf[7];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1360 *buf = '\0';
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1361
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1362 switch (event->keyval) {
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1363
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1364 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1365
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1366
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1367 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1368 #endif
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1369
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1370 }
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1371 /* If ALT (or whatever) was held down... */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1372 else if (event->state & GDK_MOD1_MASK)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1373 {
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1374 /* XXX - Make sure the conv exists befeore switching to it */
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1375 if (event->keyval > '0' && event->keyval <= '9') {
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1376 int switchto = event->keyval - '1';
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1377 if (switchto < numconvs)
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1378 gaim_conv_window_switch_conversation(win, switchto);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1379
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1380 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1381 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1382 }
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1383 /* If neither CTRL nor ALT were held down... */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1384 else
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1385 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1386 switch (event->keyval)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1387 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1388 case GDK_Return:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1389 case GDK_KP_Enter:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1390 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1391 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1392 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1393 send_cb(NULL, conv);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1394 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1395 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1396 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1397
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1398 case GDK_Tab:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1399 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1400 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1401 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1402 tab_complete(conv);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1403 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1404 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1405 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1406
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1407 case GDK_Page_Up:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1408 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1409 return TRUE;
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1410 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1411
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1412 case GDK_Page_Down:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1413 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1414 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1415 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1416
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1417 case GDK_F2:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1418 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps",
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1419 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1420 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1421 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1422
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1423 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1424 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1425
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1426 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1427 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1428
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1429 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1430 * NOTE:
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1431 * This guy just kills a single right click from being propagated any
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1432 * further. I have no idea *why* we need this, but we do ... It
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1433 * prevents right clicks on the GtkTextView in a convo dialog from
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1434 * going all the way down to the notebook. I suspect a bug in
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1435 * GtkTextView, but I'm not ready to point any fingers yet.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1436 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1437 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1438 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1439 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1440 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1441 /* Right single click */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1442 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1443
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1444 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1445 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1446
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1447 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1448 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1449
8173
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1450 /*
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1451 * If someone tries to type into the conversation backlog of a
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1452 * conversation window then we yank focus from the conversation backlog
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1453 * and give it to the text entry box so that people can type
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1454 * all the live long day and it will get entered into the entry box.
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1455 */
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1456 static gboolean
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1457 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1458 {
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1459 GaimGtkConversation *gtkconv = data;
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1460
8237
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1461 /* If we have a valid key for the conversation display, then exit */
8224
3846a02b8d66 [gaim-migrate @ 8947]
Mark Doliner <markdoliner@pidgin.im>
parents: 8202
diff changeset
1462 if ((event->state & GDK_CONTROL_MASK) ||
8237
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1463 (event->keyval == GDK_F10) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1464 (event->keyval == GDK_Shift_L) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1465 (event->keyval == GDK_Shift_R) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1466 (event->keyval == GDK_Escape) ||
8177
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1467 (event->keyval == GDK_Up) ||
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1468 (event->keyval == GDK_Down) ||
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1469 (event->keyval == GDK_Left) ||
8191
0c2d139d5f15 [gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents: 8189
diff changeset
1470 (event->keyval == GDK_Right) ||
0c2d139d5f15 [gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents: 8189
diff changeset
1471 (event->keyval == GDK_Home) ||
0c2d139d5f15 [gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents: 8189
diff changeset
1472 (event->keyval == GDK_End))
8177
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1473 return FALSE;
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1474
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1475 if (event->type == GDK_KEY_RELEASE)
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1476 gtk_widget_grab_focus(gtkconv->entry);
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1477
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1478 gtk_widget_event(gtkconv->entry, (GdkEvent *)event);
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1479
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1480 return TRUE;
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1481 }
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1482
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1483 static void
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1484 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1485 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1486 GaimConvWindow *win = g_object_get_data(m, "user_data");
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1487 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1488 GaimConversation *conv;
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1489 GaimGtkConversation *gtkconv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1490 GaimPlugin *protocol;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1491
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1492 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1493
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1494 gaim_conversation_set_account(conv, account);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1495
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1496 gtkconv = GAIM_GTK_CONVERSATION(conv);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1497 protocol = gaim_find_prpl(conv->account->protocol_id);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1498 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1499 protocol->info->name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1500 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1501
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1502 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1504 gchar *new_text, gint new_text_length, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1505 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1506 GaimConversation *conv = (GaimConversation *)user_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1507
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1508 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1509
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1510 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1511 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1512
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1513 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1514 gtk_text_iter_is_end(position)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1515 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1516
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1517 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1518 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1519 GtkTextIter *end_pos, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1520 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1521 GaimConversation *conv = (GaimConversation *)user_data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1522 GaimConvIm *im;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1523
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1524 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1525
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1526 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1527 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1528
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1529 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1530
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1531 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1532
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1533 /* We deleted all the text, so turn off typing. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1534 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1535 gaim_conv_im_stop_type_again_timeout(im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1536
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1537 serv_send_typing(gaim_conversation_get_gc(conv),
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1538 gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1539 GAIM_NOT_TYPING);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1540 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1541 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542 /* We're deleting, but not all of it, so it counts as typing. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1543 got_typing_keypress(conv, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1544 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1545 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1546
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1547 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1548 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1549 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1550 static GdkCursor *cursor = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1551
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1552 gtkwin->in_drag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1553
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1554 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1555 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1558 gtkwin->drag_leave_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561 if (cursor == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562 cursor = gdk_cursor_new(GDK_FLEUR);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1563
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564 /* Grab the pointer */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565 gtk_grab_add(gtkwin->notebook);
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1566 #ifndef _WIN32
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1567 /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1568 always be true after a button press. */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1569 if (!gdk_pointer_is_grabbed())
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1570 #endif
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1571 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1572 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1573 NULL, cursor, GDK_CURRENT_TIME);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1574 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1577 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1579 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1580
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1584 * Make sure the user moved the mouse far enough for the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1585 * drag to be initiated.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1586 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1588 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1591 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1592
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1594 notebook_init_grab(gtkwin, widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1595 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1596 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1597 else { /* Otherwise, draw the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1598 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1599 GaimGtkWindow *dest_gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1600 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1601 GtkWidget *tab, *last_vis_tab = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1602 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604 gboolean horiz_tabs = FALSE, tab_found = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1605 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1607 /* Get the window that the cursor is over. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1608 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1610 if (dest_win == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1612
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1613 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1614 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1615
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1616 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1618 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1619
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1620 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1621
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1622 arrow1_x = arrow2_x = nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1623 arrow1_y = arrow2_y = nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1624
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1625 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1626 e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1627
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1628 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1629 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1630
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1631 horiz_tabs = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1632 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1633
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1634 /* Find out where to put the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1635 for (l = gaim_conv_window_get_conversations(dest_win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1636 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1637 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1638
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1639 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1640
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1641 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1642
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1643 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1644 * If this is the correct tab, record the positions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1645 * for the arrows.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1646 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1647 if (i == page_num) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 arrow1_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1651 arrow2_y = nb_y + tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1652 tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1653 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1654 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1655 arrow1_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1656 arrow2_x = nb_x + tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1657 tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1658 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1659 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1660
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661 tab_found = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1662 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1663 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1664 else { /* Keep track of the right-most tab that we see. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1665 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1666 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 last_vis_tab_loc = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1669 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 last_vis_tab_loc = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677 * If we didn't find the tab, then we'll just place the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678 * arrows to the right/bottom of the last visible tab.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 if (!tab_found && last_vis_tab) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1684 arrow1_y = nb_y + last_vis_tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685 arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1689 arrow1_x = nb_x + last_vis_tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1690 arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1695 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1701 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1707 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1711 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1712 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1713 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 if (gtkwin->in_drag)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1721 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726 notebook_init_grab(gtkwin, widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1731
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1732 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1733 * THANK YOU GALEON!
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1734 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1735 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1736 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1737 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1738 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1739 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1740 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1741 int tab_clicked;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1742
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1743 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1744 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1746 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1747
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1748 if (gtkwin->in_drag) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1749 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1750 "Already in the middle of a window drag at tab_press_cb\n");
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1751 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1752 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1753
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1754 /*
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1755 * Make sure a tab was actually clicked. The arrow buttons
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1756 * mess things up.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1757 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1758 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1759
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1760 if (tab_clicked == -1)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1761 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1762
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1764 * Get the relative position of the press event, with regards to
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1765 * the position of the notebook.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1767 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1769 x_rel = e->x_root - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1770 y_rel = e->y_root - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1771
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1772 /* Reset the min/max x/y */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 gtkwin->drag_min_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 gtkwin->drag_min_y = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 gtkwin->drag_max_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 gtkwin->drag_max_y = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 /* Find out which tab was dragged. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1779 for (l = gaim_conv_window_get_conversations(win); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1780 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 if (!GTK_WIDGET_VISIBLE(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1787 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1789 /* Save the borders of the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 gtkwin->drag_min_x = tab->allocation.x + nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791 gtkwin->drag_min_y = tab->allocation.y + nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 /* Make sure the click occurred in the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1802 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1803 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1805 gtkwin->in_predrag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1807 /* Connect the new motion signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 gtkwin->drag_motion_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810 G_CALLBACK(notebook_motion_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812 gtkwin->drag_leave_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1813 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1814 G_CALLBACK(notebook_leave_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1815
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1816 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1819 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1820 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1822 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1823 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1824 GaimGtkWindow *dest_gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1825 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827 gint dest_page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1829 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 * Don't check to make sure that the event's window matches the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831 * widget's, because we may be getting an event passed on from the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1832 * close button.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1833 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837 if (gdk_pointer_is_grabbed()) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838 gdk_pointer_ungrab(GDK_CURRENT_TIME);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839 gtk_grab_remove(widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1844 if (!gtkwin->in_predrag && !gtkwin->in_drag)
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1845 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1847 /* Disconnect the motion signal. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1848 if (gtkwin->drag_motion_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1849 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1850 gtkwin->drag_motion_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1851
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1852 gtkwin->drag_motion_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1853 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1854
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1855 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1856 * If we're in a pre-drag, we'll also need to disconnect the leave
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1857 * signal.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1858 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1860 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866 gtkwin->drag_leave_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870 /* If we're not in drag... */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871 /* We're perfectly normal people! */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1872 if (!gtkwin->in_drag)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1873 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875 gtkwin->in_drag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1877 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1878
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1879 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1880
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1881 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883 if (dest_win == NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1884 if (gaim_conv_window_get_conversation_count(win) < 2)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1887 if (gaim_conv_window_get_conversation_count(win) > 1) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1888 /* Make a new window to stick this to. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1889 GaimConvWindow *new_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1890 GaimGtkWindow *new_gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1891 GaimGtkConversation *gtkconv;
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1892 gint win_width, win_height;
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1893
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1894 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1895
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1896 new_win = gaim_conv_window_new();
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1897
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1898 gaim_conv_window_add_conversation(new_win,
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1899 gaim_conv_window_remove_conversation(win,
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1900 gaim_conversation_get_index(conv)));
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1901
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1902 new_gtkwin = GAIM_GTK_WINDOW(new_win);
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1903
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1904 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1905 &win_width, &win_height);
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1906
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1907 gtk_window_move(GTK_WINDOW(new_gtkwin->window),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1908 e->x_root - (win_width / 2),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1909 e->y_root - (win_height / 2));
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1910
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1911 gaim_conv_window_show(new_win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1914 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1915 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1916
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1917 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1918
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919 /* Get the destination notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1920 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922 /* Get the destination page number. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1924 e->x_root, e->y_root);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 if (win == dest_win) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1927 gaim_conv_window_move_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1928 gaim_conversation_get_index(conv), dest_page_num);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1930 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 size_t pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1933 gaim_conv_window_remove_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934 gaim_conversation_get_index(conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1936 pos = gaim_conv_window_add_conversation(dest_win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937
5901
6240aab0e957 [gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents: 5881
diff changeset
1938 if (pos != dest_page_num)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1939 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1940
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1941 gaim_conv_window_switch_conversation(dest_win, dest_page_num);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1942 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1943
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1944 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1945
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1946 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1947 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1948
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1949 /**************************************************************************
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1950 * A bunch of buddy icon functions
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1951 **************************************************************************/
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1952 static GdkPixbuf *
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1953 get_tab_icon(GaimConversation *conv)
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1954 {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1955 GaimAccount *account = gaim_conversation_get_account(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1956 const char *name = gaim_conversation_get_name(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1957 GdkPixbuf *status = NULL;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1958
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1959 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1960 GaimBuddy *b = gaim_find_buddy(account, name);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1961 if (b != NULL) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1962 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b,
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1963 GAIM_STATUS_ICON_SMALL);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1964 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1965 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1966
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1967 if (!status) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1968 GdkPixbuf *pixbuf;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1969 pixbuf = create_prpl_icon(account);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1970
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1971 if (pixbuf) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1972 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15,
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1973 GDK_INTERP_BILINEAR);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1974 g_object_unref(pixbuf);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1975 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1976 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1977 return status;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1978 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
1979
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1980 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1981 update_tab_icon(GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1982 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1983 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1984 GaimConvWindow *win = gaim_conversation_get_window(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1985 GaimAccount *account;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1986 const char *name;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1987 GdkPixbuf *status = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1988
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1989 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1990 name = gaim_conversation_get_name(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1991 account = gaim_conversation_get_account(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1992
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1993 status = get_tab_icon(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1994
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1995 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1996 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
1997
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1998 if (gaim_conv_window_get_active_conversation(win) == conv &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1999 gtkconv->u.im->anim == NULL)
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2000 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2001
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2002 if(status)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2003 g_object_unref(status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2004 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2005
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2006 static gboolean
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2007 redraw_icon(gpointer data)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2008 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2009 GaimConversation *conv = (GaimConversation *)data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2010 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2011
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2012 GdkPixbuf *buf;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2013 GdkPixbuf *scale;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2014 GdkPixmap *pm;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2015 GdkBitmap *bm;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2016 gint delay;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2017
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2018 if (!g_list_find(gaim_get_ims(), conv)) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2019 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2020 "Conversation not found in redraw_icon. I think this "
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2021 "is a bug.\n");
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2022 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2023 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2024
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2025 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2026
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2027 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2028 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2029
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2030 scale = gdk_pixbuf_scale_simple(buf,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2031 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) /
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2032 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2033 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) /
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2034 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2035 GDK_INTERP_NEAREST);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2036
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2037 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2038 g_object_unref(G_OBJECT(scale));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2039 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2040 g_object_unref(G_OBJECT(pm));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2041 gtk_widget_queue_draw(gtkconv->u.im->icon);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2042
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2043 if (bm)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2044 g_object_unref(G_OBJECT(bm));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2045
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2046 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2047
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2048 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2049
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2050 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2051 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2052
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2053 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2054 start_anim(GtkObject *obj, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2055 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2056 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2057 int delay;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2058
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2059 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2060 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2061
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2062 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2063
8228
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2064 if (gtkconv->u.im->anim == NULL)
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2065 return;
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2066
8202
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2067 if (gtkconv->u.im->icon_timer != 0)
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2068 return;
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2069
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2070 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2071 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2072
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2073 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2074
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2075 if (gtkconv->u.im->anim)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2076 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2077 conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2078 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2079
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2080 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2081 stop_anim(GtkObject *obj, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2082 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2083 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2084
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2085 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2086 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2087
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2088 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2089
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2090 if (gtkconv->u.im->icon_timer != 0)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2091 g_source_remove(gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2092
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2093 gtkconv->u.im->icon_timer = 0;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2094 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2095
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2096 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2097 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2098 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2099 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2100
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2101 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2102 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2103
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2104 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2105
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2106 gtkconv->u.im->animate =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2107 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w));
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2108
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2109 if (gtkconv->u.im->animate)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2110 start_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2111 else
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2112 stop_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2113 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2114 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2115 remove_icon(GaimGtkConversation *gtkconv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2116 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2117 g_return_if_fail(gtkconv != NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2118
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2119 if (gtkconv->u.im->icon != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2120 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2121 gtkconv->u.im->icon->parent->parent);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2122
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2123 if (gtkconv->u.im->anim != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2124 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2125
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2126 if (gtkconv->u.im->icon_timer != 0)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2127 g_source_remove(gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2128
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2129 if (gtkconv->u.im->iter != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2130 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2131
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2132 gtkconv->u.im->icon_timer = 0;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2133 gtkconv->u.im->icon = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2134 gtkconv->u.im->anim = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2135 gtkconv->u.im->iter = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2136 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2137
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2138 static gboolean
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2139 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2140 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2141 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2142 static GtkWidget *menu = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2143 GtkWidget *button;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2144
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2145 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2146 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2147
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2148 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2149
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2150 /*
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2151 * If a menu already exists, destroy it before creating a new one,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2152 * thus freeing-up the memory it occupied.
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2153 */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2154 if (menu != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2155 gtk_widget_destroy(menu);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2156
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2157 menu = gtk_menu_new();
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2158
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2159 if (gtkconv->u.im->anim &&
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2160 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2161 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2162 gaim_new_check_item(menu, _("Animate"),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2163 G_CALLBACK(toggle_icon_animate_cb), conv,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2164 gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2165 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2166
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2167 button = gtk_menu_item_new_with_label(_("Hide Icon"));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2168 g_signal_connect_swapped(G_OBJECT(button), "activate",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2169 G_CALLBACK(remove_icon), gtkconv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2170 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2171 gtk_widget_show(button);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2172
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2173 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2174 G_CALLBACK(gaim_gtk_save_icon_dialog), conv,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2175 0, 0, NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2176
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2177 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2178
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2179 return TRUE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2180 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2181 /**************************************************************************
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2182 * End of the bunch of buddy icon functions
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2183 **************************************************************************/
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2184
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2185 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2186 * Makes sure all the menu items and all the buttons are hidden/shown and
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2187 * sensitive/insensitve. This is called after changing tabs and when an
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2188 * account signs on or off.
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2189 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2190 static void
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2191 gray_stuff_out(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2192 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2193 GaimConvWindow *win;
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2194 GaimGtkWindow *gtkwin;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2195 GaimGtkConversation *gtkconv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2196 GaimConnection *gc;
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2197 GaimPluginProtocolInfo *prpl_info = NULL;
7222
0db5e5ca0104 [gaim-migrate @ 7791]
Sean Egan <seanegan@pidgin.im>
parents: 7219
diff changeset
2198 GdkPixbuf *window_icon = NULL;
8439
4960eeede00d [gaim-migrate @ 9169]
Mark Doliner <markdoliner@pidgin.im>
parents: 8427
diff changeset
2199 GtkIMHtmlButtons buttons;
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2200
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2201 win = gaim_conversation_get_window(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2202 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2203 gtkconv = GAIM_GTK_CONVERSATION(conv);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2204 gc = gaim_conversation_get_gc(conv);
8439
4960eeede00d [gaim-migrate @ 9169]
Mark Doliner <markdoliner@pidgin.im>
parents: 8427
diff changeset
2205
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2206 if (gc != NULL)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2207 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2208
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2209 if (gtkwin->menu.send_as != NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2210 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2211
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2212 /*
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2213 * Handle hiding and showing stuff based on what type of conv this is.
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2214 * Stuff that Gaim IMs support in general should be shown for IM
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2215 * conversations. Stuff that Gaim chats support in gerneal should be
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2216 * shown for chat conversations. It doesn't matter whether the PRPL
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2217 * supports it or not--that only affects if the button or menu item
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2218 * is sensitive or not.
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2219 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2220 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2221 /* Show stuff that applies to IMs, hide stuff that applies to chats */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2222
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2223 /* Deal with buttons */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2224 gtk_widget_show(gtkconv->info);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2225 gtk_widget_show(gtkconv->send);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2226 gtk_widget_show(gtkconv->u.im->warn);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2227 gtk_widget_show(gtkconv->u.im->block);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2228
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2229 /* Deal with menu items */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2230 gtk_widget_show(gtkwin->menu.view_log);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2231 gtk_widget_show(gtkwin->menu.add_pounce);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2232 gtk_widget_show(gtkwin->menu.get_info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2233 gtk_widget_show(gtkwin->menu.warn);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2234 gtk_widget_hide(gtkwin->menu.invite);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2235 gtk_widget_show(gtkwin->menu.alias);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2236 gtk_widget_show(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2237
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2238 if (gaim_find_buddy(gaim_conversation_get_account(conv),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2239 gaim_conversation_get_name(conv)) == NULL) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2240 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2241 gtk_widget_hide(gtkwin->menu.remove);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2242 gtk_widget_show(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2243 gtk_widget_hide(gtkconv->remove);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2244 } else {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2245 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2246 gtk_widget_hide(gtkwin->menu.add);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2247 gtk_widget_hide(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2248 gtk_widget_show(gtkconv->remove);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2249 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2250
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2251 gtk_widget_show(gtkwin->menu.insert_link);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2252 gtk_widget_show(gtkwin->menu.insert_image);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2253 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2254 /* Show stuff that applies to IMs, hide stuff that applies to chats */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2255
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2256 /* Deal with buttons */
7952
fbd557e4a88a [gaim-migrate @ 8626]
Mark Doliner <markdoliner@pidgin.im>
parents: 7949
diff changeset
2257 gtk_widget_show(gtkconv->info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2258 gtk_widget_show(gtkconv->send);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2259 gtk_widget_show(gtkconv->u.chat->invite);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2260
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2261 /* Deal with menu items */
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2262 gtk_widget_hide(gtkwin->menu.view_log);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2263 gtk_widget_hide(gtkwin->menu.add_pounce);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2264 gtk_widget_hide(gtkwin->menu.get_info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2265 gtk_widget_hide(gtkwin->menu.warn);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2266 gtk_widget_show(gtkwin->menu.invite);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2267 gtk_widget_show(gtkwin->menu.alias);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2268 gtk_widget_hide(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2269
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2270 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2271 gaim_conversation_get_name(conv)) == NULL) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2272 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2273 gtk_widget_hide(gtkwin->menu.remove);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2274 gtk_widget_show(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2275 gtk_widget_hide(gtkconv->remove);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2276 } else {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2277 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2278 gtk_widget_hide(gtkwin->menu.add);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2279 gtk_widget_hide(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2280 gtk_widget_show(gtkconv->remove);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2281 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2282
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2283 gtk_widget_show(gtkwin->menu.insert_link);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2284 gtk_widget_hide(gtkwin->menu.insert_image);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2285 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2286
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2287 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2288 * Handle graying stuff out based on whether an account is connected
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2289 * and what features that account supports.
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2290 */
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2291 if ((gc != NULL) &&
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2292 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) ||
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2293 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) {
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2294 /* Account is online */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2295
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2296 /* Deal with buttons */
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2297 gtk_widget_set_sensitive(gtkconv->add, TRUE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2298 gtk_widget_set_sensitive(gtkconv->remove, TRUE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2299 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2300
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2301 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2302 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2303 gtk_widget_set_sensitive(gtkconv->send,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2304 (prpl_info->send_im != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2305 gtk_widget_set_sensitive(gtkconv->u.im->warn,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2306 (prpl_info->warn != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2307 gtk_widget_set_sensitive(gtkconv->u.im->block,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2308 (prpl_info->add_deny != NULL));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2309 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2310 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2311 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2312 gtk_widget_set_sensitive(gtkconv->send,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2313 (prpl_info->chat_send != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2314 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2315 (prpl_info->chat_invite != NULL));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2316 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2317
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2318 /* Deal with the toolbar */
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2319
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2320 if (gc->flags & GAIM_CONNECTION_HTML) {
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2321 buttons = -1; /* Everything on */
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2322 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE))
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2323 buttons &= ~GTK_IMHTML_IMAGE;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2324 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR)
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2325 buttons &= ~GTK_IMHTML_BACKCOLOR;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2326 } else {
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2327 buttons = GTK_IMHTML_SMILEY;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2328 }
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2329 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8422
diff changeset
2330 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv)));
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2331
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2332 #if 0
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2333 /* Deal with menu items */
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2334 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2335 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2336 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2337 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2338 gtk_widget_set_sensitive(gtkwin->menu.invite,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2339 (prpl_info->chat_invite != NULL));
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2340 #endif
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2341
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2342 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2343 if (gaim_find_buddy(gaim_conversation_get_account(conv),
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2344 gaim_conversation_get_name(conv)) == NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2345 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2346 else
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2347 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2348 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2349 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2350 gaim_conversation_get_name(conv)) == NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2351 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2352 else
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2353 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2354 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2355
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2356 gtk_widget_set_sensitive(gtkwin->menu.block,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2357 (prpl_info->add_deny != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2358 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2359 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2360 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2361 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2362 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2363 } else {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2364 /* Account is offline */
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2365 /* Or it's a chat where we left. */
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2366
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2367 /* Deal with buttons */
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2368 gtk_widget_set_sensitive(gtkconv->add, FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2369 gtk_widget_set_sensitive(gtkconv->remove, FALSE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2370 gtk_widget_set_sensitive(gtkconv->info, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2371 gtk_widget_set_sensitive(gtkconv->send, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2372 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2373 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2374 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2375 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2376 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2377 }
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2378
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2379 /* Then deal with menu items */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2380 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2381 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2382 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2383 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2384 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2385 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2386 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2387 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2388 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2389 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2390 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2391 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2392
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2393 /*
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2394 * Update the window's icon
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2395 */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2396 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2397 (gtkconv->u.im->anim))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2398 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2399 window_icon =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2400 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2401 g_object_ref(window_icon);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2402 } else {
7219
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2403 window_icon = get_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2404 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2405 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2406 g_object_unref(G_OBJECT(window_icon));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2407 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2408
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2409 static void
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2410 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2411 gpointer user_data)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2412 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2413 GaimConvWindow *win;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2414 GaimConversation *conv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2415 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2416
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2417 win = (GaimConvWindow *)user_data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2418 conv = gaim_conv_window_get_active_conversation(win);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2419
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2420 g_return_if_fail(conv != NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2421
8192
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2422 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM)
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2423 return;
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2424
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2425 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2426
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2427 stop_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2428 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2429
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2430 static void
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2431 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2432 gpointer user_data)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2433 {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2434 GaimConvWindow *win;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2435 GaimConversation *conv;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2436 GaimGtkConversation *gtkconv;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2437 GaimGtkWindow *gtkwin;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2438
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2439 win = (GaimConvWindow *)user_data;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2440 conv = gaim_conv_window_get_conversation_at(win, page_num);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2441
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2442 g_return_if_fail(conv != NULL);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2443
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2444 gtkwin = GAIM_GTK_WINDOW(win);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2445 gtkconv = GAIM_GTK_CONVERSATION(conv);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2446
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2447 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2448
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2449 /* Update the menubar */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2450 gray_stuff_out(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2451
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2452 update_typing_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2453
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2454 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2455 gaim_conversation_is_logging(conv));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2456
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2457 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2458 gtkconv->make_sound);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2459
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2460 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2461 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2462 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2463
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2464 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2465 * We pause icons when they are not visible. If this icon should
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2466 * be animated then start it back up again.lll
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2467 */
8192
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2468 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2469 (gtkconv->u.im->animate))
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2470 start_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2471
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2472 gtk_widget_grab_focus(gtkconv->entry);
4681
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
2473
4965
484e7ce9532a [gaim-migrate @ 5299]
Sean Egan <seanegan@pidgin.im>
parents: 4963
diff changeset
2474 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2475 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2476 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2477
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2478 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2479 * Utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2480 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2481
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2482 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2483 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2484 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2485 GaimConvIm *im;
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2486
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2487 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2488 * We know we got something, so we at least have to make sure we don't
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2489 * send GAIM_TYPED any time soon.
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2490 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2491
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2492 im = GAIM_CONV_IM(conv);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2493
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2494 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2495 gaim_conv_im_stop_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2496
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2497 gaim_conv_im_start_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2498
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2499 if (first || (gaim_conv_im_get_type_again(im) != 0 &&
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2500 time(NULL) > gaim_conv_im_get_type_again(im))) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2501
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2502 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2503 (char *)gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2504 GAIM_TYPING);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2505
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2506 if (timeout)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2507 gaim_conv_im_set_type_again(im, time(NULL) + timeout);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2508 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2509 gaim_conv_im_set_type_again(im, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2510 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2511 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2512
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2513 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2514 update_typing_icon(GaimConversation *conv)
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2515 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2516 GaimGtkWindow *gtkwin;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2517 GaimConvIm *im = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2518 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2519
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2520 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2521
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2522 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2523 im = GAIM_CONV_IM(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2524
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2525 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2526 gtk_widget_destroy(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2527 gtkwin->menu.typing_icon = NULL;
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2528 }
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2529 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2530 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2531 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2532 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2533 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2534 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2535 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2536 _("User is typing..."), NULL);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2537 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2538 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2539 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2540 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2541 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2542 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2543 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2544 _("User has typed something and paused"), NULL);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2545 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2546
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2547 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2548 gtk_menu_item_set_right_justified(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2549 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2550 gtk_widget_show_all(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2551 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2552 gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2553 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2554 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2555
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2556 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2557 update_send_as_selection(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2558 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2559 GaimAccount *account;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2560 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2561 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2562 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2563 GList *child;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2564
7090
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2565 if (g_list_find(gaim_get_windows(), win) == NULL)
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2566 return FALSE;
4849
21123cba7a70 [gaim-migrate @ 5174]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
2567
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2568 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2569
5860
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2570 if (conv == NULL)
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2571 return FALSE;
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2572
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2573 account = gaim_conversation_get_account(conv);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2574 gtkwin = GAIM_GTK_WINDOW(win);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2575
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2576 if (gtkwin->menu.send_as == NULL)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2577 return FALSE;
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2578
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2579 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2580
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2581 menu = gtk_menu_item_get_submenu(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2582 GTK_MENU_ITEM(gtkwin->menu.send_as));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2583
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2584 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2585 child != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2586 child = child->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2587
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2588 GtkWidget *item = child->data;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2589 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2590 "gaim_account");
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2591
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2592 if (account == item_account) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2593 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2594 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2595 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2596 }
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2597
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2598 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2599 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2600
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2601 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2602 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2603 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2604 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2605 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2606 GtkWidget *menuitem;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2607 GList *gcs;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2608 GList *convs;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2609 GSList *group = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2610 gboolean first_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2611 gboolean found_online = FALSE;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2612 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2613
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2614 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2615
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2616 if (gtkwin->menu.send_as != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2617 gtk_widget_destroy(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2618
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2619 /* See if we have > 1 connection active. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2620 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2621 /* Now make sure we don't have any Offline entries. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2622 gboolean found_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2623
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2624 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2625 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2626 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2627
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2628 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2629 GaimAccount *account;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2630
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2631 conv = (GaimConversation *)convs->data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2632 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2633
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2634 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2635 found_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2636 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2637 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2638 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2639
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2640 if (!found_offline) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2641 gtkwin->menu.send_as = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2642 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2643 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2644 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2645
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2646 /* Build the Send As menu */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2647 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2648 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2649
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2650 menu = gtk_menu_new();
7857
fd19e9413014 [gaim-migrate @ 8511]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7855
diff changeset
2651 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar),
fd19e9413014 [gaim-migrate @ 8511]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7855
diff changeset
2652 gtkwin->menu.send_as, 2);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2653 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2654
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2655 gtk_widget_show(menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2656
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2657 /* Fill it with entries. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2658 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2659
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2660 GaimConnection *gc;
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2661 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2662 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2663 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2664 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2665 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2666
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2667 found_online = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2668
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2669 gc = (GaimConnection *)gcs->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2670
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2671 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2672 pixbuf = create_prpl_icon(gc->account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2673 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2674
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2675 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2676 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2677 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2678 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2679 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2680
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2681 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2682
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2683 g_object_unref(G_OBJECT(scale));
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2684 g_object_unref(G_OBJECT(pixbuf));
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2685
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2686 account = gaim_connection_get_account(gc);
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2687
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2688 /* Make our menu item */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2689 menuitem = gtk_radio_menu_item_new_with_label(group,
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2690 gaim_account_get_username(account));
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2691 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2692
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2693 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2694 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2695
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2696 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2697 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2698 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2699
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2700 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2701 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2702
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2703 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2704
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2705 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2706
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2707 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2708 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2709 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2710
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2711 /* Set our data and callbacks. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2712 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2713 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2714
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2715 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2716 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2717
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2718 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2719 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2720 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2721
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2722 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2723 * Fill it with any accounts that still has an open (yet disabled) window
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2724 * (signed off accounts with a window open).
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2725 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2726 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2727 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2728 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2729
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2730 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2731 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2732 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2733 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2734 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2735 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2736
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2737 conv = (GaimConversation *)convs->data;
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2738
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2739 if (conv == deleted_conv)
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2740 continue;
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2741
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2742 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2743
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2744 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2745 if (first_offline && found_online) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2746 menuitem = gtk_separator_menu_item_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2747 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2748 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750 first_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2751 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2752
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2753 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2754 pixbuf = create_prpl_icon(account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2755 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2756 GDK_INTERP_BILINEAR);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2757
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2758 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2759 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2760 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2761 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2762 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2763
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2764 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2765
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2766 if (scale != NULL) g_object_unref(scale);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2767 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2768
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2769 /* Make our menu item */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2770 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2771 account->username);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2772 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2773
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2774 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2775 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2776
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2777 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2778 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2779 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2780
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2781 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2782 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2783
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2784 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2785
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2786 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2787
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2788 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2789 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2790 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2791
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2792 gtk_widget_set_sensitive(menuitem, FALSE);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2793 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
c06c9e981592 [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
2794 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2795
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2796 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
2797 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2798
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2799 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2800 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2801 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2802 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2803
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2804 g_object_unref(sg);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2805
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2806 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2807 update_send_as_selection(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2808 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2809
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2810 static GList *
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2811 generate_invite_user_names(GaimConnection *gc)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2812 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2813 GaimBlistNode *gnode,*cnode,*bnode;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2814 static GList *tmp = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2815
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2816 if (tmp)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2817 g_list_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2818
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2819 tmp = g_list_append(NULL, "");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2820
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2821 if (gc != NULL) {
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2822 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2823 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2824 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2825 for(cnode = gnode->child; cnode; cnode = cnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2826 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2827 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2828 for(bnode = cnode->child; bnode; bnode = bnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2829 GaimBuddy *buddy;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2830
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2831 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2832 continue;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2833
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2834 buddy = (GaimBuddy *)bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2835
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2836 if (buddy->account == gc->account &&
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2837 GAIM_BUDDY_IS_ONLINE(buddy))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2838 tmp = g_list_append(tmp, buddy->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2839 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2840 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2841 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2842 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2843
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2844 return tmp;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2845 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2847 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2848 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2849 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2850 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2851 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2852 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2853 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2854 GtkListStore *ls;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2855
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2856 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2857 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2858 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2859
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2860 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2861
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2862 gtk_list_store_append(ls, &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2863 gtk_list_store_set(ls, &iter, 0,
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2864 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2865 1, name, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2866 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2867 GTK_SORT_ASCENDING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2868 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2869
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2870 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2871 tab_complete(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2872 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2873 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2874 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2875 GtkTextIter cursor, word_start, start_buffer;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2876 int start;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2877 int most_matched = -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2878 char *entered, *partial = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2879 char *text;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2880 char *nick_partial;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2881 GList *matches = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2882 GList *nicks = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2883
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2884 gtkconv = GAIM_GTK_CONVERSATION(conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2885 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2886
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2887 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2888 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2889 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2890
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2891 word_start = cursor;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2892
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2893 /* if there's nothing there just return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894 if (!gtk_text_iter_compare(&cursor, &start_buffer))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 return;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2896
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2897 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2900 /* if we're at the end of ": " we need to move back 2 spaces */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2901 start = strlen(text) - 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2902
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2903 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2904 gtk_text_iter_backward_chars(&word_start, 2);
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2905 start-=2;
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2906 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2907
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2908 /* find the start of the word that we're tabbing */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2909 while (start >= 0 && text[start] != ' ') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2910 gtk_text_iter_backward_char(&word_start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2911 start--;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2912 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2913
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2914 g_free(text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2915
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2916 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2917 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2918
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2919 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2920 if (strlen(entered) >= 2 &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2921 !strncmp(": ", entered + strlen(entered) - 2, 2)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2922
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2923 entered[strlen(entered) - 2] = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2924 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2925 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2926
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2927 if (!g_utf8_strlen(entered, -1)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2928 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2929 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2930 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2931
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2932 nick_partial = g_malloc(strlen(entered)+1);
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2933
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2934 for (nicks = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2935 nicks != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2936 nicks = nicks->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2937
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2938 char *nick = nicks->data;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2939
8159
135e9298d7c6 [gaim-migrate @ 8871]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2940 strncpy(nick_partial, nick, strlen(entered));
8172
20fb788ee986 [gaim-migrate @ 8885]
Daniel Atallah <datallah@pidgin.im>
parents: 8170
diff changeset
2941 nick_partial[strlen(entered)] = '\0';
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2942 if(gaim_utf8_strcasecmp(nick_partial, entered))
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2943 continue;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2944
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2945 /* if we're here, it's a possible completion */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2946
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2947 /* if we're doing old-style, just fill in the completion */
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2948 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2949 gtk_text_buffer_delete(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2950 &word_start, &cursor);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2951
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2952 if (strlen(nick) == strlen(entered)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2953 nicks = (nicks->next
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2954 ? nicks->next
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2955 : gaim_conv_chat_get_users(chat));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2956
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957 nick = nicks->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2958 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2959
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2960 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2961 &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2962 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2963 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2964
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2965 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2966 char *tmp = g_strdup_printf("%s: ", nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2967 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2968 tmp, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2969 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2970 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2971 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2973 nick, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2974
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2975 g_free(nick_partial);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2976 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2979 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2980
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2981 /* we're only here if we're doing new style */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2982 if (most_matched == -1) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2983 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2984 * this will only get called once, since from now
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2985 * on most_matched is >= 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2986 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2987 most_matched = strlen(nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 partial = g_strdup(nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2990 else if (most_matched) {
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2991 char *tmp = g_strdup(nick);
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2992
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2993 while (gaim_utf8_strcasecmp(tmp, partial)) {
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2994 partial[most_matched] = '\0';
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2995 if(most_matched < strlen(tmp))
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2996 tmp[most_matched] = '\0';
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2997 most_matched--;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2998 }
8079
07c6d23fbf8b [gaim-migrate @ 8778]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
2999 most_matched++;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3000
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3001 g_free(tmp);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3002 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3004 matches = g_list_append(matches, nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3005 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3006
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3007 g_free(nick_partial);
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3008
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3009 /* we're only here if we're doing new style */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3011 /* if there weren't any matches, return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3012 if (!matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3013 /* if matches isn't set partials won't be either */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3014 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3015 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3016 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3017
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3018 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3019
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3020 if (!matches->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3021 /* there was only one match. fill it in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3022 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3023 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3024 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3025
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3026 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3027 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3028 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3029 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3030 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3031 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3032 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3033 matches->data, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3034
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3035 matches = g_list_remove(matches, matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3036 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3037 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3038 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039 * there were lots of matches, fill in as much as possible
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3040 * and display all of them
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3042 char *addthis = g_malloc0(1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3043
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3044 while (matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3045 char *tmp = addthis;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3046 addthis = g_strconcat(tmp, matches->data, " ", NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3047 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3048 matches = g_list_remove(matches, matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3049 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3050
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
3051 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3052 time(NULL));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3053 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3054 g_free(addthis);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3055 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3056
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3057 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3058 g_free(partial);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3061 static void
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3062 save_convo(GtkWidget *save, GaimConversation *c)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3063 {
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3064 char buf[BUF_LONG];
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3065 GtkWidget *window;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3066
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3067 window = gtk_file_selection_new(_("Save Conversation"));
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3068
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3069 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log",
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7242
diff changeset
3070 gaim_home_dir(), gaim_normalize(c->account, c->name));
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3071 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3072 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3073 "gaim_conversation", c);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3074 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
3075 "clicked", G_CALLBACK(do_check_save_convo), window);
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3076 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3077 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3078 gtk_widget_show(window);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3079 }
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3080
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3081 static GtkItemFactoryEntry menu_items[] =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3082 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3083 /* Conversation menu */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3084 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3085
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
3086 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3087 0, "<StockItem>", GAIM_STOCK_IM },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3088
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3089 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3090
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3091 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3092 "<StockItem>", GTK_STOCK_FIND },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3093 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3094 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3095 "<StockItem>", GTK_STOCK_SAVE_AS },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3096
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3097 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3098
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3099 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3100 0, NULL },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3101 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0,
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3102 "<StockItem>", GAIM_STOCK_INFO },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3103 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3104 "<StockItem>", GAIM_STOCK_WARN },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3105 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3106 "<StockItem>", GAIM_STOCK_INVITE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3107
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3108 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3109
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3110 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3111 "<StockItem>", GAIM_STOCK_EDIT },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3112 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3113 "<StockItem>", GAIM_STOCK_BLOCK },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3114 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3115 "<StockItem>", GTK_STOCK_ADD },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3116 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3117 "<StockItem>", GTK_STOCK_REMOVE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3118
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3119 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3120
8330
039cab8d4a5f [gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents: 8329
diff changeset
3121 { N_("/Conversation/Insert Lin_k..."), NULL, NULL, 0, /* menu_insert_link_cb, 0, */
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3122 "<StockItem>", GAIM_STOCK_LINK },
8330
039cab8d4a5f [gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents: 8329
diff changeset
3123 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, /* menu_insert_image_cb, 0, */
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3124 "<StockItem>", GAIM_STOCK_IMAGE },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3125
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3126 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3127
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3128 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3129 "<StockItem>", GTK_STOCK_CLOSE },
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3130
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3131 /* Options */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3132 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3133 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3134 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3135 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3136 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3137
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3138 static const int menu_item_count =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3139 sizeof(menu_items) / sizeof(*menu_items);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3140
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3141 static char *
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3142 item_factory_translate_func (const char *path, gpointer func_data)
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3143 {
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
3144 return _((char *)path);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3145 }
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3146
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3147 static GtkWidget *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3148 setup_menubar(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3149 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3150 GaimGtkWindow *gtkwin;
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
3151 GtkAccelGroup *accel_group;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3152 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3153
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3154 accel_group = gtk_accel_group_new ();
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3155 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3156 g_object_unref (accel_group);
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
3157
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3158 gtkwin->menu.item_factory =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3159 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3160
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3161 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3162 item_factory_translate_func,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3163 NULL, NULL);
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3164
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3165 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3166 menu_items, win);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3167 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3168 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3169
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3170
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3171 gtkwin->menu.menubar =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3172 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3173
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3174
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3175 gtkwin->menu.view_log =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3176 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
3177 N_("/Conversation/View Log"));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3178 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3179
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3180 gtkwin->menu.add_pounce =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3181 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3182 N_("/Conversation/Add Buddy Pounce..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3183
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3184 /* --- */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3185
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3186 gtkwin->menu.get_info =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3187 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3188 N_("/Conversation/Get Info"));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3189
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3190 gtkwin->menu.warn =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3191 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3192 N_("/Conversation/Warn..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3193
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3194 gtkwin->menu.invite =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3195 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3196 N_("/Conversation/Invite..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3197
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3198 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3199
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3200 gtkwin->menu.alias =
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3201 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3202 N_("/Conversation/Alias..."));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3203
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3204 gtkwin->menu.block =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3205 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3206 N_("/Conversation/Block..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3207
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3208 gtkwin->menu.add =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3209 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3210 N_("/Conversation/Add..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3211
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3212 gtkwin->menu.remove =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3213 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3214 N_("/Conversation/Remove..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3215
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3216 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3217
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3218 gtkwin->menu.insert_link =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3219 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3220 N_("/Conversation/Insert Link..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3221
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3222 gtkwin->menu.insert_image =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3223 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3224 N_("/Conversation/Insert Image..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3225
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3226 /* --- */
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3227
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3228 gtkwin->menu.logging =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3229 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3230 N_("/Options/Enable Logging"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3231 gtkwin->menu.sounds =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3232 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3233 N_("/Options/Enable Sounds"));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3234 gtkwin->menu.show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3235 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3236 N_("/Options/Show Formatting Toolbar"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3237
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3238 generate_send_as_items(win, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3240 gtk_widget_show(gtkwin->menu.menubar);
4931
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3241
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3242 return gtkwin->menu.menubar;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3243 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3244
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3245 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3246 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3247 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3248 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3249 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3250 GaimGtkImPane *gtkim;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3251
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3252 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3253 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3254 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3255
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3256 /* From right to left... */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3257
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3258 /* Send button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3259 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3260 GAIM_STOCK_SEND, GAIM_CONV_IM);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3261 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3263
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3264 /* Separator */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3265 if (gtkim->sep2 != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3266 gtk_widget_destroy(gtkim->sep2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3267
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3268 gtkim->sep2 = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3269 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3270 gtk_widget_show(gtkim->sep2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3271
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272 /* Now, um, just kind of all over the place. Huh? */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3274 /* Warn button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3275 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3276 GAIM_STOCK_WARN, GAIM_CONV_IM);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3277 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn,
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3278 _("Warn the user"), NULL);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3279 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3280
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3281 /* Block button */
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3282 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3283 GAIM_STOCK_BLOCK, GAIM_CONV_IM);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3284 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3285 _("Block the user"), NULL);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3286 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3287
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3288 /* Add button */
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3289 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3290 GTK_STOCK_ADD, GAIM_CONV_IM);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3291 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3292 _("Add the user to your buddy list"), NULL);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3293 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3294
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3295 /* Remove button */
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3296 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3297 GTK_STOCK_REMOVE, GAIM_CONV_IM);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3298 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3299 _("Remove the user from your buddy list"), NULL);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3300 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3301
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302 /* Info button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3303 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info,
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3304 GAIM_STOCK_INFO, GAIM_CONV_IM);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3305 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3306 _("Get the user's information"), NULL);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3307 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3308
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3309 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3310 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3311 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3312 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3313 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3314 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3315
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3316 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3317 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3318 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3319 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3320 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3321 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3322
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3323 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3324 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3325 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3326 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3327 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3328
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3329 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3330
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331 g_signal_connect(G_OBJECT(gtkim->warn), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3332 G_CALLBACK(warn_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333 g_signal_connect(G_OBJECT(gtkim->block), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334 G_CALLBACK(block_cb), conv);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3335 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3336 G_CALLBACK(add_remove_cb), conv);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3337 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3338 G_CALLBACK(add_remove_cb), conv);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3339 g_signal_connect(G_OBJECT(gtkconv->info), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3340 G_CALLBACK(info_cb), conv);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3341 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3342 G_CALLBACK(send_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3346 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3348 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3349 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3350 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3351
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3356 /* From right to left... */
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3357
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3358 /* Send button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3359 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3360 GAIM_STOCK_SEND, GAIM_CONV_CHAT);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3361 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3362 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3364 /* Separator */
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3365 if (gtkchat->sep != NULL)
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3366 gtk_widget_destroy(gtkchat->sep);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3367
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3368 gtkchat->sep = gtk_vseparator_new();
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3369 gtk_box_pack_end(GTK_BOX(parent), gtkchat->sep, FALSE, TRUE, 0);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3370 gtk_widget_show(gtkchat->sep);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3371
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372 /* Invite */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3373 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3374 GAIM_STOCK_INVITE, GAIM_CONV_CHAT);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3375 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3376 _("Invite a user"), NULL);
7931
315fd3921a40 [gaim-migrate @ 8602]
Mark Doliner <markdoliner@pidgin.im>
parents: 7929
diff changeset
3377 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3378
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3379 /* Add button */
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3380 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3381 GTK_STOCK_ADD, GAIM_CONV_CHAT);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3382 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3383 _("Add the chat to your buddy list"), NULL);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3384 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3385
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3386 /* Remove button */
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3387 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3388 GTK_STOCK_REMOVE, GAIM_CONV_CHAT);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3389 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3390 _("Remove the chat from your buddy list"), NULL);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3391 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3392
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3393 /* Set the relief on these. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3394 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3395 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3396 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3397 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3398
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3399 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3400 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3401 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3402 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3403
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3404 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3405 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3406 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3407
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3408 gaim_gtkconv_update_buttons_by_protocol(conv);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3409
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3410 /* Callbacks */
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3411 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3412 G_CALLBACK(invite_cb), conv);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3413 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3414 G_CALLBACK(add_remove_cb), conv);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3415 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
3416 G_CALLBACK(add_remove_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3417 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3418 G_CALLBACK(send_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3419 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3420
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3421
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3422 static void topic_callback(GtkWidget *w, GaimConversation *conv)
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3423 {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3424 GaimPluginProtocolInfo *prpl_info = NULL;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3425 GaimConnection *gc;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3426 GaimGtkConversation *gtkconv;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3427 GaimGtkChatPane *gtkchat;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3428 const char *topic;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3429
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3430 gc = gaim_conversation_get_gc(conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3431
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3432 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3433 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3434
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3435 if(prpl_info->set_chat_topic == NULL)
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3436 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3437
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3438 gtkconv = GAIM_GTK_CONVERSATION(conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3439 gtkchat = gtkconv->u.chat;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3440 topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text));
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3441
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3442 if(!g_utf8_collate(topic, gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv))))
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3443 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3444
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3445 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), topic);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3446 }
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3447
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3448 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3449 setup_chat_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3450 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3451 GaimPluginProtocolInfo *prpl_info = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3452 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3453 GaimGtkChatPane *gtkchat;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3454 GaimConnection *gc;
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3455 GaimPlugin *protocol;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3456 GtkWidget *vpaned, *hpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3458 GtkWidget *lbox, *bbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 GtkWidget *list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3461 GtkWidget *button;
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3462 GtkWidget *sw;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 GtkListStore *ls;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464 GtkCellRenderer *rend;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 GtkTreeViewColumn *col;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3466 GList *focus_chain;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3471
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473 vpaned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3474 gtk_widget_show(vpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 /* Setup the top part of the pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3477 vbox = gtk_vbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3478 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3479 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3480
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3481 if (gc != NULL)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3482 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3483
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3484 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3485 {
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3486 hbox = gtk_hbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3487 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488 gtk_widget_show(hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3489
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 label = gtk_label_new(_("Topic:"));
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3491 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3492 gtk_widget_show(label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3493
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3494 gtkchat->topic_text = gtk_entry_new();
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3495
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3496 if(prpl_info->set_chat_topic == NULL) {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3497 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3498 } else {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3499 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate",
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3500 G_CALLBACK(topic_callback), conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3501 }
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3502
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3503 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3504 gtk_widget_show(gtkchat->topic_text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3505 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3506
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3507 /* Setup the horizontal pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3508 hpaned = gtk_hpaned_new();
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3509 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3510 gtk_widget_show(hpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3511
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3512 /* Setup the scrolled window to put gtkimhtml in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3513 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3514 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
3515 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3516 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3517 GTK_SHADOW_IN);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3518 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3519
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3520 gtk_widget_set_size_request(gtkconv->sw,
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3521 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3522 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3523
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3524 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3525
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3526 /* Setup gtkihmtml. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3527 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3528 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3529
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3530 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3531 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3532
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3533 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3534 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
3535 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3536 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3537 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3538 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3539
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3540 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3541
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3542 gtk_widget_show(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3543
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3544 /* Build the right pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3545 lbox = gtk_vbox_new(FALSE, 6);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3546 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3547 gtk_widget_show(lbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3548
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549 /* Setup the label telling how many people are in the room. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550 gtkchat->count = gtk_label_new(_("0 people in room"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3551 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3552 gtk_widget_show(gtkchat->count);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3553
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3554 /* Setup the list of users. */
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3555 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3556 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
3557 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3558 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3559 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3560 gtk_widget_show(sw);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3561
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3564 GTK_SORT_ASCENDING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3565
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3566 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3567
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3568 rend = gtk_cell_renderer_text_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3569 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3570 "text", 0, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3571 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3572
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3573 g_signal_connect(G_OBJECT(list), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3574 G_CALLBACK(right_click_chat_cb), conv);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3575 g_signal_connect(G_OBJECT(list), "popup-menu",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3576 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3577
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3578 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3580 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3581 "text", 1, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3582 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3583
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3584 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3585
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3586 gtk_widget_set_size_request(list, 150, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3587
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3588 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3589 gtk_widget_show(list);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3590
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3591 gtkchat->list = list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3592
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3593 gtk_container_add(GTK_CONTAINER(sw), list);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3594
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3595 /* Setup the user list toolbar. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3596 bbox = gtk_hbox_new(TRUE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3597 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3598 gtk_widget_show(bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3599
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3600 /* IM */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3601 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3602 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3603 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3604 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3605 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3606 g_signal_connect(G_OBJECT(button), "clicked",
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
3607 G_CALLBACK(chat_im_button_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3608
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3609 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3610
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3611 /* Ignore */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3612 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3613 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3614 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3615 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3616 gtk_tooltips_set_tip(gtkconv->tooltips, button,
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3617 _("Ignore the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3618 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3619 G_CALLBACK(ignore_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3620 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3621
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3622 /* Info */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3623 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3624 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3625 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3626 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3627 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3628 _("Get the user's information"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3629 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3630 G_CALLBACK(info_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3631
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3632 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3633
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3634 gtkconv->info = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3635
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3636 /* Build the toolbar. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3637 vbox = gtk_vbox_new(FALSE, 6);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3638 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3639 gtk_widget_show(vbox);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3640
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
3641 gtkconv->toolbar = gtk_imhtmltoolbar_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
3642 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar, FALSE, FALSE, 0);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3643
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3644 /* Setup the entry widget.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3645 * We never show the horizontal scrollbar because it was causing weird
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3646 * lockups when typing text just as you type the character that would
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3647 * cause both scrollbars to appear. Definitely seems like a gtk bug.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3648 */
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3649 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3650 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
f98100df20cb [gaim-migrate @ 8813]
Mark Doliner <markdoliner@pidgin.im>
parents: 8109
diff changeset
3651 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3652 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3653 GTK_SHADOW_IN);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3654 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3655 gtk_widget_show(sw);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3656
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3657 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3658 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3659 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3660 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3661 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3662
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3663 protocol = gaim_find_prpl(conv->account->protocol_id);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3664 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3665 protocol->info->name);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3666 gtkconv->entry_buffer =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3667 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3668 gaim_setup_imhtml(gtkconv->entry);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3669 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3670 default_formatize(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3671 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3672 GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3673 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
6684152d3bfb [gaim-migrate @ 8806]
Mark Doliner <markdoliner@pidgin.im>
parents: 8105
diff changeset
3674 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"));
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3675 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3676
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3677 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
3678 G_CALLBACK(entry_key_press_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3679 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 G_CALLBACK(entry_stop_rclick_cb), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3681
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3682 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3683 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3684 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3685 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3686
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3687 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3688 gtk_widget_show(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3689
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3690 /* Setup the bottom button box. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3691 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3692 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3693 gtk_widget_show(gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3694
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3695 setup_chat_buttons(conv, gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3696
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3697 focus_chain = g_list_prepend (NULL, sw);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3698 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3699 return vpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3700 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3701
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3702 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3703 setup_im_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3704 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3705 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3706 GaimGtkImPane *gtkim;
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3707 GaimPlugin *protocol;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3708 GtkWidget *paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3709 GtkWidget *vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3710 GtkWidget *vbox2;
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3711 GtkWidget *sw;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3712 GList *focus_chain;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3713
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3714 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3715 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3716
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3717 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3718 paned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3719 gtk_widget_show(paned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3720
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3721 /* Setup the top part of the pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3722 vbox = gtk_vbox_new(FALSE, 6);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3723 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3724 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3725
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3726 /* Setup the gtkimhtml widget. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3727 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3728 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
3729 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3730 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3731 GTK_SHADOW_IN);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3732 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0);
4851
7d23d765eda1 [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
3733
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3734 gtk_widget_set_size_request(gtkconv->sw,
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3735 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3736 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3737 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3738
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3739 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3740 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3741
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3742 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3743 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
3744 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3745 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3746 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3747 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3748
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3749 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3750 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3751
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3752 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3753 gtk_widget_show(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3754
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3755 vbox2 = gtk_vbox_new(FALSE, 6);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3756 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3757 gtk_widget_show(vbox2);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3758
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3759 /* Build the toolbar. */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
3760 gtkconv->toolbar = gtk_imhtmltoolbar_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
3761 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3762
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3763 /* Setup the entry widget.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3764 * We never show the horizontal scrollbar because it was causing weird
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3765 * lockups when typing text just as you type the character that would
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3766 * cause both scrollbars to appear. Definitely seems like a gtk bug.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
3767 */
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3768 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3769 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
f98100df20cb [gaim-migrate @ 8813]
Mark Doliner <markdoliner@pidgin.im>
parents: 8109
diff changeset
3770 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3771 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3772 GTK_SHADOW_IN);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3773 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3774 gtk_widget_show(sw);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3775
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3776 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3777
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3778 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3779 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3780 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3781 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3782
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3783 protocol = gaim_find_prpl(conv->account->protocol_id);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3784 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
3785 protocol->info->name);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3786 gtkconv->entry_buffer =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3787 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3788 gaim_setup_imhtml(gtkconv->entry);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3789 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3790 default_formatize(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3791 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3792 GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3793 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
6684152d3bfb [gaim-migrate @ 8806]
Mark Doliner <markdoliner@pidgin.im>
parents: 8105
diff changeset
3794 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"));
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3795 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3796
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3797 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
3798 G_CALLBACK(entry_key_press_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3799 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3800 G_CALLBACK(entry_stop_rclick_cb), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3801
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3802 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3803 G_CALLBACK(insert_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3804 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3805 G_CALLBACK(delete_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3806
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3807 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3808 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3809
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3810 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3811 gtk_widget_show(gtkconv->entry);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
3812 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
3813 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3814
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3815 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3816 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3817 gtk_widget_show(gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3818
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3819 setup_im_buttons(conv, gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3820
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3821 focus_chain = g_list_prepend (NULL, sw);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3822 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
3823
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3824 return paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3825 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3826
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3827 static void
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3828 conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3829 GtkSelectionData *sd, guint info, guint t,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3830 GaimConversation *conv)
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3831 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3832 GaimConvWindow *win = conv->window;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3833 GaimConversation *c;
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3834
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3835 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3836 {
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3837 GaimBlistNode *n = NULL;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3838 GaimBuddy *b;
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3839 memcpy(&n, sd->data, sizeof(n));
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3840
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3841 if (GAIM_BLIST_NODE_IS_CONTACT(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3842 b = gaim_contact_get_priority_buddy((GaimContact*)n);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3843 else if (GAIM_BLIST_NODE_IS_BUDDY(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3844 b = (GaimBuddy*)n;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3845 else
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3846 return;
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3847
7089
83868f616e34 [gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents: 7078
diff changeset
3848 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3849
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3850 gaim_conv_window_add_conversation(win, c);
4702
49006c93f70c [gaim-migrate @ 5013]
Sean Egan <seanegan@pidgin.im>
parents: 4689
diff changeset
3851 }
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3852 else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3853 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3854 char *protocol = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3855 char *username = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3856 GaimAccount *account;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3857
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3858 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account,
7718
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
3859 &protocol, &username, NULL))
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3860 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3861 if (account == NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3862 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3863 gaim_notify_error(NULL, NULL,
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3864 _("You are not currently signed on with an account that "
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3865 "can add that buddy."), NULL);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3866 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3867 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3868 {
7718
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
3869 c = gaim_conversation_new(GAIM_CONV_IM, account, username);
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
3870 gaim_conv_window_add_conversation(win, c);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3871 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3872 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3873
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3874 if (username != NULL) g_free(username);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3875 if (protocol != NULL) g_free(protocol);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3876
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3877 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3878 }
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3879 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3880
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3881 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3882 * GTK+ window ops
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3883 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3884 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3885 gaim_gtk_new_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3886 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3887 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3888 GtkPositionType pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3889 GtkWidget *testidea;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3890 GtkWidget *menubar;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3891
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3892 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3893
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3894 win->ui_data = gtkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3895
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3896 /* Create the window. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3897 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3898 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3899 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
deb241b1189c [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
3900 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
5173
a04fc5bcbf3f [gaim-migrate @ 5537]
Nathan Walp <nwalp@pidgin.im>
parents: 5167
diff changeset
3901 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3902 gtk_widget_realize(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3903
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3904 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3905 G_CALLBACK(close_win_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3906
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3907 /* Create the notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3908 gtkwin->notebook = gtk_notebook_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3909
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3910 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3911
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3912 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3913 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3914 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3915 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3916 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3917 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3918 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3919 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3920
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3921 gtk_widget_show(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3922
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
3923 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
3924 G_CALLBACK(before_switch_conv_cb), win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3925 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3926 G_CALLBACK(switch_conv_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3927
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3928 /* Setup the tab drag and drop signals. */
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3929 gtk_widget_add_events(gtkwin->notebook,
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3930 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3931 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3932 G_CALLBACK(notebook_press_cb), win);
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3933 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3934 G_CALLBACK(notebook_release_cb), win);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3935
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3936 testidea = gtk_vbox_new(FALSE, 0);
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3937
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3938 /* Setup the menubar. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3939 menubar = setup_menubar(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3940 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3942 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3944 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3945
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3946 gtk_widget_show(testidea);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3947 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3948
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3949 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3950 gaim_gtk_destroy_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3951 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3952 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3954 gtk_widget_destroy(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3955
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3956 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3957
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3958 g_free(gtkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3959 win->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3960 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3961
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3962 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3963 gaim_gtk_show(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3964 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3965 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3966
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3967 gtk_widget_show(gtkwin->window);
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3968
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3969 #ifdef _WIN32
7415
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3970 /* This works around a win32 gtk+ bug, where it can't handle
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3971 * creating the button correctly before the window is shown.
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3972 * That's why we get the appearance of a button, without all
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3973 * the normal button-like properties, like being able to click
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3974 * it. ;-) --Nathan */
7414
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3975 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) {
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3976 GaimConversation *conv;
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3977 GaimGtkConversation *gtkconv;
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3978
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3979 conv = gaim_conv_window_get_conversation_at(win, 0);
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3980 if(conv) {
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3981 gtkconv = GAIM_GTK_CONVERSATION(conv);
7415
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3982 gtk_widget_hide(gtkconv->close);
7414
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3983 gtk_widget_show_all(gtkconv->close);
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3984 }
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3985 }
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3986 #endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3988
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3989 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3990 gaim_gtk_hide(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3991 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3992 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3993
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3994 gtk_widget_hide(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3995 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3996
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3997 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3998 gaim_gtk_raise(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3999 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4000 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4001
5484
6465b2fa6c4a [gaim-migrate @ 5880]
Nathan Walp <nwalp@pidgin.im>
parents: 5462
diff changeset
4002 gtk_widget_show(gtkwin->window);
5103
d19766adbae1 [gaim-migrate @ 5466]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
4003 gtk_window_deiconify(GTK_WINDOW(gtkwin->window));
4526
1966e014e779 [gaim-migrate @ 4804]
Nathan Walp <nwalp@pidgin.im>
parents: 4515
diff changeset
4004 gdk_window_raise(gtkwin->window->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4007 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4008 gaim_gtk_flash(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4009 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4010 #ifdef _WIN32
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4011 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4012
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4013 wgaim_conv_im_blink(gtkwin->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4014 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4015 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4016
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4017 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4018 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4019 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4020 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4021
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4022 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4023
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4024 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4025 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4026
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4027 static const GtkTargetEntry te[] =
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4028 {
7695
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4029 {"text/plain", 0, 0},
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4030 {"text/uri-list", 0, 1},
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4031 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2},
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4032 {"STRING", 0, 3},
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4033 {"application/x-im-contact", 0, 4}
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4034 };
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4035
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4036 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4037 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4038 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4039 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4040 GaimGtkConversation *gtkconv, *focus_gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4041 GaimConversation *focus_conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4042 GtkWidget *pane = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4043 GtkWidget *tab_cont;
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4044 GtkWidget *tabby, *menu_tabby;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4045 gboolean new_ui;
4383
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4046 GaimConversationType conv_type;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4047 const char *name;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4048
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4049 name = gaim_conversation_get_name(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4050 conv_type = gaim_conversation_get_type(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4051 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4052
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4053 if (conv->ui_data != NULL) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4054 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4055
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4056 tab_cont = gtkconv->tab_cont;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4057
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4058 new_ui = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4059 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4060 else {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4061 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4062 conv->ui_data = gtkconv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4063
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4064 /* Setup some initial variables. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4065 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4066 gtkconv->tooltips = gtk_tooltips_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4067
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4068 /* Setup the foreground and background colors */
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4069 gaim_gtkconv_update_font_colors(conv);
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4070
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4071 /* Setup the font face */
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4072 gaim_gtkconv_update_font_face(conv);
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4073
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4074 if (conv_type == GAIM_CONV_IM) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4075 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4076 gtkconv->u.im->a_virgin = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4077
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4078 pane = setup_im_pane(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4079 }
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4080 else if (conv_type == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4081 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4082
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4083 pane = setup_chat_pane(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4084 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4085
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4086 if (pane == NULL) {
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4087 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4088 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4089
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4090 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4091 conv->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4092
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4093 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4094 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4095
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4096 /* Setup drag-and-drop */
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4097 gtk_drag_dest_set(pane,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4098 GTK_DEST_DEFAULT_MOTION |
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4099 GTK_DEST_DEFAULT_DROP,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4100 te, sizeof(te) / sizeof(GtkTargetEntry),
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4101 GDK_ACTION_COPY);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4102 gtk_drag_dest_set(gtkconv->imhtml,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4103 GTK_DEST_DEFAULT_MOTION |
4702
49006c93f70c [gaim-migrate @ 5013]
Sean Egan <seanegan@pidgin.im>
parents: 4689
diff changeset
4104 GTK_DEST_DEFAULT_DROP,
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4105 te, sizeof(te) / sizeof(GtkTargetEntry),
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4106 GDK_ACTION_DEFAULT | GDK_ACTION_COPY |
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4107 GDK_ACTION_MOVE);
7695
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4108 gtk_drag_dest_set(gtkconv->entry,
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4109 GTK_DEST_DEFAULT_MOTION |
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4110 GTK_DEST_DEFAULT_DROP,
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4111 te, sizeof(te) / sizeof(GtkTargetEntry),
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4112 GDK_ACTION_COPY);
1c2cc9da21bd [gaim-migrate @ 8340]
Sean Egan <seanegan@pidgin.im>
parents: 7694
diff changeset
4113
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4114 g_signal_connect(G_OBJECT(pane), "drag_data_received",
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4115 G_CALLBACK(conv_dnd_recv), conv);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4116 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4117 G_CALLBACK(conv_dnd_recv), conv);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4118 #if 0
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4119 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4120 G_CALLBACK(conv_dnd_recv), conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4121 #endif
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4122
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4123 /* Setup the container for the tab. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4124 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4125 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4126 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4127 gtk_widget_show(pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4128
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4129 new_ui = TRUE;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4130
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4131 gtkconv->make_sound = TRUE;
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4132
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4133 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4134 "/gaim/gtk/conversations/show_formatting_toolbar");
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4135
8329
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4136 if (gtkconv->show_formatting_toolbar)
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4137 gtk_widget_show(gtkconv->toolbar);
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4138
8176
e975e210d1d5 [gaim-migrate @ 8890]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8173
diff changeset
4139 g_signal_connect_swapped(G_OBJECT(pane), "focus",
e975e210d1d5 [gaim-migrate @ 8890]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8173
diff changeset
4140 G_CALLBACK(gtk_widget_grab_focus),
e975e210d1d5 [gaim-migrate @ 8890]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8173
diff changeset
4141 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4142 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4143
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4144 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4145 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4146
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4147 /* Close button. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4148 gtkconv->close = gtk_button_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4149 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16);
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4150 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4151 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4152 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4153 GTK_ICON_SIZE_MENU));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4154 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4155 _("Close conversation"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4156
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4157 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4158 G_CALLBACK(close_conv_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4159
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4160 /*
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4161 * I love Galeon. They have a fix for that stupid annoying visible
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4162 * border bug. I love you guys! -- ChipX86
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4163 */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4164 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed",
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4165 G_CALLBACK(tab_close_button_state_changed_cb), NULL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4166
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4167 /* Status icon. */
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4168 gtkconv->icon = gtk_image_new();
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4169 gtkconv->menu_icon = gtk_image_new();
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4170 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4171
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4172 /* Tab label. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4173 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4174 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4175 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4176 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4177 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4178 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4179
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4180
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4181 /* Pack it all together. */
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4182 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4183 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4184 FALSE, FALSE, 0);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4185
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4186 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4187 {
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4188 gtk_widget_show_all(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4189 gtk_widget_show_all(gtkconv->menu_icon);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4190 }
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4191
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4192 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4193 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0);
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4194 gtk_widget_show(gtkconv->tab_label);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4195 gtk_widget_show(gtkconv->menu_label);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4196 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4197
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4198 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4199 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4200 gtk_widget_show_all(gtkconv->close);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4201
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4202 gtk_widget_show(tabby);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4203 gtk_widget_show(menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4204
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4205 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4206 gaim_gtkconv_update_buddy_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4207
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4208 /* Add this pane to the conversations notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4209 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4210 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4211 tab_cont, menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4212
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4213 gtk_widget_show(tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4215 if (gaim_conv_window_get_conversation_count(win) == 1) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4216 /* Er, bug in notebooks? Switch to the page manually. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4217 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
7d23d765eda1 [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4218
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4219 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4220 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4221 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4222 else
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4223 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4224
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4225 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win),
5204
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4226 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4227 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4228 gtk_widget_grab_focus(focus_gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4229
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4230 if (!new_ui)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4231 g_object_unref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4232
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4233 if (gaim_conv_window_get_conversation_count(win) == 1)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4234 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4235 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4236
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4237 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4238 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4239 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4240 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4241 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4242 unsigned int index;
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4243 GaimConversationType conv_type;
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4244
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4245 conv_type = gaim_conversation_get_type(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4246 index = gaim_conversation_get_index(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4247
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4248 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4249 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4250
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4251 g_object_ref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4252 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4253
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4254 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4255
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4256 /* go back to tabless if need be */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4257 if (gaim_conv_window_get_conversation_count(win) <= 2) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4258 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4259 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4260 }
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4261
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4262
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4263 /* If this window is setup with an inactive gc, regenerate the menu. */
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4264 if (conv_type == GAIM_CONV_IM &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4265 gaim_conversation_get_gc(conv) == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4266
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4267 generate_send_as_items(win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4268 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4269 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4270
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4271 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4272 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4273 unsigned int new_index)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4274 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4275 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4276 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4277
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4278 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4279 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4280
4415
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4281 if (new_index > gaim_conversation_get_index(conv))
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4282 new_index--;
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4283
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4284 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4285 gtkconv->tab_cont, new_index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4286 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4287
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4288 static int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4289 gaim_gtk_get_active_index(const GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4290 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4291 GaimGtkWindow *gtkwin;
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4292 int index;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4293
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4295
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4296 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4297
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4298 /*
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4299 * A fix, because the first conversation may be active, but not
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4300 * appear in the notebook just yet. -- ChipX86
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4301 */
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4302 return (index == -1 ? 0 : index);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4303 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4304
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4305 static GaimConvWindowUiOps window_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4306 {
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4307 gaim_gtk_conversations_get_conv_ui_ops,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4308 gaim_gtk_new_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4309 gaim_gtk_destroy_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4310 gaim_gtk_show,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 gaim_gtk_hide,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4312 gaim_gtk_raise,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4313 gaim_gtk_flash,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4314 gaim_gtk_switch_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4315 gaim_gtk_add_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4316 gaim_gtk_remove_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4317 gaim_gtk_move_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4318 gaim_gtk_get_active_index
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4319 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4320
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4321 GaimConvWindowUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4322 gaim_gtk_conversations_get_win_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4323 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4324 return &window_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4325 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4326
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4327 /**************************************************************************
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4328 * Conversation UI operations
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4329 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4330 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4331 gaim_gtkconv_destroy(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4332 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4333 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4334
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4335 if (gtkconv->dialogs.log != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4336 gtk_widget_destroy(gtkconv->dialogs.log);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4337
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4338 gtk_widget_destroy(gtkconv->tab_cont);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4339 g_object_unref(gtkconv->tab_cont);
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4340
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4341 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4342 if (gtkconv->u.im->icon_timer != 0)
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4343 g_source_remove(gtkconv->u.im->icon_timer);
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4344
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4345 if (gtkconv->u.im->save_icon != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4346 gtk_widget_destroy(gtkconv->u.im->save_icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4347
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348 if (gtkconv->u.im->anim != NULL)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4349 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4350
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4351 g_free(gtkconv->u.im);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4352 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4353 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4354 g_free(gtkconv->u.chat);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4355 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4356
4633
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4357 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4358
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4359 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4360 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4361
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4362 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4363 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4364 const char *message, GaimMessageFlags flags,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4365 time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4366 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4367 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4368
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4369 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4370
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4371 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4372 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4373
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4374 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4375 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4376
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4377 /* Play a sound, if specified in prefs. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4378 if (gtkconv->make_sound) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4379 if (flags & GAIM_MESSAGE_RECV) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4380 if (gtkconv->u.im->a_virgin &&
5820
93bcc8fca197 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4381 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4382
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4383 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4384 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4386 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4388 else {
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4389 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4390 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4391 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4392
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4393 gtkconv->u.im->a_virgin = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4394
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4395 gaim_conversation_write(conv, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4396 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4397
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4398 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4399 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4400 const char *message, GaimMessageFlags flags, time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4401 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4402 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4403
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4404 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4405
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4406 /* Play a sound, if specified in prefs. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4407 if (gtkconv->make_sound) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4408 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND))
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4409 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4410 else if (flags & GAIM_MESSAGE_RECV) {
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4411 if ((flags & GAIM_MESSAGE_NICK) &&
6102
7c07bad80274 [gaim-migrate @ 6563]
Luke Schierer <lschiere@pidgin.im>
parents: 6095
diff changeset
4412 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4413
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4414 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4415 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4417 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4418 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4419 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4421 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks"))
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4422 flags |= GAIM_MESSAGE_COLORIZE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4423
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4424 /* Raise the window, if specified in prefs. */
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4425 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4426 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4427
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4428 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4429 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4430
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4431 gaim_conversation_write(conv, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4432 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4433
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4434 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4435 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4436 const char *message, GaimMessageFlags flags,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4437 time_t mtime)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4438 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4439 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4440 GaimConvWindow *win;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4441 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4442 int gtk_font_options = 0;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4443 GSList *images = NULL;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4444 char buf[BUF_LONG];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4445 char buf2[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4446 char mdate[64];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4447 char color[10];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4448 char *str;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4449 char *with_font_tag;
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4450 char *sml_attrib = NULL;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4451 size_t length = strlen(message) + 1;
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4452
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4453 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4454 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4455
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4456 win = gaim_conversation_get_window(conv);
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4457
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4458 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4459 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4460 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4461 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4462 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") ||
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4463 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4464
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4465 gaim_conv_window_show(win);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4466 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4467
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4468 if (flags & GAIM_MESSAGE_IMAGES)
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4469 gaim_gtk_find_images(message, &images);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4470
5133
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4471 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4472 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime));
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4473 else
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4474 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4475
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4476 if(gc)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4477 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4478
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4479 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4480
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4481 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4482 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4483
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4484 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4485 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4486
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4487 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4488 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4489
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
4490 /* this is gonna crash one day, I can feel it. */
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
4491 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options &
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4492 OPT_PROTO_USE_POINTSIZE) {
5367
a2f9e6418413 [gaim-migrate @ 5743]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5329
diff changeset
4493 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4494 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4495
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4496 if (flags & GAIM_MESSAGE_SYSTEM) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4497 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
4498 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4499 mdate, message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4500 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4501 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4502
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4503 g_snprintf(buf2, sizeof(buf2),
8408
5e66c30b6b3e [gaim-migrate @ 9138]
Nathan Walp <nwalp@pidgin.im>
parents: 8407
diff changeset
4504 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT><BR>",
7850
2b57bfd4d58b [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4505 sml_attrib, mdate, message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4506
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4507 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4508 buf2, 0, images);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4509
7583
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4510 /* Add the message to a conversations scrollback buffer */
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4511 conv->history = g_string_append(conv->history, buf);
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4512 conv->history = g_string_append(conv->history, "<BR>\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4513
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4514 } else if (flags & GAIM_MESSAGE_NO_LOG) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515 g_snprintf(buf, BUF_LONG,
7850
2b57bfd4d58b [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4516 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B><BR>",
2b57bfd4d58b [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4517 sml_attrib, message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4518
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4519 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4520 buf, 0, images);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4521 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4522 else {
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4523 char *new_message = g_memdup(message, length);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4524
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4525 if (flags & GAIM_MESSAGE_WHISPER) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4526 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4527
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4528 /* If we're whispering, it's not an autoresponse. */
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4529 if (gaim_message_meify(new_message, length)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4530 g_snprintf(str, 1024, "***%s", who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4531 strcpy(color, "#6C2585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4532 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4533 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4534 g_snprintf(str, 1024, "*%s*:", who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4535 strcpy(color, "#00FF00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4536 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4537 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4538 else {
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4539 if (gaim_message_meify(new_message, length)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4540 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4541
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4542 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4543 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4544 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4545 g_snprintf(str, 1024, "***%s", who);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4546
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4547 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4548 strcpy(color, "#AF7F00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4549 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4550 strcpy(color, "#062585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4551 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4552 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4553 str = g_malloc(1024);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4554 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4555 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4556 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4557 g_snprintf(str, 1024, "%s:", who);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4558 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559 strcpy(color, "#AF7F00");
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4560 else if (flags & GAIM_MESSAGE_RECV) {
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4561 if (flags & GAIM_MESSAGE_COLORIZE) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4562 const char *u;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4563 int m = 0;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4564
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4565 for (u = who; *u != '\0'; u++)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4566 m += *u;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4567
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4568 m = m % NUM_NICK_COLORS;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4569
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4570 strcpy(color, nick_colors[m]);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4571 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572 else
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
4573 strcpy(color, RECV_COLOR);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4574 }
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4575 else if (flags & GAIM_MESSAGE_SEND)
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
4576 strcpy(color, SEND_COLOR);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4577 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4578 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4579
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4580 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4581 g_snprintf(buf, BUF_LONG,
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
4582 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> "
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4583 "<B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4584 sml_attrib ? sml_attrib : "", mdate, str);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4585 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4586 g_snprintf(buf, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4587 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4588 sml_attrib ? sml_attrib : "", str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4589
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4590 g_snprintf(buf2, BUF_LONG,
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
4591 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4592 "<B>%s</B></FONT> ",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4593 color, sml_attrib ? sml_attrib : "", mdate, str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4594
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4595 g_free(str);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4596
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4597 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4598 buf2, 0, images);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4599
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4600 if(gc){
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4601 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : "");
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4602 char *post = "</font>";
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4603 int pre_len = strlen(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4604 int post_len = strlen(post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4605
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4606 with_font_tag = g_malloc(length + pre_len + post_len + 1);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4607
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4608 strcpy(with_font_tag, pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4609 memcpy(with_font_tag + pre_len, new_message, length);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4610 strcpy(with_font_tag + pre_len + length, post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4611
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4612 length += pre_len + post_len;
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4613 g_free(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4614 }
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
4615 else
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4616 with_font_tag = g_memdup(new_message, length);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4617
7589
b7d4b16bcf4e [gaim-migrate @ 8207]
Nathan Walp <nwalp@pidgin.im>
parents: 7583
diff changeset
4618 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4619 with_font_tag, gtk_font_options, images);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4620
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4621 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4622
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4623 /*conv->history = g_string_append(conv->history, t1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4624 conv->history = g_string_append(conv->history, t2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4625 conv->history = g_string_append(conv->history, "\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4626
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4627 g_free(t1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4628 g_free(t2); */
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4629
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4630 g_free(with_font_tag);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7446
diff changeset
4631 g_free(new_message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4632 }
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4633
6062
a292fd631fdb [gaim-migrate @ 6512]
Mark Doliner <markdoliner@pidgin.im>
parents: 6057
diff changeset
4634
5012
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
4635 if(sml_attrib)
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
4636 g_free(sml_attrib);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4637
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4638 if (images) {
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4639 GSList *tmp;
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4640
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4641 for (tmp = images; tmp; tmp = tmp->next) {
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4642 GdkPixbuf *pixbuf = tmp->data;
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4643 if(pixbuf)
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4644 g_object_unref(pixbuf);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4645 }
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4646
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4647 g_slist_free(images);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4648 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4649 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4650
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4651 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4652 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4653 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4654 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4655 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4656 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4657 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4658 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4659 int pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4660
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4661 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4662 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4664
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4665 num_users = g_list_length(gaim_conv_chat_get_users(chat));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4666
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4667 g_snprintf(tmp, sizeof(tmp),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4668 ngettext("%d person in room", "%d people in room",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4669 num_users),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4670 num_users);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4671
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4672 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4673
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4674 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4675 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4676
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4677 pos = g_list_index(gaim_conv_chat_get_users(chat), user);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4678
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4679 add_chat_buddy_common(conv, user, pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4680 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4681
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4682 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4683 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4684 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4685 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4686 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4687 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4688 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4689 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4690 int num_users;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4691 int pos;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4692
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4693 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4694 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4695 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4696
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4697 num_users = g_list_length(gaim_conv_chat_get_users(chat));
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4698
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4699 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4700 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4701 num_users),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4702 num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4703
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4704 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4705
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4706 for (l = users; l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4707 pos = g_list_index(gaim_conv_chat_get_users(chat), (char *)l->data);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4708
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4709 add_chat_buddy_common(conv, (char *)l->data, pos);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4710 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4711 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4712
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4713 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4714 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4715 const char *new_name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4717 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4718 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4719 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4720 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4721 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4722 GList *names;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4723 int pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4724 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4725
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4726 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4727 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4728 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4729
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4730 for (names = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4731 names != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4732 names = names->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4733
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4734 char *u = (char *)names->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4735
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4736 if (!gaim_utf8_strcasecmp(u, old_name)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4737 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4738
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4739 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4740 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4741
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4742 while (f != 0) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4743 char *val;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4744
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4746
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4747 if (!gaim_utf8_strcasecmp(old_name, val)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4748 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
4640
494fc398c8f5 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4749 break;
494fc398c8f5 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4750 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4751
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4752 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4753
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4754 g_free(val);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4755 }
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4756
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4757 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4758 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4759 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4760
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4761 if (!names)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4762 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4763
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4764 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4765
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4766 add_chat_buddy_common(conv, new_name, pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4767 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4768
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4769 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4770 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4771 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4772 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4773 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4774 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4775 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4776 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4777 GList *names;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4778 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4779 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4780 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4781
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4782 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4783 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4784 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4785
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4786 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - 1;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4787
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4788 for (names = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4789 names != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4790 names = names->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4791
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4792 char *u = (char *)names->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4793
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4794 if (!gaim_utf8_strcasecmp(u, user)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4795 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4796
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4797 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4798 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4799
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4800 while (f != 0) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4801 char *val;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4802
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4804
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4805 if (!gaim_utf8_strcasecmp(user, val))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4806 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4807
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4808 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4809
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4810 g_free(val);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4811 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4812
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4813 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4814 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4815 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4816
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4817 if (names == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4818 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4819
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4820 g_snprintf(tmp, sizeof(tmp),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4821 ngettext("%d person in room", "%d people in room",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4822 num_users), num_users);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4823
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4824 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4825
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4826 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4827 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4828 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4829
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4830 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4831 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4832 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4833 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4834 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4835 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4836 GtkTreeIter iter;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4837 GtkTreeModel *model;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4838 GList *names = NULL;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4839 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4840 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4841 int num_users;
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
4842 gboolean f;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4843
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4844 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4845 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4846 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4847
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4848 num_users = g_list_length(gaim_conv_chat_get_users(chat)) -
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4849 g_list_length(users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4850
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4851 for (l = users; l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4852 for (names = gaim_conv_chat_get_users(chat);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4853 names != NULL;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4854 names = names->next) {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4855
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4856 char *u = (char *)names->data;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4857
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4858 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4859 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4860
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4861 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4862 &iter))
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4863 break;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4864
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
4865 do {
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4866 char *val;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4867
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4868 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4869 1, &val, -1);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4870
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4871 if (!gaim_utf8_strcasecmp((char *)l->data, val))
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4872 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4873
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4874 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4875
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4876 g_free(val);
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
4877 } while (f);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4878
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4879 break;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4880 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4881 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4882 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4883
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4884 if (names == NULL)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4885 return;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4886
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4887 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4888 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4889 num_users), num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4890
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4891 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4892 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4893
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4894 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4895 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4896 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4897 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4898 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4899 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4900 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4901 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4902
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4903 win = gaim_conversation_get_window(conv);
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4904 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4905 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4906
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4907 if (type == GAIM_CONV_UPDATE_ACCOUNT)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4908 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4909 gaim_conversation_autoset_title(conv);
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4910
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4911 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4912 gaim_gtkconv_update_buddy_icon(conv);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4913
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4914 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4915
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4916 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4917
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4918 smiley_themeize(gtkconv->imhtml);
6394
51957edc16c5 [gaim-migrate @ 6899]
Nathan Walp <nwalp@pidgin.im>
parents: 6392
diff changeset
4919
6395
61afe11ff70e [gaim-migrate @ 6900]
Nathan Walp <nwalp@pidgin.im>
parents: 6394
diff changeset
4920 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4921 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4922 else if (type == GAIM_CONV_UPDATE_TYPING ||
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4923 type == GAIM_CONV_UPDATE_UNSEEN ||
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4924 type == GAIM_CONV_UPDATE_TITLE)
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4925 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4926 const char *title;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4927 GaimConvIm *im = NULL;
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4928 char color[8];
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4929
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4930 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4931 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4932
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4933 title = gaim_conversation_get_title(conv);
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4934
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4935 *color = '\0';
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4936
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4937 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4938 gtk_widget_realize(gtkconv->tab_label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4939
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4940 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4941 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4942 strcpy(color, "#47A046");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4943 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4944 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4945 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4946 strcpy(color, "#D1940C");
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4947 }
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4948 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4949 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4950 strcpy(color, "#314E6C");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4951 }
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4952 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT)
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4953 {
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4954 strcpy(color, "#DF421E");
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4955 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4956 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4957 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4958 strcpy(color, "#868272");
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4959 }
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4960
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4961 if (*color != '\0')
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4962 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4963 char *label;
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4964
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4965 label = g_strdup_printf("<span color=\"%s\">%s</span>",
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4966 color, title);
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
4967 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label);
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
4968 g_free(label);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4969 }
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
4970 else
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4971 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4972
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4973 if (conv == gaim_conv_window_get_active_conversation(win))
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4974 update_typing_icon(conv);
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4975
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4976 if (type == GAIM_CONV_UPDATE_TITLE) {
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4977 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4978 if (conv == gaim_conv_window_get_active_conversation(win))
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4979 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4980 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4981 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4982 else if (type == GAIM_CONV_UPDATE_TOPIC)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4983 {
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4984 const char *topic;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4985 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4986 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4987
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4988 topic = gaim_conv_chat_get_topic(chat);
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4989
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4990 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic);
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4991 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text,
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
4992 topic, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4993 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4994 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4995 type == GAIM_CONV_ACCOUNT_OFFLINE)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4996 {
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
4997 gray_stuff_out(gaim_conv_window_get_active_conversation(win));
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4998 generate_send_as_items(win, NULL);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4999 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5000 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5001 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5002 else if (type == GAIM_CONV_UPDATE_AWAY)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5003 {
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5004 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5005 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 }
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
5007 else if (type == GAIM_CONV_UPDATE_ADD || type == GAIM_CONV_UPDATE_REMOVE ||
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
5008 type == GAIM_CONV_UPDATE_CHATLEFT)
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5009 {
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
5010 gray_stuff_out(conv);
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
5011 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5012 else if (type == GAIM_CONV_UPDATE_ICON)
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5013 {
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5014 gaim_gtkconv_update_buddy_icon(conv);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5015 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5016 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5017
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5018 static GaimConversationUiOps conversation_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5019 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5020 gaim_gtkconv_destroy, /* destroy_conversation */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5021 gaim_gtkconv_write_chat, /* write_chat */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5022 gaim_gtkconv_write_im, /* write_im */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5023 gaim_gtkconv_write_conv, /* write_conv */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5024 gaim_gtkconv_chat_add_user, /* chat_add_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5025 gaim_gtkconv_chat_add_users, /* chat_add_users */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5026 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5027 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5028 gaim_gtkconv_chat_remove_users, /* chat_remove_users */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5029 NULL, /* update_progress */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5030 gaim_gtkconv_updated /* updated */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5031 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5032
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5033 GaimConversationUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5034 gaim_gtk_conversations_get_conv_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5035 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
5036 return &conversation_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5037 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5038
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5039 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5040 * Public conversation utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5041 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5042 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5043 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5044 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5045 GaimGtkConversation *gtkconv;
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5046 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5047
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5048 char filename[256];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5049 FILE *file;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5050 GError *err = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5051
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5052 GaimBuddy *buddy;
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5053
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5054 const void *data;
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5055 size_t len;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5056
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5057 GdkPixbuf *buf;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5058
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5059 GtkWidget *event;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5060 GtkWidget *frame;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061 GdkPixbuf *scale;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5062 GdkPixmap *pm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5063 GdkBitmap *bm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5064 int sf = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5065
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5066 g_return_if_fail(conv != NULL);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5067 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5068 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5069
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5070 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5071
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5072 remove_icon(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5073
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5074 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5075 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5076
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5077 if (gaim_conversation_get_gc(conv) == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5078 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5079
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5080 if (gtkconv->u.im->anim)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5081 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5082 else
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5083 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons");
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5084
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5085 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv),
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5086 gaim_conversation_get_name(conv))) != NULL) {
8374
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5087 const char *iconfile;
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5088 if((iconfile = gaim_blist_node_get_string((GaimBlistNode*)buddy,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5089 "buddy_icon"))) {
8374
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5090 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5091 struct stat st;
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5092 if ((icon == NULL) && (!stat(iconfile, &st))) {
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5093 FILE *file = fopen(iconfile, "rb");
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5094 if (file) {
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5095 char *data = g_malloc(st.st_size);
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5096 fread(data, 1, st.st_size, file);
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5097 fclose(file);
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5098 gaim_buddy_icons_set_for_user(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv), data, st.st_size);
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5099 g_free(data);
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5100 }
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5101 return;
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5102 }
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5103 else
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5104 gtkconv->u.im->anim =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5105 gdk_pixbuf_animation_new_from_file(iconfile, &err);
8374
280880a4114d [gaim-migrate @ 9101]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8330
diff changeset
5106 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5107 }
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5108 else
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5109 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5110 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5111
6877
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5112 if (icon == NULL)
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5113 return;
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5114
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5115 data = gaim_buddy_icon_get_data(icon, &len);
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5116
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5117 /* this is such an evil hack, i don't know why i'm even considering it.
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5118 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5119 g_snprintf(filename, sizeof(filename),
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5120 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5121 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5122
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5123 if (!(file = fopen(filename, "wb")))
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5124 return;
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5125
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5126 fwrite(data, 1, len, file);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5127 fclose(file);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5128
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5129 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5130 /* make sure we remove the file as soon as possible */
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5131 unlink(filename);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5132 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5133
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5134 if (err) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5135 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5136 "Buddy icon error: %s\n", err->message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5137 g_error_free(err);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5138 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5139
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5140 if (!gtkconv->u.im->anim)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5141 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5142
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5143 if(gtkconv->u.im->iter)
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5144 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5145
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5146 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5147 gtkconv->u.im->iter = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5148 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5149 } else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5150 gtkconv->u.im->iter =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5151 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5152 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5153 if (gtkconv->u.im->animate)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5154 start_anim(NULL, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5155 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5156
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5157 sf = SCALE(gtkconv->u.im->anim);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5158 scale = gdk_pixbuf_scale_simple(buf,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5159 MAX(gdk_pixbuf_get_width(buf) * sf /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5160 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5161 MAX(gdk_pixbuf_get_height(buf) * sf /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5162 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5163 GDK_INTERP_NEAREST);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5164
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5165 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5166 g_object_unref(G_OBJECT(scale));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5167
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5168 frame = gtk_frame_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5169 gtk_frame_set_shadow_type(GTK_FRAME(frame),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5170 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
5171 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5172 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5173 gtk_widget_show(frame);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5174
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5175 event = gtk_event_box_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5176 gtk_container_add(GTK_CONTAINER(frame), event);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5177 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5178 G_CALLBACK(icon_menu), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5179 gtk_widget_show(event);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5180
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5181 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5182 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5183 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5184 gtk_widget_show(gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5185
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5186 g_object_unref(G_OBJECT(pm));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5187
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5188 if (bm)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5189 g_object_unref(G_OBJECT(bm));
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5190
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5191 /* The buddy icon code needs badly to be fixed. */
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5192 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
8068
6db4473a2d1a [gaim-migrate @ 8766]
Gary Kramlich <grim@pidgin.im>
parents: 8061
diff changeset
5193 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv)))
6db4473a2d1a [gaim-migrate @ 8766]
Gary Kramlich <grim@pidgin.im>
parents: 8061
diff changeset
5194 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5195 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5196
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5197 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5198 gaim_gtkconv_update_font_colors(GaimConversation *conv)
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5199 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5200 GaimGtkConversation *gtkconv;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5201
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5202 if (!GAIM_IS_GTK_CONVERSATION(conv))
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5203 return;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5204
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5205 gtkconv = GAIM_GTK_CONVERSATION(conv);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5206
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5207 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5208 &gtkconv->fg_color);
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5209
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5210 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5211 &gtkconv->bg_color);
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5212 }
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5213
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5214 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5215 gaim_gtkconv_update_font_face(GaimConversation *conv)
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5216 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5217 GaimGtkConversation *gtkconv;
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5218
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5219 if (!GAIM_IS_GTK_CONVERSATION(conv))
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5220 return;
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5221
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5222 gtkconv = GAIM_GTK_CONVERSATION(conv);
5551
f92bd449fd90 [gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents: 5550
diff changeset
5223
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5224 strncpy(gtkconv->fontface,
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5225 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"),
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5226 sizeof(gtkconv->fontface));
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5227 }
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5228
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5229 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5230 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5231 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5232 GaimConvWindow *win;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5233
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5234 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5235 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5237 win = gaim_conversation_get_window(conv);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5238
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5239 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5240 gray_stuff_out(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5241 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5242
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5243 GaimConvWindow *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5244 gaim_gtkwin_get_at_xy(int x, int y)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5245 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5246 GaimConvWindow *win = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5247 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5248 GdkWindow *gdkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5249 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5250
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5251 gdkwin = gdk_window_at_pointer(&x, &y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5252
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5253 if (gdkwin)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5254 gdkwin = gdk_window_get_toplevel(gdkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5255
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5256 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5257 win = (GaimConvWindow *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5258
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5259 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5260 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5261
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5262 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5263
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5264 if (gdkwin == gtkwin->window->window)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5265 return win;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5266 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5267
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5268 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5269 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5270
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5271 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5272 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5273 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5274 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5276 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5277 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5278 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5279 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5280 gboolean first_visible = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5281
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5282 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5283 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5284
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5285 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5286 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5287
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5288 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5289 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5290 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5291
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5292 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5293 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5294 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5295
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5296 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5297 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5298
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5299 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5300 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5301
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5302 if (first_visible) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5303 first_visible = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5304
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5305 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5308
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5309 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5310 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5311
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5312 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5313 if (tab->allocation.x + tab->allocation.width <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5314 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5315 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5317 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5318 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5319 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5320 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5321 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5322 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5323 if (tab->allocation.y + tab->allocation.height <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5324 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5325 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5326 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5327 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5328 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5329 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5330 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5331 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5332
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5333 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5334 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5335
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5336 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5337 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5338
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5339 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5340 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5341 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5342 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5343 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5344 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5345 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5346 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5347 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5348
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5349 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5350 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5351
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5352 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5353 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5354
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5355 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5356 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5357 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5358
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5359 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5360 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5361 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5362
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5363 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5364 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5365
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5366 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5367 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5368
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5369 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5370 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5371
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5372 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5373 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5374 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5375 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5376 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5377 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5378 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5379 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5380 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5381 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5382 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5383 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5384 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5385 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5386 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5387 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5388 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5389 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5390 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5391 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5392
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5393 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5394 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5395
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5396 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5397 }
4940
6f9acbfc8a3d [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5398
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5399 static void
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5400 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value,
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5401 gpointer data)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5402 {
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5403 if (value)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5404 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5405 GDK_Escape, 0, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5406 else
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5407 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5408 GDK_W, GDK_CONTROL_MASK, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5409 }
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5410
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5411 static void
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5412 icons_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5413 gpointer data)
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5414 {
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5415 GList *l;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5416 GaimConversation *conv;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5417 GaimGtkConversation *gtkconv;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5418
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5419 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5420 conv = (GaimConversation *)l->data;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5421
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5422 if (!GAIM_IS_GTK_CONVERSATION(conv))
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5423 continue;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5424
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5425 gtkconv = GAIM_GTK_CONVERSATION(conv);
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5426
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5427 if (value) {
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5428 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5429 gtk_widget_show(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5430 gtk_widget_show(gtkconv->menu_icon);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5431 }
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5432 else {
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5433 gtk_widget_hide(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5434 gtk_widget_hide(gtkconv->menu_icon);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5435 }
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5436 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5437 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5438
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5439 static void
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5440 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5441 gpointer data)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5442 {
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5443 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5444 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5445 GaimGtkConversation *gtkconv;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5446
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5447 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5448 conv = (GaimConversation *)l->data;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5449
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5450 if (!GAIM_IS_GTK_CONVERSATION(conv))
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5451 continue;
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5452
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5453 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5454
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5455 if (value)
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5456 gtk_widget_show(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5457 else
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5458 gtk_widget_hide(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5459 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5460 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5461
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5462 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5463 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5464 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5465 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5466 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5467 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5468 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5469
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5470 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5471 conv = (GaimConversation *)l->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5472
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5473 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5474 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5475
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5476 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5477
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5478 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5479 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5480 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5481
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5482 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5483 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5484 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5485 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5486 #ifdef USE_GTKSPELL
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5487 GList *cl;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5488 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5489 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5490 GtkSpell *spell;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5491
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5492 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5493
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5494 conv = (GaimConversation *)cl->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5495
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5496 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5497 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5498
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5499 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5500
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5501 if (value)
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
5502 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5503 else {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5504 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5505 gtkspell_detach(spell);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5506 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5507 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5508 #endif
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5509 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5510
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5511 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5512 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5513 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5514 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5515 GList *cl;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5516 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5517 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5518
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5519 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5520 conv = (GaimConversation *)cl->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5521
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5522 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5523 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5524
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5525 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5526
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5527 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5528 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5529 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5530
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5531 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5532 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5533 gpointer data)
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5534 {
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5535 GList *l;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5536 GtkPositionType pos;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5537 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5538 GaimGtkWindow *gtkwin;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5539
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5540 pos = GPOINTER_TO_INT(value);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5541
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5542 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5543 win = (GaimConvWindow *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5544
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5545 if (!GAIM_IS_GTK_WINDOW(win))
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5546 continue;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5547
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5548 gtkwin = GAIM_GTK_WINDOW(win);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5549
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5550 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5551 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5552 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5553
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5554 static void
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5555 html_shortcuts_pref_cb(const char *name, GaimPrefType type,
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5556 gpointer value, gpointer data)
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5557 {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5558 GList *l;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5559 GaimConversation *conv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5560 GaimGtkConversation *gtkconv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5561
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5562 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5563 conv = (GaimConversation *)l->data;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5564
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5565 if(!GAIM_IS_GTK_CONVERSATION(conv))
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5566 continue;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5567
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5568 gtkconv = GAIM_GTK_CONVERSATION(conv);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5569
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5570 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5571 (gboolean)GPOINTER_TO_INT(value));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5572 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5573 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5574
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5575 static void
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5576 smiley_shortcuts_pref_cb(const char *name, GaimPrefType type,
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5577 gpointer value, gpointer data)
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5578 {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5579 GList *l;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5580 GaimConversation *conv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5581 GaimGtkConversation *gtkconv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5582
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5583 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5584 conv = (GaimConversation *)l->data;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5585
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5586 if(!GAIM_IS_GTK_CONVERSATION(conv))
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5587 continue;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5588
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5589 gtkconv = GAIM_GTK_CONVERSATION(conv);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5590
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5591 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5592 (gboolean)GPOINTER_TO_INT(value));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5593 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5594 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5595
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5596 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5597 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5598 gpointer value, gpointer data)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5599 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5600 GList *l;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5601 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5602 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5603 GaimConvWindow *win;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5604 GaimGtkWindow *gtkwin;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5605
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5606 for (l = gaim_get_conversations(); l != NULL; l = l->next)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5607 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5608 conv = (GaimConversation *)l->data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5609
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5610 if (!GAIM_IS_GTK_CONVERSATION(conv))
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5611 continue;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5612
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5613 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5614 win = gaim_conversation_get_window(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5615 gtkwin = GAIM_GTK_WINDOW(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5616
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5617 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5618 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5619 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5620 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5621
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5622 if (gtkconv->show_formatting_toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
5623 gtk_widget_show(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5624 else
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
5625 gtk_widget_hide(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5626 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5627 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5628
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5629 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5630 im_button_type_pref_cb(const char *name, GaimPrefType type,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5631 gpointer value, gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5632 {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5633 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5634 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5635 GaimGtkConversation *gtkconv;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5636
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5637 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5638 conv = (GaimConversation *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5639 gtkconv = GAIM_GTK_CONVERSATION(conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5640
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5641 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send));
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5642 }
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5643 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5644
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5645 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5646 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5647 gpointer value, gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5648 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5649 GList *l;
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5650 GaimConversation *conv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5651 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5652 GaimConvWindow *win;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5653
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5654 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5655 return;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5656
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5657 /* Set the "animate" flag for each icon based on the new preference */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5658 for (l = gaim_get_ims(); l != NULL; l = l->next) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5659 conv = (GaimConversation *)l->data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5660 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5661 gtkconv->u.im->animate = (gboolean)value;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5662 }
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5663
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5664 /* Now either stop or start animation for the active conversation in each window */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5665 for (l = gaim_get_windows(); l != NULL; l = l->next) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5666 win = (GaimConvWindow *)l->data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5667 conv = gaim_conv_window_get_active_conversation(win);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5668 gaim_gtkconv_update_buddy_icon(conv);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5669 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5670 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5671
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5672 static void
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5673 show_buddy_icons_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5674 gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5675 {
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5676 GList *l;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5677
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5678 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5679 GaimConversation *conv = l->data;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5680
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5681 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5682 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5683 }
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5684 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5685
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
5686 static void
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5687 chat_button_type_pref_cb(const char *name, GaimPrefType type,
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5688 gpointer value, gpointer data)
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5689 {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5690 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5691 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5692 GaimGtkConversation *gtkconv;
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5693
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5694 for (l = gaim_get_chats(); l != NULL; l = l->next) {
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5695 conv = (GaimConversation *)l->data;
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5696 gtkconv = GAIM_GTK_CONVERSATION(conv);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5697
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
5698 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send));
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5699 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5700 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5701
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5702 static void
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5703 conv_placement_pref_cb(const char *name, GaimPrefType type,
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5704 gpointer value, gpointer data)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5705 {
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5706 GaimConvPlacementFunc func;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5707
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5708 if (strcmp(name, "/gaim/gtk/conversations/placement"))
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5709 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5710
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5711 func = gaim_conv_placement_get_fnc(value);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5712
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5713 if (func == NULL)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5714 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5715
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5716 gaim_conv_placement_set_current_func(func);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5717 }
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5718
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5719 void
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5720 gaim_gtk_conversations_init(void)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5721 {
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5722 /* Conversations */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5723 gaim_prefs_add_none("/gaim/gtk/conversations");
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5724 gaim_prefs_add_bool("/gaim/gtk/conversations/icons_on_tabs", TRUE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5725 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5726 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5727 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5728 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5729 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5730 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5731 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5732 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5733 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5734 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5735 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5736 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5737 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5738 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5739 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5740 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5741 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5742 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5743 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5744 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
5743
2fef1ca3c13f [gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
5745 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5746 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5747 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5748 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5749 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5750 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5751 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5752 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5753 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5754
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5755 /* Conversations -> Chat */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5756 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5757 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5758 GAIM_BUTTON_TEXT_IMAGE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5759 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5760 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/old_tab_complete", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5761 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5762 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5763 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5764 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5765 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5766
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5767 /* Conversations -> IM */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5768 gaim_prefs_add_none("/gaim/gtk/conversations/im");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5769 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5770 GAIM_BUTTON_TEXT_IMAGE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5771 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5772 gaim_prefs_add_bool("/gaim/gtk/conversations/im/hide_on_send", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5773 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5774 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5775 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5776 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5777 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5778
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5779 /* Connect callbacks. */
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5780 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes",
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5781 escape_closes_pref_cb, NULL);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5782 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs",
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5783 icons_on_tabs_pref_cb, NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5784 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5785 close_on_tabs_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5786 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5787 show_smileys_pref_cb, NULL);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5788 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5789 show_timestamps_pref_cb, NULL);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5790 gaim_prefs_connect_callback("/gaim/gtk/conversations/html_shortcuts",
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5791 html_shortcuts_pref_cb, NULL);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5792 gaim_prefs_connect_callback("/gaim/gtk/conversations/smiley_shortcuts",
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
5793 smiley_shortcuts_pref_cb, NULL);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5794 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar",
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5795 show_formatting_toolbar_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5796 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5797 spellcheck_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5798 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5799 tab_side_pref_cb, NULL);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5800
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5801 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement",
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5802 conv_placement_pref_cb, NULL);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5803 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5804
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5805
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5806
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5807 /* IM callbacks */
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5808 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5809 im_button_type_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5810 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5811 animate_buddy_icons_pref_cb, NULL);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5812 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5813 show_buddy_icons_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5814
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5815
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5816 /* Chat callbacks */
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5817 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5818 chat_button_type_pref_cb, NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5819 }

mercurial