annotate src/gtkconv.c @ 9709:4d05b6e9e9cd

[gaim-migrate @ 10570] This patch is freaking massive. Renamed ui.h to gtkdialogs.h Renamed dialogs.c to gtkdialogs.c sed'ed the hell out of the .po files These files are similar to gtkutil.c/.h. They are meant to contain dialogs such as the "New Instant Message" window, which does not belong in gtkblist.c or gtkconv.c, and is called from both places. Eventually the functions in gtkdialogs.c/.h should be changed to conform to Gaim's naming convention. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 08 Aug 2004 00:48:19 +0000
parents d4634f26ef9b
children 2273790bb518
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1 /**
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2 * @file gtkconv.h GTK+ Conversation API
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
3 * @ingroup gtkui
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8037
diff changeset
5 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8037
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8037
diff changeset
7 * source distribution.
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
8 *
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
5fb47ec9bfe4 [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
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * (at your option) any later version.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * GNU General Public License for more details.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
24 #include "gtkinternal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
25
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 #ifndef _WIN32
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
27 # include <X11/Xlib.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
28 #endif
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
29
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 #ifdef USE_GTKSPELL
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
31 # include <gtkspell/gtkspell.h>
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
32 # ifdef _WIN32
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
33 # include "wspell.h"
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
34 # endif
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #endif
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
36
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h>
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
38
9699
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
39 #include "account.h"
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
40 #include "cmds.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
41 #include "debug.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
42 #include "imgstore.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
43 #include "log.h"
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
44 #include "notify.h"
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
45 #include "prefs.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
46 #include "prpl.h"
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
47 #include "request.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
48 #include "sound.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
49 #include "util.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
50
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
51 #include "dnd-hints.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
52 #include "gtkblist.h"
5717
1d140b31d4b3 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
53 #include "gtkconv.h"
9709
4d05b6e9e9cd [gaim-migrate @ 10570]
Mark Doliner <mark@kingant.net>
parents: 9706
diff changeset
54 #include "gtkdialogs.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
55 #include "gtkimhtml.h"
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
56 #include "gtkimhtmltoolbar.h"
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
57 #include "gtklog.h"
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
58 #include "gtkpounce.h"
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
59 #include "gtkprivacy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60 #include "gtkutils.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61 #include "stock.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
62
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
63 /* XXX */
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
64 #include "gaim.h"
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
66 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
67
7990
10c7cd1d4e17 [gaim-migrate @ 8667]
Nathan Walp <nwalp@pidgin.im>
parents: 7988
diff changeset
68 #define SEND_COLOR "#16569E"
7855
a3c9d0a1658e [gaim-migrate @ 8509]
Sean Egan <seanegan@gmail.com>
parents: 7854
diff changeset
69 #define RECV_COLOR "#A82F2F"
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
70
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 static char nick_colors[][8] = {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 "#ba55d3", /* Medium Orchid */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#ee82ee", /* Violet */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#c715b4", /* Medium Violet Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#ff69b4", /* Hot Pink */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#ff6347", /* Tomato */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#fa8c00", /* Dark Orange */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#fa8072", /* Salmon */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#b22222", /* Fire Brick */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#f4a460", /* Sandy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#cd5c5c", /* Indian Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#bc8f8f", /* Rosy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#f0e68c", /* Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#bdb76b", /* Dark Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#228b22", /* Forest Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#9acd32", /* Yellow Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#32cd32", /* Lime Green */
7755
8ebd9038ef62 [gaim-migrate @ 8400]
Mark Doliner <mark@kingant.net>
parents: 7751
diff changeset
88 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 "#2e8b57", /* Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#8fbc8f", /* Dark Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#66cdaa", /* Medium Aquamarine */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#5f9ea0", /* Cadet Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#48d1cc", /* Medium Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 "#00ced1", /* Dark Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 "#4682b4", /* Stell Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 "#00bfff", /* Deep Sky Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 "#1690ff", /* Dodger Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 "#4169ff", /* Royal Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 "#6a5acd", /* Slate Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 "#6495ed", /* Cornflower Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 "#708090", /* Slate gray */
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
102 "#2f4f4f", /* Dark Slate Gray */
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
103 "#ff8c00", /* Dark Orange */
8535
7b0df53a409d [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
104 "#006400", /* DarkGreen */
7b0df53a409d [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
105 "#8b4513", /* SaddleBrown */
7b0df53a409d [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
106 "#8b8989", /* snow4 */
7b0df53a409d [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
107 "#7d26cd", /* purple3 */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 };
6291
9287c2897a07 [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
109
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
112 typedef struct
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 GtkWidget *window;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 GtkWidget *entry;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 GtkWidget *message;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
119 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
120
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
121 } InviteBuddyInfo;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
122
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123 static GtkWidget *invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125 /* Prototypes. <-- because Paco-Paco hates this comment. */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
126 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
127 static GList *generate_invite_user_names(GaimConnection *gc);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
128 static void add_chat_buddy_common(GaimConversation *conv,
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
129 const char *name);
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
130 static gboolean tab_complete(GaimConversation *conv);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
131 static void update_typing_icon(GaimConversation *conv);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
132 static gboolean update_send_as_selection(GaimConvWindow *win);
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
133 static char *item_factory_translate_func (const char *path, gpointer func_data);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 * Callbacks
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
141 GaimConvWindow *win = (GaimConvWindow *)d;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
142
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
143 gaim_conv_window_destroy(win);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
144
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
145 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
146 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
148 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
149 close_conv_cb(GtkWidget *w, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
150 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
151 GaimConversation *conv = (GaimConversation *)d;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
152
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153 gaim_conversation_destroy(conv);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
154
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
155 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
158 static gboolean
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
159 size_allocate_cb(GtkWidget *w, GtkAllocation *allocation, GaimConversation *conv)
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
160 {
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
161 GaimGtkConversation *gtkconv;
9048
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
162 GaimConvWindow *win = gaim_conversation_get_window(conv);
9459
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
163 gboolean saveheight;
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
164
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
165 if (!GTK_WIDGET_VISIBLE(w))
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
166 return FALSE;
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
167
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
168 if (!GAIM_IS_GTK_CONVERSATION(conv))
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
169 return FALSE;
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
170
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
171 gtkconv = GAIM_GTK_CONVERSATION(conv);
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
172
9459
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
173 /* we only save the new height if the formatting toolbar visibility matches the pref */
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
174 saveheight = (gtkconv->show_formatting_toolbar == gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar"));
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
175
9048
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
176 /* I find that I resize the window when it has a bunch of conversations in it, mostly so that the tab bar
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
177 * will fit, but then I don't want new windows taking up the entire screen. I check to see if there is only one
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
178 * conversation in the window. This way we'll be setting new windows to the size of the last resized new window. */
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
179
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
180 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
181 {
9048
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
182 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1))
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
183 {
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
184 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width);
9459
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
185 if (saveheight)
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
186 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
187 }
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
188 if (w == gtkconv->entry)
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
189 gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height);
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
190 }
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
191 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
192 {
9048
f2f8a56acdb6 [gaim-migrate @ 9824]
Sean Egan <seanegan@gmail.com>
parents: 9041
diff changeset
193 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1))
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
194 {
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
195 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width);
9459
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
196 if (saveheight)
dbeca8eca296 [gaim-migrate @ 10283]
Luke Schierer <lschiere@pidgin.im>
parents: 9443
diff changeset
197 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
198 }
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
199 if (w == gtkconv->entry)
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
200 gaim_prefs_set_int("/gaim/gtk/conversations/chat/entry_height", allocation->height);
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
201 }
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
202
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
203 return FALSE;
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
204 }
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
205
7446
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
206 /* Courtesy of Galeon! */
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
207 static void
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
208 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state)
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
209 {
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
210 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE)
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
211 gtk_widget_set_state(widget, GTK_STATE_NORMAL);
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
212 }
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
213
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
214 static void
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
215 default_formatize(GaimConversation *conv)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
216 {
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
217 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
218 GaimConnection *gc = gaim_conversation_get_gc(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
219
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
220 if (gc && gc->flags & GAIM_CONNECTION_HTML)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
221 {
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
222 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_formatting"))
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
223 {
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
224 char *color;
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
225 GdkColor fg_color, bg_color;
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
226
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
227 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"))
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
228 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
229
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
230 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"))
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
231 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
232
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
233 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"))
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
234 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
235
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
236 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry),
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
237 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"));
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
238
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
239 if (!(gc->flags & GAIM_CONNECTION_NO_FONTSIZE))
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
240 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry),
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
241 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"));
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
242
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
243 if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), "") != 0)
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
244 {
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
245 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
246 &fg_color);
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
247 color = g_strdup_printf("#%02x%02x%02x",
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
248 fg_color.red / 256,
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
249 fg_color.green / 256,
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
250 fg_color.blue / 256);
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
251 }
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
252 else
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
253 color = g_strdup("");
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
254
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
255 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
256 g_free(color);
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
257
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
258 if(!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) &&
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
259 strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), "") != 0)
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
260 {
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
261 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
262 &bg_color);
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
263 color = g_strdup_printf("#%02x%02x%02x",
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
264 bg_color.red / 256,
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
265 bg_color.green / 256,
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
266 bg_color.blue / 256);
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
267 }
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
268 else
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
269 color = g_strdup("");
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
270
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
271 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
272 g_free(color);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
273 }
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
274
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
275
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
276 if (gc->flags & GAIM_CONNECTION_FORMATTING_WBFO)
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
277 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), TRUE);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
278 else
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
279 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), FALSE);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
280 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
281 }
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
282
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
283 static const char *
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
284 gaim_gtk_get_cmd_prefix(void)
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
285 {
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
286 return "/";
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
287 }
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
288
9167
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
289 static GaimCmdRet
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
290 me_command_cb(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
291 const char *cmd, char **args, char **error, void *data)
9167
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
292 {
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
293 char *tmp;
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
294
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
295 tmp = g_strdup_printf("/me %s", args[0]);
9175
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
296
9167
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
297 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
298 gaim_conv_im_send(GAIM_CONV_IM(conv), tmp);
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
299 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
300 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), tmp);
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
301
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
302 g_free(tmp);
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
303 return GAIM_CMD_RET_OK;
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
304 }
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
305
9212
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
306 static GaimCmdRet
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
307 debug_command_cb(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
308 const char *cmd, char **args, char **error, void *data)
9212
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
309 {
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
310 char *tmp, *markup;
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
311 GaimCmdStatus status;
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
312
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
313 if (!g_ascii_strcasecmp(args[0], "version")) {
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
314 tmp = g_strdup_printf(_("me is using Gaim v%s."), VERSION);
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
315 markup = gaim_escape_html(tmp);
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
316
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
317 status = gaim_cmd_do_command(conv, tmp, markup, error);
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
318
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
319 g_free(tmp);
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
320 g_free(markup);
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
321 return status;
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
322 } else {
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
323 gaim_conversation_write(conv, NULL, _("Supported debug options are: version"),
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
324 GAIM_MESSAGE_NO_LOG|GAIM_MESSAGE_ERROR, time(NULL));
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
325 return GAIM_CMD_STATUS_OK;
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
326 }
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
327 }
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
328
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
329 static GaimCmdRet
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
330 help_command_cb(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
331 const char *cmd, char **args, char **error, void *data)
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
332 {
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
333 GList *l, *text;
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
334 GString *s;
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
335
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
336 if (args[0] != NULL) {
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
337 s = g_string_new("");
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
338 text = gaim_cmd_help(conv, args[0]);
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
339
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
340 if (text) {
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
341 for (l = text; l; l = l->next)
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
342 if (l->next)
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
343 g_string_append_printf(s, "/%s\n", (char *)l->data);
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
344 else
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
345 g_string_append_printf(s, "/%s", (char *)l->data);
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
346 } else {
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
347 g_string_append(s, _("No such command (in this context)."));
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
348 }
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
349 } else {
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
350 s = g_string_new(_("Use \"/help &lt;command&gt;\" for help on a specific command.\n"
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
351 "The following commands are available in this context:\n"));
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
352
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
353 text = gaim_cmd_list(conv);
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
354 for (l = text; l; l = l->next)
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
355 if (l->next)
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
356 g_string_append_printf(s, "%s, ", (char *)l->data);
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
357 else
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
358 g_string_append_printf(s, "%s.", (char *)l->data);
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
359 }
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
360
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
361 gaim_conversation_write(conv, NULL, s->str, GAIM_MESSAGE_NO_LOG, time(NULL));
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
362 g_string_free(s, TRUE);
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
363
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
364 return GAIM_CMD_STATUS_OK;
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
365 }
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
366
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 static void
9374
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
368 send_history_add(GaimConversation *conv, const char *message)
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
369 {
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
370 GList *first;
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
371
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
372 first = g_list_first(conv->send_history);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
373
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
374 if (first->data)
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
375 g_free(first->data);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
376
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
377 first->data = g_strdup(message);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
378
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
379 conv->send_history = g_list_prepend(first, NULL);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
380 }
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
381
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
382 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
383 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
385 GaimGtkConversation *gtkconv;
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
386 char *cmd;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
387 const char *prefix;
8655
69a1b2a7a0d8 [gaim-migrate @ 9407]
Mark Doliner <mark@kingant.net>
parents: 8633
diff changeset
388 GaimAccount *account;
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
389 GaimConnection *gc;
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
390 char *buf, *clean;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 gtkconv = GAIM_GTK_CONVERSATION(conv);
8655
69a1b2a7a0d8 [gaim-migrate @ 9407]
Mark Doliner <mark@kingant.net>
parents: 8633
diff changeset
393 account = gaim_conversation_get_account(conv);
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
394 prefix = gaim_gtk_get_cmd_prefix();
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
395
9471
37f7100e58e6 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
396 if (!gaim_account_is_connected(account))
37f7100e58e6 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
397 return;
37f7100e58e6 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
398
9474
e7b312e90abb [gaim-migrate @ 10299]
Luke Schierer <lschiere@pidgin.im>
parents: 9472
diff changeset
399 if ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) &&
e7b312e90abb [gaim-migrate @ 10299]
Luke Schierer <lschiere@pidgin.im>
parents: 9472
diff changeset
400 gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))
9471
37f7100e58e6 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
401 return;
37f7100e58e6 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
402
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
403 if(gaim_prefs_get_bool("/gaim/gtk/conversations/enable_commands")) {
9602
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
404 GtkTextIter start;
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
405 cmd = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL);
9602
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
406 gtk_text_buffer_get_start_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &start);
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
407
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
408 if(cmd && (strncmp(cmd, prefix, strlen(prefix)) == 0)
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
409 && !gtk_text_iter_get_child_anchor(&start)) {
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
410 GaimCmdStatus status;
9374
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
411 char *error, *cmdline, *markup, *send_history;
9602
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
412 GtkTextIter end;
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
413
9374
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
414 send_history = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
415 send_history_add(conv, send_history);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
416 g_free(send_history);
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
417
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
418 cmdline = cmd + strlen(prefix);
9602
00e678a71a7f [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
419
9175
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
420 gtk_text_iter_forward_chars(&start, g_utf8_strlen(prefix, -1));
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
421 gtk_text_buffer_get_end_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &end);
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
422 markup = gtk_imhtml_get_markup_range(GTK_IMHTML(gtkconv->entry), &start, &end);
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
423 status = gaim_cmd_do_command(conv, cmdline, markup, &error);
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
424 g_free(cmd);
9175
3e2ea5b69605 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
425 g_free(markup);
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
426
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
427 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
428 default_formatize(conv);
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
429
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
430 switch(status) {
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
431 case GAIM_CMD_STATUS_OK:
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
432 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
433 case GAIM_CMD_STATUS_NOT_FOUND:
9212
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
434 gaim_conversation_write(conv, "", _("No such command. If you didn't mean "
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
435 "to type a command, you can turn "
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
436 "commands off from Tools->"
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
437 "Preferences->Interface->Conversation"
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
438 "->Enable \"slash\" commands."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
439 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
440 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
441 case GAIM_CMD_STATUS_WRONG_ARGS:
9212
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
442 gaim_conversation_write(conv, "", _("Syntax Error: You typed the wrong number of arguments "
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
443 "to that command. If you didn't mean to type a command, "
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
444 "you can turn commands off from Tools->Preferences->"
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
445 "Interface->Conversation->Enable \"slash\" commands."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
446 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
447 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
448 case GAIM_CMD_STATUS_FAILED:
9212
a10359a27789 [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
449 gaim_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
450 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
451 if(error)
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
452 g_free(error);
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
453 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
454 case GAIM_CMD_STATUS_WRONG_TYPE:
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
455 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
456 gaim_conversation_write(conv, "", _("That command only works in Chats, not IMs."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
457 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
458 else
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
459 gaim_conversation_write(conv, "", _("That command only works in IMs, not Chats."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
460 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
461 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
462 case GAIM_CMD_STATUS_WRONG_PRPL:
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
463 gaim_conversation_write(conv, "", _("That command doesn't work on this protocol."),
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
464 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
465 return;
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
466 }
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
467 }
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
468
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
469 g_free(cmd);
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
470 }
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
471
8655
69a1b2a7a0d8 [gaim-migrate @ 9407]
Mark Doliner <mark@kingant.net>
parents: 8633
diff changeset
472
8442
3d0178c4f390 [gaim-migrate @ 9172]
Luke Schierer <lschiere@pidgin.im>
parents: 8439
diff changeset
473 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
474 clean = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL);
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
475
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
478 if (strlen(clean) == 0) {
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
479 g_free(clean);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
483 gc = gaim_account_get_connection(account);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
484 if (gc && (gc->flags & GAIM_CONNECTION_NO_NEWLINES)) {
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
485 char **bufs;
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
486 int i;
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
487
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
488 bufs = gtk_imhtml_get_markup_lines(GTK_IMHTML(gtkconv->entry));
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
489 for (i = 0; bufs[i]; i++) {
9374
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
490 send_history_add(conv, bufs[i]);
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
491 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
492 gaim_conv_im_send(GAIM_CONV_IM(conv), bufs[i]);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
493 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
494 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), bufs[i]);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
495 }
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
496
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
497 g_strfreev(bufs);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
498
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
499 } else {
9374
e4654f277514 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
500 send_history_add(conv, buf);
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
501 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
502 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
503 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
504 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
505 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
507 g_free(clean);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 g_free(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
510 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
511 default_formatize(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514 static void
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
515 add_remove_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
517 GaimAccount *account;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
520 account = gaim_conversation_get_account(conv);
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
521 name = gaim_conversation_get_name(conv);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
522
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
523 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
524 GaimBuddy *b;
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
525
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
526 b = gaim_find_buddy(account, name);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
527 if (b != NULL)
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
528 show_confirm_del(b);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
529 else if (account != NULL && gaim_account_is_connected(account))
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
530 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
531 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
532 GaimChat *c;
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
533
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
534 c = gaim_blist_find_chat(account, name);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
535 if (c != NULL)
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
536 show_confirm_del_blist_chat(c);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
537 else if (account != NULL && gaim_account_is_connected(account))
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
538 gaim_blist_request_add_chat(account, NULL, NULL);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
539 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
544 static void chat_do_info(GaimConversation *conv, const char *who)
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
545 {
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
546 GaimPluginProtocolInfo *prpl_info = NULL;
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
547 GaimConnection *gc;
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
548
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
549 if ((gc = gaim_conversation_get_gc(conv))) {
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
550 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
551
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
552 /*
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
553 * If there are special needs for getting info on users in
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
554 * buddy chat "rooms"...
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
555 */
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
556 if (prpl_info->get_cb_info != NULL)
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
557 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
558 prpl_info->get_cb_info(gc,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
559 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
560 }
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
561 else
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
562 prpl_info->get_info(gc, who);
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
563 }
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
564 }
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
565
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
566
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
568 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
570 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
571
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
572 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
573
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
574 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
575 serv_get_info(gaim_conversation_get_gc(conv),
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
576 gaim_conversation_get_name(conv));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
577
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
578 gtk_widget_grab_focus(gtkconv->entry);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
579 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
580 /* Get info of the person currently selected in the GtkTreeView */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
581 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
582 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584 GtkTreeSelection *sel;
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
585 char *name;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
586
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
587 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
589 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
592 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
593 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
597 chat_do_info(conv, name);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
598 g_free(name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
602 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
603 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
605 show_warn_dialog(gaim_conversation_get_gc(conv),
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
606 gaim_conversation_get_name(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
607
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
608 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
612 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
613 {
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
614 GaimAccount *account;
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
615
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
616 account = gaim_conversation_get_account(conv);
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
617
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
618 if (account != NULL && gaim_account_is_connected(account))
6399
d726a36628e8 [gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents: 6398
diff changeset
619 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
622 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
623
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
624 static void
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
625 send_file_cb(GtkWidget *widget, GaimConversation *conv)
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
626 {
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
627 serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
628 }
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
629
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
630 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
631 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
632 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
633 const char *buddy, *message;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
634 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
635
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
636 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
637
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
638 if (resp == GTK_RESPONSE_OK) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
639 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
640 message = gtk_entry_get_text(GTK_ENTRY(info->message));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
642 if (!g_ascii_strcasecmp(buddy, "")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
644
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
645 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
646 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
647
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648 serv_chat_invite(gaim_conversation_get_gc(info->conv),
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
649 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)),
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
650 message, buddy);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
651 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
652
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
653 gtk_widget_destroy(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
654 invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
655
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
657 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
658
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
659 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
660 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
661 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
662 InviteBuddyInfo *info = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
663
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
664 if (invite_dialog == NULL) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
665 GaimConnection *gc;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
666 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
667 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
669 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
670 GtkWidget *table;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
671 GtkWidget *img;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
672
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
673 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
674 GTK_ICON_SIZE_DIALOG);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
675
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
676 info = g_new0(InviteBuddyInfo, 1);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
677 info->conv = conv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
678
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
679 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
680 win = gaim_conversation_get_window(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
681 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
682
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
683 /* Create the new dialog. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
684 invite_dialog = gtk_dialog_new_with_buttons(
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
685 _("Invite Buddy Into Chat Room"),
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
686 GTK_WINDOW(gtkwin->window), 0,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
687 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
9443
3584cdab1d0b [gaim-migrate @ 10264]
Christian Hammond <chipx86@chipx86.com>
parents: 9374
diff changeset
688 GAIM_STOCK_INVITE, GTK_RESPONSE_OK, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
689
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
690 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
691 GTK_RESPONSE_OK);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
692 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
693 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
694 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
696 /* Setup the outside spacing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
697 vbox = GTK_DIALOG(invite_dialog)->vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
698
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
699 gtk_box_set_spacing(GTK_BOX(vbox), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
700 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
701
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
702 /* Setup the inner hbox and put the dialog's icon in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
703 hbox = gtk_hbox_new(FALSE, 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
704 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
705 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
706 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
707
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
708 /* Setup the right vbox. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
709 vbox = gtk_vbox_new(FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
710 gtk_container_add(GTK_CONTAINER(hbox), vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
711
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
712 /* Put our happy label in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
713 label = gtk_label_new(_("Please enter the name of the user you wish "
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
714 "to invite, along with an optional invite "
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
715 "message."));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
716 gtk_widget_set_size_request(label, 350, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
717 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
718 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
719 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
720
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
721 /* hbox for the table, and to give it some spacing on the left. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
722 hbox = gtk_hbox_new(FALSE, 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
723 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
724
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
725 /* Setup the table we're going to use to lay stuff out. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
726 table = gtk_table_new(2, 2, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
727 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
728 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
729 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
730 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
731
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
732 /* Now the Buddy label */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
733 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
734 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
735 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
736 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
737
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
738 /* Now the Buddy drop-down entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
739 info->entry = gtk_combo_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
740 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
741 gtk_entry_set_activates_default(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
742 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
743
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
744 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
745 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
746
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
747 /* Fill in the names. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
748 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
749 generate_invite_user_names(gc));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
750
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
751
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
752 /* Now the label for "Message" */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
753 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
754 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
755 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
756 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
757
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
758
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
759 /* And finally, the Message entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
760 info->message = gtk_entry_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
761 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
762
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
763 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
764 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
765
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
766 /* Connect the signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
767 g_signal_connect(G_OBJECT(invite_dialog), "response",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
768 G_CALLBACK(do_invite), info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
769 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
770
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
771 gtk_widget_show_all(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
772
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
773 if (info != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
774 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
775 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
776
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
777 static void
7748
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
778 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget)
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
779 {
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
780 show_im_dialog();
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
781 }
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
782
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
783 static void
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
784 savelog_writefile_cb(void *user_data, const char *filename)
9489
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
785 {
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
786 GaimConversation *conv = (GaimConversation *)user_data;
9489
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
787 FILE *fp;
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
788 const char *name;
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
789
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
790 if ((fp = fopen(filename, "w+")) == NULL) {
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
791 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL);
9489
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
792 return;
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
793 }
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
794
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
795 name = gaim_conversation_get_name(conv);
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
796 fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name);
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
797 fprintf(fp, "%s", conv->history->str);
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
798 fclose(fp);
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
799 }
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
800
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
801 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
802 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
803 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
804 GaimConvWindow *win = (GaimConvWindow *)data;
9489
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
805 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
806 gchar *buf;
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
807
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
808 buf = g_strdup_printf("%s.html", gaim_normalize(conv->account, conv->name));
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
809
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
810 gaim_request_file(conv, _("Save Conversation"), buf, TRUE,
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
811 G_CALLBACK(savelog_writefile_cb), NULL, conv);
9489
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
812
85caa0722dfc [gaim-migrate @ 10314]
Mark Doliner <mark@kingant.net>
parents: 9487
diff changeset
813 g_free(buf);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
814 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
817 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
819 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
820 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
821
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
822 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
823
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
824 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
825 gaim_conversation_get_account(conv));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
826 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
827
8974
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
828 static void
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
829 menu_clear_cb(gpointer data, guint action, GtkWidget *widget)
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
830 {
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
831 GaimConvWindow *win = (GaimConvWindow *)data;
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
832 GaimConversation *conv;
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
833 GaimGtkConversation *gtkconv;
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
834
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
835 conv = gaim_conv_window_get_active_conversation(win);
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
836 gtkconv = GAIM_GTK_CONVERSATION(conv);
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
837
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
838 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
839 g_string_free(conv->history, TRUE);
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
840 conv->history = g_string_new("");
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
841 }
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
842
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
843 struct _search {
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
844 GaimGtkConversation *gtkconv;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
845 GtkWidget *entry;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
846 };
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
847
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
848 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s)
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
849 {
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
850 switch (resp) {
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
851 case GTK_RESPONSE_OK:
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
852 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
853 gtk_entry_get_text(GTK_ENTRY(s->entry)));
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
854 break;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
855
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
856 case GTK_RESPONSE_DELETE_EVENT:
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
857 case GTK_RESPONSE_CLOSE:
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
858 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml));
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
859 gtk_widget_destroy(s->gtkconv->dialogs.search);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
860 s->gtkconv->dialogs.search = NULL;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
861 g_free(s);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
862 break;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
863 }
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
864 }
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
865
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
866 static void
7751
d691cb95ee67 [gaim-migrate @ 8396]
Mark Doliner <mark@kingant.net>
parents: 7748
diff changeset
867 menu_find_cb(gpointer data, guint action, GtkWidget *widget)
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
868 {
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
869 GaimConvWindow *win = (GaimConvWindow *)data;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
870 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
871 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
872 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
873 GtkWidget *hbox;
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
874 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
875 GTK_ICON_SIZE_DIALOG);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
876 GtkWidget *label;
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
877 struct _search *s;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
878
7798
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
879 if (gtkconv->dialogs.search) {
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
880 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search));
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
881 return;
7798
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
882 }
7300
41bbe5534441 [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
883
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
884 s = g_malloc(sizeof(struct _search));
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
885 s->gtkconv = gtkconv;
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
886
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
887 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"),
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
888 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
889 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
890 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
891 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
892 GTK_RESPONSE_OK);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
893 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
894 G_CALLBACK(do_search_cb), s);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
895
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
896 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
897 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
898 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
899 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
900 gtk_container_set_border_width(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
901 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
902
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
903 hbox = gtk_hbox_new(FALSE, 12);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
904 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
905 hbox);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
906 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
907
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
908 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
909 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
910 GTK_RESPONSE_OK, FALSE);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
911
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
912 label = gtk_label_new(NULL);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
913 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:"));
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
914 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
915
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
916 s->entry = gtk_entry_new();
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
917 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
918 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry));
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
919 g_signal_connect(G_OBJECT(s->entry), "changed",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
920 G_CALLBACK(gaim_gtk_set_sensitive_if_input),
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
921 gtkconv->dialogs.search);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
922 gtk_box_pack_start(GTK_BOX(hbox), s->entry, FALSE, FALSE, 0);
7300
41bbe5534441 [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
923
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
924 gtk_widget_show_all(gtkconv->dialogs.search);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
925 gtk_widget_grab_focus(s->entry);
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
926 }
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
927
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
928 static void
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
929 menu_send_file_cb(gpointer data, guint action, GtkWidget *widget)
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
930 {
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
931 GaimConvWindow *win = (GaimConvWindow *)data;
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
932 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
933
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
934 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
935 serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
936 }
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
937
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
938 }
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
939
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
940 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
942 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
943 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
944 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
945
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
946 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
947
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
948 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
949 gaim_conversation_get_name(conv), NULL);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
950 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
951
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
952 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
953 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
954 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
955 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
956 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
957 GaimGtkConversation *gtkconv;
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
958 GtkIMHtmlToolbar *toolbar;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
959
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
960 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
961 gtkconv = GAIM_GTK_CONVERSATION(conv);
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
962 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar);
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
963
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
964 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link),
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
965 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link)));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
966 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
967
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
968 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
969 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
970 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
971 GaimConvWindow *win = (GaimConvWindow *)data;
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
972 GaimConversation *conv;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 GaimGtkConversation *gtkconv;
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
974 GtkIMHtmlToolbar *toolbar;
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
975
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
976 conv = gaim_conv_window_get_active_conversation(win);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
977 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win));
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
978 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar);
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
979
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
980 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image),
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
981 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image)));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
983
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
984 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
987 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
988 GaimConversation *conv;
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
989 GaimAccount *account;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
990 const char *name;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
991
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
992 conv = gaim_conv_window_get_active_conversation(win);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
993 account = gaim_conversation_get_account(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
994 name = gaim_conversation_get_name(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
995
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
996 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
997 GaimBuddy *b;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
998
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
999 b = gaim_find_buddy(account, name);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1000 if (b != NULL)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1001 alias_dialog_bud(b);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1002 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1003 GaimChat *c;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1004
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1005 c = gaim_blist_find_chat(account, name);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1006 if (c != NULL)
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
1007 alias_dialog_blist_chat(c);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1008 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1009 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1010
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1011 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1012 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1014 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1015 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1016
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1017 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1018
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1019 info_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1020 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1021
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1022 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1023 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1024 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1025 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1026 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1027
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1028 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1029
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1030 invite_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1031 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1032
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1033 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1034 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1035 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1036 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1037 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1038
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1039 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1040
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1041 warn_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1042 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1043
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1044 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1045 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1046 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1047 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1048 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1049
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1050 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1051
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1052 block_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1053 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1054
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1055 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1056 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1057 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1058 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1059 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1060
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1061 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1062
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
1063 add_remove_cb(NULL, conv);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1064 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1065
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1066 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1067 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1068 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1069 GaimConvWindow *win = (GaimConvWindow *)data;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1070
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1071 close_conv_cb(NULL, gaim_conv_window_get_active_conversation(win));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1072 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1073
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1074 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1075 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1076 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1077 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1078 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1079
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1080 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1081
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1082 if (conv == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1083 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1084
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1085 gaim_conversation_set_logging(conv,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1086 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1087 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1088
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1089 static void
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1090 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1091 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1092 GaimConvWindow *win = (GaimConvWindow *)data;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1093 GaimConversation *conv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1094 GaimGtkConversation *gtkconv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1095
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1096 conv = gaim_conv_window_get_active_conversation(win);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1097
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1098 if (conv == NULL)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1099 return;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1100
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1101 gtkconv = GAIM_GTK_CONVERSATION(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1102
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1103 gtkconv->show_formatting_toolbar =
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1104 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1105
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1106 if (gtkconv->show_formatting_toolbar)
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
1107 gtk_widget_show(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1108 else
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
1109 gtk_widget_hide(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1110 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1111
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
1112 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1113 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1114 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1115 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1116 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1117 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1118
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1119 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1120
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1121 if (!conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1122 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1123
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1124 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1125
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1126 gtkconv->make_sound =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1127 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1128 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1129
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1130 static void
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1131 menu_timestamps_cb(gpointer data, guint action, GtkWidget *widget)
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1132 {
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1133 GaimConvWindow *win = (GaimConvWindow *)data;
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1134 GaimConversation *conv;
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1135 GaimGtkConversation *gtkconv;
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1136
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1137 conv = gaim_conv_window_get_active_conversation(win);
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1138
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1139 if (!conv)
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1140 return;
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1141
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1142 gtkconv = GAIM_GTK_CONVERSATION(conv);
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1143
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1144 gtkconv->show_timestamps =
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1145 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1146 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1147 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1148 }
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1149
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
1150 static void
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1151 chat_do_im(GaimConversation *conv, const char *who)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1152 {
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1153 GaimPluginProtocolInfo *prpl_info = NULL;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1154 char *real_who;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1155 GaimConversation *conv2;
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1156 GaimAccount *account;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1157
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1158 account = gaim_conversation_get_account(conv);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1159
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1160 if(account && account->gc)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1161 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1162
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1163 if(prpl_info && prpl_info->get_cb_real_name)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1164 real_who = prpl_info->get_cb_real_name(account->gc,
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1165 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1166 else
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1167 real_who = g_strdup(who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1168
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1169 if(!real_who)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1170 return;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1171
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1172 conv2 = gaim_find_conversation_with_account(real_who, account);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1173
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1174 if (conv2 != NULL)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1175 gaim_conv_window_show(gaim_conversation_get_window(conv2));
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1176 else
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1177 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1178
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1179 g_free(real_who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1180 }
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1181
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1182
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1183 static void
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1184 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1185 {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1186 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1187 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1188 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1189 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1190 GtkTreeSelection *sel;
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
1191 char *name;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1192
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1193 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1194 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1195
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1196 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1197 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1198
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1199 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
1200 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1201 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1202 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1203
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1204 chat_do_im(conv, name);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
1205 g_free(name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1206 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1207
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1208 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1209 ignore_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1210 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1211 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1212 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1213 GaimConvChat *chat;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1214 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1215 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1216 GtkTreeSelection *sel;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1217 const char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1218
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1219 chat = GAIM_CONV_CHAT(conv);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1220 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1221 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1222
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1223 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1224 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1225
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1226 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
1227 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1228 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1229 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1230 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1231 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1232
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1233 if (gaim_conv_chat_is_user_ignored(chat, name))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1234 gaim_conv_chat_unignore(chat, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1235 else
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1236 gaim_conv_chat_ignore(chat, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1237
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
1238 add_chat_buddy_common(conv, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1239 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1240
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1241 static void
7398
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1242 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1243 {
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1244 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1245
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1246 chat_do_im(conv, who);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1247 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1248
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1249 static void
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1250 menu_chat_send_file_cb(GtkWidget *w, GaimConversation *conv)
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1251 {
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1252 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1253 GaimConnection *gc = gaim_conversation_get_gc(conv);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1254
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1255 serv_send_file(gc, who, NULL);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1256 }
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1257
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1258 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1259 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1260 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1261 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1262
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1263 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1264
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1265 chat_do_info(conv, who);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1266 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1267
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1268 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1269 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1270 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1271 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1272 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1273 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1274
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1275 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1276 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1277
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1278 if (gc != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1279 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1280
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1281 /*
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1282 * May want to expand this to work similarly to menu_info_cb?
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1283 */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1284
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1285 if (prpl_info->get_cb_away != NULL)
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1286 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1287 prpl_info->get_cb_away(gc,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1288 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1289 }
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1290 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1291 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1292
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1293 static void
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
1294 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1295 {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1296 GaimAccount *account;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1297 GaimBuddy *b;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1298 char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1299
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1300 account = gaim_conversation_get_account(conv);
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1301 name = g_object_get_data(G_OBJECT(w), "user_data");
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1302 b = gaim_find_buddy(account, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1303
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1304 if (b != NULL)
5975
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5966
diff changeset
1305 show_confirm_del(b);
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1306 else if (account != NULL && gaim_account_is_connected(account))
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1307 gaim_blist_request_add_buddy(account, name, NULL, NULL);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1308
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1309 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1310 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1311
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1312 static GtkWidget *
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1313 create_chat_menu(GaimConversation *conv, gchar *who,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1314 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1315 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1316 static GtkWidget *menu = NULL;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1317 GtkWidget *button;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1318
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1319 /*
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1320 * If a menu already exists, destroy it before creating a new one,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1321 * thus freeing-up the memory it occupied.
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1322 */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1323 if (menu)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1324 gtk_widget_destroy(menu);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1325
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1326 menu = gtk_menu_new();
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1327
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1328 button = gtk_menu_item_new_with_label(_("IM"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1329 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1330 G_CALLBACK(menu_chat_im_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1331 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1332 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1333 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1334
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1335 if (gc && prpl_info && prpl_info->send_file
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1336 && (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) {
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1337 button = gtk_menu_item_new_with_label(_("Send File"));
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1338 g_signal_connect(G_OBJECT(button), "activate",
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1339 G_CALLBACK(menu_chat_send_file_cb), conv);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1340 g_object_set_data(G_OBJECT(button), "user_data", who);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1341 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1342 gtk_widget_show(button);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
1343 }
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
1344
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1345 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1346 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1347 else
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1348 button = gtk_menu_item_new_with_label(_("Ignore"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1349
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1350 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1351 G_CALLBACK(ignore_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1352 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1353 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1354 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1355
8170
9d1a984681fe [gaim-migrate @ 8883]
Nathan Walp <nwalp@pidgin.im>
parents: 8159
diff changeset
1356 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1357 button = gtk_menu_item_new_with_label(_("Info"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1358 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1359 G_CALLBACK(menu_chat_info_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1360 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1361 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1362 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1363 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1364
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1365 if (gc && prpl_info->get_cb_away) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1366 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1367 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1368 G_CALLBACK(menu_chat_get_away_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1369 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1370 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1371 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1372 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1373
8170
9d1a984681fe [gaim-migrate @ 8883]
Nathan Walp <nwalp@pidgin.im>
parents: 8159
diff changeset
1374 /* XXX: jabber can only add buddies from here in certain circumstances */
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1375 /* Added by Jonas <jonas@birme.se> */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1376 if (gc) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1377 if (gaim_find_buddy(gc->account, who))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1378 button = gtk_menu_item_new_with_label(_("Remove"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1379 else
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1380 button = gtk_menu_item_new_with_label(_("Add"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1381
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1382 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1383 G_CALLBACK(menu_chat_add_remove_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1384
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1385 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1386 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1387 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1388 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1389 /* End Jonas */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1390
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1391 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1392 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1393
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1394
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1395 static gint
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1396 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1397 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1398 GaimGtkConversation *gtkconv;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1399 GaimPluginProtocolInfo *prpl_info = NULL;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1400 GaimGtkChatPane *gtkchat;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1401 GaimConnection *gc;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1402 GaimAccount *account;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1403 GtkTreeSelection *sel;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1404 GtkTreeIter iter;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1405 GtkTreeModel *model;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1406 GtkWidget *menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1407 gchar *who;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1408
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1409 gtkconv = GAIM_GTK_CONVERSATION(conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1410 gtkchat = gtkconv->u.chat;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1411 account = gaim_conversation_get_account(conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1412 gc = account->gc;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1413
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1414 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1415
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1416 if (gc != NULL)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1417 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1418
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1419 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1420 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1421 return FALSE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1422
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
1423 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1424 menu = create_chat_menu (conv, who, prpl_info, gc);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1425 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1426 gaim_gtk_treeview_popup_menu_position_func, widget,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1427 0, GDK_CURRENT_TIME);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1428
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1429 return TRUE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1430 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1431
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1432
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1433 static gint
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1434 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1435 GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1436 {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1437 GaimGtkConversation *gtkconv;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1438 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1439 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1440 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1441 GaimAccount *account;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1442 GtkTreePath *path;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1443 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1444 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1445 GtkTreeViewColumn *column;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1446 gchar *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1447 int x, y;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1448
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1449 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1450 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1451 account = gaim_conversation_get_account(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1452 gc = account->gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1453
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1454 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1455
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1456 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1457 event->x, event->y, &path, &column, &x, &y);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1458
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1459 if (path == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1460 return FALSE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1461
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1462 if (gc != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1463 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1464
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1465 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1466 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1467
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1468 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
1469 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1470
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1471 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
7398
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1472 chat_do_im(conv, who);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
1473 g_free(who);
7398
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1474 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1475 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1476 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1477 event->button, event->time);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1478 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1479
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1480 return TRUE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1481 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1482
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1483 static void
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1484 move_to_next_unread_tab(GaimConversation *conv)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1485 {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1486 GaimConversation *next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1487 GaimConvWindow *win;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1488 GList *l;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1489 int index, i;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1490
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1491 win = gaim_conversation_get_window(conv);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1492 index = gaim_conversation_get_index(conv);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1493
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1494 /* First check the tabs after this position. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1495 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1496 l != NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1497 l = l->next) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1498
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1499 next_conv = (GaimConversation *)l->data;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1500
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1501 if (gaim_conversation_get_unseen(next_conv) > 0)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1502 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1503
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1504 next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1505 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1506
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1507 if (next_conv == NULL) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1508
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1509 /* Now check before this position. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1510 for (l = gaim_conv_window_get_conversations(win), i = 0;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1511 l != NULL && i < index;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1512 l = l->next) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1513
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1514 next_conv = (GaimConversation *)l->data;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1515
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1516 if (gaim_conversation_get_unseen(next_conv) > 0)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1517 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1518
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1519 next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1520 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1521
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1522 if (next_conv == NULL) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1523 /* Okay, just grab the next conversation tab. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1524 if (index == gaim_conv_window_get_conversation_count(win) - 1)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1525 next_conv = gaim_conv_window_get_conversation_at(win, 0);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1526 else
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1527 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1528 next_conv = gaim_conv_window_get_conversation_at(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1529 index + 1);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1530 }
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1531 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1532 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1533
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1534 if (next_conv != NULL && next_conv != conv) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1535 gaim_conv_window_switch_conversation(win,
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1536 gaim_conversation_get_index(next_conv));
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1537 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1538 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1539
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1540 static gboolean
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1541 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1543 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1544 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1545 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1546 GaimGtkWindow *gtkwin;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1547 int numconvs;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1548 int curconv;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1549
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1550 conv = (GaimConversation *)data;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1551 gtkconv = GAIM_GTK_CONVERSATION(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1552 win = gaim_conversation_get_window(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1553 gtkwin = GAIM_GTK_WINDOW(win);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1554 numconvs = gaim_conv_window_get_conversation_count(win);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1555 curconv = gaim_conversation_get_index(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1556
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1557 /* If CTRL was held down... */
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1558 if (event->state & GDK_CONTROL_MASK) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 switch (event->keyval) {
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1560 case GDK_Return:
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1561 case GDK_KP_Enter:
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1562 if (gaim_prefs_get_bool(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1563 "/gaim/gtk/conversations/ctrl_enter_sends"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1564 {
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1565 send_cb(NULL, conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1566
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1567 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1568 }
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1569 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1570
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1571 case GDK_Up:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1572 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1573 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1574
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575 if (!conv->send_history->prev) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576 GtkTextIter start, end;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1577
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 if (conv->send_history->data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1579 g_free(conv->send_history->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1580
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582 &start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1584
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1585 conv->send_history->data =
8506
887c0259b47b [gaim-migrate @ 9242]
Luke Schierer <lschiere@pidgin.im>
parents: 8496
diff changeset
1586 gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 }
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1588
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 if (conv->send_history->next &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590 conv->send_history->next->data) {
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1591 GtkTextIter iter;
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1592 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1594 conv->send_history = conv->send_history->next;
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
1595 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1596 gtk_imhtml_append_text_with_images(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1597 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1598 0, NULL);
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1599 /* this is mainly just a hack so the formatting at the
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1600 * cursor gets picked up. */
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1601 gtk_text_buffer_get_end_iter(buffer, &iter);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1602 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1605 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1607
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1608 case GDK_Down:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1610 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1612 if (conv->send_history->prev &&
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1613 conv->send_history->prev->data) {
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1614 GtkTextIter iter;
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1615 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1616
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617 conv->send_history = conv->send_history->prev;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1618 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1619 gtk_imhtml_append_text_with_images(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1620 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1621 0, NULL);
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1622 /* this is mainly just a hack so the formatting at the
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1623 * cursor gets picked up. */
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1624 gtk_text_buffer_get_end_iter(buffer, &iter);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
1625 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1626 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1627
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1628 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1629 break;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1630
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1631 case GDK_Page_Down:
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1632 case ']':
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1633 gaim_conv_window_switch_conversation(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1634 (curconv + 1) % numconvs);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1635
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1636 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1637 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1638
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1639 case GDK_Page_Up:
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1640 case '[':
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1641 gaim_conv_window_switch_conversation(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1642 (curconv + numconvs - 1) % numconvs);
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1643
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1644 return TRUE;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1645 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1646
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1647 case GDK_Tab:
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1648 move_to_next_unread_tab(conv);
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1649
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1650 return TRUE;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1651 break;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1652
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1653 case 'z':
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1654 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1655
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1656 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1657 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1658
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1659 } /* End of switch */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1660 }
8758
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
1661
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1662 /* If ALT (or whatever) was held down... */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1663 else if (event->state & GDK_MOD1_MASK)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1664 {
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8730
diff changeset
1665 /* XXX - Make sure the conv exists before switching to it */
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1666 if (event->keyval > '0' && event->keyval <= '9') {
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1667 int switchto = event->keyval - '1';
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1668 if (switchto < numconvs)
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1669 gaim_conv_window_switch_conversation(win, switchto);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1673 }
8758
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
1674
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1675 /* If neither CTRL nor ALT were held down... */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1676 else
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1677 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1678 switch (event->keyval)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1679 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1680 case GDK_Return:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1681 case GDK_KP_Enter:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1682 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1683 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1684 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1685 send_cb(NULL, conv);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1686 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1687 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1688 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1689
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1690 case GDK_Tab:
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
1691 return tab_complete(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1692 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1693
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1694 case GDK_Page_Up:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1695 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1696 return TRUE;
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1697 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1698
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1699 case GDK_Page_Down:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1700 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1701 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1702 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1703
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1704 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1705 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1707 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 * NOTE:
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1712 * This guy just kills a single right click from being propagated any
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1713 * further. I have no idea *why* we need this, but we do ... It
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714 * prevents right clicks on the GtkTextView in a convo dialog from
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1715 * going all the way down to the notebook. I suspect a bug in
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716 * GtkTextView, but I'm not ready to point any fingers yet.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1721 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 /* Right single click */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730
8173
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1731 /*
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1732 * If someone tries to type into the conversation backlog of a
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1733 * conversation window then we yank focus from the conversation backlog
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1734 * and give it to the text entry box so that people can type
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1735 * all the live long day and it will get entered into the entry box.
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1736 */
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1737 static gboolean
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1738 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1739 {
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1740 GaimGtkConversation *gtkconv = data;
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1741
8237
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1742 /* If we have a valid key for the conversation display, then exit */
8224
ad524b8c9c71 [gaim-migrate @ 8947]
Mark Doliner <mark@kingant.net>
parents: 8202
diff changeset
1743 if ((event->state & GDK_CONTROL_MASK) ||
8237
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1744 (event->keyval == GDK_F10) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1745 (event->keyval == GDK_Shift_L) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1746 (event->keyval == GDK_Shift_R) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1747 (event->keyval == GDK_Escape) ||
8177
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1748 (event->keyval == GDK_Up) ||
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1749 (event->keyval == GDK_Down) ||
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1750 (event->keyval == GDK_Left) ||
8191
90a1fbd2493d [gaim-migrate @ 8912]
Mark Doliner <mark@kingant.net>
parents: 8189
diff changeset
1751 (event->keyval == GDK_Right) ||
90a1fbd2493d [gaim-migrate @ 8912]
Mark Doliner <mark@kingant.net>
parents: 8189
diff changeset
1752 (event->keyval == GDK_Home) ||
9297
391a6533296a [gaim-migrate @ 10100]
Mark Doliner <mark@kingant.net>
parents: 9287
diff changeset
1753 (event->keyval == GDK_End) ||
391a6533296a [gaim-migrate @ 10100]
Mark Doliner <mark@kingant.net>
parents: 9287
diff changeset
1754 (event->keyval == GDK_Tab) ||
391a6533296a [gaim-migrate @ 10100]
Mark Doliner <mark@kingant.net>
parents: 9287
diff changeset
1755 (event->keyval == GDK_ISO_Left_Tab))
8177
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1756 return FALSE;
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1757
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1758 if (event->type == GDK_KEY_RELEASE)
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1759 gtk_widget_grab_focus(gtkconv->entry);
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1760
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1761 gtk_widget_event(gtkconv->entry, (GdkEvent *)event);
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1762
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1763 return TRUE;
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1764 }
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1765
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 static void
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1767 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1769 GaimConvWindow *win = g_object_get_data(m, "user_data");
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1770 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1771 GaimConversation *conv;
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
1772 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1774 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1776 gaim_conversation_set_account(conv, account);
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
1777
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
1778 gtkconv = GAIM_GTK_CONVERSATION(conv);
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
1779 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
1780 gaim_account_get_protocol_name(conv->account));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 gchar *new_text, gint new_text_length, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1787 GaimConversation *conv = (GaimConversation *)user_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1789 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1791 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 gtk_text_iter_is_end(position)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 GtkTextIter *end_pos, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1802 GaimConversation *conv = (GaimConversation *)user_data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1803 GaimConvIm *im;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1805 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1807 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1810 im = GAIM_CONV_IM(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1813
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1814 /* We deleted all the text, so turn off typing. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1815 if (gaim_conv_im_get_type_again_timeout(im))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1816 gaim_conv_im_stop_type_again_timeout(im);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818 serv_send_typing(gaim_conversation_get_gc(conv),
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1819 gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1820 GAIM_NOT_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1822 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1823 /* We're deleting, but not all of it, so it counts as typing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1824 got_typing_keypress(conv, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1825 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1829 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831 static GdkCursor *cursor = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1832
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1833 gtkwin->in_drag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 if (cursor == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 cursor = gdk_cursor_new(GDK_FLEUR);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1845 /* Grab the pointer */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846 gtk_grab_add(gtkwin->notebook);
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1847 #ifndef _WIN32
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1848 /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1849 always be true after a button press. */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1850 if (!gdk_pointer_is_grabbed())
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1851 #endif
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1852 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1853 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1854 NULL, cursor, GDK_CURRENT_TIME);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1855 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1856
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1857 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1858 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1860 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 * Make sure the user moved the mouse far enough for the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866 * drag to be initiated.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1872 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1873
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1877 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1878 else { /* Otherwise, draw the arrows. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1879 GaimConvWindow *dest_win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1880 GaimGtkWindow *dest_gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1881 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882 GtkWidget *tab, *last_vis_tab = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 gboolean horiz_tabs = FALSE, tab_found = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1887
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1888 /* Get the window that the cursor is over. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1889 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1890
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1891 if (dest_win == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1892 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1893
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1894 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1895 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1897 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1898
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1899 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1900
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1901 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1902
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1903 arrow1_x = arrow2_x = nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1904 arrow1_y = arrow2_y = nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1905
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1906 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1907 e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1908
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1909 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1910 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1911
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 horiz_tabs = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1914
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1915 /* Find out where to put the arrows. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1916 for (l = gaim_conv_window_get_conversations(dest_win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1918 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1920 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1924 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925 * If this is the correct tab, record the positions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 * for the arrows.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1927 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1928 if (i == page_num) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1930 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 arrow1_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 arrow2_y = nb_y + tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1933 tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1936 arrow1_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937 arrow2_x = nb_x + tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1938 tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1939 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1940 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1941
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1942 tab_found = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1943 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1944 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1945 else { /* Keep track of the right-most tab that we see. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1946 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1947 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1948 last_vis_tab_loc = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1949 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1950 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1951 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1952 last_vis_tab_loc = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1953 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1954 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1955 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1956
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1957 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1958 * If we didn't find the tab, then we'll just place the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1959 * arrows to the right/bottom of the last visible tab.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1960 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1961 if (!tab_found && last_vis_tab) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1962 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1963 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1964 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1965 arrow1_y = nb_y + last_vis_tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1966 arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1967 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1968 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1969 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1970 arrow1_x = nb_x + last_vis_tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1971 arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1972 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1973 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1974 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1975 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1976 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1977
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1978 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1979 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1980 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1981 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1982 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1983 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1984 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1985 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1986 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1987
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1988 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1989 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1990
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1991 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1992 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1993 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1994 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1995
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1996 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1997
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1998 if (gtkwin->in_drag)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1999 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2000
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2001 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2002 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2003 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2004 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2005
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2006 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2007 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2008 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2009
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2010 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2011 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2012
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2013 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2014 * THANK YOU GALEON!
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2015 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2016 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2017 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2018 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2019 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2020 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2021 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2022 int tab_clicked;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2023
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2024 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2025 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2026
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2027 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2028
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2029 if (gtkwin->in_drag) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2030 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2031 "Already in the middle of a window drag at tab_press_cb\n");
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2032 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2033 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2034
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2035 /*
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2036 * Make sure a tab was actually clicked. The arrow buttons
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2037 * mess things up.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2038 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2039 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2040
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2041 if (tab_clicked == -1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2042 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2043
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2044 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2045 * Get the relative position of the press event, with regards to
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2046 * the position of the notebook.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2047 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2048 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2049
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2050 x_rel = e->x_root - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2051 y_rel = e->y_root - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2052
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2053 /* Reset the min/max x/y */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2054 gtkwin->drag_min_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2055 gtkwin->drag_min_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2056 gtkwin->drag_max_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2057 gtkwin->drag_max_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2058
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2059 /* Find out which tab was dragged. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2060 for (l = gaim_conv_window_get_conversations(win); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2061 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2062 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2063
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2064 if (!GTK_WIDGET_VISIBLE(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2065 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2066
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2067 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2068 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2069
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2070 /* Save the borders of the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2071 gtkwin->drag_min_x = tab->allocation.x + nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2072 gtkwin->drag_min_y = tab->allocation.y + nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2073 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2074 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2075 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2076
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2077 /* Make sure the click occurred in the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2078 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2079 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2080 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2081 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2082
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2083 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2084 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2085
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2086 gtkwin->in_predrag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2087
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2088 /* Connect the new motion signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2089 gtkwin->drag_motion_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2090 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2091 G_CALLBACK(notebook_motion_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2092
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2093 gtkwin->drag_leave_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2094 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2095 G_CALLBACK(notebook_leave_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2096
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2097 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2098 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2099
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2100 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2101 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2102 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2103 GaimConvWindow *dest_win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2104 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2105 GaimGtkWindow *dest_gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2106 GaimConversation *conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2107 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2108 gint dest_page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2109
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2110 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2111 * Don't check to make sure that the event's window matches the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2112 * widget's, because we may be getting an event passed on from the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2113 * close button.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2114 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2115 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2116 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2117
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2118 if (gdk_pointer_is_grabbed()) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2119 gdk_pointer_ungrab(GDK_CURRENT_TIME);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2120 gtk_grab_remove(widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2121 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2122
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2123 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2124
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2125 if (!gtkwin->in_predrag && !gtkwin->in_drag)
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2126 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2127
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2128 /* Disconnect the motion signal. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2129 if (gtkwin->drag_motion_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2130 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2131 gtkwin->drag_motion_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2132
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2133 gtkwin->drag_motion_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2134 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2135
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2136 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2137 * If we're in a pre-drag, we'll also need to disconnect the leave
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2138 * signal.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2139 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2140 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2141 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2142
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2143 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2144 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2145 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2146
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2147 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2148 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2149 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2150
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2151 /* If we're not in drag... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2152 /* We're perfectly normal people! */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2153 if (!gtkwin->in_drag)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2154 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2155
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2156 gtkwin->in_drag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2157
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2158 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2159
4369
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
2160 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2161
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2162 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2163
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2164 if (dest_win == NULL) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2165 if (gaim_conv_window_get_conversation_count(win) < 2)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2166 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2167
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2168 if (gaim_conv_window_get_conversation_count(win) > 1) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2169 /* Make a new window to stick this to. */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2170 GaimGtkConversation *gtkconv;
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2171 gint win_width, win_height;
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
2172
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
2173 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2174
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2175 dest_win = gaim_conv_window_new();
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2176
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2177 gaim_conv_window_add_conversation(dest_win,
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2178 gaim_conv_window_remove_conversation(win,
5139
d0182ae31ab8 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
2179 gaim_conversation_get_index(conv)));
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
2180
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2181 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2182
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2183 gtk_window_get_size(GTK_WINDOW(dest_gtkwin->window),
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2184 &win_width, &win_height);
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2185
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2186 gtk_window_move(GTK_WINDOW(dest_gtkwin->window),
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2187 e->x_root - (win_width / 2),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2188 e->y_root - (win_height / 2));
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2189
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2190 gaim_conv_window_show(dest_win);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2191 }
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2192 } else {
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2193 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2194
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2195 /* Get the destination notebook. */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2196 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2197
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2198 /* Get the destination page number. */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2199 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2200 e->x_root, e->y_root);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2201
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2202 if (win == dest_win) {
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2203 gaim_conv_window_move_conversation(win,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2204 gaim_conversation_get_index(conv), dest_page_num);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2205 }
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2206 else {
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2207 size_t pos;
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2208
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2209 gaim_conv_window_remove_conversation(win,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2210 gaim_conversation_get_index(conv));
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2211
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2212 pos = gaim_conv_window_add_conversation(dest_win, conv);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2213
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2214 if (pos != dest_page_num)
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2215 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2216
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2217 gaim_conv_window_switch_conversation(dest_win, dest_page_num);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2218 }
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2219
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2220 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2221 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2222
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2223 gaim_signal_emit(gaim_gtk_conversations_get_handle(), "conversation-drag-ended",
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
2224 win, dest_win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2225
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2226 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2227 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2228
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2229 /**************************************************************************
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2230 * A bunch of buddy icon functions
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2231 **************************************************************************/
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2232 static GdkPixbuf *
8755
d0364feabf96 [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2233 get_tab_icon(GaimConversation *conv, gboolean small_icon)
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2234 {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2235 GaimAccount *account = gaim_conversation_get_account(conv);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2236 const char *name = gaim_conversation_get_name(conv);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2237 GdkPixbuf *status = NULL;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2238
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2239 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2240 GaimBuddy *b = gaim_find_buddy(account, name);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2241 if (b != NULL) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2242 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b,
8755
d0364feabf96 [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2243 (small_icon ? GAIM_STATUS_ICON_SMALL : GAIM_STATUS_ICON_LARGE));
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2244 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2245 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2246
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2247 if (!status) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2248 GdkPixbuf *pixbuf;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2249 pixbuf = create_prpl_icon(account);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2250
8755
d0364feabf96 [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2251 if (small_icon && pixbuf != NULL)
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2252 {
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2253 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15,
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2254 GDK_INTERP_BILINEAR);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2255 g_object_unref(pixbuf);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2256 }
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2257 else
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2258 status = pixbuf;
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2259 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2260 return status;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2261 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2262
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2263 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2264 update_tab_icon(GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2265 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2266 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2267 GaimConvWindow *win = gaim_conversation_get_window(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2268 GaimAccount *account;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2269 const char *name;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2270 GdkPixbuf *status = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2271
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2272 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2273 name = gaim_conversation_get_name(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2274 account = gaim_conversation_get_account(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2275
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2276 status = get_tab_icon(conv, TRUE);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2277
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2278 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2279 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2280
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2281 if (status != NULL)
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2282 g_object_unref(status);
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2283
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2284 if (gaim_conv_window_get_active_conversation(win) == conv &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2285 gtkconv->u.im->anim == NULL)
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2286 {
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2287 status = get_tab_icon(conv, FALSE);
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2288
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2289 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2290
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2291 if (status != NULL)
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2292 g_object_unref(status);
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2293 }
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2294 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2295
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2296 static void
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2297 get_icon_scale_size(GdkPixbufAnimation *icon, GaimBuddyIconSpec *spec, int *width, int *height)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2298 {
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2299 *width = gdk_pixbuf_animation_get_width(icon);
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2300 *height = gdk_pixbuf_animation_get_height(icon);
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2301
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2302 /* this should eventually get smarter about preserving the aspect
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2303 * ratio when scaling, but gimmie a break, I just woke up */
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2304 if(spec && spec->scale_rules & GAIM_ICON_SCALE_DISPLAY) {
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2305 if(*width < spec->min_width)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2306 *width = spec->min_width;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2307 else if(*width > spec->max_width)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2308 *width = spec->max_width;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2309
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2310 if(*height < spec->min_height)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2311 *height = spec->min_height;
9319
a4257646861a [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
2312 else if(*height > spec->max_height)
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2313 *height = spec->max_height;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2314 }
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2315
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2316 /* and now for some arbitrary sanity checks */
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2317 if(*width > 100)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2318 *width = 100;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2319 if(*height > 100)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2320 *height = 100;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2321 }
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2322
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2323 static gboolean
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2324 redraw_icon(gpointer data)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2325 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2326 GaimConversation *conv = (GaimConversation *)data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2327 GaimGtkConversation *gtkconv;
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2328 GaimAccount *account;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2329 GaimPluginProtocolInfo *prpl_info = NULL;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2330
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2331 GdkPixbuf *buf;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2332 GdkPixbuf *scale;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2333 GdkPixmap *pm;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2334 GdkBitmap *bm;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2335 gint delay;
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2336 int scale_width, scale_height;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2337
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2338 if (!g_list_find(gaim_get_ims(), conv)) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2339 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2340 "Conversation not found in redraw_icon. I think this "
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2341 "is a bug.\n");
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2342 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2343 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2344
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2345 gtkconv = GAIM_GTK_CONVERSATION(conv);
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2346 account = gaim_conversation_get_account(conv);
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2347 if(account && account->gc)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2348 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2349
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2350 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2351 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2352
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2353 get_icon_scale_size(gtkconv->u.im->anim, prpl_info ? &prpl_info->icon_spec :
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2354 NULL, &scale_width, &scale_height);
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2355
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2356 /* this code is ugly, and scares me */
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2357 scale = gdk_pixbuf_scale_simple(buf,
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2358 MAX(gdk_pixbuf_get_width(buf) * scale_width /
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2359 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2360 MAX(gdk_pixbuf_get_height(buf) * scale_height /
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2361 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2362 GDK_INTERP_NEAREST);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2363
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2364 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2365 g_object_unref(G_OBJECT(scale));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2366 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2367 g_object_unref(G_OBJECT(pm));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2368 gtk_widget_queue_draw(gtkconv->u.im->icon);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2369
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2370 if (bm)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2371 g_object_unref(G_OBJECT(bm));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2372
9131
4ae763960140 [gaim-migrate @ 9912]
Mark Doliner <mark@kingant.net>
parents: 9130
diff changeset
2373 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter);
4ae763960140 [gaim-migrate @ 9912]
Mark Doliner <mark@kingant.net>
parents: 9130
diff changeset
2374 if (delay <= 0)
4ae763960140 [gaim-migrate @ 9912]
Mark Doliner <mark@kingant.net>
parents: 9130
diff changeset
2375 delay = 100;
4ae763960140 [gaim-migrate @ 9912]
Mark Doliner <mark@kingant.net>
parents: 9130
diff changeset
2376
4ae763960140 [gaim-migrate @ 9912]
Mark Doliner <mark@kingant.net>
parents: 9130
diff changeset
2377 gtkconv->u.im->icon_timer = g_timeout_add(delay, redraw_icon, conv);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2378
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2379 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2380 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2381
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2382 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2383 start_anim(GtkObject *obj, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2384 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2385 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2386 int delay;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2387
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2388 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2389 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2390
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2391 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2392
8228
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2393 if (gtkconv->u.im->anim == NULL)
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2394 return;
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2395
8202
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2396 if (gtkconv->u.im->icon_timer != 0)
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2397 return;
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2398
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2399 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2400 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2401
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2402 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2403
8758
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
2404 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2405 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2406
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2407 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2408 stop_anim(GtkObject *obj, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2409 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2410 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2411
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2412 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2413 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2414
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2415 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2416
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2417 if (gtkconv->u.im->icon_timer != 0)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2418 g_source_remove(gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2419
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2420 gtkconv->u.im->icon_timer = 0;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2421 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2422
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2423 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2424 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2425 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2426 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2427
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2428 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2429 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2430
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2431 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2432
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2433 gtkconv->u.im->animate =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2434 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w));
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2435
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2436 if (gtkconv->u.im->animate)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2437 start_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2438 else
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2439 stop_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2440 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2441 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2442 remove_icon(GaimGtkConversation *gtkconv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2443 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2444 g_return_if_fail(gtkconv != NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2445
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2446 if (gtkconv->u.im->icon != NULL)
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
2447 gtk_widget_destroy(gtkconv->u.im->icon->parent->parent->parent);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2448
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2449 if (gtkconv->u.im->anim != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2450 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2451
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2452 if (gtkconv->u.im->icon_timer != 0)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2453 g_source_remove(gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2454
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2455 if (gtkconv->u.im->iter != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2456 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2457
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2458 gtkconv->u.im->icon_timer = 0;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2459 gtkconv->u.im->icon = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2460 gtkconv->u.im->anim = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2461 gtkconv->u.im->iter = NULL;
9687
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
2462 gtkconv->u.im->show_icon = FALSE;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2463 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2464
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2465 static void
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2466 saveicon_writefile_cb(void *user_data, const char *filename)
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2467 {
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2468 GaimConversation *conv = (GaimConversation *)user_data;
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2469 FILE *fp;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2470 GaimBuddyIcon *icon;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2471 const void *data;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2472 size_t len;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2473
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2474 if ((fp = fopen(filename, "wb")) == NULL) {
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2475 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL);
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2476 return;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2477 }
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2478
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2479 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2480 data = gaim_buddy_icon_get_data(icon, &len);
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2481
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2482 if ((len <= 0) || (data == NULL)) {
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2483 gaim_notify_error(conv, NULL, _("Unable to save icon file to disk."), NULL);
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2484 return;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2485 }
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2486
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2487 fwrite(data, 1, len, fp);
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2488 fclose(fp);
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2489 }
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2490
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2491 static void
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2492 icon_menu_save_cb(GtkWidget *widget, GaimConversation *conv)
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2493 {
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2494 gchar *buf;
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2495
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2496 g_return_if_fail(conv != NULL);
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2497
9706
d4634f26ef9b [gaim-migrate @ 10567]
Mark Doliner <mark@kingant.net>
parents: 9704
diff changeset
2498 /*
d4634f26ef9b [gaim-migrate @ 10567]
Mark Doliner <mark@kingant.net>
parents: 9704
diff changeset
2499 * XXX - The file extension needs to be set to something that doesn't suck...
d4634f26ef9b [gaim-migrate @ 10567]
Mark Doliner <mark@kingant.net>
parents: 9704
diff changeset
2500 * Maybe do what gtkimhtml.c does when saving an image?
d4634f26ef9b [gaim-migrate @ 10567]
Mark Doliner <mark@kingant.net>
parents: 9704
diff changeset
2501 */
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2502 buf = g_strdup_printf("%s.icon", gaim_normalize(conv->account, conv->name));
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2503
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2504 gaim_request_file(conv, _("Save Icon"), buf, TRUE,
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
2505 G_CALLBACK(saveicon_writefile_cb), NULL, conv);
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2506
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2507 g_free(buf);
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2508 }
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2509
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2510 static gboolean
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2511 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2512 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2513 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2514 static GtkWidget *menu = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2515 GtkWidget *button;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2516
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2517 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2518 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2519
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2520 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2521
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2522 /*
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2523 * If a menu already exists, destroy it before creating a new one,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2524 * thus freeing-up the memory it occupied.
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2525 */
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2526 if (menu != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2527 gtk_widget_destroy(menu);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2528
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2529 menu = gtk_menu_new();
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2530
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2531 if (gtkconv->u.im->anim &&
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2532 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2533 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2534 gaim_new_check_item(menu, _("Animate"),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2535 G_CALLBACK(toggle_icon_animate_cb), conv,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2536 gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2537 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2538
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2539 button = gtk_menu_item_new_with_label(_("Hide Icon"));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2540 g_signal_connect_swapped(G_OBJECT(button), "activate",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2541 G_CALLBACK(remove_icon), gtkconv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2542 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2543 gtk_widget_show(button);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2544
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2545 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
9497
44a5bfa4730b [gaim-migrate @ 10323]
Mark Doliner <mark@kingant.net>
parents: 9495
diff changeset
2546 G_CALLBACK(icon_menu_save_cb), conv,
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2547 0, 0, NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2548
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2549 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2550
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2551 return TRUE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2552 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2553 /**************************************************************************
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2554 * End of the bunch of buddy icon functions
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2555 **************************************************************************/
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2556
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2557 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2558 * Makes sure all the menu items and all the buttons are hidden/shown and
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8730
diff changeset
2559 * sensitive/insensitive. This is called after changing tabs and when an
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2560 * account signs on or off.
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2561 */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2562 static void
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2563 gray_stuff_out(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2564 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2565 GaimConvWindow *win;
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2566 GaimGtkWindow *gtkwin;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2567 GaimGtkConversation *gtkconv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2568 GaimConnection *gc;
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2569 GaimPluginProtocolInfo *prpl_info = NULL;
7222
e8972a401eb9 [gaim-migrate @ 7791]
Sean Egan <seanegan@gmail.com>
parents: 7219
diff changeset
2570 GdkPixbuf *window_icon = NULL;
8439
b08d8874d933 [gaim-migrate @ 9169]
Mark Doliner <mark@kingant.net>
parents: 8427
diff changeset
2571 GtkIMHtmlButtons buttons;
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2572
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2573 win = gaim_conversation_get_window(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2574 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2575 gtkconv = GAIM_GTK_CONVERSATION(conv);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2576 gc = gaim_conversation_get_gc(conv);
8439
b08d8874d933 [gaim-migrate @ 9169]
Mark Doliner <mark@kingant.net>
parents: 8427
diff changeset
2577
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2578 if (gc != NULL)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2579 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2580
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2581 if (gtkwin->menu.send_as != NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2582 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2583
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2584 /*
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2585 * Handle hiding and showing stuff based on what type of conv this is.
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2586 * Stuff that Gaim IMs support in general should be shown for IM
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8730
diff changeset
2587 * conversations. Stuff that Gaim chats support in general should be
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2588 * shown for chat conversations. It doesn't matter whether the PRPL
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2589 * supports it or not--that only affects if the button or menu item
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2590 * is sensitive or not.
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2591 */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2592 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2593 /* Show stuff that applies to IMs, hide stuff that applies to chats */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2594
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2595 /* Deal with buttons */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2596 gtk_widget_show(gtkconv->info);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2597 gtk_widget_show(gtkconv->send);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2598 gtk_widget_show(gtkconv->u.im->warn);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2599 gtk_widget_show(gtkconv->u.im->block);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2600 gtk_widget_show(gtkconv->u.im->send_file);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2601
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2602 /* Deal with menu items */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2603 gtk_widget_show(gtkwin->menu.view_log);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2604 gtk_widget_show(gtkwin->menu.send_file);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2605 gtk_widget_show(gtkwin->menu.add_pounce);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2606 gtk_widget_show(gtkwin->menu.get_info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2607 gtk_widget_show(gtkwin->menu.warn);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2608 gtk_widget_hide(gtkwin->menu.invite);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2609 gtk_widget_show(gtkwin->menu.alias);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2610 gtk_widget_show(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2611
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2612 if (gaim_find_buddy(gaim_conversation_get_account(conv),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2613 gaim_conversation_get_name(conv)) == NULL) {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2614 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2615 gtk_widget_hide(gtkwin->menu.remove);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2616 gtk_widget_show(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2617 gtk_widget_hide(gtkconv->remove);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2618 } else {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2619 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2620 gtk_widget_hide(gtkwin->menu.add);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2621 gtk_widget_hide(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2622 gtk_widget_show(gtkconv->remove);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2623 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2624
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2625 gtk_widget_show(gtkwin->menu.insert_link);
9287
2fa81d44ee6f [gaim-migrate @ 10090]
Mark Doliner <mark@kingant.net>
parents: 9285
diff changeset
2626 gtk_widget_show(gtkwin->menu.insert_image);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2627 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
9470
0e11618b37d7 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2628 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2629
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2630 /* Deal with buttons */
7952
fb66c2ee4446 [gaim-migrate @ 8626]
Mark Doliner <mark@kingant.net>
parents: 7949
diff changeset
2631 gtk_widget_show(gtkconv->info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2632 gtk_widget_show(gtkconv->send);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2633 gtk_widget_show(gtkconv->u.chat->invite);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2634
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2635 /* Deal with menu items */
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2636 gtk_widget_hide(gtkwin->menu.view_log);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2637 gtk_widget_hide(gtkwin->menu.send_file);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2638 gtk_widget_hide(gtkwin->menu.add_pounce);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2639 gtk_widget_hide(gtkwin->menu.get_info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2640 gtk_widget_hide(gtkwin->menu.warn);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2641 gtk_widget_show(gtkwin->menu.invite);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2642 gtk_widget_show(gtkwin->menu.alias);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2643 gtk_widget_hide(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2644
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2645 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2646 gaim_conversation_get_name(conv)) == NULL) {
9470
0e11618b37d7 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2647 /* If the chat is NOT in the buddy list */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2648 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2649 gtk_widget_hide(gtkwin->menu.remove);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2650 gtk_widget_show(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2651 gtk_widget_hide(gtkconv->remove);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2652 } else {
9470
0e11618b37d7 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2653 /* If the chat IS in the buddy list */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2654 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2655 gtk_widget_hide(gtkwin->menu.add);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2656 gtk_widget_hide(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2657 gtk_widget_show(gtkconv->remove);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2658 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2659
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2660 gtk_widget_show(gtkwin->menu.insert_link);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2661 gtk_widget_hide(gtkwin->menu.insert_image);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2662 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2663
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2664 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2665 * Handle graying stuff out based on whether an account is connected
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2666 * and what features that account supports.
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2667 */
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2668 if ((gc != NULL) &&
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2669 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) ||
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2670 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) {
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2671 /* Account is online */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2672
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2673 /* Deal with buttons */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2674 gtk_widget_set_sensitive(gtkconv->add, TRUE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2675 gtk_widget_set_sensitive(gtkconv->remove, TRUE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2676 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL));
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2677
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2678 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2679 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2680 gtk_widget_set_sensitive(gtkconv->send,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2681 (prpl_info->send_im != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2682 gtk_widget_set_sensitive(gtkconv->u.im->warn,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2683 (prpl_info->warn != NULL));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2684 gtk_widget_set_sensitive(gtkconv->u.im->block,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2685 (prpl_info->add_deny != NULL));
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2686 gtk_widget_set_sensitive(gtkconv->u.im->send_file,
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2687 (prpl_info->send_file
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2688 && (!prpl_info->can_receive_file
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2689 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv)))));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2690 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2691 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2692 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2693 gtk_widget_set_sensitive(gtkconv->send,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2694 (prpl_info->chat_send != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2695 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2696 (prpl_info->chat_invite != NULL));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2697 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2698
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2699 /* Deal with the toolbar */
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2700
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2701 if (gc->flags & GAIM_CONNECTION_HTML) {
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
2702 buttons = GTK_IMHTML_ALL; /* Everything on */
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2703 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE))
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2704 buttons &= ~GTK_IMHTML_IMAGE;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2705 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR)
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2706 buttons &= ~GTK_IMHTML_BACKCOLOR;
8691
0eb5161ef333 [gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents: 8690
diff changeset
2707 if (gc->flags & GAIM_CONNECTION_NO_FONTSIZE) {
0eb5161ef333 [gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents: 8690
diff changeset
2708 buttons &= ~GTK_IMHTML_GROW;
0eb5161ef333 [gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents: 8690
diff changeset
2709 buttons &= ~GTK_IMHTML_SHRINK;
0eb5161ef333 [gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents: 8690
diff changeset
2710 }
9041
812e7aa7eafa [gaim-migrate @ 9817]
Tim Ringenbach <marv@pidgin.im>
parents: 9025
diff changeset
2711 if (gc->flags & GAIM_CONNECTION_NO_URLDESC)
812e7aa7eafa [gaim-migrate @ 9817]
Tim Ringenbach <marv@pidgin.im>
parents: 9025
diff changeset
2712 buttons &= ~GTK_IMHTML_LINKDESC;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2713 } else {
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2714 buttons = GTK_IMHTML_SMILEY;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2715 }
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2716 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
8427
2e18099ded93 [gaim-migrate @ 9157]
Sean Egan <seanegan@gmail.com>
parents: 8422
diff changeset
2717 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv)));
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2718
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2719 /* Deal with menu items */
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2720 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2721 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2722 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2723 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2724 gtk_widget_set_sensitive(gtkwin->menu.invite,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2725 (prpl_info->chat_invite != NULL));
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2726
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2727 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2728 gtk_widget_set_sensitive(gtkwin->menu.send_file,
9470
0e11618b37d7 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2729 (gc && prpl_info->send_file != NULL
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2730 && (!prpl_info->can_receive_file
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2731 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv)))));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2732 if (gaim_find_buddy(gaim_conversation_get_account(conv),
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2733 gaim_conversation_get_name(conv)) == NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2734 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2735 else
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2736 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2737 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2738 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2739 gaim_conversation_get_name(conv)) == NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2740 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2741 else
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2742 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2743 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2744
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2745 gtk_widget_set_sensitive(gtkwin->menu.block,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2746 (prpl_info->add_deny != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2747 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2748 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
8758
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
2749 gtk_widget_set_sensitive(gtkwin->menu.insert_link,
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
2750 gc->flags & GAIM_CONNECTION_HTML);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2751 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2752 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2753 } else {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2754 /* Account is offline */
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2755 /* Or it's a chat where we left. */
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2756
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2757 /* Deal with buttons */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2758 gtk_widget_set_sensitive(gtkconv->add, FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2759 gtk_widget_set_sensitive(gtkconv->remove, FALSE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2760 gtk_widget_set_sensitive(gtkconv->info, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2761 gtk_widget_set_sensitive(gtkconv->send, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2762 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2763 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2764 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2765 gtk_widget_set_sensitive(gtkconv->u.im->send_file, FALSE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2766 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2767 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2768 }
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2769
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2770 /* Then deal with menu items */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2771 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
2772 gtk_widget_set_sensitive(gtkwin->menu.send_file, FALSE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2773 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2774 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2775 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2776 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2777 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2778 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2779 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2780 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2781 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2782 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2783 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2784
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2785 /*
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2786 * Update the window's icon
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2787 */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2788 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2789 (gtkconv->u.im->anim))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2790 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2791 window_icon =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2792 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2793 g_object_ref(window_icon);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2794 } else {
8748
13d592f485d1 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2795 window_icon = get_tab_icon(conv, FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2797 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2798 g_object_unref(G_OBJECT(window_icon));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2799 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2800
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2801 static void
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2802 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2803 gpointer user_data)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2804 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2805 GaimConvWindow *win;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2806 GaimConversation *conv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2807 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2808
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2809 win = (GaimConvWindow *)user_data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2810 conv = gaim_conv_window_get_active_conversation(win);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2811
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2812 g_return_if_fail(conv != NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2813
8192
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2814 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM)
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2815 return;
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2816
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2817 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2818
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2819 stop_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2820 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2821
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2822 static void
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2823 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2824 gpointer user_data)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2825 {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2826 GaimConvWindow *win;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2827 GaimConversation *conv;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2828 GaimGtkConversation *gtkconv;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2829 GaimGtkWindow *gtkwin;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2830
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2831 win = (GaimConvWindow *)user_data;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2832 conv = gaim_conv_window_get_conversation_at(win, page_num);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2833
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2834 g_return_if_fail(conv != NULL);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2835
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2836 gtkwin = GAIM_GTK_WINDOW(win);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2837 gtkconv = GAIM_GTK_CONVERSATION(conv);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2838
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2839 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2840
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2841 /* Update the menubar */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2842 gray_stuff_out(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2843
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2844 update_typing_icon(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2845
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2847 gaim_conversation_is_logging(conv));
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2848
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2849 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2850 gtkconv->make_sound);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2851
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2852 gtk_check_menu_item_set_active(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2853 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2854 gtkconv->show_formatting_toolbar);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2855
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
2856 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_timestamps),
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
2857 gtkconv->show_timestamps);
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
2858
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2859 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2860 * We pause icons when they are not visible. If this icon should
9297
391a6533296a [gaim-migrate @ 10100]
Mark Doliner <mark@kingant.net>
parents: 9287
diff changeset
2861 * be animated then start it back up again.
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2862 */
8192
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2863 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2864 (gtkconv->u.im->animate))
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2865 start_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2866
4965
6e7082cf0892 [gaim-migrate @ 5299]
Sean Egan <seanegan@gmail.com>
parents: 4963
diff changeset
2867 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2868 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2869 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2870
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2871 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2872 * Utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2873 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2874
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2875 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2876 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2877 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2878 GaimConvIm *im;
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2879
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2880 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2881 * We know we got something, so we at least have to make sure we don't
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2882 * send GAIM_TYPED any time soon.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2883 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2884
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2885 im = GAIM_CONV_IM(conv);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2886
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2887 if (gaim_conv_im_get_type_again_timeout(im))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2888 gaim_conv_im_stop_type_again_timeout(im);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2889
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2890 gaim_conv_im_start_type_again_timeout(im);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2891
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2892 if (first || (gaim_conv_im_get_type_again(im) != 0 &&
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2893 time(NULL) > gaim_conv_im_get_type_again(im))) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 (char *)gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2897 GAIM_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899 if (timeout)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2900 gaim_conv_im_set_type_again(im, time(NULL) + timeout);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2901 else
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2902 gaim_conv_im_set_type_again(im, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2903 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2904 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2906 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2907 update_typing_icon(GaimConversation *conv)
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2908 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2909 GaimGtkWindow *gtkwin;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2910 GaimConvIm *im = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2911 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2912
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2913 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2914
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2915 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2916 im = GAIM_CONV_IM(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2917
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2918 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2919 gtk_widget_destroy(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2920 gtkwin->menu.typing_icon = NULL;
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2921 }
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2922 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2923 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2924 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2925 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2926 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2927 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2928 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2929 _("User is typing..."), NULL);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2930 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2931 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2932 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2933 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2934 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2935 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2936 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2937 _("User has typed something and paused"), NULL);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2938 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2939
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2940 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2941 gtk_menu_item_set_right_justified(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2942 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2943 gtk_widget_show_all(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2944 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2945 gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2946 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2947 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2948
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2949 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2950 update_send_as_selection(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2951 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2952 GaimAccount *account;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2953 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2954 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2955 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2956 GList *child;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957
7090
04f9f7440bc3 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2958 if (g_list_find(gaim_get_windows(), win) == NULL)
04f9f7440bc3 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2959 return FALSE;
4849
adf9ca39578f [gaim-migrate @ 5174]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
2960
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2961 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2962
5860
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2963 if (conv == NULL)
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2964 return FALSE;
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2965
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2966 account = gaim_conversation_get_account(conv);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2967 gtkwin = GAIM_GTK_WINDOW(win);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2968
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2969 if (gtkwin->menu.send_as == NULL)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2970 return FALSE;
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2971
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2973
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2974 menu = gtk_menu_item_get_submenu(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2975 GTK_MENU_ITEM(gtkwin->menu.send_as));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2976
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978 child != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2979 child = child->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2980
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2981 GtkWidget *item = child->data;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2982 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2983 "gaim_account");
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2984
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2985 if (account == item_account) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2986 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2987 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 }
6030
54c37db13279 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2990
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2991 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2992 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2993
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2994 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2995 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2996 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2997 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2998 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2999 GtkWidget *menuitem;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3000 GList *gcs;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3001 GList *convs;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3002 GSList *group = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003 gboolean first_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3004 gboolean found_online = FALSE;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3005 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3006
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3007 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3008
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3009 if (gtkwin->menu.send_as != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010 gtk_widget_destroy(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3011
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3012 /* See if we have > 1 connection active. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3013 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3014 /* Now make sure we don't have any Offline entries. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3015 gboolean found_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3016
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3017 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3018 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3019 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3020
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3021 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3022 GaimAccount *account;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3023
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3024 conv = (GaimConversation *)convs->data;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3025 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3026
6495
8ce66049ce68 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
3027 if (account != NULL && account->gc == NULL) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3028 found_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3029 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3030 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3031 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3032
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3033 if (!found_offline) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3034 gtkwin->menu.send_as = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3035 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3036 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3037 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3038
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039 /* Build the Send As menu */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3040 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3042
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3043 menu = gtk_menu_new();
7857
43f63ff8a6d8 [gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents: 7855
diff changeset
3044 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar),
43f63ff8a6d8 [gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents: 7855
diff changeset
3045 gtkwin->menu.send_as, 2);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3046 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3047
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3048 gtk_widget_show(menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3049
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3050 /* Fill it with entries. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3051 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3052
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3053 GaimConnection *gc;
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3054 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3055 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3056 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3057 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3058 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060 found_online = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3061
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3062 gc = (GaimConnection *)gcs->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3063
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3064 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3065 pixbuf = create_prpl_icon(gc->account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3066 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3067
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3068 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3069 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3070 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3071 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3072 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3073
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3074 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3075
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3076 g_object_unref(G_OBJECT(scale));
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3077 g_object_unref(G_OBJECT(pixbuf));
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3078
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3079 account = gaim_connection_get_account(gc);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3080
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3081 /* Make our menu item */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3082 menuitem = gtk_radio_menu_item_new_with_label(group,
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3083 gaim_account_get_username(account));
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
3084 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3085
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3086 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3087 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3088
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3089 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3090 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3091 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3092
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3093 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3094 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3095
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3096 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3097
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3098 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3099
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3100 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3101 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3102 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3103
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3104 /* Set our data and callbacks. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3105 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
3106 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3107
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3108 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
3109 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3110
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3111 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3112 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3113 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3114
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3115 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3116 * Fill it with any accounts that still has an open (yet disabled) window
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3117 * (signed off accounts with a window open).
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3118 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3119 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3120 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3121 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3122
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3123 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3124 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3125 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3126 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3127 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3128 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3129
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3130 conv = (GaimConversation *)convs->data;
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3131
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3132 if (conv == deleted_conv)
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3133 continue;
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3134
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3135 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3136
6495
8ce66049ce68 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
3137 if (account != NULL && account->gc == NULL) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3138 if (first_offline && found_online) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3139 menuitem = gtk_separator_menu_item_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3140 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3141 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3142
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3143 first_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3144 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3145
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3146 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3147 pixbuf = create_prpl_icon(account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3148 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3149 GDK_INTERP_BILINEAR);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3150
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3151 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3152 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3153 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3154 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3155 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3156
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3157 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3158
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3159 if (scale != NULL) g_object_unref(scale);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3160 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3161
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3162 /* Make our menu item */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3163 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3164 account->username);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
3165 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3166
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3167 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3168 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3169
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3170 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3171 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3172 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3173
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3174 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3175 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3176
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3177 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3178
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3179 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3180
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3181 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3182 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3183 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3184
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3185 gtk_widget_set_sensitive(menuitem, FALSE);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3186 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
7ffe2b64de2d [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
3187 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3188
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3189 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3190 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3191
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3192 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3193 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3194 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3195 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3196
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3197 g_object_unref(sg);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3198
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3199 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3200 update_send_as_selection(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3201 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3202
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3203 static GList *
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3204 generate_invite_user_names(GaimConnection *gc)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3205 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3206 GaimBlistNode *gnode,*cnode,*bnode;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3207 static GList *tmp = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3208
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3209 if (tmp)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3210 g_list_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3211
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3212 tmp = g_list_append(NULL, "");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3213
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3214 if (gc != NULL) {
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3215 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3216 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3217 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3218 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3219 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3220 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3221 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3222 GaimBuddy *buddy;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3223
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3224 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3225 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3226
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3227 buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3228
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3229 if (buddy->account == gc->account &&
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3230 GAIM_BUDDY_IS_ONLINE(buddy))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3231 tmp = g_list_append(tmp, buddy->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3232 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3233 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3234 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3235 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3236
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3237 return tmp;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3238 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3240 static GdkPixbuf *
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3241 get_chat_buddy_status_icon(GaimConvChat *chat, const char *name, GaimConvChatBuddyFlags flags)
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3242 {
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3243 GdkPixbuf *pixbuf, *scale, *scale2;
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3244 char *filename;
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3245 char *image = NULL;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3246
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3247 if (flags & GAIM_CBFLAGS_FOUNDER) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3248 image = g_strdup("founder.png");
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3249 } else if (flags & GAIM_CBFLAGS_OP) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3250 image = g_strdup("op.png");
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3251 } else if (flags & GAIM_CBFLAGS_HALFOP) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3252 image = g_strdup("halfop.png");
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3253 } else if (flags & GAIM_CBFLAGS_VOICE) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3254 image = g_strdup("voice.png");
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3255 } else if ((!flags) && gaim_conv_chat_is_user_ignored(chat, name)) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3256 image = g_strdup("ignored.png");
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3257 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3258 if (image) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3259 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", image, NULL);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3260 g_free(image);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3261 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3262 g_free(filename);
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3263 if (!pixbuf)
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3264 return NULL;
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3265 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3266 g_object_unref(pixbuf);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3267 if (flags && gaim_conv_chat_is_user_ignored(chat, name)) {
9588
bb722a784568 [gaim-migrate @ 10431]
Luke Schierer <lschiere@pidgin.im>
parents: 9584
diff changeset
3268 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "ignored.png", NULL);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3269 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3270 g_free(filename);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3271 scale2 = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3272 g_object_unref(pixbuf);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3273 gdk_pixbuf_composite(scale2, scale, 0, 0, 15, 15, 0, 0, 1, 1, GDK_INTERP_BILINEAR, 192);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3274 g_object_unref(scale2);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3275 }
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3276 return scale;
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3277 }
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3278
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3279 return NULL;
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3280 }
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3281
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3282 static void
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3283 add_chat_buddy_common(GaimConversation *conv, const char *name)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3284 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3285 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3286 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3287 GaimConvChat *chat;
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3288 GaimConvChatBuddyFlags flags;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3289 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3290 GtkListStore *ls;
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3291 GdkPixbuf *pixbuf;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3293 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3294 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3296
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3297 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3298
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3299 flags = gaim_conv_chat_user_get_flags(chat, name);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3300 pixbuf = get_chat_buddy_status_icon(chat, name, flags);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3301
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302 gtk_list_store_append(ls, &iter);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3303 gtk_list_store_set(ls, &iter, CHAT_USERS_ICON_COLUMN, pixbuf,
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3304 CHAT_USERS_NAME_COLUMN, name, CHAT_USERS_FLAGS_COLUMN, flags, -1);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3305 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306 GTK_SORT_ASCENDING);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3307 if (pixbuf)
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3308 g_object_unref(pixbuf);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3309 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3310
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3311 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3312 tab_complete(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3313 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3314 GaimGtkConversation *gtkconv;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3315 GaimConvChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3316 GtkTextIter cursor, word_start, start_buffer;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3317 int start;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3318 int most_matched = -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319 char *entered, *partial = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3320 char *text;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3321 char *nick_partial;
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3322 const char *prefix;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3323 GList *matches = NULL;
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3324 GList *list = NULL;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3325 GList *l = NULL;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3326 gboolean command = FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3327
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3328 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3329
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3330 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3332 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334 word_start = cursor;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3335
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3336 /* if there's nothing there just return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3337 if (!gtk_text_iter_compare(&cursor, &start_buffer))
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3338 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3339
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3340 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3341 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3342
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343 /* if we're at the end of ": " we need to move back 2 spaces */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344 start = strlen(text) - 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3346 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 gtk_text_iter_backward_chars(&word_start, 2);
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3348 start-=2;
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3349 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3351 /* find the start of the word that we're tabbing */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352 while (start >= 0 && text[start] != ' ') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtk_text_iter_backward_char(&word_start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 start--;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3356
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3357 prefix = gaim_gtk_get_cmd_prefix();
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3358 if (start == -1 && (strlen(text) >= strlen(prefix)) && !strncmp(text, prefix, strlen(prefix))) {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3359 command = TRUE;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3360 gtk_text_iter_forward_chars(&word_start, strlen(prefix));
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3361 }
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3362
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363 g_free(text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3364
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3365 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3366 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3367
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3368 if (!g_utf8_strlen(entered, -1)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3369 g_free(entered);
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3370 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3371 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3373 nick_partial = g_malloc(strlen(entered)+1);
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3374
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3375 if (command) {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3376 list = gaim_cmd_list(conv);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3377 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3378 chat = GAIM_CONV_CHAT(conv);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3379 list = gaim_conv_chat_get_users(chat);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3380 } else {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3381 g_free(nick_partial);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3382 g_free(entered);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3383 return FALSE;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3384 }
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3385
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3386 for (l = list; l; l = l->next) {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3387 char *name;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3388
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3389 if (command)
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3390 name = l->data;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3391 else {
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3392 GaimConvChatBuddy *cb = l->data;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3393 name = cb->name;
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3394 }
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3395
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3396 strncpy(nick_partial, name, strlen(entered));
8172
e68b1486c7ad [gaim-migrate @ 8885]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
3397 nick_partial[strlen(entered)] = '\0';
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3398 if(gaim_utf8_strcasecmp(nick_partial, entered))
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3399 continue;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3400
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3401 /* if we're here, it's a possible completion */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3402
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3403 if (most_matched == -1) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3404 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3405 * this will only get called once, since from now
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3406 * on most_matched is >= 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3407 */
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3408 most_matched = strlen(name);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3409 partial = g_strdup(name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3410 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3411 else if (most_matched) {
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3412 char *tmp = g_strdup(name);
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3413
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3414 while (gaim_utf8_strcasecmp(tmp, partial)) {
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3415 partial[most_matched] = '\0';
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3416 if(most_matched < strlen(tmp))
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3417 tmp[most_matched] = '\0';
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3418 most_matched--;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3419 }
8079
8766b6a6641b [gaim-migrate @ 8778]
Mark Doliner <mark@kingant.net>
parents: 8076
diff changeset
3420 most_matched++;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3421
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3422 g_free(tmp);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3423 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3424
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3425 matches = g_list_append(matches, name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3426 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3427
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3428 g_free(nick_partial);
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3429
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3430 /* we're only here if we're doing new style */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3431
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3432 /* if there weren't any matches, return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3433 if (!matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3434 /* if matches isn't set partials won't be either */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3435 g_free(entered);
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3436 if (command)
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3437 g_list_free(list);
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3438 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3439 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3440
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3441 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3442
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3443 if (!matches->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3444 /* there was only one match. fill it in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3445 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3446 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3447 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3448
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3449 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3450 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3452 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3453 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3454 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3455 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3456 matches->data, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3458 matches = g_list_remove(matches, matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3461 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3462 * there were lots of matches, fill in as much as possible
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 * and display all of them
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 char *addthis = g_malloc0(1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3466
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467 while (matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 char *tmp = addthis;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 addthis = g_strconcat(tmp, matches->data, " ", NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3471 matches = g_list_remove(matches, matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
3474 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475 time(NULL));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3477 g_free(addthis);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3478 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3479
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3480 if (command)
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3481 g_list_free(list);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3482 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3483 g_free(partial);
9605
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3484
b5dd5cb72f56 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3485 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3486 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3487
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488 static GtkItemFactoryEntry menu_items[] =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3489 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 /* Conversation menu */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3491 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3492
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
3493 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3494 0, "<StockItem>", GAIM_STOCK_IM },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3495
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3496 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3497
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3498 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3499 "<StockItem>", GTK_STOCK_FIND },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3500 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3501 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3502 "<StockItem>", GTK_STOCK_SAVE_AS },
8974
c2ad41f7c82b [gaim-migrate @ 9748]
Luke Schierer <lschiere@pidgin.im>
parents: 8962
diff changeset
3503 { N_("/Conversation/Clear"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3504
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3505 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3506
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3507 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER },
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3508 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3509 0, NULL },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3510 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0,
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3511 "<StockItem>", GAIM_STOCK_INFO },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3512 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3513 "<StockItem>", GAIM_STOCK_WARN },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3514 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3515 "<StockItem>", GAIM_STOCK_INVITE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3516
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3517 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3518
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3519 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3520 "<StockItem>", GAIM_STOCK_EDIT },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3521 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3522 "<StockItem>", GAIM_STOCK_BLOCK },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3523 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3524 "<StockItem>", GTK_STOCK_ADD },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3525 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3526 "<StockItem>", GTK_STOCK_REMOVE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3527
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3528 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3529
8756
67f733c1cff8 [gaim-migrate @ 9511]
Mark Doliner <mark@kingant.net>
parents: 8755
diff changeset
3530 { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0,
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3531 "<StockItem>", GAIM_STOCK_LINK },
9287
2fa81d44ee6f [gaim-migrate @ 10090]
Mark Doliner <mark@kingant.net>
parents: 9285
diff changeset
3532 { N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0,
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3533 "<StockItem>", GAIM_STOCK_IMAGE },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3534
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3535 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3536
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3537 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3538 "<StockItem>", GTK_STOCK_CLOSE },
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3539
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3540 /* Options */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3541 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3542 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3543 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3544 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
3545 { N_("/Options/Show T_imestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>" },
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3546 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3547
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3548 static const int menu_item_count =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549 sizeof(menu_items) / sizeof(*menu_items);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3551 static char *
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3552 item_factory_translate_func (const char *path, gpointer func_data)
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3553 {
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
3554 return _((char *)path);
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3555 }
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3556
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3557 static GtkWidget *
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3558 setup_menubar(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3559 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3560 GaimGtkWindow *gtkwin;
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
3561 GtkAccelGroup *accel_group;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3564 accel_group = gtk_accel_group_new ();
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3565 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3566 g_object_unref (accel_group);
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
3567
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3568 gtkwin->menu.item_factory =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3569 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3570
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3571 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3572 item_factory_translate_func,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3573 NULL, NULL);
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3574
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3575 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3576 menu_items, win);
7420
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7415
diff changeset
3577 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7415
diff changeset
3578 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3580
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3581 gtkwin->menu.menubar =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3582 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3583
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3584
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3585 gtkwin->menu.view_log =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3586 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
3587 N_("/Conversation/View Log"));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3588 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3589
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3590 gtkwin->menu.send_file =
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3591 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3592 N_("/Conversation/Send File..."));
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
3593
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3594 gtkwin->menu.add_pounce =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3595 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3596 N_("/Conversation/Add Buddy Pounce..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3597
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3598 /* --- */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3599
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3600 gtkwin->menu.get_info =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3601 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3602 N_("/Conversation/Get Info"));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3603
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3604 gtkwin->menu.warn =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3605 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3606 N_("/Conversation/Warn..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3607
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3608 gtkwin->menu.invite =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3609 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3610 N_("/Conversation/Invite..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3611
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3612 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3613
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3614 gtkwin->menu.alias =
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3615 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3616 N_("/Conversation/Alias..."));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3617
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3618 gtkwin->menu.block =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3619 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3620 N_("/Conversation/Block..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3621
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3622 gtkwin->menu.add =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3623 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3624 N_("/Conversation/Add..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3625
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3626 gtkwin->menu.remove =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3627 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3628 N_("/Conversation/Remove..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3629
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3630 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3631
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3632 gtkwin->menu.insert_link =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3633 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3634 N_("/Conversation/Insert Link..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3635
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3636 gtkwin->menu.insert_image =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3637 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3638 N_("/Conversation/Insert Image..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3639
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3640 /* --- */
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3641
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3642 gtkwin->menu.logging =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3643 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3644 N_("/Options/Enable Logging"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3645 gtkwin->menu.sounds =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3646 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3647 N_("/Options/Enable Sounds"));
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3648 gtkwin->menu.show_formatting_toolbar =
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3649 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3650 N_("/Options/Show Formatting Toolbar"));
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
3651 gtkwin->menu.show_timestamps =
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
3652 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
3653 N_("/Options/Show Timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3654
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3655 generate_send_as_items(win, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3656
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3657 gtk_widget_show(gtkwin->menu.menubar);
4931
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
3658
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
3659 return gtkwin->menu.menubar;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3660 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3661
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3662 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3663 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3664 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3665 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3666 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3667 GaimGtkImPane *gtkim;
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3668 GaimButtonStyle button_type;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3669
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3670 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3671 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3672 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3673
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3674 /* From right to left... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3675
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3676 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3677 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3678 GAIM_STOCK_SEND, GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3679 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3681
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3682 /* Separator */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3683 if (gtkim->sep2 != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3684 gtk_widget_destroy(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3685
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3686 gtkim->sep2 = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3687 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3688 gtk_widget_show(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3689
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3690 /* Now, um, just kind of all over the place. Huh? */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3691
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3692 /* Warn button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3693 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3694 GAIM_STOCK_WARN, GAIM_CONV_IM);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3695 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3696 _("Warn the user"), NULL);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3697 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3698
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3699 /* Block button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3700 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3701 GAIM_STOCK_BLOCK, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3702 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3703 _("Block the user"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3704 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3705
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3706 /* Send File button */
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3707 gtkim->send_file = gaim_gtk_change_text(_("Send File"), gtkim->send_file,
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3708 GAIM_STOCK_FILE_TRANSFER, GAIM_CONV_IM);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3709 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->send_file,
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3710 _("Send a file to the user"), NULL);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3711 gtk_box_pack_start(GTK_BOX(parent), gtkim->send_file, FALSE, FALSE, 0);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3712
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3713 /* Add button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3714 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3715 GTK_STOCK_ADD, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3716 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3717 _("Add the user to your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3718 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3719
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3720 /* Remove button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3721 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3722 GTK_STOCK_REMOVE, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3723 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3724 _("Remove the user from your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3725 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3726
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3727 /* Info button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3728 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3729 GAIM_STOCK_INFO, GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3730 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3731 _("Get the user's information"), NULL);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3732 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3733
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3734 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3735 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3736 gtk_button_set_relief(GTK_BUTTON(gtkim->send_file), GTK_RELIEF_NONE);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3737 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3738 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3739 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3740 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3741
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3742 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3743 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3744 gtk_size_group_add_widget(gtkconv->sg, gtkim->send_file);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3745 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3746 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3747 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3748 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3749
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3750 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3751 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3752 gtk_box_reorder_child(GTK_BOX(parent), gtkim->send_file,3);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3753 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 4);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3754 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 5);
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3755 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3756
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3757 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3758
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3759 /* Check if the buttons should be visible or not */
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
3760 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3761 if (button_type == GAIM_BUTTON_NONE)
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3762 gtk_widget_hide(gtkconv->bbox);
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3763 else
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3764 gtk_widget_show(gtkconv->bbox);
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3765
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3766 g_signal_connect(G_OBJECT(gtkim->warn), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3767 G_CALLBACK(warn_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3768 g_signal_connect(G_OBJECT(gtkim->block), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3769 G_CALLBACK(block_cb), conv);
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3770 g_signal_connect(G_OBJECT(gtkim->send_file), "clicked",
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9459
diff changeset
3771 G_CALLBACK(send_file_cb), conv);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3772 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3773 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3774 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3775 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3776 g_signal_connect(G_OBJECT(gtkconv->info), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3777 G_CALLBACK(info_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3778 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3779 G_CALLBACK(send_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3780 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3781
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3782 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3783 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3784 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3785 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3786 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3787 GaimGtkChatPane *gtkchat;
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3788 GaimButtonStyle button_type;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3789
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3790 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3791 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3792 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3793
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3794 /* From right to left... */
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3795
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3796 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3797 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3798 GAIM_STOCK_SEND, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3799 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3800 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3801
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3802 /* Separator */
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3803 if (gtkchat->sep != NULL)
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3804 gtk_widget_destroy(gtkchat->sep);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3805
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3806 gtkchat->sep = gtk_vseparator_new();
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3807 gtk_box_pack_end(GTK_BOX(parent), gtkchat->sep, FALSE, TRUE, 0);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3808 gtk_widget_show(gtkchat->sep);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3809
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3810 /* Invite */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3811 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3812 GAIM_STOCK_INVITE, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3813 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3814 _("Invite a user"), NULL);
7931
2a781d4178ba [gaim-migrate @ 8602]
Mark Doliner <mark@kingant.net>
parents: 7929
diff changeset
3815 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3816
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3817 /* Add button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3818 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3819 GTK_STOCK_ADD, GAIM_CONV_CHAT);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3820 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3821 _("Add the chat to your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3822 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3823
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3824 /* Remove button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3825 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3826 GTK_STOCK_REMOVE, GAIM_CONV_CHAT);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3827 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3828 _("Remove the chat from your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3829 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3830
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3831 /* Set the relief on these. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3832 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3833 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3834 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3835 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3836
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3837 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3838 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3839 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3840 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3841
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3842 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3843 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3844 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3845
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3846 gaim_gtkconv_update_buttons_by_protocol(conv);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3847
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3848 /* Check if the buttons should be visible or not */
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
3849 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
8811
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3850 if (button_type == GAIM_BUTTON_NONE)
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3851 gtk_widget_hide(gtkconv->bbox);
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3852 else
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3853 gtk_widget_show(gtkconv->bbox);
7329d01bb770 [gaim-migrate @ 9573]
Mark Doliner <mark@kingant.net>
parents: 8802
diff changeset
3854
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3855 /* Callbacks */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3856 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3857 G_CALLBACK(invite_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3858 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3859 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3860 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3861 G_CALLBACK(add_remove_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3862 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3863 G_CALLBACK(send_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3864 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3865
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3866
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3867 static void topic_callback(GtkWidget *w, GaimConversation *conv)
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3868 {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3869 GaimPluginProtocolInfo *prpl_info = NULL;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3870 GaimConnection *gc;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3871 GaimGtkConversation *gtkconv;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3872 GaimGtkChatPane *gtkchat;
8858
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3873 const char *new_topic;
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3874 const char *current_topic;
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3875
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3876 gc = gaim_conversation_get_gc(conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3877
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3878 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3879 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3880
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3881 if(prpl_info->set_chat_topic == NULL)
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3882 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3883
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3884 gtkconv = GAIM_GTK_CONVERSATION(conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3885 gtkchat = gtkconv->u.chat;
8858
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3886 new_topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text));
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3887 current_topic = gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv));
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3888
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3889 if(current_topic && !g_utf8_collate(new_topic, current_topic))
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3890 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3891
8858
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3892 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)),
d7b5fbc451da [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3893 new_topic);
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3894 }
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3895
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3896 static gint
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3897 sort_chat_users(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata)
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3898 {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3899 GaimConvChatBuddyFlags f1 = 0, f2 = 0;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3900 char *user1 = NULL, *user2 = NULL;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3901 gint ret = 0;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3902
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3903 gtk_tree_model_get(model, a, CHAT_USERS_NAME_COLUMN, &user1, CHAT_USERS_FLAGS_COLUMN, &f1, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3904 gtk_tree_model_get(model, b, CHAT_USERS_NAME_COLUMN, &user2, CHAT_USERS_FLAGS_COLUMN, &f2, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3905
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3906 if (user1 == NULL || user2 == NULL) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3907 if (!(user1 == NULL && user2 == NULL))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3908 ret = (user1 == NULL) ? -1: 1;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3909 } else if (f1 != f2) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3910 /* sort more important users first */
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3911 ret = (f1 > f2) ? -1 : 1;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3912 } else {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3913 ret = g_utf8_collate(user1, user2);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3914 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3915
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3916 g_free(user1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3917 g_free(user2);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3918
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3919 return ret;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3920 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
3921
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3922 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3923 setup_chat_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3924 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3925 GaimPluginProtocolInfo *prpl_info = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3926 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3927 GaimGtkChatPane *gtkchat;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3928 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3929 GtkWidget *vpaned, *hpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3930 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3931 GtkWidget *lbox, *bbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3932 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3933 GtkWidget *list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3934 GtkWidget *button;
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3935 GtkWidget *sw;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3936 GtkListStore *ls;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3937 GtkCellRenderer *rend;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3938 GtkTreeViewColumn *col;
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
3939 GList *focus_chain = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3940
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3942 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3944
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3945 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3946 vpaned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3947 gtk_widget_show(vpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3948
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3949 /* Setup the top part of the pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3950 vbox = gtk_vbox_new(FALSE, 6);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
3951 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3952 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3954 if (gc != NULL)
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3955 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3956
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3957 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3958 {
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3959 hbox = gtk_hbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3960 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3961 gtk_widget_show(hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3962
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3963 label = gtk_label_new(_("Topic:"));
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3964 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3965 gtk_widget_show(label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3966
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3967 gtkchat->topic_text = gtk_entry_new();
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3968
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3969 if(prpl_info->set_chat_topic == NULL) {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3970 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3971 } else {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3972 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate",
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3973 G_CALLBACK(topic_callback), conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3974 }
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3975
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3976 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3977 gtk_widget_show(gtkchat->topic_text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3978 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3979
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3980 /* Setup the horizontal pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3981 hpaned = gtk_hpaned_new();
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3982 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3983 gtk_widget_show(hpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3984
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3985 /* Setup the scrolled window to put gtkimhtml in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3986 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
3988 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3989 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3990 GTK_SHADOW_IN);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3991 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3992
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3993 gtk_widget_set_size_request(gtkconv->sw,
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3994 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3995 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3996
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
3997 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate",
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
3998 G_CALLBACK(size_allocate_cb), conv);
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
3999
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4000 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4001
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4002 /* Setup gtkihmtml. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4003 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
9005
230cf4032e3d [gaim-migrate @ 9780]
Luke Schierer <lschiere@pidgin.im>
parents: 8998
diff changeset
4004 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4007 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4008 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4009
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4010 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4011 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4012 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
4013 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
4014 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
4015 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4016
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4017 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4018 gtk_widget_show(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4019
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4020 /* Build the right pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4021 lbox = gtk_vbox_new(FALSE, 6);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
4022 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4023 gtk_widget_show(lbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4024
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4025 /* Setup the label telling how many people are in the room. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4026 gtkchat->count = gtk_label_new(_("0 people in room"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4027 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4028 gtk_widget_show(gtkchat->count);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4029
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4030 /* Setup the list of users. */
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4031 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4032 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
4033 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4034 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4035 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4036 gtk_widget_show(sw);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4037
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4038 ls = gtk_list_store_new(CHAT_USERS_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING,
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4039 G_TYPE_INT);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4040 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4041 sort_chat_users, NULL, NULL);
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4042 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4043 GTK_SORT_ASCENDING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4044
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4045 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4046
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4047 rend = gtk_cell_renderer_pixbuf_new();
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4048
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4049 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4050 "pixbuf", CHAT_USERS_ICON_COLUMN, NULL);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4051 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
4052
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4053 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4054
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4055 g_signal_connect(G_OBJECT(list), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4056 G_CALLBACK(right_click_chat_cb), conv);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
4057 g_signal_connect(G_OBJECT(list), "popup-menu",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
4058 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4059
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4060 rend = gtk_cell_renderer_text_new();
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4061
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4062 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
4063 "text", CHAT_USERS_NAME_COLUMN, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4064 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4065
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4066 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4067
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4068 gtk_widget_set_size_request(list, 150, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4069
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4070 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4071 gtk_widget_show(list);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4072
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4073 gtkchat->list = list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4074
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4075 gtk_container_add(GTK_CONTAINER(sw), list);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4076
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4077 /* Setup the user list toolbar. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4078 bbox = gtk_hbox_new(TRUE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4079 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4080 gtk_widget_show(bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4081
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4082 /* IM */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4083 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4084 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4085 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4086 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4087 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4088 g_signal_connect(G_OBJECT(button), "clicked",
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
4089 G_CALLBACK(chat_im_button_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4090
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4091 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4092
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4093 /* Ignore */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4094 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4095 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4096 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4097 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4098 gtk_tooltips_set_tip(gtkconv->tooltips, button,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4099 _("Ignore the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4100 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4101 G_CALLBACK(ignore_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4102 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4103
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4104 /* Info */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4105 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4106 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4107 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4108 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4109 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4110 _("Get the user's information"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4111 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4112 G_CALLBACK(info_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4113
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4114 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4115
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4116 gtkconv->info = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4117
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4118 /* Build the toolbar. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4119 vbox = gtk_vbox_new(FALSE, 6);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4120 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4121 gtk_widget_show(vbox);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4122
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
4123 gtkconv->toolbar = gtk_imhtmltoolbar_new();
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
4124 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar, FALSE, FALSE, 0);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4125
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4126 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4127 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->lower_hbox, TRUE, TRUE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4128 gtk_widget_show(gtkconv->lower_hbox);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4129
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4130 vbox = gtk_vbox_new(FALSE, 6);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4131 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4132 gtk_widget_show(vbox);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4133
8123
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4134 /* Setup the entry widget.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4135 * We never show the horizontal scrollbar because it was causing weird
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4136 * lockups when typing text just as you type the character that would
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4137 * cause both scrollbars to appear. Definitely seems like a gtk bug.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4138 */
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4139 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4140 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
67387ec77301 [gaim-migrate @ 8813]
Mark Doliner <mark@kingant.net>
parents: 8109
diff changeset
4141 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4142 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4143 GTK_SHADOW_IN);
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4144 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4145 gtk_widget_show(sw);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4146
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4147 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
9005
230cf4032e3d [gaim-migrate @ 9780]
Luke Schierer <lschiere@pidgin.im>
parents: 8998
diff changeset
4148 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry");
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4149 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4150 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4151 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4152 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4153
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4154 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
4155 gaim_account_get_protocol_name(conv->account));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4156 gtkconv->entry_buffer =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4157 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4158 gaim_setup_imhtml(gtkconv->entry);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4159 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4160 default_formatize(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4161 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4162 GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4163 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
70816fbc2541 [gaim-migrate @ 8806]
Mark Doliner <mark@kingant.net>
parents: 8105
diff changeset
4164 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"));
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4165 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4166
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4167 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4168 G_CALLBACK(entry_key_press_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4169 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4170 G_CALLBACK(entry_stop_rclick_cb), NULL);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4171 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4172 G_CALLBACK(size_allocate_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4173
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4174 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
4175 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4176 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4177 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4178
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4179 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4180 gtk_widget_show(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4181
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4182 /* Setup the bottom button box. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4183 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4184 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4185 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4186
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4187 setup_chat_buttons(conv, gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4188
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4189 /*
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4190 * Focus for chat windows should be as follows:
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4191 * Tab title -> chat topic -> conversation scrollback -> user list ->
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4192 * user list buttons -> entry -> buttons at bottom
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4193 */
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4194 focus_chain = g_list_prepend(focus_chain, gtkconv->bbox);
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4195 focus_chain = g_list_prepend(focus_chain, gtkconv->entry);
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4196 gtk_container_set_focus_chain(GTK_CONTAINER(vbox), focus_chain);
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4197
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4198 return vpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4199 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4200
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4201 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4202 setup_im_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4203 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4204 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4205 GaimGtkImPane *gtkim;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4206 GtkWidget *paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4207 GtkWidget *vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4208 GtkWidget *vbox2;
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4209 GtkWidget *sw;
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4210 GList *focus_chain = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4211
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4212 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4213 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4215 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4216 paned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4217 gtk_widget_show(paned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4218
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4219 /* Setup the top part of the pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4220 vbox = gtk_vbox_new(FALSE, 6);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
4221 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4222 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4223
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4224 /* Setup the gtkimhtml widget. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4225 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4226 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
4227 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4228 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4229 GTK_SHADOW_IN);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4230 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0);
4851
4b6bf5ed9c5e [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4231
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4232 gtk_widget_set_size_request(gtkconv->sw,
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4233 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4234 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4235 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate",
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4236 G_CALLBACK(size_allocate_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4237 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4238
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4239 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
9005
230cf4032e3d [gaim-migrate @ 9780]
Luke Schierer <lschiere@pidgin.im>
parents: 8998
diff changeset
4240 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4241 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4242
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4243 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4244 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4245 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
4246 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
4247 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
4248 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4249
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4250 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4251 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4252 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4253 gtk_widget_show(gtkconv->imhtml);
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4254 vbox2 = gtk_vbox_new(FALSE, 6);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4255 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4256 gtk_widget_show(vbox2);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4257
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4258 /* Build the toolbar. */
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
4259 gtkconv->toolbar = gtk_imhtmltoolbar_new();
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
4260 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4261
8123
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4262 /* Setup the entry widget.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4263 * We never show the horizontal scrollbar because it was causing weird
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4264 * lockups when typing text just as you type the character that would
8123
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4265 * cause both scrollbars to appear. Definitely seems like a gtk bug.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
4266 */
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4267 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4268 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->lower_hbox, TRUE, TRUE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4269 gtk_widget_show(gtkconv->lower_hbox);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4270
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4271 vbox2 = gtk_vbox_new(FALSE, 6);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4272 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4273 gtk_widget_show(vbox2);
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
4274
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4275 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4276 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
67387ec77301 [gaim-migrate @ 8813]
Mark Doliner <mark@kingant.net>
parents: 8109
diff changeset
4277 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4278 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4279 GTK_SHADOW_IN);
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4280 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4281 gtk_widget_show(sw);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4282
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4283 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
9005
230cf4032e3d [gaim-migrate @ 9780]
Luke Schierer <lschiere@pidgin.im>
parents: 8998
diff changeset
4284 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry");
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4285
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4286 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4287 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4288 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4289 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4290
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
4291 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
4292 gaim_account_get_protocol_name(conv->account));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4293 gtkconv->entry_buffer =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4294 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4295 gaim_setup_imhtml(gtkconv->entry);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4296 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4297 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4298 GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4299 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
70816fbc2541 [gaim-migrate @ 8806]
Mark Doliner <mark@kingant.net>
parents: 8105
diff changeset
4300 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"));
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4301 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4302
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4303 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4304 G_CALLBACK(entry_key_press_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4305 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4306 G_CALLBACK(entry_stop_rclick_cb), NULL);
8914
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4307 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
73649ee7f687 [gaim-migrate @ 9684]
Luke Schierer <lschiere@pidgin.im>
parents: 8912
diff changeset
4308 G_CALLBACK(size_allocate_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4309
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4310 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 G_CALLBACK(insert_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4312 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4313 G_CALLBACK(delete_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4314
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4315 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
4316 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4317
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
4318 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4319 gtk_widget_show(gtkconv->entry);
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
4320 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
4321 gtkconv->entry);
8481
6d0869404696 [gaim-migrate @ 9214]
Luke Schierer <lschiere@pidgin.im>
parents: 8458
diff changeset
4322 /* had to move this after the imtoolbar is attached so that the
6d0869404696 [gaim-migrate @ 9214]
Luke Schierer <lschiere@pidgin.im>
parents: 8458
diff changeset
4323 * signals get fired to toggle the buttons on the toolbar as well.
6d0869404696 [gaim-migrate @ 9214]
Luke Schierer <lschiere@pidgin.im>
parents: 8458
diff changeset
4324 */
6d0869404696 [gaim-migrate @ 9214]
Luke Schierer <lschiere@pidgin.im>
parents: 8458
diff changeset
4325 default_formatize(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4326
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4327 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4328 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4329 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4330
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4331 setup_im_buttons(conv, gtkconv->bbox);
8758
2db51720fd09 [gaim-migrate @ 9513]
Mark Doliner <mark@kingant.net>
parents: 8756
diff changeset
4332 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons");
9687
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
4333 gtkconv->u.im->show_icon = TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4334
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4335 /*
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4336 * Focus for IM windows should be as follows:
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4337 * Tab title -> conversation scrollback -> entry -> buttons at bottom
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4338 */
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4339 focus_chain = g_list_prepend(focus_chain, gtkconv->bbox);
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4340 focus_chain = g_list_prepend(focus_chain, gtkconv->entry);
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4341 gtk_container_set_focus_chain(GTK_CONTAINER(vbox2), focus_chain);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
4342
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4343 return paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4344 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4345
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4346 static void
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4347 conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4348 GtkSelectionData *sd, guint info, guint t,
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4349 GaimConversation *conv)
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4350 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4351 GaimConvWindow *win = conv->window;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4352 GaimConversation *c;
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4353 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4354 {
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
4355 GaimBlistNode *n = NULL;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4356 GaimBuddy *b;
9622
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4357 unsigned int index;
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4358
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
4359 memcpy(&n, sd->data, sizeof(n));
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4360
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4361 if (GAIM_BLIST_NODE_IS_CONTACT(n))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4362 b = gaim_contact_get_priority_buddy((GaimContact*)n);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4363 else if (GAIM_BLIST_NODE_IS_BUDDY(n))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4364 b = (GaimBuddy*)n;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4365 else
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
4366 return;
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4367
9622
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4368 /*
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4369 * If we already have an open conversation with this buddy, then
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4370 * just move the conv to this window. Otherwise, create a new
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4371 * conv and add it to this window.
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4372 */
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4373 c = gaim_find_conversation(b->name);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4374 if (c != NULL) {
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4375 GaimConvWindow *oldwin;
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4376 oldwin = gaim_conversation_get_window(c);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4377 index = gaim_conversation_get_index(c);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4378 if (oldwin != win) {
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4379 gaim_conv_window_remove_conversation(oldwin, index);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4380 gaim_conv_window_add_conversation(win, c);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4381 }
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4382 } else {
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4383 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4384 gaim_conv_window_add_conversation(win, c);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4385 }
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4386
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4387 /* Make this conversation the active conversation */
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4388 index = gaim_conversation_get_index(c);
3f0d8ccefd7f [gaim-migrate @ 10466]
Mark Doliner <mark@kingant.net>
parents: 9614
diff changeset
4389 gaim_conv_window_switch_conversation(win, index);
8802
1076cd8579ea [gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents: 8758
diff changeset
4390
1076cd8579ea [gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents: 8758
diff changeset
4391 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
4392 }
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4393 else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE))
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4394 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4395 char *protocol = NULL;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4396 char *username = NULL;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4397 GaimAccount *account;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4398
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4399 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account,
7718
da04da151ec6 [gaim-migrate @ 8363]
Sean Egan <seanegan@gmail.com>
parents: 7717
diff changeset
4400 &protocol, &username, NULL))
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4401 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4402 if (account == NULL)
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4403 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4404 gaim_notify_error(NULL, NULL,
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4405 _("You are not currently signed on with an account that "
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4406 "can add that buddy."), NULL);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4407 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4408 else
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4409 {
7718
da04da151ec6 [gaim-migrate @ 8363]
Sean Egan <seanegan@gmail.com>
parents: 7717
diff changeset
4410 c = gaim_conversation_new(GAIM_CONV_IM, account, username);
da04da151ec6 [gaim-migrate @ 8363]
Sean Egan <seanegan@gmail.com>
parents: 7717
diff changeset
4411 gaim_conv_window_add_conversation(win, c);
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4412 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4413 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4414
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4415 if (username != NULL) g_free(username);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4416 if (protocol != NULL) g_free(protocol);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4417
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4418 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4419 }
9525
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9504
diff changeset
4420 else if (sd->target == gdk_atom_intern("text/uri-list", FALSE)) {
9673
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4421 GList *tmp;
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4422 GList *files = gaim_uri_list_extract_filenames(sd->data);
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4423 for(tmp = files; tmp != NULL ; tmp = g_list_next(tmp)) {
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4424 gchar *filename = tmp->data;
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4425 /* XXX - Make ft API support creating a transfer with more than one file */
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4426 if (g_file_test(filename, G_FILE_TEST_EXISTS)
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4427 && !g_file_test(filename, G_FILE_TEST_IS_DIR)
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4428 && gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4429 serv_send_file(gaim_conversation_get_gc(conv),
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4430 gaim_conversation_get_name(conv), filename);
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4431 }
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4432 g_free(filename);
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9493
diff changeset
4433 }
9673
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4434 g_list_free(files);
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4435 /* XXX - Attempt to load this file into gdk_pixbuf, or otherwise determine if it is an image. If it is, offer
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4436 * the choice of a) sending this file b) inserting this file as an IM image or c) setting this file as a custom
906949cd7a1e [gaim-migrate @ 10525]
Luke Schierer <lschiere@pidgin.im>
parents: 9670
diff changeset
4437 * buddy icon for this buddy */
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9493
diff changeset
4438 }
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9493
diff changeset
4439 gtk_drag_finish(dc, FALSE, FALSE, t);
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4440 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4441
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4442 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4443 * GTK+ window ops
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4444 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4445 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4446 gaim_gtk_new_window(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4447 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4448 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4449 GtkPositionType pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4450 GtkWidget *testidea;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4451 GtkWidget *menubar;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4452
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4453 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4454
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4455 win->ui_data = gtkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4456
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4457 /* Create the window. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4458 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4459 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
9614
c35c6b56a35f [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
4460 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
4c394222c732 [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
4461 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
9614
c35c6b56a35f [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
4462 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4463
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4464 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4465 G_CALLBACK(close_win_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4466
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4467 /* Create the notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4468 gtkwin->notebook = gtk_notebook_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4469
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4470 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4471
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4472 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4473 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4474 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4475 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4476 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4477 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4478 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4479 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4480
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4481 gtk_widget_show(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4482
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
4483 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
4484 G_CALLBACK(before_switch_conv_cb), win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4485 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4486 G_CALLBACK(switch_conv_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4487
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4488 /* Setup the tab drag and drop signals. */
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
4489 gtk_widget_add_events(gtkwin->notebook,
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
4490 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
4491 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4492 G_CALLBACK(notebook_press_cb), win);
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
4493 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4494 G_CALLBACK(notebook_release_cb), win);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4495
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4496 testidea = gtk_vbox_new(FALSE, 0);
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4497
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4498 /* Setup the menubar. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4499 menubar = setup_menubar(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4500 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4501
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4502 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4503
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4504 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4505
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4506 gtk_widget_show(testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4507 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4509 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4510 gaim_gtk_destroy_window(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4511 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4512 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4513
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4514 gtk_widget_destroy(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
4516 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
4517
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4518 g_free(gtkwin);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4519 win->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4520 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4521
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4522 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4523 gaim_gtk_show(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4524 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4525 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4526
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4527 gtk_widget_show(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4528 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4529
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4530 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4531 gaim_gtk_hide(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4532 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4533 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4534
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4535 gtk_widget_hide(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4536 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4537
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4538 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4539 gaim_gtk_raise(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4540 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4541 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4542
9640
bc2079a32fd9 [gaim-migrate @ 10488]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
4543 gtk_window_present(GTK_WINDOW(gtkwin->window));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4544 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4545
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4546 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4547 gaim_gtk_flash(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4548 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4549 #ifdef _WIN32
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4550 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4551
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4552 wgaim_conv_im_blink(gtkwin->window);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4553 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4554 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4555
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4556 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4557 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4558 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4559 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4560
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4561 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4562
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4563 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4564 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4565
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4566 static const GtkTargetEntry te[] =
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4567 {
9525
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9504
diff changeset
4568 {"text/uri-list", 0, 0},
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9504
diff changeset
4569 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 1},
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9504
diff changeset
4570 {"text/plain", 0, 2},
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4571 {"STRING", 0, 3},
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4572 {"application/x-im-contact", 0, 4}
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4573 };
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4574
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4575 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4576 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4577 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4578 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4579 GaimGtkConversation *gtkconv, *focus_gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4580 GaimConversation *focus_conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4581 GtkWidget *pane = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4582 GtkWidget *tab_cont;
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4583 GtkWidget *tabby, *menu_tabby;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4584 gboolean new_ui;
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4585 GaimConversationType conv_type;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4586 const char *name;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4587
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4588 name = gaim_conversation_get_name(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4589 conv_type = gaim_conversation_get_type(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4590 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4591
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4592 if (conv->ui_data != NULL) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4593 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4594
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4595 tab_cont = gtkconv->tab_cont;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4596
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4597 new_ui = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4598 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4599 else {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4600 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4601 conv->ui_data = gtkconv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4602
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4603 /* Setup some initial variables. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4604 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4605 gtkconv->tooltips = gtk_tooltips_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4606
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4607 if (conv_type == GAIM_CONV_IM) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4608 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4609 gtkconv->u.im->a_virgin = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4610
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4611 pane = setup_im_pane(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4612 }
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4613 else if (conv_type == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4614 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4615
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4616 pane = setup_chat_pane(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4617 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4618
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4619 if (pane == NULL) {
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4620 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4621 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4622
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4623 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4624 conv->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4625
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4626 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4627 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4628
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4629 /* Setup drag-and-drop */
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4630 gtk_drag_dest_set(pane,
9300
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4631 GTK_DEST_DEFAULT_MOTION |
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4632 GTK_DEST_DEFAULT_DROP,
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4633 te, sizeof(te) / sizeof(GtkTargetEntry),
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4634 GDK_ACTION_COPY);
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4635 gtk_drag_dest_set(pane,
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4636 GTK_DEST_DEFAULT_MOTION |
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4637 GTK_DEST_DEFAULT_DROP,
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4638 te, sizeof(te) / sizeof(GtkTargetEntry),
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4639 GDK_ACTION_COPY);
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4640 gtk_drag_dest_set(gtkconv->imhtml, 0,
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4641 te, sizeof(te) / sizeof(GtkTargetEntry),
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4642 GDK_ACTION_COPY);
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4643
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4644 gtk_drag_dest_set(gtkconv->entry, 0,
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4645 te, sizeof(te) / sizeof(GtkTargetEntry),
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4646 GDK_ACTION_COPY);
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4647
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4648 g_signal_connect(G_OBJECT(pane), "drag_data_received",
9300
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4649 G_CALLBACK(conv_dnd_recv), conv);
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4650 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
9300
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4651 G_CALLBACK(conv_dnd_recv), conv);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4652 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
9300
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4653 G_CALLBACK(conv_dnd_recv), conv);
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 9297
diff changeset
4654
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4655 /* Setup the container for the tab. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4656 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4657 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4658 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4659 gtk_widget_show(pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4660
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4661 new_ui = TRUE;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4662
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663 gtkconv->make_sound = TRUE;
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4664
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4665 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4666 "/gaim/gtk/conversations/show_formatting_toolbar");
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4667
8329
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4668 if (gtkconv->show_formatting_toolbar)
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4669 gtk_widget_show(gtkconv->toolbar);
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4670
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4671 gtkconv->show_timestamps = gaim_prefs_get_bool(
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4672 "/gaim/gtk/conversations/show_timestamps");
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4673
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4674 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4675 gtkconv->show_timestamps);
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9175
diff changeset
4676
8176
c733bb72b002 [gaim-migrate @ 8890]
Mark Doliner <mark@kingant.net>
parents: 8173
diff changeset
4677 g_signal_connect_swapped(G_OBJECT(pane), "focus",
9080
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4678 G_CALLBACK(gtk_widget_grab_focus),
717d0e23f5fa [gaim-migrate @ 9856]
Mark Doliner <mark@kingant.net>
parents: 9049
diff changeset
4679 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4680 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4681
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4682 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4683 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4684
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4685 /* Close button. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4686 gtkconv->close = gtk_button_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4687 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16);
7446
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4688 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4689 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4690 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4691 GTK_ICON_SIZE_MENU));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4692 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4693 _("Close conversation"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4694
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4695 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4696 G_CALLBACK(close_conv_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4697
7446
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4698 /*
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4699 * I love Galeon. They have a fix for that stupid annoying visible
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4700 * border bug. I love you guys! -- ChipX86
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4701 */
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4702 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed",
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4703 G_CALLBACK(tab_close_button_state_changed_cb), NULL);
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4704
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4705 /* Status icon. */
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4706 gtkconv->icon = gtk_image_new();
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4707 gtkconv->menu_icon = gtk_image_new();
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4708 update_tab_icon(conv);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4709
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4710 /* Tab label. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4711 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4712 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4713 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4714 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4715 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4717
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4718 /* Pack it all together. */
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4719 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4720 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4721 FALSE, FALSE, 0);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4722
8946
80944edf8d80 [gaim-migrate @ 9718]
Mark Doliner <mark@kingant.net>
parents: 8944
diff changeset
4723 gtk_widget_show_all(gtkconv->icon);
80944edf8d80 [gaim-migrate @ 9718]
Mark Doliner <mark@kingant.net>
parents: 8944
diff changeset
4724 gtk_widget_show_all(gtkconv->menu_icon);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4725
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4726 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4727 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0);
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4728 gtk_widget_show(gtkconv->tab_label);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4729 gtk_widget_show(gtkconv->menu_label);
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4730 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4731
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4732 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4733 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4734 gtk_widget_show_all(gtkconv->close);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4735
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4736 gtk_widget_show(tabby);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4737 gtk_widget_show(menu_tabby);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4738
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
4739 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
4740 gaim_gtkconv_update_buddy_icon(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4741
9297
391a6533296a [gaim-migrate @ 10100]
Mark Doliner <mark@kingant.net>
parents: 9287
diff changeset
4742 /* Add this pane to the conversation's notebook. */
9606
03be9d653123 [gaim-migrate @ 10449]
Luke Schierer <lschiere@pidgin.im>
parents: 9605
diff changeset
4743 gtk_notebook_append_page_menu(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby, menu_tabby);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4744
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745 gtk_widget_show(tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4746
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4747 if (gaim_conv_window_get_conversation_count(win) == 1) {
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4748 /* Er, bug in notebooks? Switch to the page manually. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4749 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
4b6bf5ed9c5e [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4750
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4751 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4752 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4753 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4754 else
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4755 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4756
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4757 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win),
5204
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4758 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4759 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4760 gtk_widget_grab_focus(focus_gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4761
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4762 if (!new_ui)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4763 g_object_unref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4764
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4765 if (gaim_conv_window_get_conversation_count(win) == 1)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4766 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4767 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4768
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4769 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4770 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4771 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4772 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4773 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4774 unsigned int index;
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4775 GaimConversationType conv_type;
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4776
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4777 conv_type = gaim_conversation_get_type(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4778 index = gaim_conversation_get_index(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4779
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4780 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4781 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4782
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4783 g_object_ref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4784 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4785
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4786 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4787
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4788 /* go back to tabless if need be */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4789 if (gaim_conv_window_get_conversation_count(win) <= 2) {
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4790 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4791 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4792 }
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4793
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4794
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4795 /* If this window is setup with an inactive gc, regenerate the menu. */
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4796 if (conv_type == GAIM_CONV_IM &&
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4797 gaim_conversation_get_gc(conv) == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4798
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4799 generate_send_as_items(win, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4800 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4801 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4802
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4804 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4805 unsigned int new_index)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4806 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4807 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4808 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4809
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4810 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4811 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4812
4415
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4813 if (new_index > gaim_conversation_get_index(conv))
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4814 new_index--;
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4815
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4816 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4817 gtkconv->tab_cont, new_index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4818 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4819
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4820 static int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4821 gaim_gtk_get_active_index(const GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4822 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4823 GaimGtkWindow *gtkwin;
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4824 int index;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4825
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4826 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4827
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4828 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4829
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4830 /*
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4831 * A fix, because the first conversation may be active, but not
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4832 * appear in the notebook just yet. -- ChipX86
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4833 */
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4834 return (index == -1 ? 0 : index);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4835 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4836
9260
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4837 static gboolean
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4838 gaim_gtk_has_focus(GaimConvWindow *win)
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4839 {
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4840 GaimGtkWindow *gtkwin;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4841 gboolean has_focus = FALSE;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4842
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4843 gtkwin = GAIM_GTK_WINDOW(win);
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4844 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4845
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4846 return has_focus;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4847 }
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4848
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4849 static GaimConvWindowUiOps window_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4850 {
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4851 gaim_gtk_conversations_get_conv_ui_ops,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4852 gaim_gtk_new_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4853 gaim_gtk_destroy_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4854 gaim_gtk_show,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4855 gaim_gtk_hide,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4856 gaim_gtk_raise,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4857 gaim_gtk_flash,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4858 gaim_gtk_switch_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4859 gaim_gtk_add_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4860 gaim_gtk_remove_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4861 gaim_gtk_move_conversation,
9260
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4862 gaim_gtk_get_active_index,
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
4863 gaim_gtk_has_focus
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4864 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4865
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4866 GaimConvWindowUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4867 gaim_gtk_conversations_get_win_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4868 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4869 return &window_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4870 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4871
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4872 /**************************************************************************
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4873 * Conversation UI operations
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4874 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4875 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4876 gaim_gtkconv_destroy(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4877 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4878 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4879
9504
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
4880 /* If the "Save Conversation" or "Save Icon" dialogs are open then close them */
2d4301c90aed [gaim-migrate @ 10331]
Mark Doliner <mark@kingant.net>
parents: 9498
diff changeset
4881 gaim_request_close_with_handle(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4882
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4883 gtk_widget_destroy(gtkconv->tab_cont);
4892
dc6de8ad81ae [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4884 g_object_unref(gtkconv->tab_cont);
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4885
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4886 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4887 if (gtkconv->u.im->icon_timer != 0)
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4888 g_source_remove(gtkconv->u.im->icon_timer);
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4889
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4890 if (gtkconv->u.im->anim != NULL)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4891 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4892
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4893 g_free(gtkconv->u.im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4894 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4895 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4896 g_free(gtkconv->u.chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4897 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4898
4633
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4899 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4900
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4901 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4902 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4903
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4904 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4905 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4906 const char *message, GaimMessageFlags flags,
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4907 time_t mtime)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4908 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4909 GaimGtkConversation *gtkconv;
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4910 GaimConvWindow *gaimwin;
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4911 GaimGtkWindow *gtkwin;
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4912 gboolean has_focus;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4913
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4914 gtkconv = GAIM_GTK_CONVERSATION(conv);
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4915 gaimwin = gaim_conversation_get_window(conv);
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4916 gtkwin = GAIM_GTK_WINDOW(gaimwin);
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4917
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4918 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4919
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4920 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
9301
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
4921 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4922
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4923 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4924 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4925
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4926 /* Play a sound, if specified in prefs. */
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4927 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) &&
8633
f8292be3b45c [gaim-migrate @ 9385]
Mark Doliner <mark@kingant.net>
parents: 8630
diff changeset
4928 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus)) {
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4929 if (flags & GAIM_MESSAGE_RECV) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4930 if (gtkconv->u.im->a_virgin &&
5820
a929723531c8 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4931 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4932
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4933 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4934 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4935 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4936 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4937 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4938 else {
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4939 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4940 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4941 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4942
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4943 gtkconv->u.im->a_virgin = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4944
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4945 gaim_conversation_write(conv, who, message, flags, mtime);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4946 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4947
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4948 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4949 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4950 const char *message, GaimMessageFlags flags, time_t mtime)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4951 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4952 GaimGtkConversation *gtkconv;
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4953 GaimConvWindow *gaimwin;
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4954 GaimGtkWindow *gtkwin;
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4955 gboolean has_focus;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4956
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4957 gtkconv = GAIM_GTK_CONVERSATION(conv);
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4958 gaimwin = gaim_conversation_get_window(conv);
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4959 gtkwin = GAIM_GTK_WINDOW(gaimwin);
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4960
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4961 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4962
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4963 /* Play a sound, if specified in prefs. */
8630
ff2c1e946a5c [gaim-migrate @ 9382]
Mark Doliner <mark@kingant.net>
parents: 8621
diff changeset
4964 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) &&
9704
767a8f0c5740 [gaim-migrate @ 10564]
Mark Doliner <mark@kingant.net>
parents: 9699
diff changeset
4965 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus) &&
767a8f0c5740 [gaim-migrate @ 10564]
Mark Doliner <mark@kingant.net>
parents: 9699
diff changeset
4966 !(flags & GAIM_MESSAGE_DELAYED) &&
767a8f0c5740 [gaim-migrate @ 10564]
Mark Doliner <mark@kingant.net>
parents: 9699
diff changeset
4967 !(flags & GAIM_MESSAGE_SYSTEM)) {
767a8f0c5740 [gaim-migrate @ 10564]
Mark Doliner <mark@kingant.net>
parents: 9699
diff changeset
4968
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4969 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND))
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4970 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
9704
767a8f0c5740 [gaim-migrate @ 10564]
Mark Doliner <mark@kingant.net>
parents: 9699
diff changeset
4971 else if (flags & GAIM_MESSAGE_RECV) {
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4972 if ((flags & GAIM_MESSAGE_NICK) &&
9584
fe35f55ee984 [gaim-migrate @ 10427]
Luke Schierer <lschiere@pidgin.im>
parents: 9572
diff changeset
4973 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4974
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4975 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4976 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4977 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4978 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4979 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4980 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4981
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4982 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks"))
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4983 flags |= GAIM_MESSAGE_COLORIZE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4984
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4985 /* Raise the window, if specified in prefs. */
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4986 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
4987 /* we may want to change this */
9301
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
4988 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4989
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4990 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4991 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4992
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4993 gaim_conversation_write(conv, who, message, flags, mtime);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4994 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4995
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4996 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4997 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4998 const char *message, GaimMessageFlags flags,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4999 time_t mtime)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5000 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5001 GaimGtkConversation *gtkconv;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5002 GaimConvWindow *win;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
5003 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5004 int gtk_font_options = 0;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5005 char buf[BUF_LONG];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 char buf2[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5007 char mdate[64];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5008 char color[10];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5009 char *str;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5010 char *with_font_tag;
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
5011 char *sml_attrib = NULL;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
5012 size_t length = strlen(message) + 1;
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5013
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5014 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5015 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5016
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5017 win = gaim_conversation_get_window(conv);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5018
9301
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
5019 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
5020 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
5021 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
5022 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
3d5519a84d02 [gaim-migrate @ 10105]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
5023 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")))) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5024 gaim_conv_window_show(win);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5025 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5026
8677
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
5027 if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml))))
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
5028 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0);
cc2ce209cc46 [gaim-migrate @ 9430]
Sean Egan <seanegan@gmail.com>
parents: 8655
diff changeset
5029
5133
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
5030 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
5031 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime));
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
5032 else
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
5033 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5034
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
5035 if(gc)
9699
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
5036 sml_attrib = g_strdup_printf("sml=\"%s\"",
267eab8f3fa4 [gaim-migrate @ 10558]
Mark Doliner <mark@kingant.net>
parents: 9696
diff changeset
5037 gaim_account_get_protocol_name(conv->account));
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5038
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5039 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5040
9049
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5041 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5042 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5043 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5044 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5045 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
5046 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5047
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
5048 /* this is gonna crash one day, I can feel it. */
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
5049 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options &
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5050 OPT_PROTO_USE_POINTSIZE) {
5367
fc0441fbf159 [gaim-migrate @ 5743]
Luke Schierer <lschiere@pidgin.im>
parents: 5329
diff changeset
5051 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5052 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5053
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5054 if (flags & GAIM_MESSAGE_SYSTEM) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5055 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
5056 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>",
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5057 mdate, message);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5058 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5059 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5060
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061 g_snprintf(buf2, sizeof(buf2),
8690
b3b3384bc1e6 [gaim-migrate @ 9443]
Luke Schierer <lschiere@pidgin.im>
parents: 8677
diff changeset
5062 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT>",
7850
9ca340251309 [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
5063 sml_attrib, mdate, message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5064
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5065 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, 0);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5066
7583
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
5067 /* Add the message to a conversations scrollback buffer */
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
5068 conv->history = g_string_append(conv->history, buf);
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
5069 conv->history = g_string_append(conv->history, "<BR>\n");
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5070
8722
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5071 } else if (flags & GAIM_MESSAGE_ERROR) {
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5072 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9622
diff changeset
5073 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"#ff0000\"><FONT SIZE=\"2\">(%s)</FONT> <B>%s</B></FONT>",
8722
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5074 mdate, message);
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5075 else
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5076 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"#ff0000\"><B>%s</B></FONT>", message);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5077
8722
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5078 g_snprintf(buf2, sizeof(buf2),
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9622
diff changeset
5079 "<FONT COLOR=\"#ff0000\"><FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT></FONT>",
8722
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5080 sml_attrib, mdate, message);
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5081
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5082 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, 0);
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5083
8722
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5084 /* Add the message to a conversations scrollback buffer */
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5085 conv->history = g_string_append(conv->history, buf);
230fee6f1e3e [gaim-migrate @ 9477]
Sean Egan <seanegan@gmail.com>
parents: 8691
diff changeset
5086 conv->history = g_string_append(conv->history, "<BR>\n");
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5087 } else if (flags & GAIM_MESSAGE_NO_LOG) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5088 g_snprintf(buf, BUF_LONG,
8690
b3b3384bc1e6 [gaim-migrate @ 9443]
Luke Schierer <lschiere@pidgin.im>
parents: 8677
diff changeset
5089 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B>",
7850
9ca340251309 [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
5090 sml_attrib, message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5091
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5092 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5093 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5094 else {
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5095 char *new_message = g_memdup(message, length);
9613
1b13160bf5a4 [gaim-migrate @ 10456]
Luke Schierer <lschiere@pidgin.im>
parents: 9606
diff changeset
5096 char *who_escaped = (who ? g_markup_escape_text(who, strlen(who)) : g_strdup(""));
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5097
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5098 if (flags & GAIM_MESSAGE_WHISPER) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5099 str = g_malloc(1024);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5100
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5101 /* If we're whispering, it's not an autoresponse. */
7564
54b370f7d9bf [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
5102 if (gaim_message_meify(new_message, length)) {
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5103 g_snprintf(str, 1024, "***%s", who_escaped);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5104 strcpy(color, "#6C2585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5105 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5106 else {
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5107 g_snprintf(str, 1024, "*%s*:", who_escaped);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5108 strcpy(color, "#00FF00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5109 }
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5110 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5111 else {
7564
54b370f7d9bf [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
5112 if (gaim_message_meify(new_message, length)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5113 str = g_malloc(1024);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5114
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5115 if (flags & GAIM_MESSAGE_AUTO_RESP)
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5116 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who_escaped);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5117 else
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5118 g_snprintf(str, 1024, "***%s", who_escaped);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5119
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5120 if (flags & GAIM_MESSAGE_NICK)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5121 strcpy(color, "#AF7F00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5122 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5123 strcpy(color, "#062585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5124 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5125 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5126 str = g_malloc(1024);
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5127 if (flags & GAIM_MESSAGE_AUTO_RESP)
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5128 g_snprintf(str, 1024, "%s %s", who_escaped, AUTO_RESPONSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5129 else
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5130 g_snprintf(str, 1024, "%s:", who_escaped);
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5131 if (flags & GAIM_MESSAGE_NICK)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5132 strcpy(color, "#AF7F00");
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5133 else if (flags & GAIM_MESSAGE_RECV) {
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5134 if (flags & GAIM_MESSAGE_COLORIZE) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5135 const char *u;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5136 int m = 0;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5137
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5138 for (u = who; *u != '\0'; u++)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5139 m += *u;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5140
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5141 m = m % NUM_NICK_COLORS;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5142
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5143 strcpy(color, nick_colors[m]);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5144 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5145 else
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
5146 strcpy(color, RECV_COLOR);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5147 }
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
5148 else if (flags & GAIM_MESSAGE_SEND)
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
5149 strcpy(color, SEND_COLOR);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5150 }
8908
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5151
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5152 if(who_escaped)
a9ad52960c1c [gaim-migrate @ 9678]
Luke Schierer <lschiere@pidgin.im>
parents: 8897
diff changeset
5153 g_free(who_escaped);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5154 }
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5155
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5156 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5157 g_snprintf(buf, BUF_LONG,
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
5158 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> "
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5159 "<B>%s</B></FONT> ", color,
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5160 sml_attrib ? sml_attrib : "", mdate, str);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5161 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5162 g_snprintf(buf, BUF_LONG,
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5163 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5164 sml_attrib ? sml_attrib : "", str);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5165
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5166 g_snprintf(buf2, BUF_LONG,
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
5167 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>"
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5168 "<B>%s</B></FONT> ",
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
5169 color, sml_attrib ? sml_attrib : "", mdate, str);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5170
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5171 g_free(str);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5172
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5173 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5174 buf2, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5175
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5176 if(gc){
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
5177 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : "");
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5178 char *post = "</font>";
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5179 int pre_len = strlen(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5180 int post_len = strlen(post);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5181
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5182 with_font_tag = g_malloc(length + pre_len + post_len + 1);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5183
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5184 strcpy(with_font_tag, pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5185 memcpy(with_font_tag + pre_len, new_message, length);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5186 strcpy(with_font_tag + pre_len + length, post);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5187
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5188 length += pre_len + post_len;
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5189 g_free(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5190 }
4608
5fcb44d771d2 [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
5191 else
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
5192 with_font_tag = g_memdup(new_message, length);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5193
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5194 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5195 with_font_tag, gtk_font_options);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5196
8557
fcb03dabbc53 [gaim-migrate @ 9301]
Luke Schierer <lschiere@pidgin.im>
parents: 8536
diff changeset
5197 conv->history = g_string_append(conv->history, buf);
fcb03dabbc53 [gaim-migrate @ 9301]
Luke Schierer <lschiere@pidgin.im>
parents: 8536
diff changeset
5198 conv->history = g_string_append(conv->history, new_message);
fcb03dabbc53 [gaim-migrate @ 9301]
Luke Schierer <lschiere@pidgin.im>
parents: 8536
diff changeset
5199 conv->history = g_string_append(conv->history, "<BR>\n");
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5200
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5201 g_free(with_font_tag);
7447
0e7a835e2433 [gaim-migrate @ 8058]
Mark Doliner <mark@kingant.net>
parents: 7446
diff changeset
5202 g_free(new_message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5203 }
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5204
6062
2cd7c409d71d [gaim-migrate @ 6512]
Mark Doliner <mark@kingant.net>
parents: 6057
diff changeset
5205
5012
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
5206 if(sml_attrib)
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
5207 g_free(sml_attrib);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5208 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5209
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5210 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5211 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5212 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5213 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5214 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5215 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5216 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5217 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5218
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5219 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5220 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5221 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5222
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5223 num_users = g_list_length(gaim_conv_chat_get_users(chat));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5224
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5225 g_snprintf(tmp, sizeof(tmp),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5226 ngettext("%d person in room", "%d people in room",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5227 num_users),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5228 num_users);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5229
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5230 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5231
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5232 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
5233 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5234
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5235 add_chat_buddy_common(conv, user);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5237
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5238 static void
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5239 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users)
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5240 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5241 GaimConvChat *chat;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5242 GaimGtkConversation *gtkconv;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5243 GaimGtkChatPane *gtkchat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5244 GList *l;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5245 char tmp[BUF_LONG];
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5246 int num_users;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5247
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5248 chat = GAIM_CONV_CHAT(conv);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5249 gtkconv = GAIM_GTK_CONVERSATION(conv);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5250 gtkchat = gtkconv->u.chat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5251
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5252 num_users = g_list_length(gaim_conv_chat_get_users(chat));
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5253
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5254 g_snprintf(tmp, sizeof(tmp),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5255 ngettext("%d person in room", "%d people in room",
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5256 num_users),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5257 num_users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5258
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5259 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5260
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5261 for (l = users; l != NULL; l = l->next) {
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5262 add_chat_buddy_common(conv, (char *)l->data);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5263 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5264 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5265
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5266 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5267 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5268 const char *new_name)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5269 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5270 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5271 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5272 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5273 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5274 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5276
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5277 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5278 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5279 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5280
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5281 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5282
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5283 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5284 return;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5285
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5286 while (f != 0) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5287 char *val;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5288
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5289 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5290
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5291 if (!gaim_utf8_strcasecmp(old_name, val)) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5292 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5293 g_free(val);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5294 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5295 }
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5296
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5297 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5298
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5299 g_free(val);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5300 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5301
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5302 if (!gaim_conv_chat_find_user(chat, old_name))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5303 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5304
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5305 add_chat_buddy_common(conv, new_name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5308 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5309 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5310 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5311 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5312 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5313 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5314 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5315 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5317 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5318 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5319
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5320 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5321 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5322 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5323
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5324 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - 1;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5325
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5326 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5327
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5328 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5329 return;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5330
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5331 while (f != 0) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5332 char *val;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5333
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5334 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5335
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5336 if (!gaim_utf8_strcasecmp(user, val)) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5337 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5338 g_free(val);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5339 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5340 }
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5341
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5342 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5343
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5344 g_free(val);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5345 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5346
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5347 if (!gaim_conv_chat_find_user(chat, user))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5348 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5349
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5350 g_snprintf(tmp, sizeof(tmp),
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5351 ngettext("%d person in room", "%d people in room",
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5352 num_users), num_users);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5353
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5354 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5355
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5356 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
5357 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5358 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5360 static void
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5361 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users)
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5362 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5363 GaimConvChat *chat;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5364 GaimGtkConversation *gtkconv;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5365 GaimGtkChatPane *gtkchat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5366 GtkTreeIter iter;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5367 GtkTreeModel *model;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5368 GList *l;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5369 char tmp[BUF_LONG];
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5370 int num_users;
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
5371 gboolean f;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5372
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5373 chat = GAIM_CONV_CHAT(conv);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5374 gtkconv = GAIM_GTK_CONVERSATION(conv);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5375 gtkchat = gtkconv->u.chat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5376
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5377 num_users = g_list_length(gaim_conv_chat_get_users(chat)) -
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5378 g_list_length(users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5379
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5380 for (l = users; l != NULL; l = l->next) {
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5381 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5382
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5383 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5384 &iter))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5385 continue;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5386
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5387 do {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5388 char *val;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5389
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5390 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5391 CHAT_USERS_NAME_COLUMN, &val, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5392
9696
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5393 if (!gaim_utf8_strcasecmp((char *)l->data, val)) {
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5394 #if GTK_CHECK_VERSION(2,2,0)
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5395 f = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
9696
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5396 #else
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5397 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5398 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5399 #endif
a57fa78e5752 [gaim-migrate @ 10555]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
5400 }
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5401 else
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5402 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5403
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5404 g_free(val);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5405 } while (f);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5406 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5408 g_snprintf(tmp, sizeof(tmp),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5409 ngettext("%d person in room", "%d people in room",
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5410 num_users), num_users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5411
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5412 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5413 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5414
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5415 static void
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5416 gaim_gtkconv_chat_update_user(GaimConversation *conv, const char *user)
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5417 {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5418 GaimConvChat *chat;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5419 GaimGtkConversation *gtkconv;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5420 GaimGtkChatPane *gtkchat;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5421 GtkTreeIter iter;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5422 GtkTreeModel *model;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5423 int f = 1;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5424
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5425 chat = GAIM_CONV_CHAT(conv);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5426 gtkconv = GAIM_GTK_CONVERSATION(conv);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5427 gtkchat = gtkconv->u.chat;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5428
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5429 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5430
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5431 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5432 return;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5433
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5434 while (f != 0) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5435 char *val;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5436
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5437 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5438
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5439 if (!gaim_utf8_strcasecmp(user, val)) {
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5440 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5441 g_free(val);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5442 break;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5443 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5444
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5445 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5446
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5447 g_free(val);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5448 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5449
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5450 if (!gaim_conv_chat_find_user(chat, user))
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5451 return;
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5452
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5453 add_chat_buddy_common(conv, user);
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5454 }
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5455
9260
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5456 static gboolean
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5457 gaim_gtkconv_has_focus(GaimConversation *conv)
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5458 {
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5459 GaimConvWindow *win;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5460 GaimGtkWindow *gtkwin;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5461 gboolean has_focus;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5462
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5463 win = gaim_conversation_get_window(conv);
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5464 gtkwin = GAIM_GTK_WINDOW(win);
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5465
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5466 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5467
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5468 return has_focus;
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5469 }
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5470
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5471 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5472 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5473 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5474 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5475 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5476 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5477 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5478 GaimConvChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5479
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5480 win = gaim_conversation_get_window(conv);
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5481 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5482 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5483
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5484 if (type == GAIM_CONV_UPDATE_ACCOUNT)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5485 {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5486 gaim_conversation_autoset_title(conv);
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5487
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5488 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5489 gaim_gtkconv_update_buddy_icon(conv);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5490
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5491 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5492
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
5493 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5494
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5495 smiley_themeize(gtkconv->imhtml);
6394
2a4b93b57518 [gaim-migrate @ 6899]
Nathan Walp <nwalp@pidgin.im>
parents: 6392
diff changeset
5496
6395
0587dd97f700 [gaim-migrate @ 6900]
Nathan Walp <nwalp@pidgin.im>
parents: 6394
diff changeset
5497 update_tab_icon(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5498 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5499 else if (type == GAIM_CONV_UPDATE_TYPING ||
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5500 type == GAIM_CONV_UPDATE_UNSEEN ||
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5501 type == GAIM_CONV_UPDATE_TITLE)
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5502 {
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5503 char *title;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5504 GaimConvIm *im = NULL;
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5505 GaimConnection *gc = gaim_conversation_get_gc(conv);
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5506 char color[8];
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5507
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5508 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5509 im = GAIM_CONV_IM(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5510
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5511 if (!gc || ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5512 && gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv))))
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5513 title = g_strdup_printf("(%s)", gaim_conversation_get_title(conv));
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5514
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5515 else
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5516 title = g_strdup(gaim_conversation_get_title(conv));
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5517
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5518 *color = '\0';
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5519
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5520 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5521 gtk_widget_realize(gtkconv->tab_label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5522
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5523 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5524 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5525 strcpy(color, "#47A046");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5526 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5527 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5528 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5529 strcpy(color, "#D1940C");
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5530 }
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5531 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5532 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5533 strcpy(color, "#314E6C");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5534 }
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5535 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT)
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5536 {
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5537 strcpy(color, "#DF421E");
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5538 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5539 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5540 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5541 strcpy(color, "#868272");
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5542 }
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5543
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5544 if (*color != '\0')
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5545 {
8536
008e4576dbfc [gaim-migrate @ 9275]
Luke Schierer <lschiere@pidgin.im>
parents: 8535
diff changeset
5546 char *html_title,*label;
008e4576dbfc [gaim-migrate @ 9275]
Luke Schierer <lschiere@pidgin.im>
parents: 8535
diff changeset
5547
008e4576dbfc [gaim-migrate @ 9275]
Luke Schierer <lschiere@pidgin.im>
parents: 8535
diff changeset
5548 html_title = gaim_escape_html(title);
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5549
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5550 label = g_strdup_printf("<span color=\"%s\">%s</span>",
8536
008e4576dbfc [gaim-migrate @ 9275]
Luke Schierer <lschiere@pidgin.im>
parents: 8535
diff changeset
5551 color, html_title);
008e4576dbfc [gaim-migrate @ 9275]
Luke Schierer <lschiere@pidgin.im>
parents: 8535
diff changeset
5552 g_free(html_title);
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
5553 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label);
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
5554 g_free(label);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5555 }
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
5556 else
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5557 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5558
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5559 if (conv == gaim_conv_window_get_active_conversation(win))
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5560 update_typing_icon(conv);
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5561
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5562 if (type == GAIM_CONV_UPDATE_TITLE) {
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5563 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5564 if (conv == gaim_conv_window_get_active_conversation(win))
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5565 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
5566 }
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5567
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5568 g_free(title);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5569 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5570 else if (type == GAIM_CONV_UPDATE_TOPIC)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5571 {
7154
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5572 const char *topic;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5573 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5574 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5575
7154
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5576 topic = gaim_conv_chat_get_topic(chat);
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5577
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5578 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text), topic ? topic : "");
7154
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5579 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text,
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5580 topic ? topic : "", NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5581 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5582 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5583 type == GAIM_CONV_ACCOUNT_OFFLINE)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5584 {
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
5585 gray_stuff_out(gaim_conv_window_get_active_conversation(win));
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
5586 generate_send_as_items(win, NULL);
8946
80944edf8d80 [gaim-migrate @ 9718]
Mark Doliner <mark@kingant.net>
parents: 8944
diff changeset
5587 update_tab_icon(conv);
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5588 gaim_conversation_autoset_title(conv);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5589 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5590 else if (type == GAIM_CONV_UPDATE_AWAY)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5591 {
8946
80944edf8d80 [gaim-migrate @ 9718]
Mark Doliner <mark@kingant.net>
parents: 8944
diff changeset
5592 update_tab_icon(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5593 }
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
5594 else if (type == GAIM_CONV_UPDATE_ADD || type == GAIM_CONV_UPDATE_REMOVE ||
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
5595 type == GAIM_CONV_UPDATE_CHATLEFT)
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5596 {
9472
362e92781b3f [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5597 gaim_conversation_autoset_title(conv);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
5598 gray_stuff_out(conv);
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
5599 }
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5600 else if (type == GAIM_CONV_UPDATE_ICON)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5601 {
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5602 gaim_gtkconv_update_buddy_icon(conv);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5603 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5604 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5605
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5606 static GaimConversationUiOps conversation_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5607 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5608 gaim_gtkconv_destroy, /* destroy_conversation */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5609 gaim_gtkconv_write_chat, /* write_chat */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5610 gaim_gtkconv_write_im, /* write_im */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5611 gaim_gtkconv_write_conv, /* write_conv */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5612 gaim_gtkconv_chat_add_user, /* chat_add_user */
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5613 gaim_gtkconv_chat_add_users, /* chat_add_users */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5614 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5615 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5616 gaim_gtkconv_chat_remove_users, /* chat_remove_users */
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9533
diff changeset
5617 gaim_gtkconv_chat_update_user, /* chat_update_user */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5618 NULL, /* update_progress */
9260
947876140943 [gaim-migrate @ 10059]
Christian Hammond <chipx86@chipx86.com>
parents: 9247
diff changeset
5619 gaim_gtkconv_has_focus, /* has_focus */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5620 gaim_gtkconv_updated /* updated */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5621 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5622
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5623 GaimConversationUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5624 gaim_gtk_conversations_get_conv_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5625 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
5626 return &conversation_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5627 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5628
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5629 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5630 * Public conversation utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5631 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5632 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5633 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5634 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5635 GaimGtkConversation *gtkconv;
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5636 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5637
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5638 char filename[256];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5639 FILE *file;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5640 GError *err = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5641
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5642 const void *data;
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5643 size_t len;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5644
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5645 GdkPixbuf *buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5646
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5647 GtkWidget *vbox;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5648 GtkWidget *event;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5649 GtkWidget *frame;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5650 GdkPixbuf *scale;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5651 GdkPixmap *pm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5652 GdkBitmap *bm;
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5653 int scale_width, scale_height;
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5654 GtkRequisition requisition;
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5655
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5656 GaimAccount *account;
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5657 GaimPluginProtocolInfo *prpl_info = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5658
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5659 GaimButtonStyle button_type;
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5660
9324
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5661 GaimBuddyIcon *icon;
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5662
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5663 g_return_if_fail(conv != NULL);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5664 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5665 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5666
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5667 gtkconv = GAIM_GTK_CONVERSATION(conv);
9687
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
5668
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
5669 if (!gtkconv->u.im->show_icon)
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
5670 return;
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9683
diff changeset
5671
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5672 account = gaim_conversation_get_account(conv);
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5673 if(account && account->gc)
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5674 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5675
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5676 remove_icon(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5677
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5678 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5679 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5680
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5681 if (gaim_conversation_get_gc(conv) == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5682 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5683
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5684 if (gtkconv->u.im->anim)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5685 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5686
9324
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5687
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5688
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5689 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5690
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5691 if (icon == NULL)
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5692 return;
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5693
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5694 data = gaim_buddy_icon_get_data(icon, &len);
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5695
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5696 /* this is such an evil hack, i don't know why i'm even considering it.
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5697 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5698 /* gdk-pixbuf-loader was leaky? is it still? */
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5699 g_snprintf(filename, sizeof(filename),
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5700 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5701 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5702
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5703 if (!(file = fopen(filename, "wb")))
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5704 return;
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5705
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5706 fwrite(data, 1, len, file);
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5707 fclose(file);
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5708
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5709 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5710 /* make sure we remove the file as soon as possible */
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5711 unlink(filename);
af707cc1e229 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5712
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5713
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5714 if (err) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5715 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5716 "Buddy icon error: %s\n", err->message);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5717 g_error_free(err);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5718 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5719
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5720 if (!gtkconv->u.im->anim)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5721 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5722
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5723 if(gtkconv->u.im->iter)
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5724 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5725
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5726 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5727 gtkconv->u.im->iter = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5728 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5729 } else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5730 gtkconv->u.im->iter =
8496
f07fbdfbe2e0 [gaim-migrate @ 9231]
Mark Doliner <mark@kingant.net>
parents: 8481
diff changeset
5731 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5732 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5733 if (gtkconv->u.im->animate)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5734 start_anim(NULL, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5735 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5736
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5737 get_icon_scale_size(gtkconv->u.im->anim, prpl_info ? &prpl_info->icon_spec :
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5738 NULL, &scale_width, &scale_height);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5739 scale = gdk_pixbuf_scale_simple(buf,
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5740 MAX(gdk_pixbuf_get_width(buf) * scale_width /
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5741 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5742 MAX(gdk_pixbuf_get_height(buf) * scale_height /
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5743 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5744 GDK_INTERP_NEAREST);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5745
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5746 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5747 g_object_unref(G_OBJECT(scale));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5748
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5749
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5750 vbox = gtk_vbox_new(FALSE, 0);
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5751
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5752 frame = gtk_frame_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5753 gtk_frame_set_shadow_type(GTK_FRAME(frame),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5754 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
8821
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5755 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
408d2f135146 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5756
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5757 event = gtk_event_box_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5758 gtk_container_add(GTK_CONTAINER(frame), event);
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5759 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5760 G_CALLBACK(icon_menu), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5761 gtk_widget_show(event);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5762
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5763 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
9318
01c50436203e [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5764 gtk_widget_set_size_request(gtkconv->u.im->icon, scale_width, scale_height);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5765 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5766 gtk_widget_show(gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5767
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5768 g_object_unref(G_OBJECT(pm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5769
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5770 if (bm)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5771 g_object_unref(G_OBJECT(bm));
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5772
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5773 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5774 gtk_widget_size_request(gtkconv->bbox, &requisition);
9683
497a53d9692a [gaim-migrate @ 10535]
Mark Doliner <mark@kingant.net>
parents: 9673
diff changeset
5775 if (button_type == GAIM_BUTTON_NONE || requisition.height * 1.5 < scale_height) {
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5776 gtk_box_pack_start(GTK_BOX(gtkconv->lower_hbox), vbox, FALSE, FALSE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5777 /* gtk_box_reorder_child(GTK_BOX(gtkconv->lower_hbox), vbox, 0); */
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5778 } else {
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5779 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), vbox, FALSE, FALSE, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5780 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), vbox, 0);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5781 }
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5782
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5783 gtk_widget_show(vbox);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5784 gtk_widget_show(frame);
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5785
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5786 /* The buddy icon code needs badly to be fixed. */
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5787 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
8068
73781ed9fdf7 [gaim-migrate @ 8766]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
5788 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv)))
73781ed9fdf7 [gaim-migrate @ 8766]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
5789 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5790 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5791
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5792 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5793 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5794 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5795 GaimConvWindow *win;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5796
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5797 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5798 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5799
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5800 win = gaim_conversation_get_window(conv);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5801
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5802 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5803 gray_stuff_out(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5804 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5805
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5806 GaimConvWindow *
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5807 gaim_gtkwin_get_at_xy(int x, int y)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5808 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5809 GaimConvWindow *win = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5810 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5811 GdkWindow *gdkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5812 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5813
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5814 gdkwin = gdk_window_at_pointer(&x, &y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5815
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5816 if (gdkwin)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5817 gdkwin = gdk_window_get_toplevel(gdkwin);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5818
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5819 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5820 win = (GaimConvWindow *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5821
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5822 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5823 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5824
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5825 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5826
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5827 if (gdkwin == gtkwin->window->window)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5828 return win;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5829 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5830
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5831 return NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5832 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5833
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5834 int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5835 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5836 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5837 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5838 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5839 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5840 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5841 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5842 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5843 gboolean first_visible = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5844
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5845 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5846 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5847
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5848 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5849 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5850
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5851 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5852 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5853 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5854
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5855 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5856 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5857 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5858
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5859 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5860 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5861
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5862 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5863 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5864
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5865 if (first_visible) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5866 first_visible = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5867
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5868 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5869 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5870 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5871
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5872 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5873 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5874
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5875 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5876 if (tab->allocation.x + tab->allocation.width <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5877 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5878 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5879 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5880 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5881 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5882 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5883 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5884 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5885 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5886 if (tab->allocation.y + tab->allocation.height <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5887 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5888 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5889 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5890 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5891 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5892 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5893 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5894 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5895
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5896 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5897 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5898
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5899 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5900 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5901
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5902 int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5903 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5904 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5905 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5906 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5907 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5908 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5909 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5910 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5911
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5912 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5913 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5914
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5915 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5916 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5917
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5918 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5919 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5920 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5921
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5922 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5923 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5924 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5925
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5926 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5927 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5928
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5929 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5930 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5931
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5932 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5933 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5934
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5935 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5936 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5937 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5938 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5939 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5940 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5941 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5942 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5943 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5944 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5945 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5946 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5947 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5948 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5949 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5950 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5951 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5952 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5953 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5954 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5955
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5956 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5957 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5958
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5959 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5960 }
4940
3708545afe42 [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5961
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5962 static void
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5963 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value,
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5964 gpointer data)
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5965 {
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5966 if (value)
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5967 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5968 GDK_Escape, 0, TRUE);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5969 else
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5970 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5971 GDK_W, GDK_CONTROL_MASK, TRUE);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5972 }
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5973
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5974 static void
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5975 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5976 gpointer data)
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5977 {
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5978 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5979 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5980 GaimGtkConversation *gtkconv;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5981
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5982 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5983 conv = (GaimConversation *)l->data;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5984
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5985 if (!GAIM_IS_GTK_CONVERSATION(conv))
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5986 continue;
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5987
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5988 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5989
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5990 if (value)
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5991 gtk_widget_show(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5992 else
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5993 gtk_widget_hide(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5994 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5995 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5996
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5997 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5998 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5999 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6000 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6001 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6002 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6003 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6004
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6005 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6006 conv = (GaimConversation *)l->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6007
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6008 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6009 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6010
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6011 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6012
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
6013 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6014 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6015 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6016
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6017 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6018 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6019 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6020 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6021 #ifdef USE_GTKSPELL
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6022 GList *cl;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6023 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6024 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6025 GtkSpell *spell;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6026
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6027 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6028
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6029 conv = (GaimConversation *)cl->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6030
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6031 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6032 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6033
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6034 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6035
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6036 if (value)
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
6037 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6038 else {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6039 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6040 gtkspell_detach(spell);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6041 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6042 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6043 #endif
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6044 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6045
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6046 static void
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6047 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6048 gpointer data)
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6049 {
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6050 GList *l;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6051 GtkPositionType pos;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
6052 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6053 GaimGtkWindow *gtkwin;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6054
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6055 pos = GPOINTER_TO_INT(value);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6056
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6057 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
6058 win = (GaimConvWindow *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6059
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6060 if (!GAIM_IS_GTK_WINDOW(win))
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6061 continue;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6062
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6063 gtkwin = GAIM_GTK_WINDOW(win);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6064
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6065 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6066 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6067 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6068
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6069 static void
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6070 html_shortcuts_pref_cb(const char *name, GaimPrefType type,
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6071 gpointer value, gpointer data)
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6072 {
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6073 GList *l;
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6074 GaimConversation *conv;
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6075 GaimGtkConversation *gtkconv;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6076
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6077 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6078 conv = (GaimConversation *)l->data;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6079
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6080 if(!GAIM_IS_GTK_CONVERSATION(conv))
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6081 continue;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6082
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6083 gtkconv = GAIM_GTK_CONVERSATION(conv);
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6084
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6085 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6086 (gboolean)GPOINTER_TO_INT(value));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6087 }
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6088 }
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6089
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6090 static void
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6091 smiley_shortcuts_pref_cb(const char *name, GaimPrefType type,
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6092 gpointer value, gpointer data)
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6093 {
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6094 GList *l;
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6095 GaimConversation *conv;
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6096 GaimGtkConversation *gtkconv;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6097
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6098 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6099 conv = (GaimConversation *)l->data;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6100
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6101 if(!GAIM_IS_GTK_CONVERSATION(conv))
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6102 continue;
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6103
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6104 gtkconv = GAIM_GTK_CONVERSATION(conv);
9487
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6105
c23f7045357c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6106 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6107 (gboolean)GPOINTER_TO_INT(value));
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6108 }
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6109 }
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6110
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6111 static void
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6112 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6113 gpointer value, gpointer data)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6114 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6115 GList *l;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6116 GaimConversation *conv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6117 GaimGtkConversation *gtkconv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6118 GaimConvWindow *win;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6119 GaimGtkWindow *gtkwin;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6120
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6121 for (l = gaim_get_conversations(); l != NULL; l = l->next)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6122 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6123 conv = (GaimConversation *)l->data;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6124
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6125 if (!GAIM_IS_GTK_CONVERSATION(conv))
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6126 continue;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6127
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6128 gtkconv = GAIM_GTK_CONVERSATION(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6129 win = gaim_conversation_get_window(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6130 gtkwin = GAIM_GTK_WINDOW(win);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6131
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
6132 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6133 gtk_check_menu_item_set_active(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6134 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6135 gtkconv->show_formatting_toolbar);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6136
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6137 if (gtkconv->show_formatting_toolbar)
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
6138 gtk_widget_show(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6139 else
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
6140 gtk_widget_hide(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6141 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6142 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6143
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6144 static void
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6145 button_type_pref_cb(const char *name, GaimPrefType type,
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6146 gpointer value, gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6147 {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6148 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6149 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6150 GaimGtkConversation *gtkconv;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6151
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6152 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6153 conv = (GaimConversation *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6154 gtkconv = GAIM_GTK_CONVERSATION(conv);
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6155 switch (conv->type) {
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6156 case GAIM_CONV_IM:
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6157 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send));
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6158 gaim_gtkconv_update_buddy_icon(conv);
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6159 break;
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6160 case GAIM_CONV_CHAT:
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6161 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send));
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6162 break;
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6163 default:
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6164 break;
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6165 }
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6166 }
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6167 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6168
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6169 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6170 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6171 gpointer value, gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6172 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6173 GList *l;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6174 GaimConversation *conv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6175 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6176 GaimConvWindow *win;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6177
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6178 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6179 return;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6180
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6181 /* Set the "animate" flag for each icon based on the new preference */
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6182 for (l = gaim_get_ims(); l != NULL; l = l->next) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6183 conv = (GaimConversation *)l->data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6184 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6185 gtkconv->u.im->animate = (gboolean)value;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6186 }
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6187
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6188 /* Now either stop or start animation for the active conversation in each window */
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6189 for (l = gaim_get_windows(); l != NULL; l = l->next) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6190 win = (GaimConvWindow *)l->data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6191 conv = gaim_conv_window_get_active_conversation(win);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
6192 gaim_gtkconv_update_buddy_icon(conv);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6193 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6194 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6195
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6196 static void
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6197 show_buddy_icons_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6198 gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6199 {
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6200 GList *l;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6201
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6202 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6203 GaimConversation *conv = l->data;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6204
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6205 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6206 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6207 }
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6208 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6209
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
6210 static void
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6211 conv_placement_pref_cb(const char *name, GaimPrefType type,
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6212 gpointer value, gpointer data)
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6213 {
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6214 GaimConvPlacementFunc func;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6215
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6216 if (strcmp(name, "/gaim/gtk/conversations/placement"))
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6217 return;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6218
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6219 func = gaim_conv_placement_get_fnc(value);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6220
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6221 if (func == NULL)
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6222 return;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6223
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6224 gaim_conv_placement_set_current_func(func);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6225 }
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6226
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6227 void *
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6228 gaim_gtk_conversations_get_handle(void)
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6229 {
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6230 static int handle;
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6231
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6232 return &handle;
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6233 }
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6234
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6235 void
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
6236 gaim_gtk_conversations_init(void)
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6237 {
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6238 void *handle = gaim_gtk_conversations_get_handle();
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6239
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6240 /* Conversations */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6241 gaim_prefs_add_none("/gaim/gtk/conversations");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6242 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6243 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6244 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6245 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6246 gaim_prefs_add_bool("/gaim/gtk/conversations/send_formatting", FALSE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6247 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6248 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6249 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6250 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6251 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
9049
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6252 #if 1
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6253 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6254 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6255 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6256 #else
8944
f041cc8d86cf [gaim-migrate @ 9716]
Mark Doliner <mark@kingant.net>
parents: 8941
diff changeset
6257 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_formatting", FALSE);
9049
f01eef2c264a [gaim-migrate @ 9825]
Mark Doliner <mark@kingant.net>
parents: 9048
diff changeset
6258 #endif
9572
d066c21dcbef [gaim-migrate @ 10415]
Mark Doliner <mark@kingant.net>
parents: 9554
diff changeset
6259 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", TRUE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6260 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6261 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
9130
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
6262 gaim_prefs_add_bool("/gaim/gtk/conversations/enable_commands", TRUE);
933a19e3a6b3 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
6263
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6264 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
8998
3738d1eac0ad [gaim-migrate @ 9773]
Luke Schierer <lschiere@pidgin.im>
parents: 8974
diff changeset
6265 gaim_prefs_add_int("/gaim/gtk/conversations/placement_number", 1);
9025
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6266 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "");
b24967757d46 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6267 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "");
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6268 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6269 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6270 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6271 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6272 gaim_prefs_add_int("/gaim/gtk/conversations/button_type",
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6273 GAIM_BUTTON_TEXT_IMAGE);
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6274
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6275
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6276 /* Conversations -> Chat */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6277 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6278 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6279 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6280 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6281 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
9319
a4257646861a [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6282 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6283
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6284 /* Conversations -> IM */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6285 gaim_prefs_add_none("/gaim/gtk/conversations/im");
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6286
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6287 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6288
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6289 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6290 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6291 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
9319
a4257646861a [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6292 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
a4257646861a [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6293 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6294
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6295 /* Connect callbacks. */
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6296 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes",
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6297 escape_closes_pref_cb, NULL);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6298 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6299 close_on_tabs_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6300 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6301 show_timestamps_pref_cb, NULL);
8456
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6302 gaim_prefs_connect_callback("/gaim/gtk/conversations/html_shortcuts",
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6303 html_shortcuts_pref_cb, NULL);
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6304 gaim_prefs_connect_callback("/gaim/gtk/conversations/smiley_shortcuts",
5f8d4ab6d375 [gaim-migrate @ 9186]
Luke Schierer <lschiere@pidgin.im>
parents: 8448
diff changeset
6305 smiley_shortcuts_pref_cb, NULL);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6306 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar",
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
6307 show_formatting_toolbar_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6308 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6309 spellcheck_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6310 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6311 tab_side_pref_cb, NULL);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6312
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6313 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement",
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6314 conv_placement_pref_cb, NULL);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6315 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6316
9150
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6317 gaim_prefs_connect_callback("/gaim/gtk/conversations/button_type",
05532ad61ed5 [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6318 button_type_pref_cb, NULL);
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6319
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6320 /* IM callbacks */
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6321 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6322 animate_buddy_icons_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6323 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6324 show_buddy_icons_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6325
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6326
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6327 /**********************************************************************
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6328 * Register signals
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6329 **********************************************************************/
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6330 gaim_signal_register(handle, "conversation-drag-ended",
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6331 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6332 gaim_value_new(GAIM_TYPE_SUBTYPE,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6333 GAIM_SUBTYPE_CONV_WINDOW),
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6334 gaim_value_new(GAIM_TYPE_SUBTYPE,
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6335 GAIM_SUBTYPE_CONV_WINDOW));
9167
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6336
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6337 /**********************************************************************
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6338 * Register commands
10bdd25f367f [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6339 **********************************************************************/
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6340 gaim_cmd_register("me", "S", GAIM_CMD_P_DEFAULT,
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6341 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6342 me_command_cb, _("me &lt;action&gt;: Send an IRC style action to a buddy or chat."), NULL);
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6343 gaim_cmd_register("debug", "w", GAIM_CMD_P_DEFAULT,
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6344 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6345 debug_command_cb, _("debug &lt;option&gt;: Send various debug information to the current conversation."), NULL);
9213
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6346
99abaef7ed34 [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6347 gaim_cmd_register("help", "w", GAIM_CMD_P_DEFAULT,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6348 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, NULL,
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6349 help_command_cb, _("help &lt;command&gt;: Help on a specific command."), NULL);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6350 }
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6351
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6352 void
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6353 gaim_gtk_conversations_uninit(void)
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6354 {
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6355 gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle());
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8573
diff changeset
6356 }